From c6092d861cc3fb4d333dd47ec135474b030fb9b4 Mon Sep 17 00:00:00 2001 From: xXJSONDeruloXx Date: Mon, 18 Aug 2025 12:33:26 -0400 Subject: make all sections collapsible --- src/components/ConfigurationSection.tsx | 162 +++++++++++++++++++++----------- 1 file changed, 106 insertions(+), 56 deletions(-) (limited to 'src/components/ConfigurationSection.tsx') diff --git a/src/components/ConfigurationSection.tsx b/src/components/ConfigurationSection.tsx index 92d1867..51fe47c 100644 --- a/src/components/ConfigurationSection.tsx +++ b/src/components/ConfigurationSection.tsx @@ -15,6 +15,7 @@ interface ConfigurationSectionProps { } const WORKAROUNDS_COLLAPSED_KEY = 'lsfg-workarounds-collapsed'; +const CONFIG_COLLAPSED_KEY = 'lsfg-config-collapsed'; export function ConfigurationSection({ config, @@ -30,6 +31,16 @@ export function ConfigurationSection({ } }); + // Initialize with localStorage value, fallback to false (expanded) if not found + const [configCollapsed, setConfigCollapsed] = useState(() => { + try { + const saved = localStorage.getItem(CONFIG_COLLAPSED_KEY); + return saved !== null ? JSON.parse(saved) : false; + } catch { + return false; + } + }); + // Persist workarounds collapse state to localStorage useEffect(() => { try { @@ -39,6 +50,15 @@ export function ConfigurationSection({ } }, [workaroundsCollapsed]); + // Persist config collapse state to localStorage + useEffect(() => { + try { + localStorage.setItem(CONFIG_COLLAPSED_KEY, JSON.stringify(configCollapsed)); + } catch (error) { + console.warn('Failed to save config collapse state:', error); + } + }, [configCollapsed]); + return ( <> @@ -68,69 +94,93 @@ export function ConfigurationSection({ - {/* FPS Multiplier */} - - - onConfigChange(FLOW_SCALE, value)} - /> +
+ setConfigCollapsed(!configCollapsed)} + > + {configCollapsed ? ( + + ) : ( + + )} + +
- - 0 ? ` (${config.dxvk_frame_rate} FPS)` : ' (Off)'}`} - description="Base framerate cap for DirectX games, before frame multiplier. (Requires game restart to apply)" - value={config.dxvk_frame_rate} - min={0} - max={60} - step={1} - onChange={(value) => onConfigChange(DXVK_FRAME_RATE, value)} - /> - + {!configCollapsed && ( + <> + {/* FPS Multiplier */} + - - onConfigChange(EXPERIMENTAL_PRESENT_MODE, value ? "fifo" : "mailbox")} - /> - + + onConfigChange(FLOW_SCALE, value)} + /> + - - onConfigChange(PERFORMANCE_MODE, value)} - /> - + + 0 ? ` (${config.dxvk_frame_rate} FPS)` : ' (Off)'}`} + description="Base framerate cap for DirectX games, before frame multiplier. (Requires game restart to apply)" + value={config.dxvk_frame_rate} + min={0} + max={60} + step={1} + onChange={(value) => onConfigChange(DXVK_FRAME_RATE, value)} + /> + - {/* - onConfigChange(NO_FP16, value)} - /> - */} + + onConfigChange(EXPERIMENTAL_PRESENT_MODE, value ? "fifo" : "mailbox")} + /> + - - onConfigChange(HDR_MODE, value)} - /> - + + onConfigChange(PERFORMANCE_MODE, value)} + /> + + + {/* + onConfigChange(NO_FP16, value)} + /> + */} + + + onConfigChange(HDR_MODE, value)} + /> + + + )} {/* Workarounds Section */} -- cgit v1.2.3