fix: improve inventory and quests widget resizing at narrow widths
Resolved issues where inventory and quests widgets didn't properly adapt to narrow desktop widths (~296px, 2 columns): - Assets tab was cut off (1/3 off-screen) - Widgets shrank vertically instead of expanding - Sub-tabs overflowed horizontally Changes: 1. Widget onResize Handlers (inventoryWidget.js, questsWidget.js): - Strengthened inventory onResize to call render() for full re-layout - Added quests onResize handler with re-render + width-aware styling - Both apply responsive CSS classes at narrow widths 2. Increased maxAutoSize for 2-Column Layouts: - inventoryWidget.js: h: 6 → h: 8 (creates expansion headroom) - questsWidget.js: h: 5 → h: 7 (user requested height) - Previously: defaultSize = maxAutoSize → zero expansion possible - Now: defaultSize < maxAutoSize → widgets can expand vertically 3. Added Missing Quests Widget Container Styles (style.css): - Added .rpg-quests-widget and .rpg-quests-views flex container styles - Proper overflow handling (hidden on container, auto on content) - Prevents Assets tab horizontal cut-off 4. Implemented Compact Mode CSS (style.css): - .rpg-inventory-compact: reduced padding, icon-only sub-tabs - Applied when widget width < 6 grid units - Prevents 3 sub-tabs from overflowing 296px container - Icons remain visible, labels hidden for space savings 5. Grid Engine Boolean Return (gridEngine.js): - setContainerWidth now returns true/false for column changes - Allows DashboardManager to optimize resize handling Why This Works: - Auto-layout expansion requires defaultSize < maxAutoSize for headroom - Flex container styles prevent overflow with proper scroll handling - Compact mode makes sub-tabs fit within narrow containers - onResize handlers ensure internal layouts adapt to dimension changes Fixes: Assets tab cut-off, vertical shrinking, sub-tab overflow at ~296px
This commit is contained in:
@@ -395,8 +395,19 @@ export function registerQuestsWidget(registry, dependencies) {
|
||||
description: 'Quest tracking with main and optional quests',
|
||||
category: 'quests',
|
||||
minSize: { w: 2, h: 4 },
|
||||
defaultSize: { w: 2, h: 5 },
|
||||
maxAutoSize: { w: 3, h: 7 },
|
||||
// Column-aware sizing: compact on mobile, spacious on desktop
|
||||
defaultSize: (columns) => {
|
||||
if (columns <= 2) {
|
||||
return { w: 2, h: 4 }; // Mobile: 2×4 (full width, compact)
|
||||
}
|
||||
return { w: 2, h: 5 }; // Desktop: 2×5 (default)
|
||||
},
|
||||
maxAutoSize: (columns) => {
|
||||
if (columns <= 2) {
|
||||
return { w: 2, h: 7 }; // Mobile: 2×7 max (increased for expansion headroom)
|
||||
}
|
||||
return { w: 3, h: 7 }; // Desktop: 3×7 max (can expand)
|
||||
},
|
||||
requiresSchema: false,
|
||||
|
||||
render(container, config = {}) {
|
||||
@@ -436,6 +447,24 @@ export function registerQuestsWidget(registry, dependencies) {
|
||||
// Called when widget data changes externally
|
||||
onDataUpdate(container, config = {}) {
|
||||
this.render(container, config);
|
||||
},
|
||||
|
||||
// Called when widget is resized
|
||||
onResize(container, newW, newH) {
|
||||
// Re-render widget to update layout for new dimensions
|
||||
this.render(container, this.config || {});
|
||||
|
||||
// Apply width-aware styling
|
||||
const widget = container.querySelector('.rpg-quests-widget');
|
||||
if (widget) {
|
||||
if (newW >= 3) {
|
||||
// Wide layout: constrain title width
|
||||
widget.classList.add('rpg-quests-wide');
|
||||
} else {
|
||||
// Narrow layout: allow title to flex
|
||||
widget.classList.remove('rpg-quests-wide');
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user