blob: 57a604ff490ae7bf029e32629f549ad82e8f92ac (
plain)
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
|
<template>
<div class="egwyvoaaryotefqhqtmiyawwefemjfsd">
<ui-container :show-header="false" :naked="props.design == 2">
<div class="egwyvoaaryotefqhqtmiyawwefemjfsd-body"
:data-compact="props.design == 1 || props.design == 2"
:data-melt="props.design == 2"
>
<div class="banner"
:style="$store.state.i.bannerUrl ? `background-image: url(${$store.state.i.bannerUrl})` : ''"
:title="$t('update-banner')"
@click="updateBanner()"
></div>
<mk-avatar class="avatar" :user="$store.state.i"
:disable-link="true"
@click="updateAvatar()"
:title="$t('update-avatar')"
/>
<router-link class="name" :to="$store.state.i | userPage"><mk-user-name :user="$store.state.i"/></router-link>
<p class="username">@{{ $store.state.i | acct }}</p>
</div>
</ui-container>
</div>
</template>
<script lang="ts">
import define from '../../../common/define-widget';
import i18n from '../../../i18n';
import updateAvatar from '../../api/update-avatar';
import updateBanner from '../../api/update-banner';
export default define({
name: 'profile',
props: () => ({
design: 0
})
}).extend({
i18n: i18n('desktop/views/widgets/profile.vue'),
methods: {
func() {
if (this.props.design == 2) {
this.props.design = 0;
} else {
this.props.design++;
}
this.save();
},
updateAvatar() {
updateAvatar(this.$root)();
},
updateBanner() {
updateBanner(this.$root)();
}
}
});
</script>
<style lang="stylus" scoped>
.egwyvoaaryotefqhqtmiyawwefemjfsd-body
&[data-compact]
> .banner:before
content ""
display block
width 100%
height 100%
background rgba(#000, 0.5)
> .avatar
top ((100px - 58px) / 2)
left ((100px - 58px) / 2)
border none
border-radius 100%
box-shadow 0 0 16px rgba(#000, 0.5)
> .name
position absolute
top 0
left 92px
margin 0
line-height 100px
color #fff
text-shadow 0 0 8px rgba(#000, 0.5)
> .username
display none
&[data-melt]
> .banner
visibility hidden
> .avatar
box-shadow none
> .name
color #666
text-shadow none
> .banner
height 100px
background-color var(--primaryAlpha01)
background-size cover
background-position center
cursor pointer
> .avatar
display block
position absolute
top 76px
left 16px
width 58px
height 58px
border solid 3px var(--face)
border-radius 8px
cursor pointer
> .name
display block
margin 10px 0 0 84px
line-height 16px
font-weight bold
color var(--text)
> .username
display block
margin 4px 0 8px 84px
line-height 16px
font-size 0.9em
color var(--text)
opacity 0.7
</style>
|