mirror of
https://github.com/MrUnknownDE/VRCX.git
synced 2026-05-05 06:16:05 +02:00
feat: add help and support section to nav menu
This commit is contained in:
+128
-8
@@ -42,6 +42,51 @@
|
|||||||
<i class="ri-feedback-line"></i></div
|
<i class="ri-feedback-line"></i></div
|
||||||
></el-tooltip>
|
></el-tooltip>
|
||||||
|
|
||||||
|
<el-popover
|
||||||
|
v-model:visible="supportMenuVisible"
|
||||||
|
placement="right"
|
||||||
|
trigger="click"
|
||||||
|
popper-style="padding:4px;border-radius:8px;"
|
||||||
|
:offset="4"
|
||||||
|
:show-arrow="false"
|
||||||
|
:width="200"
|
||||||
|
:hide-after="0">
|
||||||
|
<div class="nav-menu-support nav-menu-settings">
|
||||||
|
<div class="nav-menu-support__section">
|
||||||
|
<button type="button" class="nav-menu-settings__item" @click="showChangeLogDialog">
|
||||||
|
<span>{{ t('nav_menu.whats_new') }}</span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<el-divider></el-divider>
|
||||||
|
<div class="nav-menu-support__section">
|
||||||
|
<span class="nav-menu-support__title">{{ t('nav_menu.resources') }}</span>
|
||||||
|
<button type="button" class="nav-menu-settings__item" @click="handleSupportLink('wiki')">
|
||||||
|
<span>{{ t('nav_menu.wiki') }}</span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<el-divider></el-divider>
|
||||||
|
<div class="nav-menu-support__section">
|
||||||
|
<span class="nav-menu-support__title">{{ t('nav_menu.get_help') }}</span>
|
||||||
|
<button type="button" class="nav-menu-settings__item" @click="handleSupportLink('github')">
|
||||||
|
<span>{{ t('nav_menu.github') }}</span>
|
||||||
|
</button>
|
||||||
|
<button type="button" class="nav-menu-settings__item" @click="handleSupportLink('discord')">
|
||||||
|
<span>{{ t('nav_menu.discord') }}</span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<el-divider></el-divider>
|
||||||
|
</div>
|
||||||
|
<template #reference>
|
||||||
|
<div>
|
||||||
|
<el-tooltip :content="t('nav_tooltip.help_support')" placement="right">
|
||||||
|
<div class="bottom-button">
|
||||||
|
<i class="ri-question-line"></i>
|
||||||
|
</div>
|
||||||
|
</el-tooltip>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-popover>
|
||||||
|
|
||||||
<el-popover
|
<el-popover
|
||||||
v-model:visible="settingsMenuVisible"
|
v-model:visible="settingsMenuVisible"
|
||||||
placement="right"
|
placement="right"
|
||||||
@@ -49,15 +94,20 @@
|
|||||||
popper-style="padding:4px;border-radius:8px;"
|
popper-style="padding:4px;border-radius:8px;"
|
||||||
:offset="4"
|
:offset="4"
|
||||||
:show-arrow="false"
|
:show-arrow="false"
|
||||||
:width="200">
|
:width="200"
|
||||||
|
:hide-after="0">
|
||||||
<div class="nav-menu-settings">
|
<div class="nav-menu-settings">
|
||||||
<div class="nav-menu-settings__header">
|
<div class="nav-menu-settings__header">
|
||||||
<img class="nav-menu-settings__logo" :src="vrcxLogo" alt="VRCX" @click="openGithub" />
|
<img class="nav-menu-settings__logo" :src="vrcxLogo" alt="VRCX" @click="openGithub" />
|
||||||
<div class="nav-menu-settings__meta">
|
<div class="nav-menu-settings__meta">
|
||||||
<span class="nav-menu-settings__title" @click="openGithub">VRCX💚</span>
|
<span class="nav-menu-settings__title" @click="openGithub"
|
||||||
|
>VRCX
|
||||||
|
<i class="ri-heart-3-fill" style="color: #64cd8a; font-size: 14px"></i>
|
||||||
|
</span>
|
||||||
<span class="nav-menu-settings__version">{{ version }}</span>
|
<span class="nav-menu-settings__version">{{ version }}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<el-divider></el-divider>
|
||||||
<button type="button" class="nav-menu-settings__item" @click="handleSettingsClick">
|
<button type="button" class="nav-menu-settings__item" @click="handleSettingsClick">
|
||||||
<span>{{ t('nav_tooltip.settings') }}</span>
|
<span>{{ t('nav_tooltip.settings') }}</span>
|
||||||
</button>
|
</button>
|
||||||
@@ -83,7 +133,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<template #reference>
|
<template #reference>
|
||||||
<button type="button" class="nav-menu-settings__item" @click.prevent>
|
<button type="button" class="nav-menu-settings__item" @click.prevent>
|
||||||
<span>Theme</span>
|
<span>{{ t('view.settings.appearance.appearance.theme_mode') }}</span>
|
||||||
<span class="nav-menu-settings__arrow">›</span>
|
<span class="nav-menu-settings__arrow">›</span>
|
||||||
</button>
|
</button>
|
||||||
</template>
|
</template>
|
||||||
@@ -129,7 +179,7 @@
|
|||||||
|
|
||||||
const navItems = [
|
const navItems = [
|
||||||
{ index: 'feed', icon: 'ri-rss-line', tooltip: 'nav_tooltip.feed' },
|
{ index: 'feed', icon: 'ri-rss-line', tooltip: 'nav_tooltip.feed' },
|
||||||
{ index: 'friend-location', icon: 'ri-map-pin-user-line', tooltip: 'nav_tooltip.friend_location' },
|
{ index: 'friend-location', icon: 'ri-user-location-line', tooltip: 'nav_tooltip.friend_location' },
|
||||||
{ index: 'game-log', icon: 'ri-history-line', tooltip: 'nav_tooltip.game_log' },
|
{ index: 'game-log', icon: 'ri-history-line', tooltip: 'nav_tooltip.game_log' },
|
||||||
{ index: 'player-list', icon: 'ri-group-3-line', tooltip: 'nav_tooltip.player_list' },
|
{ index: 'player-list', icon: 'ri-group-3-line', tooltip: 'nav_tooltip.player_list' },
|
||||||
{ index: 'search', icon: 'ri-search-line', tooltip: 'nav_tooltip.search' },
|
{ index: 'search', icon: 'ri-search-line', tooltip: 'nav_tooltip.search' },
|
||||||
@@ -145,7 +195,7 @@
|
|||||||
const VRCXUpdaterStore = useVRCXUpdaterStore();
|
const VRCXUpdaterStore = useVRCXUpdaterStore();
|
||||||
const { pendingVRCXUpdate, pendingVRCXInstall, updateInProgress, updateProgress, branch, appVersion } =
|
const { pendingVRCXUpdate, pendingVRCXInstall, updateInProgress, updateProgress, branch, appVersion } =
|
||||||
storeToRefs(VRCXUpdaterStore);
|
storeToRefs(VRCXUpdaterStore);
|
||||||
const { showVRCXUpdateDialog, updateProgressText } = VRCXUpdaterStore;
|
const { showVRCXUpdateDialog, updateProgressText, showChangeLogDialog } = VRCXUpdaterStore;
|
||||||
const uiStore = useUiStore();
|
const uiStore = useUiStore();
|
||||||
const { notifiedMenus } = storeToRefs(uiStore);
|
const { notifiedMenus } = storeToRefs(uiStore);
|
||||||
const { directAccessPaste } = useSearchStore();
|
const { directAccessPaste } = useSearchStore();
|
||||||
@@ -157,6 +207,7 @@
|
|||||||
|
|
||||||
const settingsMenuVisible = ref(false);
|
const settingsMenuVisible = ref(false);
|
||||||
const themeMenuVisible = ref(false);
|
const themeMenuVisible = ref(false);
|
||||||
|
const supportMenuVisible = ref(false);
|
||||||
|
|
||||||
const version = computed(() => appVersion.value?.split('VRCX ')?.[1] || '-');
|
const version = computed(() => appVersion.value?.split('VRCX ')?.[1] || '-');
|
||||||
const vrcxLogo = new URL('../../images/VRCX.png', import.meta.url).href;
|
const vrcxLogo = new URL('../../images/VRCX.png', import.meta.url).href;
|
||||||
@@ -167,6 +218,7 @@
|
|||||||
|
|
||||||
const handleSettingsClick = () => {
|
const handleSettingsClick = () => {
|
||||||
themeMenuVisible.value = false;
|
themeMenuVisible.value = false;
|
||||||
|
supportMenuVisible.value = false;
|
||||||
settingsMenuVisible.value = false;
|
settingsMenuVisible.value = false;
|
||||||
router.push({ name: 'settings' });
|
router.push({ name: 'settings' });
|
||||||
};
|
};
|
||||||
@@ -187,11 +239,33 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
watch(settingsMenuVisible, (visible) => {
|
watch(settingsMenuVisible, (visible) => {
|
||||||
if (!visible) {
|
if (visible) {
|
||||||
|
supportMenuVisible.value = false;
|
||||||
|
} else {
|
||||||
themeMenuVisible.value = false;
|
themeMenuVisible.value = false;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
watch(supportMenuVisible, (visible) => {
|
||||||
|
if (visible) {
|
||||||
|
settingsMenuVisible.value = false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const supportLinks = {
|
||||||
|
wiki: 'https://github.com/vrcx-team/VRCX/wiki',
|
||||||
|
github: 'https://github.com/vrcx-team/VRCX',
|
||||||
|
discord: 'https://vrcx.app/discord'
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleSupportLink = (id) => {
|
||||||
|
supportMenuVisible.value = false;
|
||||||
|
const target = supportLinks[id];
|
||||||
|
if (target) {
|
||||||
|
openExternalLink(target);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
if (!sentryErrorReporting.value) return;
|
if (!sentryErrorReporting.value) return;
|
||||||
const feedback = Sentry.getFeedback();
|
const feedback = Sentry.getFeedback();
|
||||||
@@ -200,6 +274,9 @@
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
:deep(.el-divider) {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
.nav-menu-container {
|
.nav-menu-container {
|
||||||
position: relative;
|
position: relative;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
@@ -254,8 +331,6 @@
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 10px;
|
gap: 10px;
|
||||||
padding: 8px 8px 10px;
|
padding: 8px 8px 10px;
|
||||||
border-bottom: 1px solid var(--el-border-color-light);
|
|
||||||
margin-bottom: 4px;
|
|
||||||
.nav-menu-settings__logo {
|
.nav-menu-settings__logo {
|
||||||
width: 24px;
|
width: 24px;
|
||||||
height: 24px;
|
height: 24px;
|
||||||
@@ -272,7 +347,10 @@
|
|||||||
line-height: 1.2;
|
line-height: 1.2;
|
||||||
}
|
}
|
||||||
.nav-menu-settings__title {
|
.nav-menu-settings__title {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
|
font-size: 14px;
|
||||||
color: var(--el-text-color-regular);
|
color: var(--el-text-color-regular);
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
@@ -307,6 +385,48 @@
|
|||||||
.nav-menu-settings__item--danger {
|
.nav-menu-settings__item--danger {
|
||||||
color: var(--el-color-danger);
|
color: var(--el-color-danger);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.nav-menu-settings__item--danger:hover {
|
||||||
|
background-color: rgba(245, 108, 108, 0.18);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-menu-support {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 8px;
|
||||||
|
|
||||||
|
.nav-menu-support__search {
|
||||||
|
padding: 10px 12px;
|
||||||
|
border-radius: 8px;
|
||||||
|
background: var(--el-fill-color-light);
|
||||||
|
color: var(--el-text-color-secondary);
|
||||||
|
font-size: 12px;
|
||||||
|
font-weight: 500;
|
||||||
|
line-height: 1.2;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-menu-support__heading {
|
||||||
|
padding: 4px 12px 0;
|
||||||
|
font-size: 13px;
|
||||||
|
font-weight: 700;
|
||||||
|
color: var(--el-text-color-primary);
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-menu-support__section {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-menu-support__title {
|
||||||
|
padding: 0 12px;
|
||||||
|
font-size: 11px;
|
||||||
|
font-weight: 600;
|
||||||
|
color: var(--el-text-color-secondary);
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 0.4px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-menu-theme {
|
.nav-menu-theme {
|
||||||
|
|||||||
@@ -14,8 +14,18 @@
|
|||||||
"friend_list": "Friend List",
|
"friend_list": "Friend List",
|
||||||
"charts": "Charts",
|
"charts": "Charts",
|
||||||
"tools": "Tools",
|
"tools": "Tools",
|
||||||
|
"about": "About",
|
||||||
"profile": "Profile",
|
"profile": "Profile",
|
||||||
"settings": "Settings"
|
"settings": "Settings",
|
||||||
|
"help_support": "Help & Support"
|
||||||
|
},
|
||||||
|
"nav_menu": {
|
||||||
|
"resources": "RESOURCES",
|
||||||
|
"wiki": "Wiki",
|
||||||
|
"get_help": "GET HELP",
|
||||||
|
"github": "VRCX on GitHub",
|
||||||
|
"discord": "Join our Discord",
|
||||||
|
"whats_new": "What's New?"
|
||||||
},
|
},
|
||||||
"view": {
|
"view": {
|
||||||
"login": {
|
"login": {
|
||||||
|
|||||||
Reference in New Issue
Block a user