pleroma-fe/src/components/settings_modal/tabs/profile_tab.vue

295 lines
8.3 KiB
Vue
Raw Normal View History

2020-05-03 16:36:12 +02:00
<template>
2020-05-25 02:43:55 +02:00
<div class="profile-tab">
<div class="setting-item">
<h2>{{ $t('settings.name_bio') }}</h2>
<p>{{ $t('settings.name') }}</p>
<EmojiInput
2020-05-03 16:36:12 +02:00
v-model="newName"
2020-05-25 02:43:55 +02:00
enable-emoji-picker
:suggest="emojiSuggestor"
2020-05-03 16:36:12 +02:00
>
2020-05-25 02:43:55 +02:00
<input
id="username"
v-model="newName"
2020-12-15 19:17:50 +01:00
class="name-changer"
2020-05-25 02:43:55 +02:00
>
</EmojiInput>
<p>{{ $t('settings.bio') }}</p>
<EmojiInput
2020-05-03 16:36:12 +02:00
v-model="newBio"
2020-05-25 02:43:55 +02:00
enable-emoji-picker
:suggest="emojiUserSuggestor"
>
<textarea
v-model="newBio"
2020-12-15 19:17:50 +01:00
class="bio resize-height"
2020-05-03 16:36:12 +02:00
/>
2020-05-25 02:43:55 +02:00
</EmojiInput>
<p v-if="role === 'admin' || role === 'moderator'">
<Checkbox v-model="showRole">
<template v-if="role === 'admin'">
{{ $t('settings.show_admin_badge') }}
</template>
<template v-if="role === 'moderator'">
{{ $t('settings.show_moderator_badge') }}
</template>
</Checkbox>
</p>
2020-06-09 20:24:55 +02:00
<div v-if="maxFields > 0">
<p>{{ $t('settings.profile_fields.label') }}</p>
<div
v-for="(_, i) in newFields"
:key="i"
class="profile-fields"
>
<EmojiInput
v-model="newFields[i].name"
enable-emoji-picker
2020-06-09 20:24:55 +02:00
hide-emoji-button
:suggest="userSuggestor"
2020-06-09 20:24:55 +02:00
>
<input
v-model="newFields[i].name"
:placeholder="$t('settings.profile_fields.name')"
>
</EmojiInput>
<EmojiInput
v-model="newFields[i].value"
enable-emoji-picker
2020-06-09 20:24:55 +02:00
hide-emoji-button
:suggest="userSuggestor"
2020-06-09 20:24:55 +02:00
>
<input
v-model="newFields[i].value"
:placeholder="$t('settings.profile_fields.value')"
>
</EmojiInput>
<button
2021-01-22 11:06:39 +01:00
class="delete-field button-unstyled -hover-highlight"
@click="deleteField(i)"
2020-06-09 20:24:55 +02:00
>
<!-- TODO something is wrong with v-show here -->
2020-10-20 23:01:28 +02:00
<FAIcon
v-if="newFields.length > 1"
2020-10-20 20:18:23 +02:00
icon="times"
2020-06-09 20:24:55 +02:00
/>
</button>
2020-06-09 20:24:55 +02:00
</div>
<button
2020-06-09 20:24:55 +02:00
v-if="newFields.length < maxFields"
class="add-field faint button-unstyled -hover-highlight"
2020-06-09 20:24:55 +02:00
@click="addField"
>
<FAIcon icon="plus" />
2020-06-09 20:24:55 +02:00
{{ $t("settings.profile_fields.add_field") }}
</button>
2020-06-09 20:24:55 +02:00
</div>
2020-06-21 14:59:05 +02:00
<p>
<Checkbox v-model="bot">
{{ $t('settings.bot') }}
</Checkbox>
</p>
<p>
<interface-language-switcher
:prompt-text="$t('settings.email_language')"
:language="emailLanguage"
:set-language="val => emailLanguage = val"
/>
</p>
2020-05-25 02:43:55 +02:00
<button
:disabled="newName && newName.length === 0"
class="btn button-default"
2020-05-25 02:43:55 +02:00
@click="updateProfile"
2020-05-03 16:36:12 +02:00
>
{{ $t('settings.save') }}
2020-05-25 02:43:55 +02:00
</button>
</div>
<div class="setting-item">
<h2>{{ $t('settings.avatar') }}</h2>
<p class="visibility-notice">
{{ $t('settings.avatar_size_instruction') }}
</p>
2022-02-28 17:23:32 +01:00
<div class="current-avatar-container">
<img
:src="user.profile_image_url_original"
class="current-avatar"
>
<button
v-if="!isDefaultAvatar && pickAvatarBtnVisible"
:title="$t('settings.reset_avatar')"
@click="resetAvatar"
2022-03-29 18:12:57 +02:00
class="button-unstyled reset-button"
>
<FAIcon
icon="times"
type="button"
/>
</button>
</div>
2020-05-25 02:43:55 +02:00
<p>{{ $t('settings.set_new_avatar') }}</p>
<button
v-show="pickAvatarBtnVisible"
id="pick-avatar"
class="button-default btn"
2020-05-25 02:43:55 +02:00
type="button"
2020-05-03 16:36:12 +02:00
>
2020-05-25 02:43:55 +02:00
{{ $t('settings.upload_a_photo') }}
</button>
<image-cropper
trigger="#pick-avatar"
:submit-handler="submitAvatar"
@open="pickAvatarBtnVisible=false"
@close="pickAvatarBtnVisible=true"
2020-05-03 16:36:12 +02:00
/>
2020-05-25 02:43:55 +02:00
</div>
<div class="setting-item">
<h2>{{ $t('settings.profile_banner') }}</h2>
<div class="banner-background-preview">
<img :src="user.cover_photo">
<button
v-if="!isDefaultBanner"
2022-03-29 18:12:57 +02:00
class="button-unstyled reset-button"
:title="$t('settings.reset_profile_banner')"
@click="resetBanner"
>
<FAIcon
icon="times"
type="button"
/>
</button>
</div>
2020-05-25 02:43:55 +02:00
<p>{{ $t('settings.set_new_profile_banner') }}</p>
<img
v-if="bannerPreview"
class="banner-background-preview"
2020-05-25 02:43:55 +02:00
:src="bannerPreview"
2020-05-03 16:36:12 +02:00
>
2020-05-25 02:43:55 +02:00
<div>
<input
type="file"
@change="uploadFile('banner', $event)"
2020-05-03 16:36:12 +02:00
>
2020-05-25 02:43:55 +02:00
</div>
2020-10-20 23:01:28 +02:00
<FAIcon
2020-05-25 02:43:55 +02:00
v-if="bannerUploading"
2020-10-20 23:01:28 +02:00
class="uploading"
spin
icon="circle-notch"
2020-05-03 16:36:12 +02:00
/>
2020-05-25 02:43:55 +02:00
<button
v-else-if="bannerPreview"
class="btn button-default"
@click="submitBanner(banner)"
2020-05-03 16:36:12 +02:00
>
{{ $t('settings.save') }}
2020-05-25 02:43:55 +02:00
</button>
2020-05-03 16:36:12 +02:00
</div>
2020-05-25 02:43:55 +02:00
<div class="setting-item">
<h2>{{ $t('settings.profile_background') }}</h2>
<div class="banner-background-preview">
<img :src="user.background_image">
<button
v-if="!isDefaultBackground"
2022-03-29 18:12:57 +02:00
class="button-unstyled reset-button"
:title="$t('settings.reset_profile_background')"
2022-03-29 14:35:18 +02:00
@click="resetBackground"
>
<FAIcon
icon="times"
type="button"
/>
</button>
</div>
2020-05-25 02:43:55 +02:00
<p>{{ $t('settings.set_new_profile_background') }}</p>
<img
v-if="backgroundPreview"
class="banner-background-preview"
2020-05-25 02:43:55 +02:00
:src="backgroundPreview"
2020-05-03 16:36:12 +02:00
>
2020-05-25 02:43:55 +02:00
<div>
<input
type="file"
@change="uploadFile('background', $event)"
2020-05-03 16:36:12 +02:00
>
2020-05-25 02:43:55 +02:00
</div>
2020-10-20 23:01:28 +02:00
<FAIcon
2020-05-25 02:43:55 +02:00
v-if="backgroundUploading"
2020-10-20 23:01:28 +02:00
class="uploading"
spin
icon="circle-notch"
2020-05-03 16:36:12 +02:00
/>
2020-05-25 02:43:55 +02:00
<button
v-else-if="backgroundPreview"
class="btn button-default"
@click="submitBackground(background)"
2020-05-03 16:36:12 +02:00
>
{{ $t('settings.save') }}
2020-05-25 02:43:55 +02:00
</button>
2020-05-03 16:36:12 +02:00
</div>
<div class="setting-item">
<h2>{{ $t('settings.account_privacy') }}</h2>
<ul class="setting-list">
<li>
<BooleanSetting path="serverSide_locked">
{{ $t('settings.lock_account_description') }}
</BooleanSetting>
</li>
<li>
<BooleanSetting path="serverSide_discoverable">
{{ $t('settings.discoverable') }}
</BooleanSetting>
</li>
<li>
<BooleanSetting path="serverSide_allowFollowingMove">
{{ $t('settings.allow_following_move') }}
</BooleanSetting>
</li>
<li>
<BooleanSetting path="serverSide_hideFavorites">
{{ $t('settings.hide_favorites_description') }}
</BooleanSetting>
</li>
<li>
<BooleanSetting path="serverSide_hideFollowers">
{{ $t('settings.hide_followers_description') }}
</BooleanSetting>
<ul
class="setting-list suboptions"
:class="[{disabled: !serverSide_hideFollowers}]"
>
<li>
<BooleanSetting
path="serverSide_hideFollowersCount"
2022-02-28 17:15:07 +01:00
:disabled="!serverSide_hideFollowers"
2022-02-28 17:23:32 +01:00
>
{{ $t('settings.hide_followers_count_description') }}
</BooleanSetting>
</li>
</ul>
</li>
<li>
<BooleanSetting path="serverSide_hideFollows">
{{ $t('settings.hide_follows_description') }}
</BooleanSetting>
<ul
class="setting-list suboptions"
:class="[{disabled: !serverSide_hideFollows}]"
>
<li>
<BooleanSetting
path="serverSide_hideFollowsCount"
2022-02-28 17:15:07 +01:00
:disabled="!serverSide_hideFollows"
2022-02-28 17:23:32 +01:00
>
{{ $t('settings.hide_follows_count_description') }}
</BooleanSetting>
</li>
</ul>
</li>
</ul>
</div>
2020-05-03 16:36:12 +02:00
</div>
</template>
<script src="./profile_tab.js"></script>
<style lang="scss" src="./profile_tab.scss"></style>