feat(dashboard): improve mobile inventory UX and fix desktop viewport overflow
Mobile Inventory Improvements: - Add icon-based sub-tabs (user/box/building) with responsive labels - Desktop shows icon + label, mobile shows icon-only for compact layout - Add proper scroll containers for inventory content with flex layout - Increase touch drag delay from 150ms to 500ms to prevent accidental widget moves during scrolling Widget Content Fixes: - Add max-height constraint to .rpg-widget to prevent grid cell overflow - Add flex properties (flex: 1, min-height: 0, overflow: auto) to all widget content - Ensures content scrolls internally instead of expanding widget bounds - Fix .rpg-inventory-widget to use flex properties instead of height: 100% Layout Fixes: - Change characters widget default size from 2x3 to 2x2 for better viewport fit - Remove excess spacing from dashboard container (gap: 0.75rem) - Remove vertical padding from dashboard header - Eliminates desktop scrollbar caused by cumulative spacing All widgets now fit properly within viewport on both desktop and mobile.
This commit is contained in:
@@ -30,7 +30,7 @@ export class DragDropHandler {
|
||||
showCollisions: true,
|
||||
enableSnap: true,
|
||||
ghostOpacity: 0.5,
|
||||
touchDelay: 150, // Delay before touch drag starts (ms)
|
||||
touchDelay: 500, // Delay before touch drag starts (ms) - longer delay prevents accidental moves during scrolling
|
||||
mouseMoveThreshold: 5, // Pixels mouse must move before drag starts
|
||||
...options
|
||||
};
|
||||
|
||||
@@ -135,14 +135,17 @@ export function registerInventoryWidget(registry, dependencies) {
|
||||
function renderSubTabs(activeTab) {
|
||||
return `
|
||||
<div class="rpg-inventory-subtabs">
|
||||
<button class="rpg-inventory-subtab ${activeTab === 'onPerson' ? 'active' : ''}" data-tab="onPerson">
|
||||
On Person
|
||||
<button class="rpg-inventory-subtab ${activeTab === 'onPerson' ? 'active' : ''}" data-tab="onPerson" title="On Person">
|
||||
<i class="fa-solid fa-user"></i>
|
||||
<span class="rpg-subtab-label">On Person</span>
|
||||
</button>
|
||||
<button class="rpg-inventory-subtab ${activeTab === 'stored' ? 'active' : ''}" data-tab="stored">
|
||||
Stored
|
||||
<button class="rpg-inventory-subtab ${activeTab === 'stored' ? 'active' : ''}" data-tab="stored" title="Stored">
|
||||
<i class="fa-solid fa-box"></i>
|
||||
<span class="rpg-subtab-label">Stored</span>
|
||||
</button>
|
||||
<button class="rpg-inventory-subtab ${activeTab === 'assets' ? 'active' : ''}" data-tab="assets">
|
||||
Assets
|
||||
<button class="rpg-inventory-subtab ${activeTab === 'assets' ? 'active' : ''}" data-tab="assets" title="Assets">
|
||||
<i class="fa-solid fa-building"></i>
|
||||
<span class="rpg-subtab-label">Assets</span>
|
||||
</button>
|
||||
</div>
|
||||
`;
|
||||
|
||||
@@ -237,7 +237,7 @@ export function registerPresentCharactersWidget(registry, dependencies) {
|
||||
description: 'Character cards with avatars, traits, and relationships',
|
||||
category: 'scene',
|
||||
minSize: { w: 2, h: 2 },
|
||||
defaultSize: { w: 2, h: 3 },
|
||||
defaultSize: { w: 2, h: 2 }, // Compact size fits both mobile and desktop viewports
|
||||
maxAutoSize: { w: 4, h: 5 }, // Max size for auto-arrange expansion (supports up to 4-col on large displays)
|
||||
requiresSchema: false,
|
||||
|
||||
|
||||
Reference in New Issue
Block a user