From 98a1906860159ccea665f527540b932f3370b19b Mon Sep 17 00:00:00 2001 From: Bronwen Date: Wed, 3 Aug 2022 11:59:25 -0400 Subject: [PATCH] edithomeserver --- packages/renderer/src/pages/NewAccount.tsx | 66 ++++++++++++++++++---- 1 file changed, 54 insertions(+), 12 deletions(-) diff --git a/packages/renderer/src/pages/NewAccount.tsx b/packages/renderer/src/pages/NewAccount.tsx index 1c22610..ff43e16 100644 --- a/packages/renderer/src/pages/NewAccount.tsx +++ b/packages/renderer/src/pages/NewAccount.tsx @@ -78,6 +78,7 @@ export default function NewAccount() { const [connectionError, setConnectionError] = useState(''); const [edittingHomeServer, setEdittingHomeServer] = useState(false); const [homeServerInputRef, homeServerHovered] = useHover(); + const [homeServerEditButtonHoverRef, homeServerEditButtonHovered] = useHover(); useEffect(() => { if(homeServer === null) { @@ -228,23 +229,38 @@ export default function NewAccount() { transform: 'skew(6deg, 0deg)', margin: '8px', }}> - + onClick={() => setEdittingHomeServer(true)} + > + + e.code === 'Enter' && (setHomeServer(homeServerInput))} + onClick={(e) => { + setEdittingHomeServer(true); + }} + onKeyPress={(e: any) => { + if(e.code === 'Enter') { + if(homeServer === homeServerInput) + return setEdittingHomeServer(false); + setHomeServer(homeServerInput) + } + }} > @@ -304,7 +320,9 @@ interface InputProps { default?: string; onKeyPress?: (e: any) => void; disabled?: boolean; - hoverRef?: React.LegacyRef + hoverRef?: React.LegacyRef; + onClick?: (e: any) => void; + focusOnEenable?: boolean } const Input = (props: InputProps) => { @@ -312,13 +330,37 @@ const Input = (props: InputProps) => { const _default = props.default ?? ''; const [focused, setFocused] = useState(false); const disabled = props.disabled ?? false; + const inputRef = useRef(null); + const focusOnEenable = props.focusOnEenable ?? false; + + useEffect(() => { + if(!focusOnEenable) return; + if(!disabled) { + setFocused(true); + inputRef.current?.focus() + inputRef.current?.setSelectionRange(inputRef.current?.value.length, inputRef.current?.value.length) + } + }, [disabled, focusOnEenable, inputRef]); + + useEffect(() => { + if(disabled) setFocused(false); + }, [disabled]) return ( -
+
{ + if(props.onClick !== undefined) { + props.onClick(e); + inputRef.current?.focus(); + } + }} + > {})} onFocus={(e) => !!props.disabled ? e.target.blur() : setFocused(true)} onBlur={() => setFocused(false)}