From 679a97fb7fdb44c58cc1f869a566faaa5484967f Mon Sep 17 00:00:00 2001
From: BFlat
Date: Mon, 30 Oct 2023 21:32:21 +0700
Subject: [PATCH] modal states
---
.../src/components/common/Modal/Modal.tsx | 19 +++++---
.../voice_designer/VoiceDesignerMainPage.tsx | 48 +++++++++++++++----
2 files changed, 51 insertions(+), 16 deletions(-)
diff --git a/packages/fakeyou.com/src/components/common/Modal/Modal.tsx b/packages/fakeyou.com/src/components/common/Modal/Modal.tsx
index fc0dc7f255..b99c2dc62b 100644
--- a/packages/fakeyou.com/src/components/common/Modal/Modal.tsx
+++ b/packages/fakeyou.com/src/components/common/Modal/Modal.tsx
@@ -1,7 +1,8 @@
-import React, { useRef, useEffect } from "react";
+import React, { useRef, useEffect, useState } from "react";
import Button from "../Button";
-import { faTrash, faTrashAlt } from "@fortawesome/pro-solid-svg-icons";
+import { faTrashAlt } from "@fortawesome/pro-solid-svg-icons";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
+import { useSpring, a } from "@react-spring/web";
interface ModalProps {
show: boolean;
@@ -13,6 +14,14 @@ interface ModalProps {
const Modal: React.FC = ({ show, handleClose, title, content }) => {
const modalRef = useRef(null);
+ const fadeIn = useSpring({
+ opacity: show ? 1 : 0,
+ config: { duration: 80, easing: (t) => t },
+ onRest: () => {
+ if (!show) handleClose();
+ },
+ });
+
useEffect(() => {
const handleClickOutside = (event: MouseEvent) => {
if (
@@ -23,11 +32,9 @@ const Modal: React.FC = ({ show, handleClose, title, content }) => {
}
};
- // Attach the event listener to the document
document.addEventListener("mousedown", handleClickOutside);
return () => {
- // Clean up the event listener
document.removeEventListener("mousedown", handleClickOutside);
};
}, [handleClose]);
@@ -37,7 +44,7 @@ const Modal: React.FC = ({ show, handleClose, title, content }) => {
}
return (
-
+
= ({ show, handleClose, title, content }) => {
-
+
);
};
diff --git a/packages/fakeyou.com/src/v2/view/pages/voice_designer/VoiceDesignerMainPage.tsx b/packages/fakeyou.com/src/v2/view/pages/voice_designer/VoiceDesignerMainPage.tsx
index 33b4ca06c4..f3a00b57d8 100644
--- a/packages/fakeyou.com/src/v2/view/pages/voice_designer/VoiceDesignerMainPage.tsx
+++ b/packages/fakeyou.com/src/v2/view/pages/voice_designer/VoiceDesignerMainPage.tsx
@@ -11,14 +11,24 @@ import Modal from "components/common/Modal";
function VoiceDesignerMainPage() {
usePrefixedDocumentTitle("Voice Designer");
- const [isModalOpen, setIsModalOpen] = useState(false);
+ const [isDeleteVoiceModalOpen, setIsDeleteVoiceModalOpen] = useState(false);
+ const [isDeleteDatasetModalOpen, setIsDeleteDatasetModalOpen] =
+ useState(false);
- const openModal = () => {
- setIsModalOpen(true);
+ const openDeleteVoiceModal = () => {
+ setIsDeleteVoiceModalOpen(true);
};
- const closeModal = () => {
- setIsModalOpen(false);
+ const closeDeleteVoiceModal = () => {
+ setIsDeleteVoiceModalOpen(false);
+ };
+
+ const openDeleteDatasetModal = () => {
+ setIsDeleteDatasetModalOpen(true);
+ };
+
+ const closeDeleteDatasetModal = () => {
+ setIsDeleteDatasetModalOpen(false);
};
const voicesList = [
@@ -38,11 +48,15 @@ function VoiceDesignerMainPage() {
modelToken: "dummyToken",
},
];
- const emptyList = [] as any[];
+ // const emptyList = [] as any[];
function MyVoices() {
return (
-
+
);
}
@@ -51,7 +65,7 @@ function VoiceDesignerMainPage() {
);
}
@@ -112,9 +126,10 @@ function VoiceDesignerMainPage() {
+ {/* Delete Voice Modal */}
@@ -124,6 +139,19 @@ function VoiceDesignerMainPage() {
}
/>
+ {/* Delete Dataset Modal */}
+
+ Are you sure you want to delete "[Dataset Name]"?
+
+ This cannot be undone.
+
+ }
+ />
>
);
}