mirror of
https://github.com/MrUnknownDE/VRCX.git
synced 2026-05-05 06:16:05 +02:00
replace el-tag with Badge
This commit is contained in:
+6
-16
@@ -1262,16 +1262,6 @@ i.x-status-icon.red {
|
|||||||
background: #ff2c2c;
|
background: #ff2c2c;
|
||||||
}
|
}
|
||||||
|
|
||||||
.x-tag-friend {
|
|
||||||
color: var(--color-amber-400);
|
|
||||||
border-color: var(--color-amber-400) !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.x-tag-mutual-friend {
|
|
||||||
color: var(--el-color-success);
|
|
||||||
border-color: var(--el-color-success) !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.x-tag-platform-pc {
|
.x-tag-platform-pc {
|
||||||
color: #0078d4;
|
color: #0078d4;
|
||||||
border-color: #0078d4 !important;
|
border-color: #0078d4 !important;
|
||||||
@@ -1282,14 +1272,14 @@ i.x-status-icon.red {
|
|||||||
border-color: #3ddc84 !important;
|
border-color: #3ddc84 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.x-tag-platform-ios {
|
.x-tag-friend {
|
||||||
color: #c7c7ce;
|
color: var(--color-amber-400);
|
||||||
border-color: #c7c7ce !important;
|
border-color: var(--color-amber-400) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.x-tag-platform-other {
|
.x-tag-mutual-friend {
|
||||||
color: var(--el-color-danger);
|
color: var(--el-color-success);
|
||||||
border-color: var(--el-color-danger) !important;
|
border-color: var(--el-color-success) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.x-tag-age-verification {
|
.x-tag-age-verification {
|
||||||
|
|||||||
@@ -31,28 +31,19 @@
|
|||||||
v-text="avatarDialog.ref.authorName"></span>
|
v-text="avatarDialog.ref.authorName"></span>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<el-tag
|
<Badge
|
||||||
v-if="avatarDialog.ref.releaseStatus === 'public'"
|
v-if="avatarDialog.ref.releaseStatus === 'public'"
|
||||||
type="success"
|
variant="outline"
|
||||||
effect="plain"
|
style="margin-right: 5px; margin-top: 5px">
|
||||||
size="small"
|
{{ t('dialog.avatar.tags.public') }}
|
||||||
style="margin-right: 5px; margin-top: 5px"
|
</Badge>
|
||||||
>{{ t('dialog.avatar.tags.public') }}</el-tag
|
<Badge v-else variant="outline" style="margin-right: 5px; margin-top: 5px">
|
||||||
>
|
{{ t('dialog.avatar.tags.private') }}
|
||||||
<el-tag
|
</Badge>
|
||||||
v-else
|
|
||||||
type="danger"
|
|
||||||
effect="plain"
|
|
||||||
size="small"
|
|
||||||
style="margin-right: 5px; margin-top: 5px"
|
|
||||||
>{{ t('dialog.avatar.tags.private') }}</el-tag
|
|
||||||
>
|
|
||||||
<TooltipWrapper v-if="avatarDialog.isPC" side="top" content="PC">
|
<TooltipWrapper v-if="avatarDialog.isPC" side="top" content="PC">
|
||||||
<el-tag
|
<Badge
|
||||||
class="x-tag-platform-pc"
|
class="x-tag-platform-pc"
|
||||||
type="info"
|
variant="outline"
|
||||||
effect="plain"
|
|
||||||
size="small"
|
|
||||||
style="margin-right: 5px; margin-top: 5px"
|
style="margin-right: 5px; margin-top: 5px"
|
||||||
><i class="ri-computer-line"></i>
|
><i class="ri-computer-line"></i>
|
||||||
<span
|
<span
|
||||||
@@ -65,14 +56,12 @@
|
|||||||
:class="['x-grey', 'x-tag-platform-pc', 'x-tag-border-left']"
|
:class="['x-grey', 'x-tag-platform-pc', 'x-tag-border-left']"
|
||||||
>{{ avatarDialog.bundleSizes['standalonewindows'].fileSize }}</span
|
>{{ avatarDialog.bundleSizes['standalonewindows'].fileSize }}</span
|
||||||
>
|
>
|
||||||
</el-tag>
|
</Badge>
|
||||||
</TooltipWrapper>
|
</TooltipWrapper>
|
||||||
<TooltipWrapper v-if="avatarDialog.isQuest" side="top" content="Android">
|
<TooltipWrapper v-if="avatarDialog.isQuest" side="top" content="Android">
|
||||||
<el-tag
|
<Badge
|
||||||
class="x-tag-platform-quest"
|
class="x-tag-platform-quest"
|
||||||
type="info"
|
variant="outline"
|
||||||
effect="plain"
|
|
||||||
size="small"
|
|
||||||
style="margin-right: 5px; margin-top: 5px"
|
style="margin-right: 5px; margin-top: 5px"
|
||||||
><i class="ri-android-line"></i>
|
><i class="ri-android-line"></i>
|
||||||
<span
|
<span
|
||||||
@@ -85,14 +74,12 @@
|
|||||||
:class="['x-grey', 'x-tag-platform-quest', 'x-tag-border-left']"
|
:class="['x-grey', 'x-tag-platform-quest', 'x-tag-border-left']"
|
||||||
>{{ avatarDialog.bundleSizes['android'].fileSize }}</span
|
>{{ avatarDialog.bundleSizes['android'].fileSize }}</span
|
||||||
>
|
>
|
||||||
</el-tag>
|
</Badge>
|
||||||
</TooltipWrapper>
|
</TooltipWrapper>
|
||||||
<TooltipWrapper v-if="avatarDialog.isIos" side="top" content="iOS">
|
<TooltipWrapper v-if="avatarDialog.isIos" side="top" content="iOS">
|
||||||
<el-tag
|
<Badge
|
||||||
class="x-tag-platform-ios"
|
class="x-tag-platform-ios"
|
||||||
type="info"
|
variant="outline"
|
||||||
effect="plain"
|
|
||||||
size="small"
|
|
||||||
style="margin-right: 5px; margin-top: 5px"
|
style="margin-right: 5px; margin-top: 5px"
|
||||||
><i class="ri-apple-line"></i>
|
><i class="ri-apple-line"></i>
|
||||||
<span
|
<span
|
||||||
@@ -105,24 +92,20 @@
|
|||||||
:class="['x-grey', 'x-tag-platform-ios', 'x-tag-border-left']"
|
:class="['x-grey', 'x-tag-platform-ios', 'x-tag-border-left']"
|
||||||
>{{ avatarDialog.bundleSizes['ios'].fileSize }}</span
|
>{{ avatarDialog.bundleSizes['ios'].fileSize }}</span
|
||||||
>
|
>
|
||||||
</el-tag>
|
</Badge>
|
||||||
</TooltipWrapper>
|
</TooltipWrapper>
|
||||||
<el-tag
|
<Badge
|
||||||
v-if="avatarDialog.inCache"
|
v-if="avatarDialog.inCache"
|
||||||
|
variant="outline"
|
||||||
class="x-link"
|
class="x-link"
|
||||||
type="info"
|
|
||||||
effect="plain"
|
|
||||||
size="small"
|
|
||||||
style="margin-right: 5px; margin-top: 5px"
|
style="margin-right: 5px; margin-top: 5px"
|
||||||
@click="openFolderGeneric(avatarDialog.cachePath)">
|
@click="openFolderGeneric(avatarDialog.cachePath)">
|
||||||
<span v-text="avatarDialog.cacheSize"></span>
|
<span v-text="avatarDialog.cacheSize"></span>
|
||||||
{{ t('dialog.avatar.tags.cache') }}
|
{{ t('dialog.avatar.tags.cache') }}
|
||||||
</el-tag>
|
</Badge>
|
||||||
<el-tag
|
<Badge
|
||||||
v-if="avatarDialog.ref.styles?.primary || avatarDialog.ref.styles?.secondary"
|
v-if="avatarDialog.ref.styles?.primary || avatarDialog.ref.styles?.secondary"
|
||||||
type="info"
|
variant="outline"
|
||||||
effect="plain"
|
|
||||||
size="small"
|
|
||||||
style="margin-right: 5px; margin-top: 5px"
|
style="margin-right: 5px; margin-top: 5px"
|
||||||
>Styles
|
>Styles
|
||||||
<span v-if="avatarDialog.ref.styles.primary" :class="['x-grey', 'x-tag-border-left']">{{
|
<span v-if="avatarDialog.ref.styles.primary" :class="['x-grey', 'x-tag-border-left']">{{
|
||||||
@@ -133,40 +116,33 @@
|
|||||||
:class="['x-grey', 'x-tag-border-left']"
|
:class="['x-grey', 'x-tag-border-left']"
|
||||||
>{{ avatarDialog.ref.styles.secondary }}</span
|
>{{ avatarDialog.ref.styles.secondary }}</span
|
||||||
>
|
>
|
||||||
</el-tag>
|
</Badge>
|
||||||
<el-tag
|
<Badge
|
||||||
v-if="avatarDialog.isQuestFallback"
|
v-if="avatarDialog.isQuestFallback"
|
||||||
type="info"
|
variant="outline"
|
||||||
effect="plain"
|
style="margin-right: 5px; margin-top: 5px">
|
||||||
size="small"
|
{{ t('dialog.avatar.tags.fallback') }}
|
||||||
style="margin-right: 5px; margin-top: 5px"
|
</Badge>
|
||||||
>{{ t('dialog.avatar.tags.fallback') }}</el-tag
|
<Badge
|
||||||
>
|
|
||||||
<el-tag
|
|
||||||
v-if="avatarDialog.hasImposter"
|
v-if="avatarDialog.hasImposter"
|
||||||
type="info"
|
variant="outline"
|
||||||
effect="plain"
|
|
||||||
size="small"
|
|
||||||
style="margin-right: 5px; margin-top: 5px"
|
style="margin-right: 5px; margin-top: 5px"
|
||||||
>{{ t('dialog.avatar.tags.impostor') }}
|
>{{ t('dialog.avatar.tags.impostor') }}
|
||||||
<span v-if="avatarDialog.imposterVersion" :class="['x-grey', 'x-tag-border-left']"
|
<span v-if="avatarDialog.imposterVersion" :class="['x-grey', 'x-tag-border-left']"
|
||||||
>v{{ avatarDialog.imposterVersion }}</span
|
>v{{ avatarDialog.imposterVersion }}</span
|
||||||
>
|
>
|
||||||
</el-tag>
|
</Badge>
|
||||||
<el-tag
|
<Badge
|
||||||
v-if="avatarDialog.ref.unityPackageUrl"
|
v-if="avatarDialog.ref.unityPackageUrl"
|
||||||
type="success"
|
variant="outline"
|
||||||
effect="plain"
|
style="margin-right: 5px; margin-top: 5px">
|
||||||
size="small"
|
{{ t('dialog.avatar.tags.future_proofing') }}
|
||||||
style="margin-right: 5px; margin-top: 5px"
|
</Badge>
|
||||||
>{{ t('dialog.avatar.tags.future_proofing') }}</el-tag
|
|
||||||
>
|
|
||||||
<div>
|
<div>
|
||||||
<template v-for="tag in avatarDialog.ref.tags" :key="tag">
|
<template v-for="tag in avatarDialog.ref.tags" :key="tag">
|
||||||
<el-tag
|
<Badge
|
||||||
v-if="tag.startsWith('content_')"
|
v-if="tag.startsWith('content_')"
|
||||||
effect="plain"
|
variant="outline"
|
||||||
size="small"
|
|
||||||
style="margin-right: 5px; margin-top: 5px">
|
style="margin-right: 5px; margin-top: 5px">
|
||||||
<span v-if="tag === 'content_horror'">{{
|
<span v-if="tag === 'content_horror'">{{
|
||||||
t('dialog.avatar.tags.content_horror')
|
t('dialog.avatar.tags.content_horror')
|
||||||
@@ -184,16 +160,15 @@
|
|||||||
t('dialog.avatar.tags.content_sex')
|
t('dialog.avatar.tags.content_sex')
|
||||||
}}</span>
|
}}</span>
|
||||||
<span v-else>{{ tag.replace('content_', '') }}</span>
|
<span v-else>{{ tag.replace('content_', '') }}</span>
|
||||||
</el-tag>
|
</Badge>
|
||||||
<el-tag
|
<Badge
|
||||||
v-if="tag.startsWith('author_tag_')"
|
v-if="tag.startsWith('author_tag_')"
|
||||||
effect="plain"
|
variant="outline"
|
||||||
size="small"
|
|
||||||
style="margin-right: 5px; margin-top: 5px">
|
style="margin-right: 5px; margin-top: 5px">
|
||||||
<span>
|
<span>
|
||||||
{{ tag.replace('author_tag_', '') }}
|
{{ tag.replace('author_tag_', '') }}
|
||||||
</span>
|
</span>
|
||||||
</el-tag>
|
</Badge>
|
||||||
</template>
|
</template>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -507,8 +482,8 @@
|
|||||||
<span class="name"
|
<span class="name"
|
||||||
>{{ t('dialog.avatar.info.time_spent')
|
>{{ t('dialog.avatar.info.time_spent')
|
||||||
}}<TooltipWrapper side="top" :content="t('dialog.world.info.accuracy_notice')">
|
}}<TooltipWrapper side="top" :content="t('dialog.world.info.accuracy_notice')">
|
||||||
<el-icon style="margin-left: 3px"><Warning /></el-icon>
|
<el-icon style="margin-left: 3px"><Warning /></el-icon> </TooltipWrapper
|
||||||
</TooltipWrapper></span>
|
></span>
|
||||||
|
|
||||||
<span v-if="timeSpent === 0" class="extra">-</span>
|
<span v-if="timeSpent === 0" class="extra">-</span>
|
||||||
<span v-else class="extra">{{ timeToText(timeSpent) }}</span>
|
<span v-else class="extra">{{ timeToText(timeSpent) }}</span>
|
||||||
@@ -612,6 +587,7 @@
|
|||||||
import { useAvatarStore, useFavoriteStore, useGalleryStore, useGameStore, useUserStore } from '../../../stores';
|
import { useAvatarStore, useFavoriteStore, useGalleryStore, useGameStore, useUserStore } from '../../../stores';
|
||||||
import { avatarModerationRequest, avatarRequest, favoriteRequest, miscRequest } from '../../../api';
|
import { avatarModerationRequest, avatarRequest, favoriteRequest, miscRequest } from '../../../api';
|
||||||
import { AppDebug } from '../../../service/appConfig.js';
|
import { AppDebug } from '../../../service/appConfig.js';
|
||||||
|
import { Badge } from '../../ui/badge';
|
||||||
import { database } from '../../../service/database';
|
import { database } from '../../../service/database';
|
||||||
import { getNextDialogIndex } from '../../../shared/utils/base/ui';
|
import { getNextDialogIndex } from '../../../shared/utils/base/ui';
|
||||||
import { handleImageUploadInput } from '../../../shared/utils/imageUpload';
|
import { handleImageUploadInput } from '../../../shared/utils/imageUpload';
|
||||||
|
|||||||
@@ -62,13 +62,13 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="custom-nav-entry__folder-items">
|
<div class="custom-nav-entry__folder-items">
|
||||||
<template v-if="entry.items?.length">
|
<template v-if="entry.items?.length">
|
||||||
<el-tag
|
<Badge
|
||||||
v-for="key in entry.items"
|
v-for="key in entry.items"
|
||||||
:key="`${entry.id}-${key}`"
|
:key="`${entry.id}-${key}`"
|
||||||
size="small"
|
variant="outline"
|
||||||
class="custom-nav-entry__folder-tag">
|
class="custom-nav-entry__folder-tag">
|
||||||
{{ t(definitionsMap.get(key)?.labelKey || key) }}
|
{{ t(definitionsMap.get(key)?.labelKey || key) }}
|
||||||
</el-tag>
|
</Badge>
|
||||||
</template>
|
</template>
|
||||||
<span v-else class="custom-nav-entry__folder-empty">
|
<span v-else class="custom-nav-entry__folder-empty">
|
||||||
{{ t('nav_menu.custom_nav.folder_empty') }}
|
{{ t('nav_menu.custom_nav.folder_empty') }}
|
||||||
@@ -205,6 +205,7 @@
|
|||||||
|
|
||||||
import dayjs from 'dayjs';
|
import dayjs from 'dayjs';
|
||||||
|
|
||||||
|
import { Badge } from '../ui/badge';
|
||||||
import { navDefinitions } from '../../shared/constants/ui.js';
|
import { navDefinitions } from '../../shared/constants/ui.js';
|
||||||
|
|
||||||
import IconPicker from '../IconPicker.vue';
|
import IconPicker from '../IconPicker.vue';
|
||||||
|
|||||||
@@ -44,111 +44,85 @@
|
|||||||
v-text="groupDialog.ownerDisplayName"></span>
|
v-text="groupDialog.ownerDisplayName"></span>
|
||||||
</div>
|
</div>
|
||||||
<div class="group-tags">
|
<div class="group-tags">
|
||||||
<el-tag
|
<Badge
|
||||||
v-if="groupDialog.ref.isVerified"
|
v-if="groupDialog.ref.isVerified"
|
||||||
type="info"
|
variant="outline"
|
||||||
effect="plain"
|
|
||||||
size="small"
|
|
||||||
style="margin-right: 5px; margin-top: 5px">
|
style="margin-right: 5px; margin-top: 5px">
|
||||||
{{ t('dialog.group.tags.verified') }}
|
{{ t('dialog.group.tags.verified') }}
|
||||||
</el-tag>
|
</Badge>
|
||||||
<el-tag
|
<Badge
|
||||||
v-if="groupDialog.ref.privacy === 'private'"
|
v-if="groupDialog.ref.privacy === 'private'"
|
||||||
type="danger"
|
variant="outline"
|
||||||
effect="plain"
|
|
||||||
size="small"
|
|
||||||
style="margin-right: 5px; margin-top: 5px">
|
style="margin-right: 5px; margin-top: 5px">
|
||||||
{{ t('dialog.group.tags.private') }}
|
{{ t('dialog.group.tags.private') }}
|
||||||
</el-tag>
|
</Badge>
|
||||||
<el-tag
|
<Badge
|
||||||
v-if="groupDialog.ref.privacy === 'default'"
|
v-if="groupDialog.ref.privacy === 'default'"
|
||||||
type="success"
|
variant="outline"
|
||||||
effect="plain"
|
|
||||||
size="small"
|
|
||||||
style="margin-right: 5px; margin-top: 5px">
|
style="margin-right: 5px; margin-top: 5px">
|
||||||
{{ t('dialog.group.tags.public') }}
|
{{ t('dialog.group.tags.public') }}
|
||||||
</el-tag>
|
</Badge>
|
||||||
<el-tag
|
<Badge
|
||||||
v-if="groupDialog.ref.joinState === 'open'"
|
v-if="groupDialog.ref.joinState === 'open'"
|
||||||
type="success"
|
variant="outline"
|
||||||
effect="plain"
|
|
||||||
size="small"
|
|
||||||
style="margin-right: 5px; margin-top: 5px">
|
style="margin-right: 5px; margin-top: 5px">
|
||||||
{{ t('dialog.group.tags.open') }}
|
{{ t('dialog.group.tags.open') }}
|
||||||
</el-tag>
|
</Badge>
|
||||||
<el-tag
|
<Badge
|
||||||
v-else-if="groupDialog.ref.joinState === 'request'"
|
v-else-if="groupDialog.ref.joinState === 'request'"
|
||||||
type="warning"
|
variant="outline"
|
||||||
effect="plain"
|
|
||||||
size="small"
|
|
||||||
style="margin-right: 5px; margin-top: 5px">
|
style="margin-right: 5px; margin-top: 5px">
|
||||||
{{ t('dialog.group.tags.request') }}
|
{{ t('dialog.group.tags.request') }}
|
||||||
</el-tag>
|
</Badge>
|
||||||
<el-tag
|
<Badge
|
||||||
v-else-if="groupDialog.ref.joinState === 'invite'"
|
v-else-if="groupDialog.ref.joinState === 'invite'"
|
||||||
type="danger"
|
variant="outline"
|
||||||
effect="plain"
|
|
||||||
size="small"
|
|
||||||
style="margin-right: 5px; margin-top: 5px">
|
style="margin-right: 5px; margin-top: 5px">
|
||||||
{{ t('dialog.group.tags.invite') }}
|
{{ t('dialog.group.tags.invite') }}
|
||||||
</el-tag>
|
</Badge>
|
||||||
<el-tag
|
<Badge
|
||||||
v-else-if="groupDialog.ref.joinState === 'closed'"
|
v-else-if="groupDialog.ref.joinState === 'closed'"
|
||||||
type="danger"
|
variant="outline"
|
||||||
effect="plain"
|
|
||||||
size="small"
|
|
||||||
style="margin-right: 5px; margin-top: 5px">
|
style="margin-right: 5px; margin-top: 5px">
|
||||||
{{ t('dialog.group.tags.closed') }}
|
{{ t('dialog.group.tags.closed') }}
|
||||||
</el-tag>
|
</Badge>
|
||||||
<el-tag
|
<Badge
|
||||||
v-if="groupDialog.inGroup"
|
v-if="groupDialog.inGroup"
|
||||||
type="info"
|
variant="outline"
|
||||||
effect="plain"
|
|
||||||
size="small"
|
|
||||||
style="margin-right: 5px; margin-top: 5px">
|
style="margin-right: 5px; margin-top: 5px">
|
||||||
{{ t('dialog.group.tags.joined') }}
|
{{ t('dialog.group.tags.joined') }}
|
||||||
</el-tag>
|
</Badge>
|
||||||
<el-tag
|
<Badge
|
||||||
v-if="groupDialog.ref.myMember && groupDialog.ref.myMember.bannedAt"
|
v-if="groupDialog.ref.myMember && groupDialog.ref.myMember.bannedAt"
|
||||||
type="danger"
|
variant="outline"
|
||||||
effect="plain"
|
|
||||||
size="small"
|
|
||||||
style="margin-right: 5px; margin-top: 5px">
|
style="margin-right: 5px; margin-top: 5px">
|
||||||
{{ t('dialog.group.tags.banned') }}
|
{{ t('dialog.group.tags.banned') }}
|
||||||
</el-tag>
|
</Badge>
|
||||||
<template v-if="groupDialog.inGroup && groupDialog.ref.myMember">
|
<template v-if="groupDialog.inGroup && groupDialog.ref.myMember">
|
||||||
<el-tag
|
<Badge
|
||||||
v-if="groupDialog.ref.myMember.visibility === 'visible'"
|
v-if="groupDialog.ref.myMember.visibility === 'visible'"
|
||||||
type="info"
|
variant="outline"
|
||||||
effect="plain"
|
|
||||||
size="small"
|
|
||||||
style="margin-right: 5px; margin-top: 5px">
|
style="margin-right: 5px; margin-top: 5px">
|
||||||
{{ t('dialog.group.tags.visible') }}
|
{{ t('dialog.group.tags.visible') }}
|
||||||
</el-tag>
|
</Badge>
|
||||||
<el-tag
|
<Badge
|
||||||
v-else-if="groupDialog.ref.myMember.visibility === 'friends'"
|
v-else-if="groupDialog.ref.myMember.visibility === 'friends'"
|
||||||
type="info"
|
variant="outline"
|
||||||
effect="plain"
|
|
||||||
size="small"
|
|
||||||
style="margin-right: 5px; margin-top: 5px">
|
style="margin-right: 5px; margin-top: 5px">
|
||||||
{{ t('dialog.group.tags.friends') }}
|
{{ t('dialog.group.tags.friends') }}
|
||||||
</el-tag>
|
</Badge>
|
||||||
<el-tag
|
<Badge
|
||||||
v-else-if="groupDialog.ref.myMember.visibility === 'hidden'"
|
v-else-if="groupDialog.ref.myMember.visibility === 'hidden'"
|
||||||
type="info"
|
variant="outline"
|
||||||
effect="plain"
|
|
||||||
size="small"
|
|
||||||
style="margin-right: 5px; margin-top: 5px">
|
style="margin-right: 5px; margin-top: 5px">
|
||||||
{{ t('dialog.group.tags.hidden') }}
|
{{ t('dialog.group.tags.hidden') }}
|
||||||
</el-tag>
|
</Badge>
|
||||||
<el-tag
|
<Badge
|
||||||
v-if="groupDialog.ref.myMember.isSubscribedToAnnouncements"
|
v-if="groupDialog.ref.myMember.isSubscribedToAnnouncements"
|
||||||
type="info"
|
variant="outline"
|
||||||
effect="plain"
|
|
||||||
size="small"
|
|
||||||
style="margin-right: 5px; margin-top: 5px">
|
style="margin-right: 5px; margin-top: 5px">
|
||||||
{{ t('dialog.group.tags.subscribed') }}
|
{{ t('dialog.group.tags.subscribed') }}
|
||||||
</el-tag>
|
</Badge>
|
||||||
</template>
|
</template>
|
||||||
</div>
|
</div>
|
||||||
<div style="margin-top: 5px">
|
<div style="margin-top: 5px">
|
||||||
@@ -192,9 +166,7 @@
|
|||||||
</TooltipWrapper>
|
</TooltipWrapper>
|
||||||
</template>
|
</template>
|
||||||
<template v-else-if="groupDialog.ref.myMember?.membershipStatus === 'requested'">
|
<template v-else-if="groupDialog.ref.myMember?.membershipStatus === 'requested'">
|
||||||
<TooltipWrapper
|
<TooltipWrapper side="top" :content="t('dialog.group.actions.cancel_join_request_tooltip')">
|
||||||
side="top"
|
|
||||||
:content="t('dialog.group.actions.cancel_join_request_tooltip')">
|
|
||||||
<span>
|
<span>
|
||||||
<el-button
|
<el-button
|
||||||
type="default"
|
type="default"
|
||||||
@@ -649,8 +621,8 @@
|
|||||||
:icon="CopyDocument"
|
:icon="CopyDocument"
|
||||||
circle
|
circle
|
||||||
style="margin-left: 5px"
|
style="margin-left: 5px"
|
||||||
@click="copyToClipboard(groupDialog.ref.$url)" />
|
@click="copyToClipboard(groupDialog.ref.$url)" /> </TooltipWrapper
|
||||||
</TooltipWrapper></span>
|
></span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="x-friend-item" style="width: 350px; cursor: default">
|
<div class="x-friend-item" style="width: 350px; cursor: default">
|
||||||
@@ -665,8 +637,8 @@
|
|||||||
:icon="CopyDocument"
|
:icon="CopyDocument"
|
||||||
circle
|
circle
|
||||||
style="margin-left: 5px"
|
style="margin-left: 5px"
|
||||||
@click="copyToClipboard(groupDialog.id)" />
|
@click="copyToClipboard(groupDialog.id)" /> </TooltipWrapper
|
||||||
</TooltipWrapper></span>
|
></span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
@@ -1205,6 +1177,7 @@
|
|||||||
} from '../../../shared/utils';
|
} from '../../../shared/utils';
|
||||||
import { useGalleryStore, useGroupStore, useLocationStore, useUserStore } from '../../../stores';
|
import { useGalleryStore, useGroupStore, useLocationStore, useUserStore } from '../../../stores';
|
||||||
import { groupDialogFilterOptions, groupDialogSortingOptions } from '../../../shared/constants';
|
import { groupDialogFilterOptions, groupDialogSortingOptions } from '../../../shared/constants';
|
||||||
|
import { Badge } from '../../ui/badge';
|
||||||
import { getNextDialogIndex } from '../../../shared/utils/base/ui';
|
import { getNextDialogIndex } from '../../../shared/utils/base/ui';
|
||||||
import { groupRequest } from '../../../api';
|
import { groupRequest } from '../../../api';
|
||||||
|
|
||||||
|
|||||||
@@ -723,14 +723,11 @@
|
|||||||
style="margin-left: 5px"
|
style="margin-left: 5px"
|
||||||
@click="clearSelectedGroupMembers"></el-button>
|
@click="clearSelectedGroupMembers"></el-button>
|
||||||
<br />
|
<br />
|
||||||
<el-tag
|
<Badge
|
||||||
v-for="user in selectedUsersArray"
|
v-for="user in selectedUsersArray"
|
||||||
:key="user.id"
|
:key="user.id"
|
||||||
type="info"
|
variant="outline"
|
||||||
:disable-transitions="true"
|
style="margin-right: 5px; margin-top: 5px">
|
||||||
style="margin-right: 5px; margin-top: 5px"
|
|
||||||
closable
|
|
||||||
@close="deleteSelectedGroupMember(user)">
|
|
||||||
<TooltipWrapper v-if="user.membershipStatus !== 'member'" side="top">
|
<TooltipWrapper v-if="user.membershipStatus !== 'member'" side="top">
|
||||||
<template #content>
|
<template #content>
|
||||||
<span>{{ t('dialog.group_member_moderation.user_isnt_in_group') }}</span>
|
<span>{{ t('dialog.group_member_moderation.user_isnt_in_group') }}</span>
|
||||||
@@ -738,7 +735,22 @@
|
|||||||
<el-icon style="margin-left: 3px; display: inline-block"><Warning /></el-icon>
|
<el-icon style="margin-left: 3px; display: inline-block"><Warning /></el-icon>
|
||||||
</TooltipWrapper>
|
</TooltipWrapper>
|
||||||
<span v-text="user.user?.displayName || user.userId" style="font-weight: bold; margin-left: 5px"></span>
|
<span v-text="user.user?.displayName || user.userId" style="font-weight: bold; margin-left: 5px"></span>
|
||||||
</el-tag>
|
<button
|
||||||
|
type="button"
|
||||||
|
style="
|
||||||
|
margin-left: 6px;
|
||||||
|
border: none;
|
||||||
|
background: transparent;
|
||||||
|
padding: 0;
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
color: inherit;
|
||||||
|
cursor: pointer;
|
||||||
|
"
|
||||||
|
@click="deleteSelectedGroupMember(user)">
|
||||||
|
<i class="ri-close-line" style="font-size: 12px; line-height: 1"></i>
|
||||||
|
</button>
|
||||||
|
</Badge>
|
||||||
<br />
|
<br />
|
||||||
<br />
|
<br />
|
||||||
<span class="name">{{ t('dialog.group_member_moderation.notes') }}</span>
|
<span class="name">{{ t('dialog.group_member_moderation.notes') }}</span>
|
||||||
@@ -860,6 +872,7 @@
|
|||||||
import { useAppearanceSettingsStore, useGalleryStore, useGroupStore, useUserStore } from '../../../stores';
|
import { useAppearanceSettingsStore, useGalleryStore, useGroupStore, useUserStore } from '../../../stores';
|
||||||
import { groupDialogFilterOptions, groupDialogSortingOptions } from '../../../shared/constants';
|
import { groupDialogFilterOptions, groupDialogSortingOptions } from '../../../shared/constants';
|
||||||
import { groupRequest, userRequest } from '../../../api';
|
import { groupRequest, userRequest } from '../../../api';
|
||||||
|
import { Badge } from '../../ui/badge';
|
||||||
|
|
||||||
import GroupMemberModerationExportDialog from './GroupMemberModerationExportDialog.vue';
|
import GroupMemberModerationExportDialog from './GroupMemberModerationExportDialog.vue';
|
||||||
|
|
||||||
|
|||||||
@@ -7,19 +7,28 @@
|
|||||||
append-to-body>
|
append-to-body>
|
||||||
<div v-loading="languageDialog.loading">
|
<div v-loading="languageDialog.loading">
|
||||||
<div v-for="item in currentUser.$languages" :key="item.key" style="margin: 6px 0">
|
<div v-for="item in currentUser.$languages" :key="item.key" style="margin: 6px 0">
|
||||||
<el-tag
|
<Badge variant="outline" style="margin-right: 5px">
|
||||||
size="small"
|
|
||||||
type="info"
|
|
||||||
effect="plain"
|
|
||||||
closable
|
|
||||||
style="margin-right: 5px"
|
|
||||||
@close="removeUserLanguage(item.key)">
|
|
||||||
<span
|
<span
|
||||||
class="flags"
|
class="flags"
|
||||||
:class="languageClass(item.key)"
|
:class="languageClass(item.key)"
|
||||||
style="display: inline-block; margin-right: 5px"></span>
|
style="display: inline-block; margin-right: 5px"></span>
|
||||||
{{ item.value }} ({{ item.key.toUpperCase() }})
|
{{ item.value }} ({{ item.key.toUpperCase() }})
|
||||||
</el-tag>
|
<button
|
||||||
|
type="button"
|
||||||
|
style="
|
||||||
|
margin-left: 6px;
|
||||||
|
border: none;
|
||||||
|
background: transparent;
|
||||||
|
padding: 0;
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
color: inherit;
|
||||||
|
cursor: pointer;
|
||||||
|
"
|
||||||
|
@click="removeUserLanguage(item.key)">
|
||||||
|
<i class="ri-close-line" style="font-size: 12px; line-height: 1"></i>
|
||||||
|
</button>
|
||||||
|
</Badge>
|
||||||
</div>
|
</div>
|
||||||
<el-select
|
<el-select
|
||||||
:disabled="languageDialog.loading || (currentUser.$languages && currentUser.$languages.length === 3)"
|
:disabled="languageDialog.loading || (currentUser.$languages && currentUser.$languages.length === 3)"
|
||||||
@@ -46,6 +55,7 @@
|
|||||||
import { storeToRefs } from 'pinia';
|
import { storeToRefs } from 'pinia';
|
||||||
import { useI18n } from 'vue-i18n';
|
import { useI18n } from 'vue-i18n';
|
||||||
|
|
||||||
|
import { Badge } from '../../ui/badge';
|
||||||
import { languageClass } from '../../../shared/utils';
|
import { languageClass } from '../../../shared/utils';
|
||||||
import { useUserStore } from '../../../stores';
|
import { useUserStore } from '../../../stores';
|
||||||
import { userRequest } from '../../../api';
|
import { userRequest } from '../../../api';
|
||||||
|
|||||||
@@ -74,24 +74,20 @@
|
|||||||
</div>
|
</div>
|
||||||
<div style="margin-top: 5px" v-show="!userDialog.loading">
|
<div style="margin-top: 5px" v-show="!userDialog.loading">
|
||||||
<TooltipWrapper side="top" :content="t('dialog.user.tags.trust_level')">
|
<TooltipWrapper side="top" :content="t('dialog.user.tags.trust_level')">
|
||||||
<el-tag
|
<Badge
|
||||||
type="info"
|
variant="outline"
|
||||||
effect="plain"
|
|
||||||
size="small"
|
|
||||||
class="name"
|
class="name"
|
||||||
:class="userDialog.ref.$trustClass"
|
:class="userDialog.ref.$trustClass"
|
||||||
style="margin-right: 5px; margin-top: 5px">
|
style="margin-right: 5px; margin-top: 5px">
|
||||||
<i class="ri-shield-line"></i> {{ userDialog.ref.$trustLevel }}
|
<i class="ri-shield-line"></i> {{ userDialog.ref.$trustLevel }}
|
||||||
</el-tag>
|
</Badge>
|
||||||
</TooltipWrapper>
|
</TooltipWrapper>
|
||||||
<TooltipWrapper
|
<TooltipWrapper
|
||||||
v-if="userDialog.ref.ageVerified && userDialog.ref.ageVerificationStatus"
|
v-if="userDialog.ref.ageVerified && userDialog.ref.ageVerificationStatus"
|
||||||
side="top"
|
side="top"
|
||||||
:content="t('dialog.user.tags.age_verified')">
|
:content="t('dialog.user.tags.age_verified')">
|
||||||
<el-tag
|
<Badge
|
||||||
type="info"
|
variant="outline"
|
||||||
effect="plain"
|
|
||||||
size="small"
|
|
||||||
class="x-tag-age-verification"
|
class="x-tag-age-verification"
|
||||||
style="margin-right: 5px; margin-top: 5px">
|
style="margin-right: 5px; margin-top: 5px">
|
||||||
<template v-if="userDialog.ref.ageVerificationStatus === '18+'">
|
<template v-if="userDialog.ref.ageVerificationStatus === '18+'">
|
||||||
@@ -100,116 +96,84 @@
|
|||||||
<template v-else>
|
<template v-else>
|
||||||
<i class="ri-info-card-line"></i>
|
<i class="ri-info-card-line"></i>
|
||||||
</template>
|
</template>
|
||||||
</el-tag>
|
</Badge>
|
||||||
</TooltipWrapper>
|
</TooltipWrapper>
|
||||||
<TooltipWrapper
|
<TooltipWrapper
|
||||||
v-if="userDialog.isFriend && userDialog.friend"
|
v-if="userDialog.isFriend && userDialog.friend"
|
||||||
side="top"
|
side="top"
|
||||||
:content="t('dialog.user.tags.friend_number')">
|
:content="t('dialog.user.tags.friend_number')">
|
||||||
<el-tag
|
<Badge variant="outline" class="x-tag-friend" style="margin-right: 5px; margin-top: 5px">
|
||||||
type="info"
|
|
||||||
effect="plain"
|
|
||||||
size="small"
|
|
||||||
class="x-tag-friend"
|
|
||||||
style="margin-right: 5px; margin-top: 5px">
|
|
||||||
<i class="ri-user-add-line"></i>
|
<i class="ri-user-add-line"></i>
|
||||||
{{ userDialog.ref.$friendNumber ? userDialog.ref.$friendNumber : '' }}
|
{{ userDialog.ref.$friendNumber ? userDialog.ref.$friendNumber : '' }}
|
||||||
</el-tag>
|
</Badge>
|
||||||
</TooltipWrapper>
|
</TooltipWrapper>
|
||||||
<TooltipWrapper
|
<TooltipWrapper
|
||||||
v-if="userDialog.mutualFriendCount"
|
v-if="userDialog.mutualFriendCount"
|
||||||
side="top"
|
side="top"
|
||||||
:content="t('dialog.user.tags.mutual_friends')">
|
:content="t('dialog.user.tags.mutual_friends')">
|
||||||
<el-tag
|
<Badge variant="outline" class="x-tag-mutual-friend" style="margin-right: 5px; margin-top: 5px">
|
||||||
type="info"
|
|
||||||
effect="plain"
|
|
||||||
size="small"
|
|
||||||
class="x-tag-mutual-friend"
|
|
||||||
style="margin-right: 5px; margin-top: 5px">
|
|
||||||
<i class="ri-group-line"></i>
|
<i class="ri-group-line"></i>
|
||||||
{{ userDialog.mutualFriendCount }}
|
{{ userDialog.mutualFriendCount }}
|
||||||
</el-tag>
|
</Badge>
|
||||||
</TooltipWrapper>
|
</TooltipWrapper>
|
||||||
<el-tag
|
<Badge
|
||||||
v-if="userDialog.ref.$isTroll"
|
v-if="userDialog.ref.$isTroll"
|
||||||
type="info"
|
variant="outline"
|
||||||
effect="plain"
|
|
||||||
size="small"
|
|
||||||
class="x-tag-troll"
|
class="x-tag-troll"
|
||||||
style="margin-right: 5px; margin-top: 5px">
|
style="margin-right: 5px; margin-top: 5px">
|
||||||
Nuisance
|
Nuisance
|
||||||
</el-tag>
|
</Badge>
|
||||||
<el-tag
|
<Badge
|
||||||
v-if="userDialog.ref.$isProbableTroll"
|
v-if="userDialog.ref.$isProbableTroll"
|
||||||
type="info"
|
variant="outline"
|
||||||
effect="plain"
|
|
||||||
size="small"
|
|
||||||
class="x-tag-troll"
|
class="x-tag-troll"
|
||||||
style="margin-right: 5px; margin-top: 5px">
|
style="margin-right: 5px; margin-top: 5px">
|
||||||
Almost Nuisance
|
Almost Nuisance
|
||||||
</el-tag>
|
</Badge>
|
||||||
<el-tag
|
<Badge
|
||||||
v-if="userDialog.ref.$isModerator"
|
v-if="userDialog.ref.$isModerator"
|
||||||
type="info"
|
variant="outline"
|
||||||
effect="plain"
|
|
||||||
size="small"
|
|
||||||
class="x-tag-vip"
|
class="x-tag-vip"
|
||||||
style="margin-right: 5px; margin-top: 5px">
|
style="margin-right: 5px; margin-top: 5px">
|
||||||
{{ t('dialog.user.tags.vrchat_team') }}
|
{{ t('dialog.user.tags.vrchat_team') }}
|
||||||
</el-tag>
|
</Badge>
|
||||||
|
|
||||||
<TooltipWrapper v-if="userDialog.ref.$platform === 'standalonewindows'" side="top" content="PC">
|
<TooltipWrapper v-if="userDialog.ref.$platform === 'standalonewindows'" side="top" content="PC">
|
||||||
<el-tag
|
<Badge variant="outline" class="x-tag-platform-pc" style="margin-right: 5px; margin-top: 5px">
|
||||||
type="info"
|
|
||||||
effect="plain"
|
|
||||||
size="small"
|
|
||||||
class="x-tag-platform-pc"
|
|
||||||
style="margin-right: 5px; margin-top: 5px">
|
|
||||||
<i class="ri-computer-line"></i>
|
<i class="ri-computer-line"></i>
|
||||||
</el-tag>
|
</Badge>
|
||||||
</TooltipWrapper>
|
</TooltipWrapper>
|
||||||
<TooltipWrapper v-else-if="userDialog.ref.$platform === 'android'" side="top" content="Android">
|
<TooltipWrapper v-else-if="userDialog.ref.$platform === 'android'" side="top" content="Android">
|
||||||
<el-tag
|
<Badge
|
||||||
type="info"
|
variant="outline"
|
||||||
effect="plain"
|
|
||||||
size="small"
|
|
||||||
class="x-tag-platform-quest"
|
class="x-tag-platform-quest"
|
||||||
style="margin-right: 5px; margin-top: 5px">
|
style="margin-right: 5px; margin-top: 5px">
|
||||||
<i class="ri-android-line"></i>
|
<i class="ri-android-line"></i>
|
||||||
</el-tag>
|
</Badge>
|
||||||
</TooltipWrapper>
|
</TooltipWrapper>
|
||||||
<TooltipWrapper v-else-if="userDialog.ref.$platform === 'ios'" side="top" content="iOS">
|
<TooltipWrapper v-else-if="userDialog.ref.$platform === 'ios'" side="top" content="iOS">
|
||||||
<el-tag
|
<Badge variant="outline" class="x-tag-platform-ios" style="margin-right: 5px; margin-top: 5px"
|
||||||
type="info"
|
|
||||||
effect="plain"
|
|
||||||
size="small"
|
|
||||||
class="x-tag-platform-ios"
|
|
||||||
style="margin-right: 5px; margin-top: 5px"
|
|
||||||
><i class="ri-apple-line"></i
|
><i class="ri-apple-line"></i
|
||||||
></el-tag>
|
></Badge>
|
||||||
</TooltipWrapper>
|
</TooltipWrapper>
|
||||||
<el-tag
|
<Badge
|
||||||
v-else-if="userDialog.ref.$platform"
|
v-else-if="userDialog.ref.$platform"
|
||||||
type="info"
|
variant="outline"
|
||||||
effect="plain"
|
|
||||||
size="small"
|
|
||||||
class="x-tag-platform-other"
|
class="x-tag-platform-other"
|
||||||
style="margin-right: 5px; margin-top: 5px">
|
style="margin-right: 5px; margin-top: 5px">
|
||||||
{{ userDialog.ref.$platform }}
|
{{ userDialog.ref.$platform }}
|
||||||
</el-tag>
|
</Badge>
|
||||||
|
|
||||||
<el-tag
|
<Badge
|
||||||
v-if="userDialog.ref.$customTag"
|
v-if="userDialog.ref.$customTag"
|
||||||
type="info"
|
variant="outline"
|
||||||
effect="plain"
|
|
||||||
size="small"
|
|
||||||
class="name"
|
class="name"
|
||||||
:style="{
|
:style="{
|
||||||
color: userDialog.ref.$customTagColour,
|
color: userDialog.ref.$customTagColour,
|
||||||
'border-color': userDialog.ref.$customTagColour
|
'border-color': userDialog.ref.$customTagColour
|
||||||
}"
|
}"
|
||||||
style="margin-right: 5px; margin-top: 5px"
|
style="margin-right: 5px; margin-top: 5px"
|
||||||
>{{ userDialog.ref.$customTag }}</el-tag
|
>{{ userDialog.ref.$customTag }}</Badge
|
||||||
>
|
>
|
||||||
<br />
|
<br />
|
||||||
<TooltipWrapper v-for="badge in userDialog.ref.badges" :key="badge.badgeId" side="top">
|
<TooltipWrapper v-for="badge in userDialog.ref.badges" :key="badge.badgeId" side="top">
|
||||||
@@ -297,6 +261,7 @@
|
|||||||
|
|
||||||
import { formatDateFilter, languageClass, userImage, userStatusClass } from '../../../shared/utils';
|
import { formatDateFilter, languageClass, userImage, userStatusClass } from '../../../shared/utils';
|
||||||
import { useGalleryStore, useUserStore } from '../../../stores';
|
import { useGalleryStore, useUserStore } from '../../../stores';
|
||||||
|
import { Badge } from '../../ui/badge';
|
||||||
|
|
||||||
import UserActionDropdown from './UserActionDropdown.vue';
|
import UserActionDropdown from './UserActionDropdown.vue';
|
||||||
|
|
||||||
|
|||||||
@@ -40,36 +40,25 @@
|
|||||||
v-text="worldDialog.ref.authorName" />
|
v-text="worldDialog.ref.authorName" />
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<el-tag
|
<Badge
|
||||||
v-if="worldDialog.ref.$isLabs"
|
v-if="worldDialog.ref.$isLabs"
|
||||||
type="primary"
|
variant="outline"
|
||||||
effect="plain"
|
|
||||||
size="small"
|
|
||||||
style="margin-right: 5px; margin-top: 5px">
|
style="margin-right: 5px; margin-top: 5px">
|
||||||
{{ t('dialog.world.tags.labs') }}
|
{{ t('dialog.world.tags.labs') }}
|
||||||
</el-tag>
|
</Badge>
|
||||||
<el-tag
|
<Badge
|
||||||
v-else-if="worldDialog.ref.releaseStatus === 'public'"
|
v-else-if="worldDialog.ref.releaseStatus === 'public'"
|
||||||
type="success"
|
variant="outline"
|
||||||
effect="plain"
|
|
||||||
size="small"
|
|
||||||
style="margin-right: 5px; margin-top: 5px">
|
style="margin-right: 5px; margin-top: 5px">
|
||||||
{{ t('dialog.world.tags.public') }}
|
{{ t('dialog.world.tags.public') }}
|
||||||
</el-tag>
|
</Badge>
|
||||||
<el-tag
|
<Badge v-else variant="outline" style="margin-right: 5px; margin-top: 5px">
|
||||||
v-else
|
|
||||||
type="danger"
|
|
||||||
effect="plain"
|
|
||||||
size="small"
|
|
||||||
style="margin-right: 5px; margin-top: 5px">
|
|
||||||
{{ t('dialog.world.tags.private') }}
|
{{ t('dialog.world.tags.private') }}
|
||||||
</el-tag>
|
</Badge>
|
||||||
<TooltipWrapper v-if="worldDialog.isPC" side="top" content="PC">
|
<TooltipWrapper v-if="worldDialog.isPC" side="top" content="PC">
|
||||||
<el-tag
|
<Badge
|
||||||
class="x-tag-platform-pc"
|
class="x-tag-platform-pc"
|
||||||
type="info"
|
variant="outline"
|
||||||
effect="plain"
|
|
||||||
size="small"
|
|
||||||
style="margin-right: 5px; margin-top: 5px">
|
style="margin-right: 5px; margin-top: 5px">
|
||||||
<i class="ri-computer-line"></i
|
<i class="ri-computer-line"></i
|
||||||
><span
|
><span
|
||||||
@@ -77,15 +66,13 @@
|
|||||||
:class="['x-grey', 'x-tag-platform-pc', 'x-tag-border-left']">
|
:class="['x-grey', 'x-tag-platform-pc', 'x-tag-border-left']">
|
||||||
{{ worldDialog.bundleSizes['standalonewindows'].fileSize }}
|
{{ worldDialog.bundleSizes['standalonewindows'].fileSize }}
|
||||||
</span>
|
</span>
|
||||||
</el-tag>
|
</Badge>
|
||||||
</TooltipWrapper>
|
</TooltipWrapper>
|
||||||
|
|
||||||
<TooltipWrapper v-if="worldDialog.isQuest" side="top" content="Quest">
|
<TooltipWrapper v-if="worldDialog.isQuest" side="top" content="Quest">
|
||||||
<el-tag
|
<Badge
|
||||||
class="x-tag-platform-quest"
|
class="x-tag-platform-quest"
|
||||||
type="info"
|
variant="outline"
|
||||||
effect="plain"
|
|
||||||
size="small"
|
|
||||||
style="margin-right: 5px; margin-top: 5px">
|
style="margin-right: 5px; margin-top: 5px">
|
||||||
<i class="ri-android-line"></i
|
<i class="ri-android-line"></i
|
||||||
><span
|
><span
|
||||||
@@ -93,15 +80,13 @@
|
|||||||
:class="['x-grey', 'x-tag-platform-quest', 'x-tag-border-left']">
|
:class="['x-grey', 'x-tag-platform-quest', 'x-tag-border-left']">
|
||||||
{{ worldDialog.bundleSizes['android'].fileSize }}
|
{{ worldDialog.bundleSizes['android'].fileSize }}
|
||||||
</span>
|
</span>
|
||||||
</el-tag>
|
</Badge>
|
||||||
</TooltipWrapper>
|
</TooltipWrapper>
|
||||||
|
|
||||||
<TooltipWrapper v-if="worldDialog.isIos" side="top" content="iOS">
|
<TooltipWrapper v-if="worldDialog.isIos" side="top" content="iOS">
|
||||||
<el-tag
|
<Badge
|
||||||
class="x-tag-platform-ios"
|
class="x-tag-platform-ios"
|
||||||
type="info"
|
variant="outline"
|
||||||
effect="plain"
|
|
||||||
size="small"
|
|
||||||
style="margin-right: 5px; margin-top: 5px">
|
style="margin-right: 5px; margin-top: 5px">
|
||||||
<i class="ri-apple-line"></i
|
<i class="ri-apple-line"></i
|
||||||
><span
|
><span
|
||||||
@@ -109,51 +94,42 @@
|
|||||||
:class="['x-grey', 'x-tag-platform-ios', 'x-tag-border-left']">
|
:class="['x-grey', 'x-tag-platform-ios', 'x-tag-border-left']">
|
||||||
{{ worldDialog.bundleSizes['ios'].fileSize }}
|
{{ worldDialog.bundleSizes['ios'].fileSize }}
|
||||||
</span>
|
</span>
|
||||||
</el-tag>
|
</Badge>
|
||||||
</TooltipWrapper>
|
</TooltipWrapper>
|
||||||
|
|
||||||
<el-tag
|
<Badge
|
||||||
v-if="worldDialog.avatarScalingDisabled"
|
v-if="worldDialog.avatarScalingDisabled"
|
||||||
type="warning"
|
variant="outline"
|
||||||
effect="plain"
|
|
||||||
size="small"
|
|
||||||
style="margin-right: 5px; margin-top: 5px">
|
style="margin-right: 5px; margin-top: 5px">
|
||||||
{{ t('dialog.world.tags.avatar_scaling_disabled') }}
|
{{ t('dialog.world.tags.avatar_scaling_disabled') }}
|
||||||
</el-tag>
|
</Badge>
|
||||||
<el-tag
|
<Badge
|
||||||
v-if="worldDialog.focusViewDisabled"
|
v-if="worldDialog.focusViewDisabled"
|
||||||
type="warning"
|
variant="outline"
|
||||||
effect="plain"
|
|
||||||
size="small"
|
|
||||||
style="margin-right: 5px; margin-top: 5px">
|
style="margin-right: 5px; margin-top: 5px">
|
||||||
{{ t('dialog.world.tags.focus_view_disabled') }}
|
{{ t('dialog.world.tags.focus_view_disabled') }}
|
||||||
</el-tag>
|
</Badge>
|
||||||
<el-tag
|
<Badge
|
||||||
v-if="worldDialog.ref.unityPackageUrl"
|
v-if="worldDialog.ref.unityPackageUrl"
|
||||||
type="success"
|
variant="outline"
|
||||||
effect="plain"
|
|
||||||
size="small"
|
|
||||||
style="margin-right: 5px; margin-top: 5px">
|
style="margin-right: 5px; margin-top: 5px">
|
||||||
{{ t('dialog.world.tags.future_proofing') }}
|
{{ t('dialog.world.tags.future_proofing') }}
|
||||||
</el-tag>
|
</Badge>
|
||||||
<el-tag
|
<Badge
|
||||||
v-if="worldDialog.inCache"
|
v-if="worldDialog.inCache"
|
||||||
|
variant="outline"
|
||||||
class="x-link"
|
class="x-link"
|
||||||
type="info"
|
|
||||||
effect="plain"
|
|
||||||
size="small"
|
|
||||||
style="margin-right: 5px; margin-top: 5px"
|
style="margin-right: 5px; margin-top: 5px"
|
||||||
@click="openFolderGeneric(worldDialog.cachePath)">
|
@click="openFolderGeneric(worldDialog.cachePath)">
|
||||||
<span v-text="worldDialog.cacheSize" />
|
<span v-text="worldDialog.cacheSize" />
|
||||||
| {{ t('dialog.world.tags.cache') }}
|
| {{ t('dialog.world.tags.cache') }}
|
||||||
</el-tag>
|
</Badge>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<template v-for="tag in worldDialog.ref.tags" :key="tag">
|
<template v-for="tag in worldDialog.ref.tags" :key="tag">
|
||||||
<el-tag
|
<Badge
|
||||||
v-if="tag.startsWith('content_')"
|
v-if="tag.startsWith('content_')"
|
||||||
effect="plain"
|
variant="outline"
|
||||||
size="small"
|
|
||||||
style="margin-right: 5px; margin-top: 5px">
|
style="margin-right: 5px; margin-top: 5px">
|
||||||
<span v-if="tag === 'content_horror'">
|
<span v-if="tag === 'content_horror'">
|
||||||
{{ t('dialog.world.tags.content_horror') }}
|
{{ t('dialog.world.tags.content_horror') }}
|
||||||
@@ -173,7 +149,7 @@
|
|||||||
<span v-else>
|
<span v-else>
|
||||||
{{ tag.replace('content_', '') }}
|
{{ tag.replace('content_', '') }}
|
||||||
</span>
|
</span>
|
||||||
</el-tag>
|
</Badge>
|
||||||
</template>
|
</template>
|
||||||
</div>
|
</div>
|
||||||
<div style="margin-top: 5px">
|
<div style="margin-top: 5px">
|
||||||
@@ -804,6 +780,7 @@
|
|||||||
useWorldStore
|
useWorldStore
|
||||||
} from '../../../stores';
|
} from '../../../stores';
|
||||||
import { favoriteRequest, miscRequest, userRequest, worldRequest } from '../../../api';
|
import { favoriteRequest, miscRequest, userRequest, worldRequest } from '../../../api';
|
||||||
|
import { Badge } from '../../ui/badge';
|
||||||
import { database } from '../../../service/database.js';
|
import { database } from '../../../service/database.js';
|
||||||
import { getNextDialogIndex } from '../../../shared/utils/base/ui';
|
import { getNextDialogIndex } from '../../../shared/utils/base/ui';
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
import { Primitive } from 'reka-ui';
|
import { Primitive } from 'reka-ui';
|
||||||
import { cn } from '@/lib/utils';
|
import { cn } from '@/lib/utils';
|
||||||
import { reactiveOmit } from '@vueuse/core';
|
import { reactiveOmit } from '@vueuse/core';
|
||||||
|
import { useAttrs } from 'vue';
|
||||||
|
|
||||||
import { badgeVariants } from '.';
|
import { badgeVariants } from '.';
|
||||||
|
|
||||||
@@ -13,10 +14,14 @@
|
|||||||
});
|
});
|
||||||
|
|
||||||
const delegatedProps = reactiveOmit(props, 'class');
|
const delegatedProps = reactiveOmit(props, 'class');
|
||||||
|
const attrs = useAttrs();
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<Primitive data-slot="badge" :class="cn(badgeVariants({ variant }), props.class)" v-bind="delegatedProps">
|
<Primitive
|
||||||
|
data-slot="badge"
|
||||||
|
:class="cn(badgeVariants({ variant }), props.class)"
|
||||||
|
v-bind="{ ...delegatedProps, ...attrs }">
|
||||||
<slot />
|
<slot />
|
||||||
</Primitive>
|
</Primitive>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -90,12 +90,9 @@
|
|||||||
<span class="group-item__count">{{ group.count }}/{{ group.capacity }}</span>
|
<span class="group-item__count">{{ group.count }}/{{ group.capacity }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="group-item__bottom">
|
<div class="group-item__bottom">
|
||||||
<el-tag
|
<Badge variant="outline">
|
||||||
size="small"
|
|
||||||
effect="plain"
|
|
||||||
:type="userFavoriteAvatarsStatusForFavTab(group.visibility)">
|
|
||||||
{{ formatVisibility(group.visibility) }}
|
{{ formatVisibility(group.visibility) }}
|
||||||
</el-tag>
|
</Badge>
|
||||||
<el-popover
|
<el-popover
|
||||||
:visible="activeGroupMenu === remoteGroupMenuKey(group.key)"
|
:visible="activeGroupMenu === remoteGroupMenuKey(group.key)"
|
||||||
@update:visible="
|
@update:visible="
|
||||||
@@ -507,6 +504,7 @@
|
|||||||
|
|
||||||
import { useAppearanceSettingsStore, useAvatarStore, useFavoriteStore, useUserStore } from '../../stores';
|
import { useAppearanceSettingsStore, useAvatarStore, useFavoriteStore, useUserStore } from '../../stores';
|
||||||
import { avatarRequest, favoriteRequest } from '../../api';
|
import { avatarRequest, favoriteRequest } from '../../api';
|
||||||
|
import { Badge } from '../../components/ui/badge';
|
||||||
import { useFavoritesCardScaling } from './composables/useFavoritesCardScaling.js';
|
import { useFavoritesCardScaling } from './composables/useFavoritesCardScaling.js';
|
||||||
|
|
||||||
import AvatarExportDialog from './dialogs/AvatarExportDialog.vue';
|
import AvatarExportDialog from './dialogs/AvatarExportDialog.vue';
|
||||||
@@ -1499,16 +1497,6 @@
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
function userFavoriteAvatarsStatusForFavTab(visibility) {
|
|
||||||
if (visibility === 'public') {
|
|
||||||
return 'primary';
|
|
||||||
}
|
|
||||||
if (visibility === 'friends') {
|
|
||||||
return 'success';
|
|
||||||
}
|
|
||||||
return 'info';
|
|
||||||
}
|
|
||||||
|
|
||||||
function formatVisibility(value) {
|
function formatVisibility(value) {
|
||||||
if (!value) {
|
if (!value) {
|
||||||
return '';
|
return '';
|
||||||
|
|||||||
@@ -92,12 +92,9 @@
|
|||||||
<span class="group-item__count">{{ group.count }}/{{ group.capacity }}</span>
|
<span class="group-item__count">{{ group.count }}/{{ group.capacity }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="group-item__bottom">
|
<div class="group-item__bottom">
|
||||||
<el-tag
|
<Badge variant="outline">
|
||||||
size="small"
|
|
||||||
effect="plain"
|
|
||||||
:type="userFavoriteFriendsStatusForFavTab(group.visibility)">
|
|
||||||
{{ formatVisibility(group.visibility) }}
|
{{ formatVisibility(group.visibility) }}
|
||||||
</el-tag>
|
</Badge>
|
||||||
<el-popover
|
<el-popover
|
||||||
:visible="activeGroupMenu === remoteGroupMenuKey(group.key)"
|
:visible="activeGroupMenu === remoteGroupMenuKey(group.key)"
|
||||||
@update:visible="
|
@update:visible="
|
||||||
@@ -290,6 +287,7 @@
|
|||||||
import { useI18n } from 'vue-i18n';
|
import { useI18n } from 'vue-i18n';
|
||||||
|
|
||||||
import { useAppearanceSettingsStore, useFavoriteStore, useUserStore } from '../../stores';
|
import { useAppearanceSettingsStore, useFavoriteStore, useUserStore } from '../../stores';
|
||||||
|
import { Badge } from '../../components/ui/badge';
|
||||||
import { favoriteRequest } from '../../api';
|
import { favoriteRequest } from '../../api';
|
||||||
import { useFavoritesCardScaling } from './composables/useFavoritesCardScaling.js';
|
import { useFavoritesCardScaling } from './composables/useFavoritesCardScaling.js';
|
||||||
import { userImage } from '../../shared/utils';
|
import { userImage } from '../../shared/utils';
|
||||||
@@ -715,16 +713,6 @@
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function userFavoriteFriendsStatusForFavTab(visibility) {
|
|
||||||
if (visibility === 'public') {
|
|
||||||
return 'primary';
|
|
||||||
}
|
|
||||||
if (visibility === 'friends') {
|
|
||||||
return 'success';
|
|
||||||
}
|
|
||||||
return 'info';
|
|
||||||
}
|
|
||||||
|
|
||||||
function formatVisibility(value) {
|
function formatVisibility(value) {
|
||||||
if (!value) {
|
if (!value) {
|
||||||
return '';
|
return '';
|
||||||
|
|||||||
@@ -92,12 +92,9 @@
|
|||||||
<span class="group-item__count">{{ group.count }}/{{ group.capacity }}</span>
|
<span class="group-item__count">{{ group.count }}/{{ group.capacity }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="group-item__bottom">
|
<div class="group-item__bottom">
|
||||||
<el-tag
|
<Badge variant="outline">
|
||||||
size="small"
|
|
||||||
effect="plain"
|
|
||||||
:type="userFavoriteWorldsStatusForFavTab(group.visibility)">
|
|
||||||
{{ formatVisibility(group.visibility) }}
|
{{ formatVisibility(group.visibility) }}
|
||||||
</el-tag>
|
</Badge>
|
||||||
<el-popover
|
<el-popover
|
||||||
:visible="activeGroupMenu === remoteGroupMenuKey(group.key)"
|
:visible="activeGroupMenu === remoteGroupMenuKey(group.key)"
|
||||||
@update:visible="
|
@update:visible="
|
||||||
@@ -416,6 +413,7 @@
|
|||||||
|
|
||||||
import { useAppearanceSettingsStore, useFavoriteStore, useWorldStore } from '../../stores';
|
import { useAppearanceSettingsStore, useFavoriteStore, useWorldStore } from '../../stores';
|
||||||
import { favoriteRequest, worldRequest } from '../../api';
|
import { favoriteRequest, worldRequest } from '../../api';
|
||||||
|
import { Badge } from '../../components/ui/badge';
|
||||||
import { useFavoritesCardScaling } from './composables/useFavoritesCardScaling.js';
|
import { useFavoritesCardScaling } from './composables/useFavoritesCardScaling.js';
|
||||||
|
|
||||||
import FavoritesWorldItem from './components/FavoritesWorldItem.vue';
|
import FavoritesWorldItem from './components/FavoritesWorldItem.vue';
|
||||||
@@ -968,16 +966,6 @@
|
|||||||
getLocalWorldFavorites();
|
getLocalWorldFavorites();
|
||||||
}
|
}
|
||||||
|
|
||||||
function userFavoriteWorldsStatusForFavTab(visibility) {
|
|
||||||
if (visibility === 'public') {
|
|
||||||
return 'primary';
|
|
||||||
}
|
|
||||||
if (visibility === 'friends') {
|
|
||||||
return 'success';
|
|
||||||
}
|
|
||||||
return 'info';
|
|
||||||
}
|
|
||||||
|
|
||||||
function changeWorldGroupVisibility(name, visibility, menuKey = null) {
|
function changeWorldGroupVisibility(name, visibility, menuKey = null) {
|
||||||
const params = {
|
const params = {
|
||||||
type: 'world',
|
type: 'world',
|
||||||
|
|||||||
@@ -44,91 +44,60 @@
|
|||||||
v-text="currentInstanceWorld.ref.authorName"></span>
|
v-text="currentInstanceWorld.ref.authorName"></span>
|
||||||
</div>
|
</div>
|
||||||
<div style="margin-top: 5px">
|
<div style="margin-top: 5px">
|
||||||
<el-tag
|
<Badge v-if="currentInstanceWorld.ref.$isLabs" variant="outline" style="margin-right: 5px">
|
||||||
v-if="currentInstanceWorld.ref.$isLabs"
|
{{ t('dialog.world.tags.labs') }}
|
||||||
type="primary"
|
</Badge>
|
||||||
effect="plain"
|
<Badge
|
||||||
size="small"
|
|
||||||
style="margin-right: 5px"
|
|
||||||
>{{ t('dialog.world.tags.labs') }}</el-tag
|
|
||||||
>
|
|
||||||
<el-tag
|
|
||||||
v-else-if="currentInstanceWorld.ref.releaseStatus === 'public'"
|
v-else-if="currentInstanceWorld.ref.releaseStatus === 'public'"
|
||||||
type="success"
|
variant="outline"
|
||||||
effect="plain"
|
style="margin-right: 5px">
|
||||||
size="small"
|
{{ t('dialog.world.tags.public') }}
|
||||||
style="margin-right: 5px"
|
</Badge>
|
||||||
>{{ t('dialog.world.tags.public') }}</el-tag
|
<Badge
|
||||||
>
|
|
||||||
<el-tag
|
|
||||||
v-else-if="currentInstanceWorld.ref.releaseStatus === 'private'"
|
v-else-if="currentInstanceWorld.ref.releaseStatus === 'private'"
|
||||||
type="danger"
|
variant="outline"
|
||||||
effect="plain"
|
style="margin-right: 5px">
|
||||||
size="small"
|
{{ t('dialog.world.tags.private') }}
|
||||||
style="margin-right: 5px"
|
</Badge>
|
||||||
>{{ t('dialog.world.tags.private') }}</el-tag
|
|
||||||
>
|
|
||||||
<TooltipWrapper v-if="currentInstanceWorld.isPC" side="top" content="PC">
|
<TooltipWrapper v-if="currentInstanceWorld.isPC" side="top" content="PC">
|
||||||
<el-tag
|
<Badge class="x-tag-platform-pc" variant="outline" style="margin-right: 5px"
|
||||||
class="x-tag-platform-pc"
|
|
||||||
type="info"
|
|
||||||
effect="plain"
|
|
||||||
size="small"
|
|
||||||
style="margin-right: 5px"
|
|
||||||
><i class="ri-computer-line"></i>
|
><i class="ri-computer-line"></i>
|
||||||
<span
|
<span
|
||||||
v-if="currentInstanceWorld.bundleSizes['standalonewindows']"
|
v-if="currentInstanceWorld.bundleSizes['standalonewindows']"
|
||||||
:class="['x-grey', 'x-tag-platform-pc', 'x-tag-border-left']"
|
:class="['x-grey', 'x-tag-platform-pc', 'x-tag-border-left']"
|
||||||
>{{ currentInstanceWorld.bundleSizes['standalonewindows'].fileSize }}</span
|
>{{ currentInstanceWorld.bundleSizes['standalonewindows'].fileSize }}</span
|
||||||
>
|
>
|
||||||
</el-tag>
|
</Badge>
|
||||||
</TooltipWrapper>
|
</TooltipWrapper>
|
||||||
<TooltipWrapper v-if="currentInstanceWorld.isQuest" side="top" content="Android">
|
<TooltipWrapper v-if="currentInstanceWorld.isQuest" side="top" content="Android">
|
||||||
<el-tag
|
<Badge class="x-tag-platform-quest" variant="outline" style="margin-right: 5px"
|
||||||
class="x-tag-platform-quest"
|
|
||||||
type="info"
|
|
||||||
effect="plain"
|
|
||||||
size="small"
|
|
||||||
style="margin-right: 5px"
|
|
||||||
><i class="ri-android-line"></i>
|
><i class="ri-android-line"></i>
|
||||||
<span
|
<span
|
||||||
v-if="currentInstanceWorld.bundleSizes['android']"
|
v-if="currentInstanceWorld.bundleSizes['android']"
|
||||||
:class="['x-grey', 'x-tag-platform-quest', 'x-tag-border-left']"
|
:class="['x-grey', 'x-tag-platform-quest', 'x-tag-border-left']"
|
||||||
>{{ currentInstanceWorld.bundleSizes['android'].fileSize }}</span
|
>{{ currentInstanceWorld.bundleSizes['android'].fileSize }}</span
|
||||||
>
|
>
|
||||||
</el-tag>
|
</Badge>
|
||||||
</TooltipWrapper>
|
</TooltipWrapper>
|
||||||
<TooltipWrapper v-if="currentInstanceWorld.isIos" side="top" content="iOS">
|
<TooltipWrapper v-if="currentInstanceWorld.isIos" side="top" content="iOS">
|
||||||
<el-tag
|
<Badge class="x-tag-platform-ios" variant="outline" style="margin-right: 5px"
|
||||||
class="x-tag-platform-ios"
|
|
||||||
type="info"
|
|
||||||
effect="plain"
|
|
||||||
size="small"
|
|
||||||
style="margin-right: 5px"
|
|
||||||
><i class="ri-apple-line"></i>
|
><i class="ri-apple-line"></i>
|
||||||
<span
|
<span
|
||||||
v-if="currentInstanceWorld.bundleSizes['ios']"
|
v-if="currentInstanceWorld.bundleSizes['ios']"
|
||||||
:class="['x-grey', 'x-tag-platform-ios', 'x-tag-border-left']"
|
:class="['x-grey', 'x-tag-platform-ios', 'x-tag-border-left']"
|
||||||
>{{ currentInstanceWorld.bundleSizes['ios'].fileSize }}</span
|
>{{ currentInstanceWorld.bundleSizes['ios'].fileSize }}</span
|
||||||
>
|
>
|
||||||
</el-tag>
|
</Badge>
|
||||||
</TooltipWrapper>
|
</TooltipWrapper>
|
||||||
<el-tag
|
<Badge
|
||||||
v-if="currentInstanceWorld.avatarScalingDisabled"
|
v-if="currentInstanceWorld.avatarScalingDisabled"
|
||||||
type="warning"
|
variant="outline"
|
||||||
effect="plain"
|
style="margin-right: 5px; margin-top: 5px">
|
||||||
size="small"
|
{{ t('dialog.world.tags.avatar_scaling_disabled') }}
|
||||||
style="margin-right: 5px; margin-top: 5px"
|
</Badge>
|
||||||
>{{ t('dialog.world.tags.avatar_scaling_disabled') }}</el-tag
|
<Badge v-if="currentInstanceWorld.inCache" variant="outline" style="margin-right: 5px">
|
||||||
>
|
|
||||||
<el-tag
|
|
||||||
v-if="currentInstanceWorld.inCache"
|
|
||||||
type="info"
|
|
||||||
effect="plain"
|
|
||||||
size="small"
|
|
||||||
style="margin-right: 5px">
|
|
||||||
<span>{{ currentInstanceWorld.cacheSize }} {{ t('dialog.world.tags.cache') }}</span>
|
<span>{{ currentInstanceWorld.cacheSize }} {{ t('dialog.world.tags.cache') }}</span>
|
||||||
</el-tag>
|
</Badge>
|
||||||
</div>
|
</div>
|
||||||
<div style="margin-top: 5px">
|
<div style="margin-top: 5px">
|
||||||
<LocationWorld :locationobject="currentInstanceLocation" :currentuserid="currentUser.id" />
|
<LocationWorld :locationobject="currentInstanceLocation" :currentuserid="currentUser.id" />
|
||||||
@@ -215,6 +184,7 @@
|
|||||||
useWorldStore
|
useWorldStore
|
||||||
} from '../../stores';
|
} from '../../stores';
|
||||||
import { commaNumber, formatDateFilter } from '../../shared/utils';
|
import { commaNumber, formatDateFilter } from '../../shared/utils';
|
||||||
|
import { Badge } from '../../components/ui/badge';
|
||||||
import { DataTableLayout } from '../../components/ui/data-table';
|
import { DataTableLayout } from '../../components/ui/data-table';
|
||||||
import { createColumns } from './columns.jsx';
|
import { createColumns } from './columns.jsx';
|
||||||
import { useDataTableScrollHeight } from '../../composables/useDataTableScrollHeight';
|
import { useDataTableScrollHeight } from '../../composables/useDataTableScrollHeight';
|
||||||
|
|||||||
@@ -28,16 +28,28 @@
|
|||||||
</el-button>
|
</el-button>
|
||||||
<br />
|
<br />
|
||||||
<h2>{{ t('dialog.chatbox_blacklist.user_blacklist') }}</h2>
|
<h2>{{ t('dialog.chatbox_blacklist.user_blacklist') }}</h2>
|
||||||
<el-tag
|
<Badge
|
||||||
v-for="user in chatboxUserBlacklist"
|
v-for="user in chatboxUserBlacklist"
|
||||||
:key="user[0]"
|
:key="user[0]"
|
||||||
type="info"
|
variant="outline"
|
||||||
disable-transitions
|
style="margin-right: 5px; margin-top: 5px">
|
||||||
style="margin-right: 5px; margin-top: 5px"
|
|
||||||
closable
|
|
||||||
@close="deleteChatboxUserBlacklist(user[0])">
|
|
||||||
<span>{{ user[1] }}</span>
|
<span>{{ user[1] }}</span>
|
||||||
</el-tag>
|
<button
|
||||||
|
type="button"
|
||||||
|
style="
|
||||||
|
margin-left: 6px;
|
||||||
|
border: none;
|
||||||
|
background: transparent;
|
||||||
|
padding: 0;
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
color: inherit;
|
||||||
|
cursor: pointer;
|
||||||
|
"
|
||||||
|
@click="deleteChatboxUserBlacklist(user[0])">
|
||||||
|
<i class="ri-close-line" style="font-size: 12px; line-height: 1"></i>
|
||||||
|
</button>
|
||||||
|
</Badge>
|
||||||
</div>
|
</div>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
</template>
|
</template>
|
||||||
@@ -47,6 +59,7 @@
|
|||||||
import { storeToRefs } from 'pinia';
|
import { storeToRefs } from 'pinia';
|
||||||
import { useI18n } from 'vue-i18n';
|
import { useI18n } from 'vue-i18n';
|
||||||
|
|
||||||
|
import { Badge } from '../../../components/ui/badge';
|
||||||
import { usePhotonStore } from '../../../stores';
|
import { usePhotonStore } from '../../../stores';
|
||||||
|
|
||||||
const { t } = useI18n();
|
const { t } = useI18n();
|
||||||
@@ -64,7 +77,6 @@
|
|||||||
|
|
||||||
const emit = defineEmits(['deleteChatboxUserBlacklist']);
|
const emit = defineEmits(['deleteChatboxUserBlacklist']);
|
||||||
|
|
||||||
|
|
||||||
function deleteChatboxUserBlacklist(userId) {
|
function deleteChatboxUserBlacklist(userId) {
|
||||||
emit('deleteChatboxUserBlacklist', userId);
|
emit('deleteChatboxUserBlacklist', userId);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,9 +8,9 @@
|
|||||||
<div style="font-size: 12px">
|
<div style="font-size: 12px">
|
||||||
{{ t('dialog.launch_options.description') }} <br />
|
{{ t('dialog.launch_options.description') }} <br />
|
||||||
{{ t('dialog.launch_options.example') }}
|
{{ t('dialog.launch_options.example') }}
|
||||||
<el-tag size="small"
|
<Badge variant="outline"
|
||||||
>--fps=144 --enable-debug-gui --enable-sdk-log-levels --enable-udon-debug-logging
|
>--fps=144 --enable-debug-gui --enable-sdk-log-levels --enable-udon-debug-logging
|
||||||
</el-tag>
|
</Badge>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<el-input
|
<el-input
|
||||||
@@ -59,6 +59,7 @@
|
|||||||
import { storeToRefs } from 'pinia';
|
import { storeToRefs } from 'pinia';
|
||||||
import { useI18n } from 'vue-i18n';
|
import { useI18n } from 'vue-i18n';
|
||||||
|
|
||||||
|
import { Badge } from '../../../components/ui/badge';
|
||||||
import { openExternalLink } from '../../../shared/utils';
|
import { openExternalLink } from '../../../shared/utils';
|
||||||
import { useLaunchStore } from '../../../stores';
|
import { useLaunchStore } from '../../../stores';
|
||||||
|
|
||||||
|
|||||||
@@ -93,9 +93,9 @@
|
|||||||
v-if="screenshotMetadataDialog.metadata.fileResolution"
|
v-if="screenshotMetadataDialog.metadata.fileResolution"
|
||||||
style="margin-right: 5px"
|
style="margin-right: 5px"
|
||||||
v-text="screenshotMetadataDialog.metadata.fileResolution"></span>
|
v-text="screenshotMetadataDialog.metadata.fileResolution"></span>
|
||||||
<el-tag v-if="screenshotMetadataDialog.metadata.fileSize" type="info" effect="plain" size="small">{{
|
<Badge v-if="screenshotMetadataDialog.metadata.fileSize" variant="outline">{{
|
||||||
screenshotMetadataDialog.metadata.fileSize
|
screenshotMetadataDialog.metadata.fileSize
|
||||||
}}</el-tag>
|
}}</Badge>
|
||||||
<br />
|
<br />
|
||||||
<Location
|
<Location
|
||||||
v-if="screenshotMetadataDialog.metadata.world"
|
v-if="screenshotMetadataDialog.metadata.world"
|
||||||
@@ -163,6 +163,7 @@
|
|||||||
import { useI18n } from 'vue-i18n';
|
import { useI18n } from 'vue-i18n';
|
||||||
|
|
||||||
import { useGalleryStore, useUserStore, useVrcxStore } from '../../../stores';
|
import { useGalleryStore, useUserStore, useVrcxStore } from '../../../stores';
|
||||||
|
import { Badge } from '../../../components/ui/badge';
|
||||||
import { formatDateFilter } from '../../../shared/utils';
|
import { formatDateFilter } from '../../../shared/utils';
|
||||||
import { vrcPlusImageRequest } from '../../../api';
|
import { vrcPlusImageRequest } from '../../../api';
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user