mirror of
https://github.com/MrUnknownDE/VRCX.git
synced 2026-05-01 12:43:46 +02:00
fix
This commit is contained in:
@@ -61,14 +61,7 @@
|
||||
<History class="h-4 w-4" />
|
||||
</Button>
|
||||
</TooltipWrapper>
|
||||
<span v-if="showLastJoinIndicator" class="inline-block ml-2">
|
||||
<TooltipWrapper side="top" class="ml-5">
|
||||
<template #content>
|
||||
<span>{{ t('dialog.user.info.last_join') }} <Timer :epoch="lastJoin" /></span>
|
||||
</template>
|
||||
<MapPin class="h-4 w-4 text-muted-foreground" />
|
||||
</TooltipWrapper>
|
||||
</span>
|
||||
|
||||
<div v-if="showInstanceInfo" class="flex items-center ml-2">
|
||||
<TooltipWrapper v-if="instanceInfoState.isValidInstance" side="top">
|
||||
<template #content>
|
||||
@@ -79,7 +72,8 @@
|
||||
<template v-if="instanceInfoState.canCloseInstance">
|
||||
<Button
|
||||
class="mt-1"
|
||||
size="sm"
|
||||
size="xs"
|
||||
variant="outline"
|
||||
:disabled="!!instance?.closedAt"
|
||||
@click="closeInstance(resolvedInstanceLocation)">
|
||||
{{ t('dialog.user.info.close_instance') }}
|
||||
@@ -113,17 +107,29 @@
|
||||
</template>
|
||||
</div>
|
||||
</template>
|
||||
<div class="mr-2 text-muted-foreground">
|
||||
<div class="mr-1 text-muted-foreground">
|
||||
<span v-if="resolvedInstanceLocation === locationStore.lastLocation.location">
|
||||
{{ locationStore.lastLocation.playerList.size }}/{{ instance?.capacity }}
|
||||
</span>
|
||||
|
||||
<span v-else-if="instance?.userCount"> {{ instance.userCount }}/{{ instance?.capacity }} </span>
|
||||
</div>
|
||||
</TooltipWrapper>
|
||||
|
||||
<span v-if="friendcount" class="ml-1 flex items-center text-muted-foreground"
|
||||
><UsersRound />{{ friendcount }}</span
|
||||
>
|
||||
<TooltipWrapper v-if="friendcount" side="top" :content="t('dialog.user.info.instance_friends_tooltip')">
|
||||
<span class="ml-1 flex items-center text-muted-foreground"><UsersRound />{{ friendcount }}</span>
|
||||
</TooltipWrapper>
|
||||
<span v-if="showLastJoinIndicator" class="inline-block ml-1">
|
||||
<TooltipWrapper side="top">
|
||||
<template #content>
|
||||
<span>{{ t('dialog.user.info.last_join') }} </span>
|
||||
</template>
|
||||
<span class="flex items-center ml-1">
|
||||
<MapPin class="h-4 w-4 text-muted-foreground" />
|
||||
<Timer class="text-muted-foreground" :epoch="lastJoin" />
|
||||
</span>
|
||||
</TooltipWrapper>
|
||||
</span>
|
||||
<span v-if="instanceInfoState.isValidInstance && !instance?.hasCapacityForYou" class="ml-1">
|
||||
{{ t('dialog.user.info.instance_full') }}
|
||||
</span>
|
||||
|
||||
@@ -674,54 +674,29 @@
|
||||
|
||||
const groupInvitesModerationTable = reactive({
|
||||
data: [],
|
||||
tableProps: { stripe: true, size: 'small' },
|
||||
pageSize: 15,
|
||||
paginationProps: {
|
||||
layout: 'sizes,prev,pager,next,total'
|
||||
}
|
||||
pageSize: 15
|
||||
});
|
||||
const groupJoinRequestsModerationTable = reactive({
|
||||
data: [],
|
||||
tableProps: { stripe: true, size: 'small' },
|
||||
pageSize: 15,
|
||||
paginationProps: {
|
||||
layout: 'sizes,prev,pager,next,total'
|
||||
}
|
||||
pageSize: 15
|
||||
});
|
||||
const groupBlockedModerationTable = reactive({
|
||||
data: [],
|
||||
tableProps: { stripe: true, size: 'small' },
|
||||
pageSize: 15,
|
||||
paginationProps: {
|
||||
small: true,
|
||||
layout: 'sizes,prev,pager,next,total'
|
||||
}
|
||||
pageSize: 15
|
||||
});
|
||||
const groupLogsModerationTable = reactive({
|
||||
data: [],
|
||||
filters: [{ prop: ['description'], value: '' }],
|
||||
tableProps: { stripe: true, size: 'small' },
|
||||
pageSize: 15,
|
||||
paginationProps: {
|
||||
layout: 'sizes,prev,pager,next,total'
|
||||
}
|
||||
pageSize: 15
|
||||
});
|
||||
const groupBansModerationTable = reactive({
|
||||
data: [],
|
||||
filters: [{ prop: ['$displayName'], value: '' }],
|
||||
tableProps: { stripe: true, size: 'small' },
|
||||
pageSize: 15,
|
||||
paginationProps: {
|
||||
layout: 'sizes,prev,pager,next,total'
|
||||
}
|
||||
pageSize: 15
|
||||
});
|
||||
const groupMemberModerationTable = reactive({
|
||||
data: [],
|
||||
tableProps: { stripe: true, size: 'small' },
|
||||
pageSize: 15,
|
||||
paginationProps: {
|
||||
layout: 'sizes,prev,pager,next,total'
|
||||
}
|
||||
pageSize: 15
|
||||
});
|
||||
|
||||
const rolesText = (roleIds) => {
|
||||
|
||||
@@ -67,8 +67,7 @@
|
||||
previousInstances: [],
|
||||
previousInstancesTable: {
|
||||
data: [],
|
||||
filters: [{ prop: 'displayName', value: '' }],
|
||||
tableProps: { stripe: true, size: 'small', height: '400px' }
|
||||
filters: [{ prop: 'displayName', value: '' }]
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
@@ -65,7 +65,6 @@
|
||||
<Pencil class="size-4" />
|
||||
{{ t('dialog.user.actions.edit_pronouns') }}
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuSeparator />
|
||||
</template>
|
||||
<template v-else>
|
||||
<template v-if="userDialog.isFriend">
|
||||
|
||||
@@ -47,6 +47,7 @@
|
||||
:on-refresh="() => refreshInstancePlayerCount(userDialog.$location.tag)" />
|
||||
</template>
|
||||
<Location
|
||||
class="text-sm"
|
||||
:location="userDialog.ref.location"
|
||||
:traveling="userDialog.ref.travelingToLocation" />
|
||||
</div>
|
||||
@@ -212,7 +213,7 @@
|
||||
<div class="detail">
|
||||
<span class="name">{{ t('dialog.user.info.bio') }}</span>
|
||||
<pre
|
||||
class="extra"
|
||||
class="extra truncate"
|
||||
style="
|
||||
font-family: inherit;
|
||||
font-size: 12px;
|
||||
@@ -1504,10 +1505,7 @@
|
||||
});
|
||||
const socialStatusHistoryTable = ref({
|
||||
data: [],
|
||||
tableProps: {
|
||||
stripe: true,
|
||||
size: 'small'
|
||||
},
|
||||
|
||||
layout: 'table'
|
||||
});
|
||||
|
||||
|
||||
@@ -1009,8 +1009,9 @@
|
||||
"refresh_instance_info": "Refresh Instance Info",
|
||||
"instance_queue": "Queue:",
|
||||
"instance_users": "Users:",
|
||||
"instance_friends_tooltip": "Friends in this instance",
|
||||
"instance_game_version": "Game Version:",
|
||||
"last_join": "Last Join:",
|
||||
"last_join": "Last Join",
|
||||
"instance_queuing_enabled": "Queuing Enabled",
|
||||
"instance_disabled_content": "Disabled Content:",
|
||||
"instance_creator": "Instance Creator",
|
||||
|
||||
@@ -977,7 +977,7 @@
|
||||
"instance_queue": "在排队等待的玩家:",
|
||||
"instance_users": "房间玩家:",
|
||||
"instance_game_version": "服务器版本:",
|
||||
"last_join": "距离上次加入房间:",
|
||||
"last_join": "距离上次加入房间",
|
||||
"instance_queuing_enabled": "允许排队加入",
|
||||
"instance_disabled_content": "禁用的内容:",
|
||||
"instance_creator": "房间建立者",
|
||||
|
||||
@@ -18,40 +18,24 @@ export const useInviteStore = defineStore('Invite', () => {
|
||||
|
||||
const inviteMessageTable = ref({
|
||||
data: [],
|
||||
tableProps: {
|
||||
stripe: true,
|
||||
size: 'small'
|
||||
},
|
||||
layout: 'table',
|
||||
visible: false
|
||||
});
|
||||
|
||||
const inviteResponseMessageTable = ref({
|
||||
data: [],
|
||||
tableProps: {
|
||||
stripe: true,
|
||||
size: 'small'
|
||||
},
|
||||
layout: 'table',
|
||||
visible: false
|
||||
});
|
||||
|
||||
const inviteRequestMessageTable = ref({
|
||||
data: [],
|
||||
tableProps: {
|
||||
stripe: true,
|
||||
size: 'small'
|
||||
},
|
||||
layout: 'table',
|
||||
visible: false
|
||||
});
|
||||
|
||||
const inviteRequestResponseMessageTable = ref({
|
||||
data: [],
|
||||
tableProps: {
|
||||
stripe: true,
|
||||
size: 'small'
|
||||
},
|
||||
layout: 'table',
|
||||
visible: false
|
||||
});
|
||||
|
||||
@@ -66,11 +66,6 @@ export const useNotificationStore = defineStore('Notification', () => {
|
||||
value: ''
|
||||
}
|
||||
],
|
||||
tableProps: {
|
||||
stripe: true,
|
||||
size: 'small',
|
||||
defaultSort: null
|
||||
},
|
||||
pageSize: 20,
|
||||
pageSizeLinked: true,
|
||||
paginationProps: {
|
||||
|
||||
@@ -103,10 +103,6 @@ export const usePhotonStore = defineStore('Photon', () => {
|
||||
value: []
|
||||
}
|
||||
],
|
||||
tableProps: {
|
||||
stripe: true,
|
||||
size: 'small'
|
||||
},
|
||||
pageSize: 10,
|
||||
paginationProps: {
|
||||
layout: 'sizes,prev,pager,next,total'
|
||||
@@ -124,10 +120,6 @@ export const usePhotonStore = defineStore('Photon', () => {
|
||||
value: []
|
||||
}
|
||||
],
|
||||
tableProps: {
|
||||
stripe: true,
|
||||
size: 'small'
|
||||
},
|
||||
pageSize: 10,
|
||||
paginationProps: {
|
||||
layout: 'sizes,prev,pager,next,total'
|
||||
|
||||
@@ -159,10 +159,6 @@
|
||||
|
||||
const avatarImportTable = ref({
|
||||
data: [],
|
||||
tableProps: {
|
||||
stripe: true,
|
||||
size: 'small'
|
||||
},
|
||||
layout: 'table'
|
||||
});
|
||||
|
||||
|
||||
@@ -139,10 +139,6 @@
|
||||
|
||||
const friendImportTable = ref({
|
||||
data: [],
|
||||
tableProps: {
|
||||
stripe: true,
|
||||
size: 'small'
|
||||
},
|
||||
layout: 'table'
|
||||
});
|
||||
|
||||
|
||||
@@ -165,10 +165,6 @@
|
||||
|
||||
const worldImportTable = ref({
|
||||
data: [],
|
||||
tableProps: {
|
||||
stripe: true,
|
||||
size: 'small'
|
||||
},
|
||||
layout: 'table'
|
||||
});
|
||||
|
||||
|
||||
@@ -170,7 +170,7 @@
|
||||
persistKey: 'gameLog',
|
||||
data: gameLogDisplayData,
|
||||
columns,
|
||||
getRowId: (row) => `${row.type}:${row.rowId ?? row.displayName + row.location + row.time}`,
|
||||
getRowId: (row, index) => `${row.type}:${row.rowId ?? index}`,
|
||||
initialSorting: [],
|
||||
initialPagination: {
|
||||
pageIndex: 0,
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
@click="showFullscreenImageDialog(currentInstanceWorld.ref.imageUrl)"
|
||||
loading="lazy" />
|
||||
<div style="margin-left: 10px; display: flex; flex-direction: column; min-width: 320px; width: 100%">
|
||||
<div>
|
||||
<div class="flex items-center">
|
||||
<span
|
||||
class="cursor-pointer"
|
||||
style="
|
||||
@@ -25,14 +25,15 @@
|
||||
line-clamp: 1;
|
||||
"
|
||||
@click="showWorldDialog(currentInstanceWorld.ref.id)">
|
||||
<Home
|
||||
v-if="
|
||||
currentUser.$homeLocation &&
|
||||
currentUser.$homeLocation.worldId === currentInstanceWorld.ref.id
|
||||
"
|
||||
style="margin-right: 5px" />
|
||||
{{ currentInstanceWorld.ref.name }}
|
||||
</span>
|
||||
|
||||
{{ currentInstanceWorld.ref.name }}
|
||||
<Home
|
||||
v-if="
|
||||
currentUser.$homeLocation &&
|
||||
currentUser.$homeLocation.worldId === currentInstanceWorld.ref.id
|
||||
"
|
||||
class="ml-1" />
|
||||
</div>
|
||||
<div>
|
||||
<span
|
||||
|
||||
@@ -86,6 +86,14 @@
|
||||
setHideNicknames();
|
||||
saveOpenVROption();
|
||||
" />
|
||||
<simple-switch
|
||||
:label="t('view.settings.appearance.appearance.striped_data_table_mode')"
|
||||
:value="isDataTableStriped"
|
||||
@change="toggleStripedDataTable" />
|
||||
<simple-switch
|
||||
:label="t('view.settings.appearance.appearance.toggle_pointer_on_hover')"
|
||||
:value="showPointerOnHover"
|
||||
@change="togglePointerOnHover" />
|
||||
<simple-switch
|
||||
:label="t('view.settings.appearance.appearance.age_gated_instances')"
|
||||
:value="isAgeGatedInstancesVisible"
|
||||
@@ -180,19 +188,12 @@
|
||||
</ListboxRoot>
|
||||
</Popover>
|
||||
</div>
|
||||
<simple-switch
|
||||
:label="t('view.settings.appearance.appearance.striped_data_table_mode')"
|
||||
:value="isDataTableStriped"
|
||||
@change="toggleStripedDataTable" />
|
||||
|
||||
<div class="options-container-item">
|
||||
<Button size="sm" variant="outline" @click="promptMaxTableSizeDialog">{{
|
||||
t('view.settings.appearance.appearance.table_max_size')
|
||||
}}</Button>
|
||||
</div>
|
||||
<simple-switch
|
||||
:label="t('view.settings.appearance.appearance.toggle_pointer_on_hover')"
|
||||
:value="showPointerOnHover"
|
||||
@change="togglePointerOnHover" />
|
||||
</div>
|
||||
<div class="options-container">
|
||||
<span class="header">{{ t('view.settings.appearance.timedate.header') }}</span>
|
||||
@@ -451,15 +452,15 @@
|
||||
import { ArrowRight, CheckIcon, ChevronDown, Info } from 'lucide-vue-next';
|
||||
import { Popover, PopoverAnchor, PopoverContent, PopoverTrigger } from '@/components/ui/popover';
|
||||
import { computed, onBeforeUnmount, ref, watch } from 'vue';
|
||||
import { useAppearanceSettingsStore, useFavoriteStore, useVrStore } from '@/stores';
|
||||
import { RadioGroup, RadioGroupItem } from '@/components/ui/radio-group';
|
||||
import { getLanguageName, languageCodes } from '@/localization';
|
||||
import { APP_FONT_FAMILIES } from '@/shared/constants';
|
||||
import { Button } from '@/components/ui/button';
|
||||
import { storeToRefs } from 'pinia';
|
||||
import { toast } from 'vue-sonner';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
|
||||
import { useAppearanceSettingsStore, useFavoriteStore, useVrStore } from '@/stores';
|
||||
import { getLanguageName, languageCodes } from '@/localization';
|
||||
import { APP_FONT_FAMILIES } from '@/shared/constants';
|
||||
import PresetColorPicker from '@/components/PresetColorPicker.vue';
|
||||
|
||||
import SimpleSwitch from '../SimpleSwitch.vue';
|
||||
|
||||
@@ -42,9 +42,8 @@
|
||||
t('view.settings.general.vrcx_updater.change_build')
|
||||
}}</Button>
|
||||
</div>
|
||||
<div v-if="!noUpdater" class="options-container-item">
|
||||
<div v-if="!noUpdater" class="text-sm mt-2 flex flex-col align-baseline">
|
||||
<span class="name">{{ t('view.settings.general.vrcx_updater.update_action') }}</span>
|
||||
<br />
|
||||
<ToggleGroup
|
||||
type="single"
|
||||
required
|
||||
|
||||
@@ -74,14 +74,6 @@
|
||||
|
||||
const registryBackupTable = ref({
|
||||
data: [],
|
||||
tableProps: {
|
||||
stripe: true,
|
||||
size: 'small',
|
||||
defaultSort: {
|
||||
prop: 'date',
|
||||
order: 'descending'
|
||||
}
|
||||
},
|
||||
layout: 'table'
|
||||
});
|
||||
|
||||
|
||||
@@ -4,7 +4,10 @@
|
||||
<div style="flex: 1; padding: 10px; padding-left: 0">
|
||||
<Popover v-model:open="isQuickSearchOpen">
|
||||
<PopoverTrigger as-child>
|
||||
<Input v-model="quickSearchQuery" :placeholder="t('side_panel.search_placeholder')" />
|
||||
<Input
|
||||
v-model="quickSearchQuery"
|
||||
:placeholder="t('side_panel.search_placeholder')"
|
||||
autocomplete="off" />
|
||||
</PopoverTrigger>
|
||||
<PopoverContent
|
||||
side="bottom"
|
||||
|
||||
@@ -93,10 +93,6 @@
|
||||
|
||||
const noteExportTable = ref({
|
||||
data: [],
|
||||
tableProps: {
|
||||
stripe: true,
|
||||
size: 'small'
|
||||
},
|
||||
layout: 'table'
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user