From 388ddfd8691a0ae413e6931a02c216d67455679a Mon Sep 17 00:00:00 2001 From: shiyu Date: Mon, 15 Dec 2025 15:38:28 +0800 Subject: [PATCH] feat: enhance PluginsPage layout with flexible tab content and improved overflow handling --- web/src/global.css | 25 +++++++++ web/src/pages/PluginsPage.tsx | 101 ++++++++++++++++++---------------- 2 files changed, 78 insertions(+), 48 deletions(-) diff --git a/web/src/global.css b/web/src/global.css index e77be4a..01aed00 100644 --- a/web/src/global.css +++ b/web/src/global.css @@ -66,3 +66,28 @@ body { font-family: system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto .processors-tabs .ant-tabs-tabpane-active { display: flex; } + +.plugins-tabs { + flex: 1; + display: flex; + flex-direction: column; + min-height: 0; +} +.plugins-tabs .ant-tabs-content-holder, +.plugins-tabs .ant-tabs-content { + flex: 1; + height: 100%; + min-height: 0; + display: flex; + flex-direction: column; +} +.plugins-tabs .ant-tabs-tabpane { + flex: 1; + height: 100%; + min-height: 0; + display: none; + flex-direction: column; +} +.plugins-tabs .ant-tabs-tabpane-active { + display: flex; +} diff --git a/web/src/pages/PluginsPage.tsx b/web/src/pages/PluginsPage.tsx index 98907d0..33fdec1 100644 --- a/web/src/pages/PluginsPage.tsx +++ b/web/src/pages/PluginsPage.tsx @@ -340,7 +340,7 @@ const PluginsPage = memo(function PluginsPage() { }; return ( - <> +
{tab === 'installed' && } @@ -350,12 +350,13 @@ const PluginsPage = memo(function PluginsPage() { setTab(k as any)} + className="plugins-tabs" items={[ { key: 'installed', label: t('Installed'), children: ( - <> +
reload()} />
- {loading ? ( -
- {Array.from({ length: 6 }).map((_, i) => ( - - - - ))} -
- ) : (filteredSystemApps.length + filtered.length) === 0 ? ( - - ) : ( -
- {filteredSystemApps.map(renderSystemCard)} - {filtered.map(renderCard)} -
- )} - +
+ {loading ? ( +
+ {Array.from({ length: 6 }).map((_, i) => ( + + + + ))} +
+ ) : (filteredSystemApps.length + filtered.length) === 0 ? ( + + ) : ( +
+ {filteredSystemApps.map(renderSystemCard)} + {filtered.map(renderCard)} +
+ )} +
+
) }, { key: 'discover', label: t('Discover'), children: ( - <> +
- {repoLoading ? ( -
- {Array.from({ length: 6 }).map((_, i) => ( - - - - ))} -
- ) : repoItems.length === 0 ? ( - - ) : ( - <> -
- {repoItems.map(renderRepoCard)} +
+ {repoLoading ? ( +
+ {Array.from({ length: 6 }).map((_, i) => ( + + + + ))}
-
- { setRepoPage(p); setRepoPageSize(ps); }} - /> -
- - )} - + ) : repoItems.length === 0 ? ( + + ) : ( + <> +
+ {repoItems.map(renderRepoCard)} +
+
+ { setRepoPage(p); setRepoPageSize(ps); }} + /> +
+ + )} +
+
) } ]} @@ -463,7 +468,7 @@ const PluginsPage = memo(function PluginsPage() { - +
); });