Skip to content

Commit e7087de

Browse files
committed
chore: 右側のWanTODOの表示をファイルに分離
1 parent 3189e15 commit e7087de

File tree

2 files changed

+85
-37
lines changed

2 files changed

+85
-37
lines changed

task_yell/src/app/home/page.tsx

+11-37
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import { EditWantodoDialog } from "@/components/edit-wantodo-dialog";
3333
import { CreateEventDialog } from "@/components/create-event-dialog";
3434
import { StickyNoteItem } from "@/components/sticky-note-item";
3535
import { CalendarRenderer } from "@/components/calendar-renderer";
36+
import { WantodoView } from "@/components/wantodo-view";
3637

3738
export default function Home() {
3839
const [todos] = useState<Todo[]>([]);
@@ -253,43 +254,16 @@ export default function Home() {
253254
</div>
254255

255256
<div className="w-full lg:w-1/2 pl-2 bg-white dark:bg-gray-800 overflow-auto lg:block hidden">
256-
<h2 className="text-xl lg:text-2xl font-bold mb-4 dark:text-white">
257-
wanTODO
258-
</h2>
259-
<div className="flex flex-col lg:flex-row mb-4 space-y-2 lg:space-y-0 lg:space-x-2">
260-
<Input
261-
type="text"
262-
value={newStickyNote}
263-
onChange={(e) => setNewStickyNote(e.target.value)}
264-
placeholder="タイトルを入力"
265-
className="flex-grow"
266-
/>
267-
<Button onClick={addStickyNote} className="w-full lg:w-auto">
268-
追加
269-
</Button>
270-
</div>
271-
<div className="mb-4">
272-
<Input
273-
type="text"
274-
placeholder="wanTODOを検索..."
275-
value={searchTerm}
276-
onChange={(e) => setSearchTerm(e.target.value)}
277-
className="w-full"
278-
/>
279-
</div>
280-
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
281-
<AnimatePresence>
282-
{filteredStickyNotes.map((note) => (
283-
<StickyNoteItem
284-
key={note.id} note={note}
285-
setDraggedStickyNote={setDraggedStickyNote}
286-
generateStickyNote={generateStickyNote}
287-
editStickyNote={editStickyNote}
288-
deleteStickyNote={deleteStickyNote}
289-
/>
290-
))}
291-
</AnimatePresence>
292-
</div>
257+
<WantodoView
258+
newStickyNote={newStickyNote} setNewStickyNote={setNewStickyNote}
259+
addStickyNote={addStickyNote}
260+
searchTerm={searchTerm} setSearchTerm={setSearchTerm}
261+
filteredStickyNotes={filteredStickyNotes}
262+
setDraggedStickyNote={setDraggedStickyNote}
263+
generateStickyNote={generateStickyNote}
264+
editStickyNote={editStickyNote}
265+
deleteStickyNote={deleteStickyNote}
266+
/>
293267
</div>
294268
</div>
295269

+74
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
"use client";
2+
3+
import { Button } from "@/components/ui/button";
4+
import { Input } from "@/components/ui/input";
5+
import { AnimatePresence } from "framer-motion";
6+
import { StickyNote } from "@/components/types";
7+
import { StickyNoteItem } from "@/components/sticky-note-item";
8+
9+
type Props = {
10+
newStickyNote: string;
11+
setNewStickyNote: (note: string) => void;
12+
addStickyNote: () => void;
13+
searchTerm: string;
14+
setSearchTerm: (term: string) => void;
15+
filteredStickyNotes: StickyNote[];
16+
setDraggedStickyNote: (note: StickyNote | null) => void;
17+
generateStickyNote: (note: StickyNote) => void;
18+
editStickyNote: (note: StickyNote) => void;
19+
deleteStickyNote: (id: string) => void;
20+
}
21+
22+
export function WantodoView({
23+
newStickyNote, setNewStickyNote,
24+
addStickyNote,
25+
searchTerm, setSearchTerm,
26+
filteredStickyNotes,
27+
setDraggedStickyNote,
28+
generateStickyNote,
29+
editStickyNote,
30+
deleteStickyNote
31+
}: Props
32+
) {
33+
return (
34+
<>
35+
<h2 className="text-xl lg:text-2xl font-bold mb-4 dark:text-white">
36+
wanTODO
37+
</h2>
38+
<div className="flex flex-col lg:flex-row mb-4 space-y-2 lg:space-y-0 lg:space-x-2">
39+
<Input
40+
type="text"
41+
value={newStickyNote}
42+
onChange={(e) => setNewStickyNote(e.target.value)}
43+
placeholder="タイトルを入力"
44+
className="flex-grow"
45+
/>
46+
<Button onClick={addStickyNote} className="w-full lg:w-auto">
47+
追加
48+
</Button>
49+
</div>
50+
<div className="mb-4">
51+
<Input
52+
type="text"
53+
placeholder="wanTODOを検索..."
54+
value={searchTerm}
55+
onChange={(e) => setSearchTerm(e.target.value)}
56+
className="w-full"
57+
/>
58+
</div>
59+
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
60+
<AnimatePresence>
61+
{filteredStickyNotes.map((note) => (
62+
<StickyNoteItem
63+
key={note.id} note={note}
64+
setDraggedStickyNote={setDraggedStickyNote}
65+
generateStickyNote={generateStickyNote}
66+
editStickyNote={editStickyNote}
67+
deleteStickyNote={deleteStickyNote}
68+
/>
69+
))}
70+
</AnimatePresence>
71+
</div>
72+
</>
73+
)
74+
}

0 commit comments

Comments
 (0)