diff --git a/frontend/src/pages/pc/admin/schedules/form/concert/SetlistSection.jsx b/frontend/src/pages/pc/admin/schedules/form/concert/SetlistSection.jsx index f10fcdd..76084bb 100644 --- a/frontend/src/pages/pc/admin/schedules/form/concert/SetlistSection.jsx +++ b/frontend/src/pages/pc/admin/schedules/form/concert/SetlistSection.jsx @@ -1,5 +1,6 @@ import { useState, useRef, useEffect } from "react"; -import { Plus, Trash2, Users, Search, Copy, ChevronDown } from "lucide-react"; +import { Reorder } from "framer-motion"; +import { Plus, Trash2, Users, Search, Copy, ChevronDown, GripVertical } from "lucide-react"; import ConfirmDialog from "@/components/pc/admin/common/ConfirmDialog"; import SongSearchDialog from "./SongSearchDialog"; @@ -36,6 +37,7 @@ function SetlistSection({ rounds, setlists, setSetlists, members, selectedMember })); }; + // 삭제 확인 다이얼로그 const [deleteConfirm, setDeleteConfirm] = useState({ isOpen: false, @@ -283,10 +285,24 @@ function SetlistSection({ rounds, setlists, setSetlists, members, selectedMember )} -
- {setlist.map((song, index) => ( -
-
+ updateCurrentSetlist(next)} + ref={containerRef} + className="flex flex-col gap-4" + > + {setlist.map((song, index) => ( + + {/* 드래그 핸들 (시각적 표시용, 카드 전체가 드래그 가능) */} +
+ +
+
{/* 헤더 */}
@@ -375,10 +391,10 @@ function SetlistSection({ rounds, setlists, setSetlists, members, selectedMember })}
-
- ))} -
+ + ))} +