feat: Add setting to control the visibility of the "New Dashboard" button

This commit is contained in:
pa
2026-03-17 16:51:19 +09:00
parent 91e7e8e1b6
commit 4e6b23cee8
4 changed files with 32 additions and 3 deletions

View File

@@ -1,6 +1,6 @@
<template> <template>
<Sidebar side="left" variant="sidebar" collapsible="icon"> <Sidebar side="left" variant="sidebar" collapsible="icon">
<SidebarHeader v-if="!hasDashboards" class="px-2 py-2"> <SidebarHeader v-if="showNewDashboardButton && !hasDashboards" class="px-2 py-2">
<SidebarMenu> <SidebarMenu>
<SidebarMenuItem> <SidebarMenuItem>
<SidebarMenuButton <SidebarMenuButton
@@ -229,7 +229,7 @@
const modalStore = useModalStore(); const modalStore = useModalStore();
const appearanceSettingsStore = useAppearanceSettingsStore(); const appearanceSettingsStore = useAppearanceSettingsStore();
const { themeMode, tableDensity, isDarkMode, isNavCollapsed: isCollapsed } = storeToRefs(appearanceSettingsStore); const { themeMode, tableDensity, isDarkMode, isNavCollapsed: isCollapsed, showNewDashboardButton } = storeToRefs(appearanceSettingsStore);
const { const {
themes, themes,

View File

@@ -689,6 +689,10 @@
} }
}, },
"interface": { "interface": {
"navigation": {
"header": "Navigation",
"show_new_dashboard_button": "Show \"New Dashboard\" Button"
},
"lists_tables": { "lists_tables": {
"header": "Lists & Tables" "header": "Lists & Tables"
} }

View File

@@ -116,6 +116,7 @@ export const useAppearanceSettingsStore = defineStore(
const isDataTableStriped = ref(false); const isDataTableStriped = ref(false);
const showPointerOnHover = ref(false); const showPointerOnHover = ref(false);
const showNewDashboardButton = ref(true);
const tableLimitsDialog = ref({ const tableLimitsDialog = ref({
visible: false, visible: false,
maxTableSize: 500, maxTableSize: 500,
@@ -175,6 +176,7 @@ export const useAppearanceSettingsStore = defineStore(
navIsCollapsedConfig, navIsCollapsedConfig,
dataTableStripedConfig, dataTableStripedConfig,
showPointerOnHoverConfig, showPointerOnHoverConfig,
showNewDashboardButtonConfig,
appFontFamilyConfig, appFontFamilyConfig,
customFontFamilyConfig, customFontFamilyConfig,
appCjkFontPackConfig, appCjkFontPackConfig,
@@ -244,6 +246,7 @@ export const useAppearanceSettingsStore = defineStore(
configRepository.getBool('VRCX_navIsCollapsed', false), configRepository.getBool('VRCX_navIsCollapsed', false),
configRepository.getBool('VRCX_dataTableStriped', false), configRepository.getBool('VRCX_dataTableStriped', false),
configRepository.getBool('VRCX_showPointerOnHover', false), configRepository.getBool('VRCX_showPointerOnHover', false),
configRepository.getBool('VRCX_showNewDashboardButton', true),
configRepository.getString( configRepository.getString(
'VRCX_fontFamily', 'VRCX_fontFamily',
APP_FONT_DEFAULT_KEY APP_FONT_DEFAULT_KEY
@@ -363,6 +366,7 @@ export const useAppearanceSettingsStore = defineStore(
isNavCollapsed.value = navIsCollapsedConfig; isNavCollapsed.value = navIsCollapsedConfig;
isDataTableStriped.value = dataTableStripedConfig; isDataTableStriped.value = dataTableStripedConfig;
showPointerOnHover.value = showPointerOnHoverConfig; showPointerOnHover.value = showPointerOnHoverConfig;
showNewDashboardButton.value = showNewDashboardButtonConfig;
applyPointerHoverClass(); applyPointerHoverClass();
@@ -936,6 +940,17 @@ export const useAppearanceSettingsStore = defineStore(
applyPointerHoverClass(); applyPointerHoverClass();
} }
/**
*
*/
function setShowNewDashboardButton() {
showNewDashboardButton.value = !showNewDashboardButton.value;
configRepository.setBool(
'VRCX_showNewDashboardButton',
showNewDashboardButton.value
);
}
/** /**
* @param {object} color * @param {object} color
*/ */
@@ -1170,6 +1185,7 @@ export const useAppearanceSettingsStore = defineStore(
isNavCollapsed, isNavCollapsed,
isDataTableStriped, isDataTableStriped,
showPointerOnHover, showPointerOnHover,
showNewDashboardButton,
tableLimitsDialog, tableLimitsDialog,
TABLE_MAX_SIZE_MIN, TABLE_MAX_SIZE_MIN,
TABLE_MAX_SIZE_MAX, TABLE_MAX_SIZE_MAX,
@@ -1204,6 +1220,7 @@ export const useAppearanceSettingsStore = defineStore(
setRandomUserColours, setRandomUserColours,
toggleStripedDataTable, toggleStripedDataTable,
togglePointerOnHover, togglePointerOnHover,
setShowNewDashboardButton,
setTableDensity, setTableDensity,
setTrustColor, setTrustColor,
tryInitUserColours, tryInitUserColours,

View File

@@ -134,6 +134,12 @@
</SettingsItem> </SettingsItem>
</SettingsGroup> </SettingsGroup>
<SettingsGroup :title="t('view.settings.interface.navigation.header')">
<SettingsItem :label="t('view.settings.interface.navigation.show_new_dashboard_button')">
<Switch :model-value="showNewDashboardButton" @update:modelValue="setShowNewDashboardButton" />
</SettingsItem>
</SettingsGroup>
<SettingsGroup :title="t('view.settings.interface.lists_tables.header')"> <SettingsGroup :title="t('view.settings.interface.lists_tables.header')">
<SettingsItem :label="t('view.settings.appearance.appearance.sort_favorite_by')"> <SettingsItem :label="t('view.settings.appearance.appearance.sort_favorite_by')">
<RadioGroup <RadioGroup
@@ -378,7 +384,8 @@
notificationIconDot, notificationIconDot,
tablePageSizes, tablePageSizes,
isDataTableStriped, isDataTableStriped,
showPointerOnHover showPointerOnHover,
showNewDashboardButton
} = storeToRefs(appearanceSettingsStore); } = storeToRefs(appearanceSettingsStore);
const appLanguageDisplayName = computed(() => getLanguageName(String(appLanguage.value))); const appLanguageDisplayName = computed(() => getLanguageName(String(appLanguage.value)));
@@ -401,6 +408,7 @@
setTablePageSizes, setTablePageSizes,
toggleStripedDataTable, toggleStripedDataTable,
togglePointerOnHover, togglePointerOnHover,
setShowNewDashboardButton,
setAppFontFamily, setAppFontFamily,
setCustomFontFamily, setCustomFontFamily,
setAppCjkFontPack setAppCjkFontPack