diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2023-05-08 17:29:19 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-05-08 17:29:19 +0900 |
| commit | 85a4c8dbb1cd455ac538d8004dafc47d4d6d400f (patch) | |
| tree | 32cd21e25a3b2300e57f36f527f1f3e635f8b8e4 /packages/frontend/src/components/MkUserSetupDialog.User.vue | |
| parent | refactor(frontend): use css modules (diff) | |
| download | sharkey-85a4c8dbb1cd455ac538d8004dafc47d4d6d400f.tar.gz sharkey-85a4c8dbb1cd455ac538d8004dafc47d4d6d400f.tar.bz2 sharkey-85a4c8dbb1cd455ac538d8004dafc47d4d6d400f.zip | |
feat(frontend): アカウント初期設定ウィザード (#10799)
* wip
* :art:
* :art:
* wip
* wip
* :art:
* Update CHANGELOG.md
* wip
* Update MkUserSetupDialog.vue
* add stories
Co-authored-by: Acid Chicken (硫酸鶏) <root@acid-chicken.com>
* update stories
* Update MkUserSetupDialog.Follow.stories.impl.ts
* test: load mock user account
* :v:
* :v:
* test: reset on each render
* test: use id to identify
---------
Co-authored-by: Acid Chicken (硫酸鶏) <root@acid-chicken.com>
Diffstat (limited to 'packages/frontend/src/components/MkUserSetupDialog.User.vue')
| -rw-r--r-- | packages/frontend/src/components/MkUserSetupDialog.User.vue | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/packages/frontend/src/components/MkUserSetupDialog.User.vue b/packages/frontend/src/components/MkUserSetupDialog.User.vue new file mode 100644 index 0000000000..d66f34f165 --- /dev/null +++ b/packages/frontend/src/components/MkUserSetupDialog.User.vue @@ -0,0 +1,101 @@ +<template> +<div v-adaptive-bg class="_panel" style="position: relative;"> + <div :class="$style.banner" :style="user.bannerUrl ? `background-image: url(${user.bannerUrl})` : ''"></div> + <MkAvatar :class="$style.avatar" :user="user" indicator/> + <div :class="$style.title"> + <div :class="$style.name"><MkUserName :user="user" :nowrap="false"/></div> + <p :class="$style.username"><MkAcct :user="user"/></p> + </div> + <div :class="$style.description"> + <div v-if="user.description" :class="$style.mfm"> + <Mfm :text="user.description" :author="user" :i="$i"/> + </div> + <span v-else style="opacity: 0.7;">{{ i18n.ts.noAccountDescription }}</span> + </div> + <div :class="$style.footer"> + <MkButton v-if="!isFollowing" primary gradate rounded full @click="follow"><i class="ti ti-plus"></i> {{ i18n.ts.follow }}</MkButton> + <div v-else style="opacity: 0.7; text-align: center;">{{ i18n.ts.youFollowing }} <i class="ti ti-check"></i></div> + </div> +</div> +</template> + +<script lang="ts" setup> +import * as misskey from 'misskey-js'; +import { ref } from 'vue'; +import MkButton from '@/components/MkButton.vue'; +import { i18n } from '@/i18n'; +import { $i } from '@/account'; +import * as os from '@/os'; + +const props = defineProps<{ + user: misskey.entities.UserDetailed; +}>(); + +const isFollowing = ref(false); + +async function follow() { + isFollowing.value = true; + os.api('following/create', { + userId: props.user.id, + }); +} +</script> + +<style lang="scss" module> +.banner { + height: 60px; + background-color: rgba(0, 0, 0, 0.1); + background-size: cover; + background-position: center; +} + +.avatar { + display: block; + position: absolute; + top: 30px; + left: 13px; + z-index: 2; + width: 58px; + height: 58px; + border: solid 4px var(--panel); +} + +.title { + display: block; + padding: 10px 0 10px 88px; +} + +.name { + display: inline-block; + margin: 0; + font-weight: bold; + line-height: 16px; + word-break: break-all; +} + +.username { + display: block; + margin: 0; + line-height: 16px; + font-size: 0.8em; + color: var(--fg); + opacity: 0.7; +} + +.description { + padding: 0 16px 16px 88px; + font-size: 0.9em; +} + +.mfm { + display: -webkit-box; + -webkit-line-clamp: 5; + -webkit-box-orient: vertical; + overflow: hidden; +} + +.footer { + border-top: solid 0.5px var(--divider); + padding: 16px; +} +</style> |