From 2c40a7ad7378745a9f7da5abc791836ce817cbb9 Mon Sep 17 00:00:00 2001 From: Harvmaster Date: Fri, 30 Jan 2026 03:05:57 +0000 Subject: [PATCH] Fix sats output --- Electrum.sqlite-journal | Bin 12824 -> 12824 bytes src/tui/screens/ActionWizard.tsx | 100 +++++++++++++++++++------------ 2 files changed, 61 insertions(+), 39 deletions(-) diff --git a/Electrum.sqlite-journal b/Electrum.sqlite-journal index 8e935641b8ce20270238f1a66e6bb5fd7836faa2..dfade16d11ecaa7b8002faee80b1f054a2282fb0 100644 GIT binary patch literal 12824 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 void; + onSubmit: () => void; + borderColor: string; + focusColor: string; +} + +function VariableInputField({ + variable, + index, + isFocused, + onChange, + onSubmit, + borderColor, + focusColor, +}: VariableInputFieldProps): React.ReactElement { + return ( + + {variable.name} + {variable.hint && ( + ({variable.hint}) + )} + + onChange(index, value)} + onSubmit={onSubmit} + focus={isFocused} + placeholder={`Enter ${variable.name}...`} + /> + + + ); +} import { StepIndicator, type Step } from '../components/ProgressBar.js'; import { Button } from '../components/Button.js'; import { useNavigation } from '../hooks/useNavigation.js'; @@ -498,24 +545,9 @@ export function ActionWizardScreen(): React.ReactElement { } }, [focusedInput, variables.length]); - // Handle Tab key when in TextInput mode (separate from main useInput to allow Tab navigation) - useInput((input, key) => { - if (key.tab) { - if (focusedInput < variables.length - 1) { - setFocusedInput(prev => prev + 1); - } else { - setFocusArea('buttons'); - setFocusedButton('next'); - } - } - // Escape to go back to content from anywhere - if (key.escape && focusArea === 'buttons') { - setFocusArea('content'); - } - }, { isActive: textInputHasFocus }); - - // Handle keyboard navigation for non-TextInput modes - // IMPORTANT: Disable when TextInput should have focus to allow character input + // Keyboard handler - COMPLETELY DISABLED when TextInput has focus + // This allows TextInput to receive character input without interference + // When TextInput is focused, use Enter to navigate (handled by onSubmit callback) useInput((input, key) => { // Tab to switch between content and buttons if (key.tab) { @@ -630,31 +662,21 @@ export function ActionWizardScreen(): React.ReactElement { Enter required values: {variables.map((variable, index) => ( - - {variable.name} - {variable.hint && ( - ({variable.hint}) - )} - - updateVariable(index, value)} - onSubmit={handleTextInputSubmit} - focus={focusArea === 'content' && focusedInput === index} - placeholder={`Enter ${variable.name}...`} - /> - - + ))} - Enter: Next field • Tab: Go to buttons + Type your value, then press Enter to continue