aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/client/pages/DeckDetailPage.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/pages/DeckDetailPage.tsx')
-rw-r--r--src/client/pages/DeckDetailPage.tsx45
1 files changed, 39 insertions, 6 deletions
diff --git a/src/client/pages/DeckDetailPage.tsx b/src/client/pages/DeckDetailPage.tsx
index 57e4af9..cdc216a 100644
--- a/src/client/pages/DeckDetailPage.tsx
+++ b/src/client/pages/DeckDetailPage.tsx
@@ -2,6 +2,7 @@ import { useCallback, useEffect, useState } from "react";
import { Link, useParams } from "wouter";
import { ApiClientError, apiClient } from "../api";
import { CreateCardModal } from "../components/CreateCardModal";
+import { DeleteCardModal } from "../components/DeleteCardModal";
import { EditCardModal } from "../components/EditCardModal";
interface Card {
@@ -38,6 +39,7 @@ export function DeckDetailPage() {
const [error, setError] = useState<string | null>(null);
const [isCreateModalOpen, setIsCreateModalOpen] = useState(false);
const [editingCard, setEditingCard] = useState<Card | null>(null);
+ const [deletingCard, setDeletingCard] = useState<Card | null>(null);
const fetchDeck = useCallback(async () => {
if (!deckId) return;
@@ -241,13 +243,34 @@ export function DeckDetailPage() {
<span>Lapses: {card.lapses}</span>
</div>
</div>
- <button
- type="button"
- onClick={() => setEditingCard(card)}
- style={{ marginLeft: "1rem" }}
+ <div
+ style={{
+ display: "flex",
+ gap: "0.5rem",
+ marginLeft: "1rem",
+ }}
>
- Edit
- </button>
+ <button
+ type="button"
+ onClick={() => setEditingCard(card)}
+ >
+ Edit
+ </button>
+ <button
+ type="button"
+ onClick={() => setDeletingCard(card)}
+ style={{
+ backgroundColor: "#dc3545",
+ color: "white",
+ border: "none",
+ padding: "0.5rem 1rem",
+ borderRadius: "4px",
+ cursor: "pointer",
+ }}
+ >
+ Delete
+ </button>
+ </div>
</div>
</li>
))}
@@ -274,6 +297,16 @@ export function DeckDetailPage() {
onCardUpdated={fetchCards}
/>
)}
+
+ {deckId && (
+ <DeleteCardModal
+ isOpen={deletingCard !== null}
+ deckId={deckId}
+ card={deletingCard}
+ onClose={() => setDeletingCard(null)}
+ onCardDeleted={fetchCards}
+ />
+ )}
</div>
);
}