From 7c7293b68794569eac7292a65f1e279d4ef9ec1a Mon Sep 17 00:00:00 2001 From: catloversg <152669316+catloversg@users.noreply.github.com> Date: Sun, 4 Aug 2024 14:01:01 +0700 Subject: [PATCH] BUGFIX: Prompt does not reset text value (#1539) --- src/ui/React/PromptManager.tsx | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/src/ui/React/PromptManager.tsx b/src/ui/React/PromptManager.tsx index cf4264415..114c22ad7 100644 --- a/src/ui/React/PromptManager.tsx +++ b/src/ui/React/PromptManager.tsx @@ -52,8 +52,9 @@ export function PromptManager({ hidden }: { hidden: boolean }): React.ReactEleme }; let PromptContent = PromptMenuBoolean; - if (prompt?.options?.type && ["text", "select"].includes(prompt.options.type)) + if (prompt?.options?.type && ["text", "select"].includes(prompt.options.type)) { PromptContent = types[prompt.options.type]; + } const resolve = (value: boolean | string): void => { prompt?.resolve(value); setPrompt(null); @@ -94,10 +95,17 @@ function PromptMenuBoolean({ resolve }: IContentProps): React.ReactElement { ); } -function PromptMenuText({ resolve }: IContentProps): React.ReactElement { +function PromptMenuText({ prompt, resolve }: IContentProps): React.ReactElement { const [value, setValue] = useState(""); - const submit = (): void => resolve(value); + const submit = (): void => { + resolve(value); + setValue(""); + }; + + useEffect(() => { + setValue(""); + }, [prompt]); const onInput = (event: React.ChangeEvent): void => { setValue(event.target.value); @@ -133,7 +141,14 @@ function PromptMenuText({ resolve }: IContentProps): React.ReactElement { function PromptMenuSelect({ prompt, resolve }: IContentProps): React.ReactElement { const [value, setValue] = useState(""); - const submit = (): void => resolve(value); + const submit = (): void => { + resolve(value); + setValue(""); + }; + + useEffect(() => { + setValue(""); + }, [prompt]); const onChange = (event: SelectChangeEvent): void => { setValue(event.target.value); @@ -158,7 +173,11 @@ function PromptMenuSelect({ prompt, resolve }: IContentProps): React.ReactElemen return ( <>
- {getItems(prompt.options?.choices || [])}