Skip to content
Snippets Groups Projects
Commit 2a6e67fa authored by Maddy's avatar Maddy
Browse files

UI and UX design on the SignupView.vue

parent 04648385
No related branches found
No related tags found
1 merge request!20Login/Signup UI
Pipeline #268478 passed
...@@ -16,6 +16,10 @@ input { ...@@ -16,6 +16,10 @@ input {
input::placeholder { input::placeholder {
color: #b0b0b0; color: #b0b0b0;
} }
label {
display: inline-block;
font-weight: bold;
}
.space{ .space{
...@@ -63,6 +67,8 @@ input::placeholder { ...@@ -63,6 +67,8 @@ input::placeholder {
border-color: transparent; border-color: transparent;
color: #242F40; color: #242F40;
border-radius: 10px; border-radius: 10px;
cursor: pointer;
} }
.delete-btn{ .delete-btn{
padding: 8px; padding: 8px;
...@@ -71,6 +77,8 @@ input::placeholder { ...@@ -71,6 +77,8 @@ input::placeholder {
color: #242F40; color: #242F40;
border-radius: 10px; border-radius: 10px;
font-family: monospace; font-family: monospace;
cursor: pointer;
} }
.add-Btn { .add-Btn {
background-color: #242F40; background-color: #242F40;
...@@ -80,6 +88,8 @@ input::placeholder { ...@@ -80,6 +88,8 @@ input::placeholder {
border-radius: 20px; border-radius: 20px;
border-color: transparent; border-color: transparent;
margin-top: 10px; margin-top: 10px;
cursor: pointer;
} }
.add-Btn:hover{ .add-Btn:hover{
cursor: pointer; cursor: pointer;
...@@ -96,6 +106,8 @@ input::placeholder { ...@@ -96,6 +106,8 @@ input::placeholder {
border-radius: 20px; border-radius: 20px;
border-color: transparent; border-color: transparent;
margin-top: 10px; margin-top: 10px;
cursor: pointer;
} }
.close-btn{ .close-btn{
...@@ -104,6 +116,7 @@ input::placeholder { ...@@ -104,6 +116,7 @@ input::placeholder {
border-radius: 5px; border-radius: 5px;
border-color: transparent; border-color: transparent;
margin-left: 10px; margin-left: 10px;
cursor: pointer;
} }
...@@ -116,7 +129,7 @@ input::placeholder { ...@@ -116,7 +129,7 @@ input::placeholder {
min-width: 160px; min-width: 160px;
font-family: monospace; font-family: monospace;
transition: 0.2s; transition: 0.2s;
cursor: pointer;
} }
.submit-btn:hover{ .submit-btn:hover{
background-color: #a67d0e; background-color: #a67d0e;
......
...@@ -11,8 +11,8 @@ export default { ...@@ -11,8 +11,8 @@ export default {
username: '', username: '',
email: '', email: '',
password: '', password: '',
showPassword: false, // Add showPassword property showPassword: false,
errorMsg: '', //TODO: display error to user errorMsg: '',
} }
}, },
methods: { methods: {
...@@ -46,7 +46,7 @@ export default { ...@@ -46,7 +46,7 @@ export default {
<div class="loginBox"> <div class="loginBox">
<label>Username</label> <br> <label>Username</label> <br>
<input type="text" required v-model="username" placeholder="username"/> <br> <input type="text" required v-model="username" placeholder="Rizz_Dragon420"/> <br>
<label>Password</label> <br> <label>Password</label> <br>
<div class="password-input"> <div class="password-input">
...@@ -93,10 +93,7 @@ export default { ...@@ -93,10 +93,7 @@ export default {
padding: 40px; padding: 40px;
} }
label {
display: inline-block;
font-weight: bold;
}
.password-input { .password-input {
position: relative; position: relative;
......
<script> <script>
//import Svg from '../assets/Svg.vue' import Svg from '../assets/Svg.vue'
import {apiClient} from "@/api.js"; import {apiClient} from "@/api.js";
export default { export default {
name: 'Register', name: 'Register',
components: {Svg},
data(){ data(){
return{ return{
username: '', username: '',
//first_name:'',
//last_name:'',
//email:'',
password:'', password:'',
password_confirm:'', password_confirm:'',
errorMsg: '', //TODO: display error to user errorMsg: '', //TODO: display error to user
showPassword: false,
} }
}, },
methods:{ methods:{
...@@ -20,21 +19,22 @@ ...@@ -20,21 +19,22 @@
//TODO: use interceptor to check matching password, send one password //TODO: use interceptor to check matching password, send one password
try { try {
await apiClient.post('/auth/register', { await apiClient.post('/auth/register', {
//first_name: this.first_name,
//last_name: this.last_name,
//email: this.email,
username: this.username, username: this.username,
password: this.password password: this.password,
//password_confirm: this.password_confirm password_confirm: this.password_confirm
}).then(response => { }).then(response => {
//TODO: display successful registration to user //TODO: display successful registration to user
alert("User: " + this.username + " created!")
this.$router.push('/login') this.$router.push('/login')
}); });
} catch (error) { } catch (error) {
//TODO: proper error handling //TODO: proper error handling
this.errorMsg = 'Error signing up'; this.errorMsg = 'Error signing up, try again';
}
} }
},
togglePasswordVisibility() {
this.showPassword = !this.showPassword;
},
} }
} }
</script> </script>
...@@ -49,31 +49,40 @@ ...@@ -49,31 +49,40 @@
<h1 id="signup">Signup</h1> <h1 id="signup">Signup</h1>
<p> Create an account to get started!</p> <p> Create an account to get started!</p>
<div class="signupBox"> <div class="signupBox">
<label>First Name</label> <br> <label>Username</label> <br>
<input type="text" required v-model="username" placeholder="username"/> <br> <input type="text" required v-model="username" placeholder="Insert username here..."/> <br>
<!--
<label>First Name</label> <br>
<input type="text" required v-model="first_name" placeholder="John"/> <br>
<label>Last Name</label> <br>
<input type="text" required v-model="last_name" placeholder="Doe"/> <br>
<label>Email</label> <br>
<input type="email" required v-model="email" placeholder="JohnDoe@email.com"/> <br>
-->
<label>Password</label> <br> <label>Password</label> <br>
<input type="text" required v-model="password" /> <br> <div class="password-input">
<input :type="showPassword ? 'text' : 'password'" required v-model="password"/>
<button type="button" class="showPasswordIcon" @click="togglePasswordVisibility">
<Svg v-if="showPassword" :name="'hide-password-icon'"/>
<Svg v-else :name="'show-password-icon'" />
</button>
</div> <br>
<label>Confirm Password</label> <br> <label>Confirm Password</label> <br>
<input type="text" required v-model="password_confirm" /> <br> <div class="password-input">
<input :type="showPassword ? 'text' : 'password'" required v-model="password_confirm"/>
<button type="button" class="showPasswordIcon" @click="togglePasswordVisibility">
<Svg v-if="showPassword" :name="'hide-password-icon'"/>
<Svg v-else :name="'show-password-icon'" />
</button>
</div> <br>
<label class="error-message">{{errorMsg}}</label><br>
</div> </div>
</div> </div>
<div class="submit-section"> <div class="submit-section">
<input id="submit" type="submit"/> <input class="submit-btn" type="submit"/>
</div> </div>
</form> </form>
</div> </div>
</body> </body>
</template> </template>
<style> <style>
.signupPage { .signupPage {
padding-top: 85px; padding-top: 85px;
...@@ -90,43 +99,31 @@ ...@@ -90,43 +99,31 @@
border-style: solid; border-style: solid;
margin: 20px; margin: 20px;
} }
.signupBox { .signupBox {
padding: 30px; padding: 30px;
} }
label { .password-input {
position: relative;
display: inline-block; display: inline-block;
font-weight: bold;
} }
input {
padding: 5px;
border-radius: 5px; .showPasswordIcon {
position: absolute;
top: 50%;
right: 5px; /* Adjust positioning as needed */
transform: translateY(-50%);
border: none; border: none;
min-width: 250px; background: none;
background-color: #E5E5E5; cursor: pointer;
margin: 10px;
}
input::placeholder {
color: #b0b0b0;
} }
.submit-section { .submit-section {
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
} }
#submit {
min-width: 150px;
min-height: 60px;
font-size: 24px;
border-radius: 6px;
background-color: #242F40;
color: white;
border: none;
cursor: pointer;
margin-top: 20px;
}
#submit:hover:enabled {
background-color: rgba(23, 55, 44, 0.9);
transition: 0.5s;
}
</style> </style>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment