1- // Column.tsx
21import { useEffect , useState , useRef } from "react" ;
32import Image from "next/image" ;
4- import { CardType } from "@/types/task" ;
3+ import { CardType , ColumnType } from "@/types/task" ;
54import TaskModal from "@/components/modalInput/TaskModal" ;
65import { TodoButton , ShortTodoButton } from "@/components/button/TodoButton" ;
76import ColumnDeleteModal from "@/components/columnCard/ColumnDeleteModal" ;
@@ -24,6 +23,7 @@ type ColumnProps = {
2423 createdByMe : boolean ;
2524 columnDelete : ( columnId : number ) => void ;
2625 fetchColumnsAndCards : ( ) => void ;
26+ columns : ColumnType [ ] ;
2727} ;
2828
2929export default function Column ( {
@@ -34,6 +34,7 @@ export default function Column({
3434 createdByMe,
3535 columnDelete,
3636 fetchColumnsAndCards,
37+ columns,
3738} : ColumnProps ) {
3839 const { canEditColumns } = useDashboardPermission ( dashboardId , createdByMe ) ;
3940
@@ -56,10 +57,8 @@ export default function Column({
5657
5758 const maxColumnTitleLength = 15 ;
5859
59- // 카드리스트의 스크롤을 칼럼 영역으로 이동
6060 const scrollRef = useRef < HTMLDivElement | null > ( null ) ;
6161
62- // ✅ 멤버 불러오기
6362 useEffect ( ( ) => {
6463 const fetchMembers = async ( ) => {
6564 try {
@@ -86,7 +85,6 @@ export default function Column({
8685 toast . error ( "칼럼 제목을 입력해 주세요." ) ;
8786 return ;
8887 }
89- setIsColumnModalOpen ( false ) ;
9088
9189 try {
9290 const updated = await updateColumn ( { columnId, title : newTitle } ) ;
@@ -133,23 +131,17 @@ export default function Column({
133131 { /* 칼럼 헤더 */ }
134132 < div className = "shrink-0 mb-2" >
135133 < div className = "flex items-center justify-between" >
136- { /* 왼쪽: 타이틀 + 카드 개수 */ }
134+ { /* 타이틀 + 개수 */ }
137135 < div className = "flex items-center gap-2" >
138136 < Image src = "/svgs/ellipse.svg" alt = "circle" width = { 8 } height = { 8 } />
139- < h2
140- className = "text-black3 text-[16px] md:text-[18px] font-bold
141- break-words sm:max-w-none max-w-[90px]"
142- >
137+ < h2 className = "text-black3 text-[16px] md:text-[18px] font-bold break-words sm:max-w-none max-w-[90px]" >
143138 { columnTitle }
144139 </ h2 >
145- < span
146- className = "flex items-center justify-center leading-none
147- w-[20px] h-[20px] bg-white text-[var(--primary)] font-14m rounded-[4px]"
148- >
140+ < span className = "flex items-center justify-center leading-none w-[20px] h-[20px] bg-white text-[var(--primary)] font-14m rounded-[4px]" >
149141 { tasks . length }
150142 </ span >
151143 </ div >
152- { /* 오른쪽: 생성 버튼 + 설정 버튼 */ }
144+ { /* 버튼 */ }
153145 < div className = "flex items-center gap-2" >
154146 < div
155147 onClick = { ( ) => {
@@ -199,9 +191,8 @@ export default function Column({
199191 </ div >
200192 </ div >
201193
202- { /* 스크롤바 컨테이너 */ }
194+ { /* 카드 리스트 */ }
203195 < div className = "flex flex-col lg:pl-[21px] overflow-y-auto w-full lg:w-[357px] rounded-md bg-[#F5F2FC]" >
204- { /* 카드 리스트 */ }
205196 < div
206197 className = "flex-1 overflow-y-auto overflow-x-hidden"
207198 style = { { scrollbarGutter : "stable" } }
@@ -217,7 +208,7 @@ export default function Column({
217208 </ div >
218209 </ div >
219210
220- { /* 카드 생성 모달 */ }
211+ { /* 카드 생성 */ }
221212 { isTaskModalOpen && (
222213 < TaskModal
223214 mode = "create"
@@ -226,14 +217,18 @@ export default function Column({
226217 dashboardId = { dashboardId }
227218 columnId = { columnId }
228219 members = { members }
220+ columns = { columns }
229221 initialData = { {
230222 status : columnTitle ,
231223 } }
232- onSubmit = { fetchColumnsAndCards }
224+ onSubmit = { ( ) => {
225+ fetchColumnsAndCards ( ) ;
226+ setIsTaskModalOpen ( false ) ;
227+ } }
233228 />
234229 ) }
235230
236- { /* 칼럼 관리 모달 */ }
231+ { /* 칼럼 수정 */ }
237232 { isColumnModalOpen && (
238233 < FormModal
239234 title = "칼럼 이름 수정"
@@ -265,25 +260,25 @@ export default function Column({
265260 />
266261 ) }
267262
268- { /* 칼럼 삭제 확인 모달 */ }
269263 < ColumnDeleteModal
270264 isOpen = { isDeleteModalOpen }
271265 onClose = { ( ) => setIsDeleteModalOpen ( false ) }
272266 onDelete = { handleDeleteColumn }
273267 />
274268
275- { /* 카드 상세 모달 */ }
269+ { /* 카드 상세 */ }
276270 { isCardDetailModalOpen && selectedCard && (
277271 < CardDetailModal
278272 card = { selectedCard }
279273 currentUserId = { selectedCard . assignee . id }
280274 dashboardId = { dashboardId }
275+ createdByMe = { createdByMe }
281276 onClose = { ( ) => {
282277 setIsCardDetailModalOpen ( false ) ;
283278 setSelectedCard ( null ) ;
284279 } }
285280 onChangeCard = { fetchColumnsAndCards }
286- createdByMe = { createdByMe }
281+ columns = { columns }
287282 />
288283 ) }
289284 </ div >
0 commit comments