From 511eb0c7fa60022c9ba12d6dac895c8a00cd18b4 Mon Sep 17 00:00:00 2001 From: miwu04 Date: Wed, 30 Apr 2025 01:47:43 +0800 Subject: [PATCH] fix: disallow empty selection in Select component (cherry picked from commit 48eef556770030d8a032fb6dd0e6888d1f0750a0) --- src/renderer/src/components/settings/general-config.tsx | 2 ++ src/renderer/src/components/settings/mihomo-config.tsx | 2 ++ src/renderer/src/pages/connections.tsx | 1 + src/renderer/src/pages/mihomo.tsx | 5 ++++- 4 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/renderer/src/components/settings/general-config.tsx b/src/renderer/src/components/settings/general-config.tsx index 0f286ea..dce6734 100644 --- a/src/renderer/src/components/settings/general-config.tsx +++ b/src/renderer/src/components/settings/general-config.tsx @@ -193,6 +193,7 @@ const GeneralConfig: React.FC = () => { selectionMode="multiple" selectedKeys={new Set(envType)} aria-label={t('settings.envType')} + disallowEmptySelection={true} onSelectionChange={async (v) => { try { await patchAppConfig({ @@ -389,6 +390,7 @@ const GeneralConfig: React.FC = () => { size="sm" selectedKeys={new Set([customTheme])} aria-label={t('settings.selectTheme')} + disallowEmptySelection={true} onSelectionChange={async (v) => { try { await patchAppConfig({ customTheme: v.currentKey as string }) diff --git a/src/renderer/src/components/settings/mihomo-config.tsx b/src/renderer/src/components/settings/mihomo-config.tsx index caeda12..724ee00 100644 --- a/src/renderer/src/components/settings/mihomo-config.tsx +++ b/src/renderer/src/components/settings/mihomo-config.tsx @@ -129,6 +129,7 @@ const MihomoConfig: React.FC = () => { size="sm" selectedKeys={new Set([proxyCols])} aria-label={t('mihomo.proxyColumns.title')} + disallowEmptySelection={true} onSelectionChange={async (v) => { await patchAppConfig({ proxyCols: v.currentKey as 'auto' | '1' | '2' | '3' | '4' }) }} @@ -147,6 +148,7 @@ const MihomoConfig: React.FC = () => { className="w-[150px]" size="sm" selectedKeys={new Set([mihomoCpuPriority])} + disallowEmptySelection={true} onSelectionChange={async (v) => { try { await patchAppConfig({ diff --git a/src/renderer/src/pages/connections.tsx b/src/renderer/src/pages/connections.tsx index a6d9338..2b9b596 100644 --- a/src/renderer/src/pages/connections.tsx +++ b/src/renderer/src/pages/connections.tsx @@ -236,6 +236,7 @@ const Connections: React.FC = () => { className="w-[180px] min-w-[131px]" aria-label={t('connections.orderBy')} selectedKeys={new Set([connectionOrderBy])} + disallowEmptySelection={true} onSelectionChange={async (v) => { await patchAppConfig({ connectionOrderBy: v.currentKey as diff --git a/src/renderer/src/pages/mihomo.tsx b/src/renderer/src/pages/mihomo.tsx index 3435e03..c8d2440 100644 --- a/src/renderer/src/pages/mihomo.tsx +++ b/src/renderer/src/pages/mihomo.tsx @@ -27,7 +27,7 @@ const CoreMap = { const Mihomo: React.FC = () => { const { t } = useTranslation() const { appConfig, patchAppConfig } = useAppConfig() - const { + const { core = 'mihomo', maxLogDays = 7, sysProxy, @@ -136,6 +136,7 @@ const Mihomo: React.FC = () => { size="sm" aria-label={t('mihomo.selectCoreVersion')} selectedKeys={new Set([core])} + disallowEmptySelection={true} onSelectionChange={async (v) => { handleConfigChangeWithRestart('core', v.currentKey as 'mihomo' | 'mihomo-alpha') }} @@ -702,6 +703,7 @@ const Mihomo: React.FC = () => { size="sm" aria-label={t('mihomo.selectLogLevel')} selectedKeys={new Set([logLevel])} + disallowEmptySelection={true} onSelectionChange={(v) => { onChangeNeedRestart({ 'log-level': v.currentKey as LogLevel }) }} @@ -720,6 +722,7 @@ const Mihomo: React.FC = () => { size="sm" aria-label={t('mihomo.selectFindProcessMode')} selectedKeys={new Set([findProcessMode])} + disallowEmptySelection={true} onSelectionChange={(v) => { onChangeNeedRestart({ 'find-process-mode': v.currentKey as FindProcessMode }) }}