-
Notifications
You must be signed in to change notification settings - Fork 25
/
App.vue
67 lines (64 loc) · 1.42 KB
/
App.vue
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<template>
<v-app id="app" class="mt-0">
<v-container grid-list-xl>
<image-input v-model="avatar">
<div slot="activator">
<v-avatar size="150px" v-ripple v-if="!avatar" class="grey lighten-3 mb-3">
<span>Click to add avatar</span>
</v-avatar>
<v-avatar size="150px" v-ripple v-else class="mb-3">
<img :src="avatar.imageURL" alt="avatar">
</v-avatar>
</div>
</image-input>
<v-slide-x-transition>
<div v-if="avatar && saved == false">
<v-btn class="primary" @click="uploadImage" :loading="saving">Save Avatar</v-btn>
</div>
</v-slide-x-transition>
</v-container>
</v-app>
</template>
<script>
import ImageInput from './components/ImageInput.vue'
export default {
name: 'app',
data () {
return {
avatar: null,
saving: false,
saved: false
}
},
components: {
ImageInput: ImageInput
},
watch:{
avatar: {
handler: function() {
this.saved = false
},
deep: true
}
},
methods: {
uploadImage() {
this.saving = true
setTimeout(() => this.savedAvatar(), 1000)
},
savedAvatar() {
this.saving = false
this.saved = true
}
}
}
</script>
<style>
#app {
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
margin-top: 60px;
}
</style>