diff --git a/app/assets/javascripts/App.tsx b/app/assets/javascripts/App.tsx index 9ca95133b..710f35274 100644 --- a/app/assets/javascripts/App.tsx +++ b/app/assets/javascripts/App.tsx @@ -28,7 +28,7 @@ import { StartApplication } from './Device/StartApplication' import { ApplicationGroup } from './UIModels/ApplicationGroup' import { WebOrDesktopDevice } from './Device/WebOrDesktopDevice' import { WebApplication } from './UIModels/Application' -import { createRoot } from 'react-dom/client' +import { createRoot, Root } from 'react-dom/client' let keyCount = 0 const getKey = () => { @@ -37,11 +37,6 @@ const getKey = () => { const RootId = 'app-group-root' -const rootElement = document.createElement('div') -rootElement.id = RootId -const appendedRootNode = document.body.appendChild(rootElement) -const root = createRoot(appendedRootNode) - const startApplication: StartApplication = async function startApplication( defaultSyncServerHost: string, device: WebOrDesktopDevice, @@ -50,6 +45,7 @@ const startApplication: StartApplication = async function startApplication( ) { SNLog.onLog = console.log SNLog.onError = console.error + let root: Root const onDestroy = () => { const rootElement = document.getElementById(RootId) as HTMLElement @@ -59,6 +55,11 @@ const startApplication: StartApplication = async function startApplication( } const renderApp = () => { + const rootElement = document.createElement('div') + rootElement.id = RootId + const appendedRootNode = document.body.appendChild(rootElement) + root = createRoot(appendedRootNode) + root.render( = ({ hideOptions, }) => { const [isRenaming, setIsRenaming] = useState(false) + const [inputValue, setInputValue] = useState(descriptor.label) const inputRef = useRef(null) useEffect(() => { @@ -37,20 +39,21 @@ const WorkspaceMenuItem: FunctionComponent = ({ } }, [isRenaming]) + const handleChange: ChangeEventHandler = useCallback((event) => { + setInputValue(event.target.value) + }, []) + const handleInputKeyDown: KeyboardEventHandler = useCallback((event) => { if (event.key === KeyboardKey.Enter) { inputRef.current?.blur() } }, []) - const handleInputBlur: FocusEventHandler = useCallback( - (event) => { - const name = event.target.value - renameDescriptor(name) - setIsRenaming(false) - }, - [renameDescriptor], - ) + const handleInputBlur: FocusEventHandler = useCallback(() => { + renameDescriptor(inputValue) + setIsRenaming(false) + setInputValue('') + }, [inputValue, renameDescriptor]) return ( = ({