Fix layout spacing issues in LED strip configuration

- Remove forced height expansion from display configuration panel
- Change layout from flex-based to space-based for natural content sizing
- Eliminate large empty spaces between configuration sections
- Improve overall UI compactness and visual flow
This commit is contained in:
2025-07-08 03:19:06 +08:00
parent 2834b7fe57
commit 4a3d7681d6
3 changed files with 45 additions and 43 deletions

View File

@ -46,9 +46,9 @@ function App() {
});
return (
<div class="min-h-screen bg-base-100" data-theme="dark">
<div class="h-screen bg-base-100 flex flex-col" data-theme="dark">
{/* Fixed Navigation */}
<div class="navbar bg-base-200 shadow-lg fixed top-0 left-0 right-0 z-50">
<div class="navbar bg-base-200 shadow-lg flex-shrink-0 z-50">
<div class="navbar-start">
<div class="dropdown dropdown-hover">
<div tabindex="0" role="button" class="btn btn-ghost lg:hidden" onClick={(e) => e.currentTarget.focus()}>
@ -80,8 +80,8 @@ function App() {
</div>
</div>
{/* Main Content with top padding to account for fixed navbar */}
<main class="container mx-auto px-2 sm:px-4 py-4 pt-20 max-w-full overflow-x-auto">
{/* Main Content - fills remaining height */}
<main class="flex-1 container mx-auto px-2 sm:px-4 py-4 max-w-full overflow-x-auto min-h-0">
<Routes>
<Route path="/info" component={InfoIndex} />
<Route path="/displays" component={DisplayStateIndex} />

View File

@ -75,7 +75,7 @@ export const DisplayListContainer: ParentComponent = (props) => {
createEffect(() => {});
return (
<section ref={root!} class="relative bg-gray-400/30" style={rootStyle()}>
<section ref={root!} class="relative bg-gray-400/30 h-full w-full" style={rootStyle()}>
<ol class="absolute" style={olStyle()}>
{props.children}
</ol>

View File

@ -116,50 +116,52 @@ export const LedStripConfiguration = () => {
</div>
<LedStripConfigurationContext.Provider value={ledStripConfigurationContextValue}>
{/* LED Strip Sorter Panel */}
<div class="card bg-base-200 shadow-lg">
<div class="card-body p-3">
<div class="card-title text-sm mb-2">
<span></span>
<div class="badge badge-info badge-outline text-xs"></div>
</div>
<LedStripPartsSorter />
<div class="text-xs text-base-content/50 mt-2">
💡
<div class="space-y-4">
{/* LED Strip Sorter Panel */}
<div class="card bg-base-200 shadow-lg">
<div class="card-body p-3">
<div class="card-title text-sm mb-2">
<span></span>
<div class="badge badge-info badge-outline text-xs"></div>
</div>
<LedStripPartsSorter />
<div class="text-xs text-base-content/50 mt-2">
💡
</div>
</div>
</div>
</div>
{/* Display Configuration Panel */}
<div class="card bg-base-200 shadow-lg">
<div class="card-body p-3">
<div class="card-title text-sm mb-2">
<span></span>
<div class="badge badge-secondary badge-outline text-xs"></div>
</div>
<div class="h-80 mb-3">
<DisplayListContainer>
{displayStore.displays.map((display) => (
<DisplayView display={display} />
))}
</DisplayListContainer>
</div>
<div class="text-xs text-base-content/50">
💡 使LED数量
{/* Display Configuration Panel - Auto height based on content */}
<div class="card bg-base-200 shadow-lg">
<div class="card-body p-3">
<div class="card-title text-sm mb-2">
<span></span>
<div class="badge badge-secondary badge-outline text-xs"></div>
</div>
<div class="mb-3">
<DisplayListContainer>
{displayStore.displays.map((display) => (
<DisplayView display={display} />
))}
</DisplayListContainer>
</div>
<div class="text-xs text-base-content/50">
💡 使LED数量
</div>
</div>
</div>
</div>
{/* LED Count Control Panels */}
<div class="space-y-3">
<div class="flex items-center gap-2 mb-2">
<h2 class="text-base font-semibold text-base-content">LED数量控制</h2>
<div class="badge badge-info badge-outline text-xs"></div>
</div>
<div class="led-control-grid">
{displayStore.displays.map((display) => (
<LedCountControlPanel display={display} />
))}
{/* LED Count Control Panels */}
<div class="flex-shrink-0">
<div class="flex items-center gap-2 mb-2">
<h2 class="text-base font-semibold text-base-content">LED数量控制</h2>
<div class="badge badge-info badge-outline text-xs"></div>
</div>
<div class="led-control-grid">
{displayStore.displays.map((display) => (
<LedCountControlPanel display={display} />
))}
</div>
</div>
</div>
</LedStripConfigurationContext.Provider>