🎨 (Account) Change new account page style

This commit is contained in:
Julien Calixte
2019-09-12 22:36:05 +02:00
parent c6da9edb51
commit b9e871e6e6
6 changed files with 90 additions and 62 deletions

View File

@@ -0,0 +1,66 @@
<template>
<div class="account-card box" :style="getColor(account.color)" @click="goToAccount(account._id)">
<router-link
:class="{ 'is-primary': !account.color, 'is-white': account.color }"
:style="`color: ${findDarkValue(account.color)}`"
:to="{ name: 'account', params: { id: account._id } }"
>{{ account.name }}</router-link>
<div v-if="account.isPublic">
<awe-icon icon="users" />
</div>
<br />
{{ account.users && account.users.map(u => u.alias).join(', ') }}
</div>
</template>
<script lang="ts">
import { Component, Prop, Vue } from 'vue-property-decorator'
import { findDarkValue } from '@/utils'
import bus, { SYNC } from '@/utils/bus-event'
import accountService from '@/services/AccountService'
import IAccount from '@/models/IAccount'
import IColor from '@/models/IColor'
import FabButton from '@/components/FabButton.vue'
@Component
export default class AccountCard extends Vue {
@Prop({ type: Object, required: true })
public account!: IAccount
public getColor(color: string | null): any | null {
if (!color) {
return null
}
return {
backgroundColor: color,
color: this.findDarkValue(color)
}
}
public findDarkValue(color: string): string | null {
return findDarkValue(color)
}
public goToAccount(id: string): void {
this.$router.push({ name: 'account', params: { id } })
}
}
</script>
<style lang="scss" scoped>
@import '../styles/variables';
.box {
border-radius: 8px;
word-wrap: break-word;
hyphens: auto;
a {
font-size: 1.2rem;
color: $main;
}
&:hover {
cursor: pointer;
}
}
</style>

View File

@@ -1,19 +1,8 @@
<template> <template>
<div class="account-list"> <div class="account-list">
<div class="columns is-centered is-multiline" v-if="accounts.length"> <div class="columns is-centered is-multiline" v-if="accounts.length">
<div class="column is-2" v-for="(account, k) in accounts" :key="k"> <div class="column is-3" v-for="(account, k) in accounts" :key="k">
<div class="box" :style="getColor(account.color)" @click="goToAccount(account._id)"> <account-card :account="account" />
<router-link
:class="{ 'is-primary': !account.color, 'is-white': account.color }"
:style="`color: ${findDarkValue(account.color)}`"
:to="{ name: 'account', params: { id: account._id } }"
>{{ account.name }}</router-link>
<div v-if="account.isPublic">
<awe-icon icon="users" />
</div>
<hr v-else />
{{ account.users && account.users.map(u => u.alias).join(', ') }}
</div>
</div> </div>
</div> </div>
<div v-else-if="fetched"> <div v-else-if="fetched">
@@ -35,10 +24,12 @@ import IAccount from '@/models/IAccount'
import IColor from '@/models/IColor' import IColor from '@/models/IColor'
import IUser from '@/models/IUser' import IUser from '@/models/IUser'
import FabButton from '@/components/FabButton.vue' import FabButton from '@/components/FabButton.vue'
import AccountCard from '@/components/AccountCard.vue'
@Component({ @Component({
components: { components: {
'fab-button': FabButton 'fab-button': FabButton,
'account-card': AccountCard
} }
}) })
export default class AccountList extends Vue { export default class AccountList extends Vue {
@@ -59,51 +50,14 @@ export default class AccountList extends Vue {
this.accounts = await accountService.getAll(this.archived) this.accounts = await accountService.getAll(this.archived)
this.fetched = true this.fetched = true
} }
public getColor(color: string | null): any | null {
if (!color) {
return null
}
return {
backgroundColor: color,
color: this.findDarkValue(color)
}
}
public findDarkValue(color: string): string | null {
return findDarkValue(color)
}
public goToAccount(id: string): void {
this.$router.push({ name: 'account', params: { id } })
}
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '../styles/variables';
.box {
border-radius: 8px;
word-wrap: break-word;
hyphens: auto;
a {
font-size: 1.2rem;
color: $main;
}
}
li { li {
margin-bottom: 10px; margin-bottom: 10px;
&:last-child { &:last-child {
margin-bottom: 0; margin-bottom: 0;
} }
} }
.box {
&:hover {
cursor: pointer;
}
}
</style> </style>

View File

@@ -14,7 +14,7 @@
</div> </div>
</div> </div>
</div> </div>
<div class="column is-5" v-if="newUser"> <div class="column is-6" v-if="newUser">
<div class="field is-horizontal"> <div class="field is-horizontal">
<div class="field-label is-normal"> <div class="field-label is-normal">
<label class="label" v-t="'user.alias'"></label> <label class="label" v-t="'user.alias'"></label>
@@ -39,8 +39,10 @@
</div> </div>
</div> </div>
</div> </div>
<div class="column is-2" v-if="!isMainUser"> <div class="column is-1" v-if="!isMainUser">
<button class="button is-danger" @click="$emit('remove')">supprimer</button> <button class="button is-danger" @click="$emit('remove')">
<awe-icon icon="trash" />
</button>
</div> </div>
</div> </div>
</template> </template>

View File

@@ -18,6 +18,10 @@ html {
.app { .app {
color: $main; color: $main;
text-align: center; text-align: center;
.field-body {
flex-grow: 3;
}
} }
nav { nav {

View File

@@ -33,7 +33,8 @@ import {
faUsers, faUsers,
faUserLock, faUserLock,
faTimes, faTimes,
faTheaterMasks faTheaterMasks,
faTrash
} from '@fortawesome/free-solid-svg-icons' } from '@fortawesome/free-solid-svg-icons'
import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome' import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome'
@@ -64,6 +65,7 @@ library.add(
faPenSquare, faPenSquare,
faPlus, faPlus,
faTag, faTag,
faTrash,
faSignal, faSignal,
faSyncAlt, faSyncAlt,
faUser, faUser,

View File

@@ -3,7 +3,7 @@
<h1 class="title is-1" v-t="'account.create'"></h1> <h1 class="title is-1" v-t="'account.create'"></h1>
<form @submit.prevent="submitAccount"> <form @submit.prevent="submitAccount">
<div class="columns is-multiline"> <div class="columns is-multiline">
<div class="column is-one-third"> <div class="column is-half">
<h3 class="subtitle is-3">Nom</h3> <h3 class="subtitle is-3">Nom</h3>
<div class="field"> <div class="field">
<div class="control"> <div class="control">
@@ -14,7 +14,7 @@
>{{ $tc('validation.max_char', 30 - name.length, { max: 30 - name.length }) }}</p> >{{ $tc('validation.max_char', 30 - name.length, { max: 30 - name.length }) }}</p>
</div> </div>
</div> </div>
<div class="column is-one-third"> <div class="column is-half">
<h3 class="subtitle is-3" v-t="'account.main_currency'"></h3> <h3 class="subtitle is-3" v-t="'account.main_currency'"></h3>
<div class="control"> <div class="control">
<div class="select is-fullwidth"> <div class="select is-fullwidth">
@@ -28,7 +28,7 @@
</div> </div>
</div> </div>
</div> </div>
<div class="column is-one-third"> <div class="column is-half">
<h3 class="subtitle is-3">Compte privé / public</h3> <h3 class="subtitle is-3">Compte privé / public</h3>
<div class="field"> <div class="field">
<input <input
@@ -43,13 +43,13 @@
<p class="help is-primary" v-else v-t="'account.privateInformation'"></p> <p class="help is-primary" v-else v-t="'account.privateInformation'"></p>
</div> </div>
</div> </div>
<div class="column is-one-third"> <div class="column is-half">
<color-picker v-model="color" /> <color-picker v-model="color" />
</div> </div>
<div class="column is-one-third"> <div class="column is-half">
<account-user-new v-model="users" /> <account-user-new v-model="users" />
</div> </div>
<div class="column is-one-third"> <div class="column is-half">
<h3 class="subtitle is-3 title-currency" @click="toggleCurrencyShow"> <h3 class="subtitle is-3 title-currency" @click="toggleCurrencyShow">
<div class="icon-container"> <div class="icon-container">
<awe-icon icon="chevron-right" :rotation="currencyShow ? 90 : undefined" /> <awe-icon icon="chevron-right" :rotation="currencyShow ? 90 : undefined" />
@@ -81,7 +81,7 @@
</div> </div>
</div> </div>
<div class="columns is-centered"> <div class="columns is-centered">
<div class="column is-one-third"> <div class="column is-half">
<button type="submit" class="button is-primary is-fullwidth is-large"> <button type="submit" class="button is-primary is-fullwidth is-large">
<awe-icon icon="check" /> <awe-icon icon="check" />
</button> </button>