From 00c3736c3818053859710a2fbaec837dd9cbb586 Mon Sep 17 00:00:00 2001 From: crupest Date: Mon, 31 Jul 2023 20:57:11 +0800 Subject: ... --- .../src/views/common/dialog/OperationDialog.tsx | 38 ++++++++++++++++++---- 1 file changed, 31 insertions(+), 7 deletions(-) (limited to 'FrontEnd/src/views/common/dialog') diff --git a/FrontEnd/src/views/common/dialog/OperationDialog.tsx b/FrontEnd/src/views/common/dialog/OperationDialog.tsx index de92e541..4335b2b0 100644 --- a/FrontEnd/src/views/common/dialog/OperationDialog.tsx +++ b/FrontEnd/src/views/common/dialog/OperationDialog.tsx @@ -19,19 +19,20 @@ export type { InputInitializer, InputValueDict, InputErrorDict }; interface OperationDialogPromptProps { message?: Text; - customMessage?: ReactNode; + customMessage?: Text; + customMessageNode?: ReactNode; className?: string; } function OperationDialogPrompt(props: OperationDialogPromptProps) { - const { message, customMessage, className } = props; + const { message, customMessage, customMessageNode, className } = props; const c = useC(); return (
{message &&

{c(message)}

} - {customMessage} + {customMessageNode ?? (customMessage != null ? c(customMessage) : null)}
); } @@ -43,9 +44,12 @@ export interface OperationDialogProps { color?: ThemeColor; inputColor?: ThemeColor; title: Text; - inputPrompt?: () => ReactNode; - successPrompt?: (data: TData) => ReactNode; - failurePrompt?: (error: unknown) => ReactNode; + inputPrompt?: Text; + inputPromptNode?: ReactNode; + successPrompt?: (data: TData) => Text; + successPromptNode?: (data: TData) => ReactNode; + failurePrompt?: (error: unknown) => Text; + failurePromptNode?: (error: unknown) => ReactNode; inputs: InputInitializer; @@ -61,13 +65,28 @@ function OperationDialog(props: OperationDialogProps) { inputColor, title, inputPrompt, + inputPromptNode, successPrompt, + successPromptNode, failurePrompt, + failurePromptNode, inputs, onProcess, onSuccessAndClose, } = props; + if (process.env.NODE_ENV === "development") { + if (inputPrompt && inputPromptNode) { + console.log("InputPrompt and inputPromptNode are both set."); + } + if (successPrompt && successPromptNode) { + console.log("SuccessPrompt and successPromptNode are both set."); + } + if (failurePrompt && failurePromptNode) { + console.log("FailurePrompt and failurePromptNode are both set."); + } + } + type Step = | { type: "input" } | { type: "process" } @@ -128,7 +147,10 @@ function OperationDialog(props: OperationDialogProps) { body = (
- + (props: OperationDialogProps) { ? { message: "operationDialog.success", customMessage: successPrompt?.(result.data), + customMessageNode: successPromptNode?.(result.data), } : { message: "operationDialog.error", customMessage: failurePrompt?.(result.data), + customMessageNode: failurePromptNode?.(result.data), }; body = (
-- cgit v1.2.3