mirror of
https://github.com/MrUnknownDE/VRCX.git
synced 2026-04-26 10:13:48 +02:00
tidy up
This commit is contained in:
@@ -189,6 +189,7 @@
|
||||
|
||||
import InstanceActivityDetail from './InstanceActivityDetail.vue';
|
||||
|
||||
|
||||
import * as echarts from 'echarts';
|
||||
|
||||
const appearanceSettingsStore = useAppearanceSettingsStore();
|
||||
|
||||
@@ -166,6 +166,7 @@
|
||||
import { database } from '../../../service/database';
|
||||
import { userRequest } from '../../../api';
|
||||
|
||||
|
||||
import configRepository from '../../../service/config';
|
||||
|
||||
import * as echarts from 'echarts';
|
||||
|
||||
@@ -435,7 +435,7 @@
|
||||
<div class="favorites-search-card__title">
|
||||
<span class="name">{{ favorite.name }}</span>
|
||||
</div>
|
||||
<span class="extra">{{ favorite.authorName }}</span>
|
||||
<span class="text-xs">{{ favorite.authorName }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -292,7 +292,7 @@
|
||||
:traveling="favorite.travelingToLocation"
|
||||
:link="false" />
|
||||
</div>
|
||||
<span v-else class="extra">{{ favorite.statusDescription }}</span>
|
||||
<span v-else class="text-xs">{{ favorite.statusDescription }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -370,7 +370,7 @@
|
||||
</div>
|
||||
<div class="favorites-search-card__detail">
|
||||
<span class="name">{{ favorite.name || favorite.id }}</span>
|
||||
<span class="extra">
|
||||
<span class="text-xs">
|
||||
{{ favorite.authorName }}
|
||||
<template v-if="favorite.occupants">
|
||||
({{ favorite.occupants }})
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
</TooltipWrapper>
|
||||
</span>
|
||||
</div>
|
||||
<span class="extra">{{ localFavFakeRef.authorName }}</span>
|
||||
<span class="text-xs">{{ localFavFakeRef.authorName }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="favorites-search-card__actions">
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
<div class="favorites-search-card__title">
|
||||
<span class="name">{{ favorite.name }}</span>
|
||||
</div>
|
||||
<span class="extra">{{ favorite.authorName }}</span>
|
||||
<span class="text-xs">{{ favorite.authorName }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="favorites-search-card__actions">
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
:traveling="favorite.ref.travelingToLocation"
|
||||
:link="false" />
|
||||
</div>
|
||||
<span v-else class="extra">{{ favorite.ref.statusDescription }}</span>
|
||||
<span v-else class="text-xs">{{ favorite.ref.statusDescription }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="favorites-search-card__actions">
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
class="h-4 w-4" />
|
||||
</span>
|
||||
</div>
|
||||
<span class="extra">
|
||||
<span class="text-xs">
|
||||
{{ props.favorite.ref.authorName }}
|
||||
<template v-if="props.favorite.ref.occupants"> ({{ props.favorite.ref.occupants }}) </template>
|
||||
</span>
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
<div class="favorites-search-card__title">
|
||||
<span class="name">{{ props.favorite.name }}</span>
|
||||
</div>
|
||||
<span class="extra">
|
||||
<span class="text-xs">
|
||||
{{ props.favorite.authorName }}
|
||||
<template v-if="props.favorite.occupants"> ({{ props.favorite.occupants }}) </template>
|
||||
</span>
|
||||
|
||||
@@ -135,9 +135,3 @@
|
||||
table.setPageSize(size);
|
||||
});
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.table-user {
|
||||
color: var(--x-table-user-text-color) !important;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -210,9 +210,3 @@
|
||||
table.setPageSize(size);
|
||||
});
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.table-user {
|
||||
color: var(--x-table-user-text-color);
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
<template v-if="virtualRows[vRow.index]?.type === 'header'">
|
||||
<header class="friend-view__instance-header">
|
||||
<Location
|
||||
class="extra"
|
||||
class="text-xs"
|
||||
:location="virtualRows[vRow.index].instanceId"
|
||||
style="display: inline" />
|
||||
<span class="friend-view__instance-count">{{ virtualRows[vRow.index].count }}</span>
|
||||
|
||||
@@ -202,9 +202,3 @@
|
||||
table.setPageSize(size);
|
||||
});
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.table-user {
|
||||
color: var(--x-table-user-text-color) !important;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -138,8 +138,8 @@
|
||||
</div>
|
||||
<div class="detail">
|
||||
<span class="name" v-text="user.user.displayName"></span>
|
||||
<span class="extra" v-text="user.user.username"></span>
|
||||
<span class="extra" v-text="user.loginParams.endpoint"></span>
|
||||
<span class="block truncate text-xs" v-text="user.user.username"></span>
|
||||
<span class="block truncate text-xs" v-text="user.loginParams.endpoint"></span>
|
||||
</div>
|
||||
<Button
|
||||
class="rounded-full"
|
||||
@@ -310,3 +310,64 @@
|
||||
{ deep: true }
|
||||
);
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.x-login-container {
|
||||
position: absolute;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.x-login {
|
||||
display: grid;
|
||||
grid-template-rows: repeat(2, auto);
|
||||
align-items: center;
|
||||
max-width: clamp(600px, 60svw, 800px);
|
||||
}
|
||||
|
||||
.x-login-form-container {
|
||||
display: grid;
|
||||
gap: 8px;
|
||||
height: 380px;
|
||||
}
|
||||
|
||||
.x-login-form-container:has(> div:nth-child(3)) {
|
||||
grid-template-columns: 1fr 1px 1fr;
|
||||
}
|
||||
|
||||
.x-login-form-container > div {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
min-height: 0;
|
||||
padding: 16px;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
.x-scroll-wrapper {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
hr.x-vertical-divider {
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
margin: 0;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
.x-saved-account-list {
|
||||
display: grid;
|
||||
}
|
||||
|
||||
.x-saved-account-list > .x-friend-item {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.x-legal-notice-container {
|
||||
margin-top: 8px;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -507,7 +507,4 @@
|
||||
border-radius: 4px;
|
||||
object-fit: cover;
|
||||
}
|
||||
.table-user-text {
|
||||
color: var(--x-table-user-text-color);
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -78,11 +78,11 @@
|
||||
</Badge>
|
||||
</TooltipWrapper>
|
||||
<TooltipWrapper v-if="currentInstanceWorld.isIos" side="top" content="iOS">
|
||||
<Badge class="x-tag-platform-ios" variant="outline" style="margin-right: 5px"
|
||||
><Apple class="h-4 w-4" />
|
||||
<Badge class="text-[#8e8e93] border-[#8e8e93]" variant="outline" style="margin-right: 5px"
|
||||
><Apple class="h-4 w-4 text-[#8e8e93]" />
|
||||
<span
|
||||
v-if="currentInstanceWorld.bundleSizes['ios']"
|
||||
:class="['x-grey', 'x-tag-platform-ios', 'x-tag-border-left']"
|
||||
:class="['x-grey', 'x-tag-border-left', 'text-[#8e8e93]', 'border-[#8e8e93]']"
|
||||
>{{ currentInstanceWorld.bundleSizes['ios'].fileSize }}</span
|
||||
>
|
||||
</Badge>
|
||||
@@ -110,7 +110,7 @@
|
||||
<div style="margin-top: 5px">
|
||||
<span
|
||||
v-show="currentInstanceWorld.ref.name !== currentInstanceWorld.ref.description"
|
||||
class="description"
|
||||
class="inline-block max-w-full truncate align-middle text-xs"
|
||||
v-text="currentInstanceWorld.ref.description"></span>
|
||||
</div>
|
||||
</div>
|
||||
@@ -118,7 +118,7 @@
|
||||
<div class="x-friend-item" style="cursor: default">
|
||||
<div class="detail">
|
||||
<span class="name">{{ t('dialog.world.info.capacity') }}</span>
|
||||
<span class="extra"
|
||||
<span class="block truncate text-xs"
|
||||
>{{ commaNumber(currentInstanceWorld.ref.recommendedCapacity) }} ({{
|
||||
commaNumber(currentInstanceWorld.ref.capacity)
|
||||
}})</span
|
||||
@@ -128,13 +128,13 @@
|
||||
<div class="x-friend-item" style="cursor: default">
|
||||
<div class="detail">
|
||||
<span class="name">{{ t('dialog.world.info.last_updated') }}</span>
|
||||
<span class="extra">{{ formatDateFilter(currentInstanceWorld.lastUpdated, 'long') }}</span>
|
||||
<span class="block truncate text-xs">{{ formatDateFilter(currentInstanceWorld.lastUpdated, 'long') }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="x-friend-item" style="cursor: default">
|
||||
<div class="detail">
|
||||
<span class="name">{{ t('dialog.world.info.created_at') }}</span>
|
||||
<span class="extra">{{
|
||||
<span class="block truncate text-xs">{{
|
||||
formatDateFilter(currentInstanceWorld.ref.created_at, 'long')
|
||||
}}</span>
|
||||
</div>
|
||||
@@ -309,15 +309,3 @@
|
||||
getCurrentInstanceUserList();
|
||||
});
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.description {
|
||||
font-size: 12px;
|
||||
display: inline-block;
|
||||
max-width: 100%;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
vertical-align: middle;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -115,14 +115,7 @@ export const createColumns = ({
|
||||
const style = randomUserColours?.value
|
||||
? { color: userRef?.$userColour }
|
||||
: null;
|
||||
return (
|
||||
<span
|
||||
class="text-(--x-table-user-text-color)"
|
||||
style={style}
|
||||
>
|
||||
{userRef?.displayName ?? ''}
|
||||
</span>
|
||||
);
|
||||
return <span style={style}>{userRef?.displayName ?? ''}</span>;
|
||||
}
|
||||
},
|
||||
{
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<div class="photon-event-table">
|
||||
<div class="mt-5">
|
||||
<div style="display: flex; align-items: center; gap: 10px; margin-bottom: 10px; flex-wrap: wrap">
|
||||
<Select
|
||||
:model-value="photonEventTableTypeFilter"
|
||||
|
||||
@@ -43,12 +43,12 @@
|
||||
<span class="name" v-text="user.displayName"></span>
|
||||
<span
|
||||
v-if="randomUserColours"
|
||||
class="extra"
|
||||
class="block truncate text-xs"
|
||||
:class="user.$trustClass"
|
||||
v-text="user.$trustLevel"></span>
|
||||
<span
|
||||
v-else
|
||||
class="extra"
|
||||
class="block truncate text-xs"
|
||||
:style="{ color: user.$userColour }"
|
||||
v-text="user.$trustLevel"></span>
|
||||
</div>
|
||||
@@ -111,10 +111,10 @@
|
||||
</div>
|
||||
<div class="detail">
|
||||
<span class="name" v-text="world.name"></span>
|
||||
<span v-if="world.occupants" class="extra"
|
||||
<span v-if="world.occupants" class="block truncate text-xs"
|
||||
>{{ world.authorName }} ({{ world.occupants }})</span
|
||||
>
|
||||
<span v-else class="extra" v-text="world.authorName"></span>
|
||||
<span v-else class="block truncate text-xs" v-text="world.authorName"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -262,14 +262,14 @@
|
||||
<span class="name" v-text="avatar.name"></span>
|
||||
<span
|
||||
v-if="avatar.releaseStatus === 'public'"
|
||||
class="extra"
|
||||
class="block truncate text-xs"
|
||||
v-text="avatar.releaseStatus"></span>
|
||||
<span
|
||||
v-else-if="avatar.releaseStatus === 'private'"
|
||||
class="extra"
|
||||
class="block truncate text-xs"
|
||||
v-text="avatar.releaseStatus"></span>
|
||||
<span v-else class="extra" v-text="avatar.releaseStatus"></span>
|
||||
<span class="extra" v-text="avatar.authorName"></span>
|
||||
<span v-else class="block truncate text-xs" v-text="avatar.releaseStatus"></span>
|
||||
<span class="block truncate text-xs" v-text="avatar.authorName"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -322,7 +322,7 @@
|
||||
>{{ group.shortCode }}.{{ group.discriminator }}</span
|
||||
>
|
||||
</span>
|
||||
<span class="extra" v-text="group.description"></span>
|
||||
<span class="block truncate text-xs" v-text="group.description"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -38,6 +38,7 @@
|
||||
import { TabsUnderline } from '@/components/ui/tabs';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
|
||||
|
||||
import AdvancedTab from './components/Tabs/AdvancedTab.vue';
|
||||
import AppearanceTab from './components/Tabs/AppearanceTab.vue';
|
||||
import DiscordPresenceTab from './components/Tabs/DiscordPresenceTab.vue';
|
||||
|
||||
@@ -90,10 +90,10 @@
|
||||
<div class="x-friend-item">
|
||||
<div class="detail" @click="getVisits">
|
||||
<span class="name">{{ t('view.profile.game_info.online_users') }}</span>
|
||||
<span v-if="visits" class="extra">{{
|
||||
<span v-if="visits" class="block truncate text-xs">{{
|
||||
t('view.profile.game_info.user_online', { count: visits })
|
||||
}}</span>
|
||||
<span v-else class="extra">{{ t('view.profile.game_info.refresh') }}</span>
|
||||
<span v-else class="block truncate text-xs">{{ t('view.profile.game_info.refresh') }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -356,49 +356,49 @@
|
||||
:model-value="trustColor.untrusted"
|
||||
:presets="['#CCCCCC']"
|
||||
@change="updateTrustColor('untrusted', $event)" />
|
||||
<span class="color-picker x-tag-untrusted">Visitor</span>
|
||||
<span class="text-[18px] align-top x-tag-untrusted">Visitor</span>
|
||||
</div>
|
||||
<div>
|
||||
<PresetColorPicker
|
||||
:model-value="trustColor.basic"
|
||||
:presets="['#1778ff']"
|
||||
@change="updateTrustColor('basic', $event)" />
|
||||
<span class="color-picker x-tag-basic">New User</span>
|
||||
<span class="text-[18px] align-top x-tag-basic">New User</span>
|
||||
</div>
|
||||
<div>
|
||||
<PresetColorPicker
|
||||
:model-value="trustColor.known"
|
||||
:presets="['#2bcf5c']"
|
||||
@change="updateTrustColor('known', $event)" />
|
||||
<span class="color-picker x-tag-known">User</span>
|
||||
<span class="text-[18px] align-top x-tag-known">User</span>
|
||||
</div>
|
||||
<div>
|
||||
<PresetColorPicker
|
||||
:model-value="trustColor.trusted"
|
||||
:presets="['#ff7b42']"
|
||||
@change="updateTrustColor('trusted', $event)" />
|
||||
<span class="color-picker x-tag-trusted">Known User</span>
|
||||
<span class="text-[18px] align-top x-tag-trusted">Known User</span>
|
||||
</div>
|
||||
<div>
|
||||
<PresetColorPicker
|
||||
:model-value="trustColor.veteran"
|
||||
:presets="['#b18fff', '#8143e6', '#ff69b4', '#b52626', '#ffd000', '#abcdef']"
|
||||
@change="updateTrustColor('veteran', $event)" />
|
||||
<span class="color-picker x-tag-veteran">Trusted User</span>
|
||||
<span class="text-[18px] align-top x-tag-veteran">Trusted User</span>
|
||||
</div>
|
||||
<div>
|
||||
<PresetColorPicker
|
||||
:model-value="trustColor.vip"
|
||||
:presets="['#ff2626']"
|
||||
@change="updateTrustColor('vip', $event)" />
|
||||
<span class="color-picker x-tag-vip">VRChat Team</span>
|
||||
<span class="text-[18px] align-top x-tag-vip">VRChat Team</span>
|
||||
</div>
|
||||
<div>
|
||||
<PresetColorPicker
|
||||
:model-value="trustColor.troll"
|
||||
:presets="['#782f2f']"
|
||||
@change="updateTrustColor('troll', $event)" />
|
||||
<span class="color-picker x-tag-troll">Nuisance</span>
|
||||
<span class="text-[18px] align-top x-tag-troll">Nuisance</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -6,14 +6,14 @@
|
||||
<div class="x-friend-item" style="cursor: default">
|
||||
<div class="detail">
|
||||
<span class="name">{{ t('view.settings.general.general.version') }}</span>
|
||||
<span class="extra" v-text="appVersion"></span>
|
||||
<span class="block truncate text-xs" v-text="appVersion"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="x-friend-item" @click="checkForVRCXUpdate">
|
||||
<div class="detail">
|
||||
<span class="name">{{ t('view.settings.general.general.latest_app_version') }}</span>
|
||||
<span v-if="latestAppVersion" class="extra" v-text="latestAppVersion"></span>
|
||||
<span v-else class="extra">{{
|
||||
<span v-if="latestAppVersion" class="block truncate text-xs" v-text="latestAppVersion"></span>
|
||||
<span v-else class="block truncate text-xs">{{
|
||||
t('view.settings.general.general.latest_app_version_refresh')
|
||||
}}</span>
|
||||
</div>
|
||||
@@ -21,13 +21,13 @@
|
||||
<div class="x-friend-item" @click="openExternalLink(links.github)">
|
||||
<div class="detail">
|
||||
<span class="name">{{ t('view.settings.general.general.repository_url') }}</span>
|
||||
<span v-once class="extra">{{ links.github }}</span>
|
||||
<span v-once class="block truncate text-xs">{{ links.github }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="x-friend-item" @click="openExternalLink(links.discord)">
|
||||
<div class="detail">
|
||||
<span class="name">{{ t('view.settings.general.general.support') }}</span>
|
||||
<span v-once class="extra">{{ links.discord }}</span>
|
||||
<span v-once class="block truncate text-xs">{{ links.discord }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -4,9 +4,9 @@
|
||||
<DialogHeader>
|
||||
<DialogTitle>{{ dialogTitle }}</DialogTitle>
|
||||
</DialogHeader>
|
||||
<div class="toggle-list" style="height: 75vh; overflow-y: auto">
|
||||
<div v-for="setting in currentOptions" :key="setting.key" class="toggle-item">
|
||||
<span class="toggle-name"
|
||||
<div class="text-[15px] h-[75vh] overflow-y-auto">
|
||||
<div v-for="setting in currentOptions" :key="setting.key" class="mb-[5px] flex items-center">
|
||||
<span class="inline-block min-w-[190px] pr-2.5 text-right"
|
||||
>{{ setting.name
|
||||
}}<TooltipWrapper
|
||||
v-if="setting.tooltip"
|
||||
@@ -38,11 +38,14 @@
|
||||
|
||||
<template v-if="photonLoggingEnabled">
|
||||
<br />
|
||||
<div class="toggle-item">
|
||||
<span class="toggle-name">Photon Event Logging</span>
|
||||
<div class="mb-[5px] flex items-center">
|
||||
<span class="inline-block min-w-[190px] pr-2.5 text-right">Photon Event Logging</span>
|
||||
</div>
|
||||
<div v-for="setting in photonFeedFiltersOptions" :key="setting.key" class="toggle-item">
|
||||
<span class="toggle-name">{{ setting.name }}</span>
|
||||
<div
|
||||
v-for="setting in photonFeedFiltersOptions"
|
||||
:key="setting.key"
|
||||
class="mb-[5px] flex items-center">
|
||||
<span class="inline-block min-w-[190px] pr-2.5 text-right">{{ setting.name }}</span>
|
||||
<ToggleGroup
|
||||
type="single"
|
||||
required
|
||||
@@ -154,11 +157,3 @@
|
||||
emit('update:feedFiltersDialogMode', '');
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.toggle-list .toggle-item {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -26,16 +26,16 @@
|
||||
<span class="name" :style="{ color: item.ref.$userColour }">{{
|
||||
item.ref.displayName
|
||||
}}</span>
|
||||
<span v-if="!item.ref.isFriend" class="extra"></span>
|
||||
<span v-else-if="item.ref.state === 'offline'" class="extra">{{
|
||||
<span v-if="!item.ref.isFriend" class="block truncate text-xs"></span>
|
||||
<span v-else-if="item.ref.state === 'offline'" class="block truncate text-xs">{{
|
||||
t('side_panel.search_result_active')
|
||||
}}</span>
|
||||
<span v-else-if="item.ref.state === 'active'" class="extra">{{
|
||||
<span v-else-if="item.ref.state === 'active'" class="block truncate text-xs">{{
|
||||
t('side_panel.search_result_offline')
|
||||
}}</span>
|
||||
<Location
|
||||
v-else
|
||||
class="extra"
|
||||
class="text-xs"
|
||||
:location="item.ref.location"
|
||||
:traveling="item.ref.travelingToLocation"
|
||||
:link="false" />
|
||||
@@ -178,6 +178,16 @@
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.x-aside-container {
|
||||
display: flex;
|
||||
flex: none;
|
||||
flex-direction: column;
|
||||
padding: 13px 5px 5px 5px;
|
||||
order: 99;
|
||||
height: 100%;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.sidebar-tab-count {
|
||||
font-size: 12px;
|
||||
margin-left: 10px;
|
||||
|
||||
@@ -14,23 +14,23 @@
|
||||
>{{ friend.ref.displayName }}{{ isGroupByInstance && friend.isVIP ? ' ⭐' : '' }}</span
|
||||
>
|
||||
|
||||
<span v-if="isFriendActiveOrOffline" class="extra">{{ friend.ref.statusDescription }}</span>
|
||||
<span v-if="isFriendActiveOrOffline" class="block truncate text-xs">{{ friend.ref.statusDescription }}</span>
|
||||
<template v-else>
|
||||
<div v-if="friend.pendingOffline" class="extra">
|
||||
<div v-if="friend.pendingOffline" class="text-xs">
|
||||
<AlertTriangle class="inline-block" /> {{ t('side_panel.pending_offline') }}
|
||||
</div>
|
||||
<template v-else-if="isGroupByInstance">
|
||||
<div class="flex items-center">
|
||||
<Loader2 v-if="isFriendTraveling" class="is-loading" style="margin-right: 3px" />
|
||||
<Timer
|
||||
class="extra"
|
||||
class="text-xs"
|
||||
:epoch="epoch"
|
||||
:style="
|
||||
isFriendTraveling ? { display: 'inline-block', overflow: 'unset' } : undefined
|
||||
" />
|
||||
</div>
|
||||
</template>
|
||||
<Location v-else class="extra" :location="locationProp" :traveling="travelingProp" :link="false" />
|
||||
<Location v-else class="text-xs" :location="locationProp" :traveling="travelingProp" :link="false" />
|
||||
</template>
|
||||
</div>
|
||||
</template>
|
||||
@@ -89,23 +89,3 @@
|
||||
const locationProp = computed(() => props.friend.ref?.location || '');
|
||||
const travelingProp = computed(() => props.friend.ref?.travelingToLocation || '');
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.skeleton {
|
||||
height: 40px;
|
||||
width: 100%;
|
||||
& > div {
|
||||
height: 100%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
& > div {
|
||||
width: calc(100% - 48px);
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
<span class="name" :style="{ color: currentUser.$userColour }">{{ currentUser.displayName }}</span>
|
||||
<Location
|
||||
v-if="isGameRunning && !gameLogDisabled"
|
||||
class="extra"
|
||||
class="text-xs"
|
||||
:location="lastLocation.location"
|
||||
:traveling="lastLocationDestination"
|
||||
:link="false" />
|
||||
@@ -27,12 +27,12 @@
|
||||
v-else-if="
|
||||
isRealInstance(currentUser.$locationTag) || isRealInstance(currentUser.$travelingToLocation)
|
||||
"
|
||||
class="extra"
|
||||
class="text-xs"
|
||||
:location="currentUser.$locationTag"
|
||||
:traveling="currentUser.$travelingToLocation"
|
||||
:link="false" />
|
||||
|
||||
<span v-else class="extra">{{ currentUser.statusDescription }}</span>
|
||||
<span v-else class="text-xs">{{ currentUser.statusDescription }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -54,8 +54,8 @@
|
||||
<div v-for="group in vipFriendsDivideByGroup" :key="group[0].key">
|
||||
<transition name="el-fade-in-linear">
|
||||
<div v-show="group[0].groupName !== ''" style="margin-bottom: 3px">
|
||||
<span class="extra">{{ group[0].groupName }}</span>
|
||||
<span class="extra" style="margin-left: 5px">{{ `(${group.length})` }}</span>
|
||||
<span class="text-xs">{{ group[0].groupName }}</span>
|
||||
<span class="text-xs" style="margin-left: 5px">{{ `(${group.length})` }}</span>
|
||||
</div>
|
||||
</transition>
|
||||
<div v-if="group.length" style="margin-bottom: 10px">
|
||||
@@ -91,10 +91,10 @@
|
||||
<div v-for="friendArr in friendsInSameInstance" :key="friendArr[0].ref.$location.tag">
|
||||
<div class="mb-1 flex items-center">
|
||||
<Location
|
||||
class="extra text-muted-foreground!"
|
||||
class="text-xs text-muted-foreground"
|
||||
:location="getFriendsLocations(friendArr)"
|
||||
style="display: inline" />
|
||||
<span class="extra" style="margin-left: 5px">{{ `(${friendArr.length})` }}</span>
|
||||
<span class="text-xs" style="margin-left: 5px">{{ `(${friendArr.length})` }}</span>
|
||||
</div>
|
||||
<div v-if="friendArr && friendArr.length">
|
||||
<friend-item
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
>({{ ref.instance.userCount }}/{{ ref.instance.capacity }})</span
|
||||
>
|
||||
</span>
|
||||
<Location class="extra" :location="ref.instance.location" :link="false" />
|
||||
<Location class="text-xs" :location="ref.instance.location" :link="false" />
|
||||
</div>
|
||||
</template>
|
||||
</div>
|
||||
|
||||
@@ -90,12 +90,12 @@
|
||||
style="display: inline-block; margin-top: 10px; width: unset; cursor: default">
|
||||
<template v-if="image.versions && image.versions.length > 0">
|
||||
<div
|
||||
class="vrcplus-icon"
|
||||
class="h-[200px] w-[200px] rounded-[20px] overflow-hidden"
|
||||
v-if="image.versions[image.versions.length - 1].file.url"
|
||||
@click="setProfilePicOverride(image.id)"
|
||||
:class="{ 'current-vrcplus-icon': compareCurrentProfilePic(image.id) }">
|
||||
:class="compareCurrentProfilePic(image.id) ? 'cursor-default' : 'cursor-pointer'">
|
||||
<img
|
||||
class="avatar"
|
||||
class="h-full w-full rounded-[15px] object-cover"
|
||||
:src="image.versions[image.versions.length - 1].file.url"
|
||||
loading="lazy" />
|
||||
</div>
|
||||
@@ -163,12 +163,12 @@
|
||||
style="display: inline-block; margin-top: 10px; width: unset; cursor: default">
|
||||
<template v-if="image.versions && image.versions.length > 0"
|
||||
><div
|
||||
class="vrcplus-icon"
|
||||
class="h-[200px] w-[200px] rounded-[20px] overflow-hidden"
|
||||
v-if="image.versions[image.versions.length - 1].file.url"
|
||||
@click="setVRCPlusIcon(image.id)"
|
||||
:class="{ 'current-vrcplus-icon': compareCurrentVRCPlusIcon(image.id) }">
|
||||
:class="compareCurrentVRCPlusIcon(image.id) ? 'cursor-default' : 'cursor-pointer'">
|
||||
<img
|
||||
class="avatar"
|
||||
class="h-full w-full rounded-[15px] object-cover"
|
||||
:src="image.versions[image.versions.length - 1].file.url"
|
||||
loading="lazy" />
|
||||
</div>
|
||||
@@ -301,9 +301,8 @@
|
||||
style="display: inline-block; margin-top: 10px; width: unset; cursor: default">
|
||||
<template v-if="image.versions && image.versions.length > 0">
|
||||
<div
|
||||
class="vrcplus-icon"
|
||||
class="h-[200px] w-[200px] rounded-[20px] overflow-hidden cursor-pointer"
|
||||
v-if="image.versions[image.versions.length - 1].file.url"
|
||||
style="overflow: hidden"
|
||||
@click="
|
||||
showFullscreenImageDialog(
|
||||
image.versions[image.versions.length - 1].file.url,
|
||||
@@ -383,12 +382,11 @@
|
||||
style="display: inline-block; margin-top: 10px; width: unset; cursor: default">
|
||||
<template v-if="image.versions && image.versions.length > 0">
|
||||
<div
|
||||
class="vrcplus-icon"
|
||||
class="h-[200px] w-[200px] rounded-[20px] overflow-hidden cursor-pointer"
|
||||
v-if="image.versions[image.versions.length - 1].file.url"
|
||||
style="overflow: hidden"
|
||||
@click="showFullscreenImageDialog(image.versions[image.versions.length - 1].file.url)">
|
||||
<img
|
||||
class="avatar"
|
||||
class="h-full w-full rounded-[15px] object-cover"
|
||||
:src="image.versions[image.versions.length - 1].file.url"
|
||||
loading="lazy" />
|
||||
</div>
|
||||
@@ -459,35 +457,30 @@
|
||||
:key="image.id"
|
||||
style="display: inline-block; margin-top: 10px; width: unset; cursor: default">
|
||||
<div
|
||||
class="vrcplus-icon"
|
||||
style="overflow: hidden"
|
||||
class="h-[200px] w-[200px] rounded-[20px] overflow-hidden cursor-pointer"
|
||||
@click="showFullscreenImageDialog(image.files.image, getPrintFileName(image))">
|
||||
<img class="avatar" :src="image.files.image" loading="lazy" />
|
||||
<img class="h-full w-full rounded-[15px] object-cover" :src="image.files.image" loading="lazy" />
|
||||
</div>
|
||||
<div style="margin-top: 5px; width: 208px">
|
||||
<span
|
||||
class="x-ellipsis"
|
||||
v-if="image.note"
|
||||
v-text="image.note"
|
||||
style="display: block"></span>
|
||||
<span v-else style="display: block"> </span>
|
||||
<span class="block truncate" v-if="image.note" v-text="image.note"></span>
|
||||
<span v-else class="block"> </span>
|
||||
<Location
|
||||
class="x-ellipsis"
|
||||
class="block truncate"
|
||||
v-if="image.worldId"
|
||||
:location="image.worldId"
|
||||
:hint="image.worldName"
|
||||
style="display: block" />
|
||||
<span v-else style="display: block"> </span>
|
||||
/>
|
||||
<span v-else class="block"> </span>
|
||||
<DisplayName
|
||||
class="x-ellipsis gallery-meta"
|
||||
class="block truncate gallery-meta"
|
||||
v-if="image.authorId"
|
||||
:userid="image.authorId"
|
||||
:hint="image.authorName" />
|
||||
<span v-else class="gallery-meta"> </span>
|
||||
<span v-if="image.createdAt" class="x-ellipsis gallery-meta gallery-meta--small">
|
||||
<span v-if="image.createdAt" class="block truncate gallery-meta gallery-meta--small">
|
||||
{{ formatDateFilter(image.createdAt, 'long') }}
|
||||
</span>
|
||||
<span v-else style="display: block"> </span>
|
||||
<span v-else class="block"> </span>
|
||||
</div>
|
||||
<div class="float-right">
|
||||
<Button
|
||||
@@ -531,18 +524,18 @@
|
||||
v-for="item in inventoryTable"
|
||||
:key="item.id"
|
||||
style="display: inline-block; margin-top: 10px; width: unset; cursor: default">
|
||||
<div class="vrcplus-icon" style="overflow: hidden; cursor: default">
|
||||
<img class="avatar" :src="item.imageUrl" loading="lazy" />
|
||||
<div class="h-[200px] w-[200px] rounded-[20px] overflow-hidden cursor-default">
|
||||
<img class="h-full w-full rounded-[15px] object-cover" :src="item.imageUrl" loading="lazy" />
|
||||
</div>
|
||||
<div style="margin-top: 5px; width: 208px">
|
||||
<span class="x-ellipsis" v-text="item.name" style="display: block"></span>
|
||||
<span class="block truncate" v-text="item.name"></span>
|
||||
<span
|
||||
v-if="item.description"
|
||||
class="x-ellipsis"
|
||||
class="block truncate"
|
||||
v-text="item.description"
|
||||
style="display: block"></span>
|
||||
<span v-else style="display: block"> </span>
|
||||
<span class="x-ellipsis gallery-meta gallery-meta--small">
|
||||
></span>
|
||||
<span v-else class="block"> </span>
|
||||
<span class="block truncate gallery-meta gallery-meta--small">
|
||||
{{ formatDateFilter(item.created_at, 'long') }}
|
||||
</span>
|
||||
<span v-if="item.itemType === 'prop'">{{ t('dialog.gallery_icons.item') }}</span>
|
||||
|
||||
@@ -220,6 +220,7 @@
|
||||
import { toast } from 'vue-sonner';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
|
||||
|
||||
import { useFriendStore, useGalleryStore } from '../../stores';
|
||||
|
||||
const GroupCalendarDialog = defineAsyncComponent(() => import('./dialogs/GroupCalendarDialog.vue'));
|
||||
|
||||
Reference in New Issue
Block a user