Sharkey/src/client/app/desktop/views/widgets/profile.vue

129 lines
2.3 KiB
Vue
Raw Normal View History

2018-02-14 16:07:09 +00:00
<template>
2018-02-14 16:41:31 +00:00
<div class="mkw-profile"
2018-02-15 03:36:42 +00:00
:data-compact="props.design == 1 || props.design == 2"
:data-melt="props.design == 2"
2018-02-14 16:41:31 +00:00
>
<div class="banner"
2018-03-29 05:48:47 +00:00
:style="os.i.bannerUrl ? `background-image: url(${os.i.bannerUrl}?thumbnail&size=256)` : ''"
2018-02-14 16:41:31 +00:00
title="クリックでバナー編集"
2018-02-21 06:30:03 +00:00
@click="os.apis.updateBanner"
2018-02-14 16:41:31 +00:00
></div>
2018-04-29 08:22:45 +00:00
<mk-avatar class="avatar" :user="os.i"
2018-02-21 06:30:03 +00:00
@click="os.apis.updateAvatar"
2018-02-14 16:41:31 +00:00
title="クリックでアバター編集"
/>
2018-04-09 09:52:29 +00:00
<router-link class="name" :to="os.i | userPage">{{ os.i | userName }}</router-link>
<p class="username">@{{ os.i | acct }}</p>
2018-02-14 16:07:09 +00:00
</div>
</template>
2018-02-14 16:41:31 +00:00
<script lang="ts">
2018-02-24 15:18:09 +00:00
import define from '../../../common/define-widget';
2018-04-05 16:36:34 +00:00
2018-02-14 16:41:31 +00:00
export default define({
name: 'profile',
2018-02-21 06:30:03 +00:00
props: () => ({
2018-02-14 16:41:31 +00:00
design: 0
2018-02-21 06:30:03 +00:00
})
2018-02-14 16:41:31 +00:00
}).extend({
methods: {
func() {
2018-02-14 16:42:11 +00:00
if (this.props.design == 2) {
2018-02-14 16:41:31 +00:00
this.props.design = 0;
} else {
this.props.design++;
}
2018-04-29 08:17:15 +00:00
this.save();
2018-02-14 16:41:31 +00:00
}
}
});
</script>
<style lang="stylus" scoped>
2018-04-19 19:51:04 +00:00
root(isDark)
2018-02-14 16:41:31 +00:00
overflow hidden
2018-04-19 19:51:04 +00:00
background isDark ? #282c37 : #fff
2018-04-28 23:51:17 +00:00
border solid 1px rgba(#000, 0.075)
2018-02-14 16:41:31 +00:00
border-radius 6px
&[data-compact]
> .banner:before
content ""
display block
width 100%
height 100%
2018-04-28 23:51:17 +00:00
background rgba(#000, 0.5)
2018-02-14 16:41:31 +00:00
> .avatar
top ((100px - 58px) / 2)
left ((100px - 58px) / 2)
border none
border-radius 100%
2018-04-28 23:51:17 +00:00
box-shadow 0 0 16px rgba(#000, 0.5)
2018-02-14 16:41:31 +00:00
> .name
position absolute
top 0
left 92px
margin 0
line-height 100px
color #fff
2018-04-28 23:51:17 +00:00
text-shadow 0 0 8px rgba(#000, 0.5)
2018-02-14 16:41:31 +00:00
> .username
display none
&[data-melt]
background transparent !important
border none !important
> .banner
visibility hidden
> .avatar
box-shadow none
> .name
color #666
text-shadow none
> .banner
height 100px
2018-04-21 02:57:46 +00:00
background-color isDark ? #303e4a : #f5f5f5
2018-02-14 16:41:31 +00:00
background-size cover
background-position center
cursor pointer
> .avatar
display block
position absolute
top 76px
left 16px
width 58px
height 58px
2018-04-19 19:51:04 +00:00
border solid 3px isDark ? #282c37 : #fff
2018-02-14 16:41:31 +00:00
border-radius 8px
cursor pointer
> .name
display block
margin 10px 0 0 84px
line-height 16px
font-weight bold
2018-04-19 19:51:04 +00:00
color isDark ? #fff : #555
2018-02-14 16:41:31 +00:00
> .username
display block
margin 4px 0 8px 84px
line-height 16px
font-size 0.9em
2018-04-19 19:51:04 +00:00
color isDark ? #606984 : #999
.mkw-profile[data-darkmode]
root(true)
.mkw-profile:not([data-darkmode])
root(false)
2018-02-14 16:41:31 +00:00
</style>