|
@@ -4,6 +4,9 @@ import CloseIcon from "../icons/close.svg";
|
|
|
import EyeIcon from "../icons/eye.svg";
|
|
|
import EyeOffIcon from "../icons/eye-off.svg";
|
|
|
import DownIcon from "../icons/down.svg";
|
|
|
+import ConfirmIcon from "../icons/confirm.svg";
|
|
|
+import CancelIcon from "../icons/cancel.svg";
|
|
|
+
|
|
|
import Locale from "../locales";
|
|
|
|
|
|
import { createRoot } from "react-dom/client";
|
|
@@ -287,6 +290,10 @@ export function showConfirm(content: any) {
|
|
|
resolve(false);
|
|
|
closeModal();
|
|
|
}}
|
|
|
+ icon={<CancelIcon />}
|
|
|
+ tabIndex={0}
|
|
|
+ bordered
|
|
|
+ shadow
|
|
|
></IconButton>,
|
|
|
<IconButton
|
|
|
key="confirm"
|
|
@@ -296,6 +303,11 @@ export function showConfirm(content: any) {
|
|
|
resolve(true);
|
|
|
closeModal();
|
|
|
}}
|
|
|
+ icon={<ConfirmIcon />}
|
|
|
+ tabIndex={0}
|
|
|
+ autoFocus
|
|
|
+ bordered
|
|
|
+ shadow
|
|
|
></IconButton>,
|
|
|
]}
|
|
|
onClose={closeModal}
|
|
@@ -305,3 +317,77 @@ export function showConfirm(content: any) {
|
|
|
);
|
|
|
});
|
|
|
}
|
|
|
+
|
|
|
+function PromptInput(props: {
|
|
|
+ value: string;
|
|
|
+ onChange: (value: string) => void;
|
|
|
+}) {
|
|
|
+ const [input, setInput] = useState(props.value);
|
|
|
+ const onInput = (value: string) => {
|
|
|
+ props.onChange(value);
|
|
|
+ setInput(value);
|
|
|
+ };
|
|
|
+
|
|
|
+ return (
|
|
|
+ <textarea
|
|
|
+ className={styles["modal-input"]}
|
|
|
+ autoFocus
|
|
|
+ value={input}
|
|
|
+ onInput={(e) => onInput(e.currentTarget.value)}
|
|
|
+ ></textarea>
|
|
|
+ );
|
|
|
+}
|
|
|
+
|
|
|
+export function showPrompt(content: any, value = "") {
|
|
|
+ const div = document.createElement("div");
|
|
|
+ div.className = "modal-mask";
|
|
|
+ document.body.appendChild(div);
|
|
|
+
|
|
|
+ const root = createRoot(div);
|
|
|
+ const closeModal = () => {
|
|
|
+ root.unmount();
|
|
|
+ div.remove();
|
|
|
+ };
|
|
|
+
|
|
|
+ return new Promise<string>((resolve) => {
|
|
|
+ let userInput = "";
|
|
|
+
|
|
|
+ root.render(
|
|
|
+ <Modal
|
|
|
+ title={content}
|
|
|
+ actions={[
|
|
|
+ <IconButton
|
|
|
+ key="cancel"
|
|
|
+ text={Locale.UI.Cancel}
|
|
|
+ onClick={() => {
|
|
|
+ closeModal();
|
|
|
+ }}
|
|
|
+ icon={<CancelIcon />}
|
|
|
+ bordered
|
|
|
+ shadow
|
|
|
+ tabIndex={0}
|
|
|
+ ></IconButton>,
|
|
|
+ <IconButton
|
|
|
+ key="confirm"
|
|
|
+ text={Locale.UI.Confirm}
|
|
|
+ type="primary"
|
|
|
+ onClick={() => {
|
|
|
+ resolve(userInput);
|
|
|
+ closeModal();
|
|
|
+ }}
|
|
|
+ icon={<ConfirmIcon />}
|
|
|
+ bordered
|
|
|
+ shadow
|
|
|
+ tabIndex={0}
|
|
|
+ ></IconButton>,
|
|
|
+ ]}
|
|
|
+ onClose={closeModal}
|
|
|
+ >
|
|
|
+ <PromptInput
|
|
|
+ onChange={(val) => (userInput = val)}
|
|
|
+ value={value}
|
|
|
+ ></PromptInput>
|
|
|
+ </Modal>,
|
|
|
+ );
|
|
|
+ });
|
|
|
+}
|