@@ -4,7 +4,6 @@ import Image from "next/image";
44import { CardType } from "@/types/task" ;
55import TaskModal from "@/components/modalInput/TaskModal" ;
66import { TodoButton , ShortTodoButton } from "@/components/button/TodoButton" ;
7- import ColumnManageModal from "@/components/columnCard/ColumnManageModal" ;
87import ColumnDeleteModal from "@/components/columnCard/ColumnDeleteModal" ;
98import { updateColumn , deleteColumn } from "@/api/columns" ;
109import { getDashboardMembers , getCardDetail } from "@/api/card" ;
@@ -15,6 +14,7 @@ import CardDetailModal from "@/components/modalDashboard/CardDetailModal";
1514import { CardDetailType } from "@/types/cards" ;
1615import { toast } from "react-toastify" ;
1716import { useDashboardPermission } from "@/hooks/useDashboardPermission" ;
17+ import FormModal from "@/components/modal/FormModal" ;
1818
1919type ColumnProps = {
2020 columnId : number ;
@@ -38,6 +38,8 @@ export default function Column({
3838 const { canEditColumns } = useDashboardPermission ( dashboardId , createdByMe ) ;
3939
4040 const [ columnTitle , setColumnTitle ] = useState ( title ) ;
41+ const [ editTitle , setEditTitle ] = useState ( columnTitle ) ;
42+ const [ titleLength , setTitleLength ] = useState < number > ( 0 ) ;
4143 const [ isColumnModalOpen , setIsColumnModalOpen ] = useState ( false ) ;
4244 const [ isDeleteModalOpen , setIsDeleteModalOpen ] = useState ( false ) ;
4345 const [ isTaskModalOpen , setIsTaskModalOpen ] = useState ( false ) ;
@@ -47,6 +49,8 @@ export default function Column({
4749 { id : number ; userId : number ; nickname : string } [ ]
4850 > ( [ ] ) ;
4951
52+ const maxColumnTitleLength = 20 ;
53+
5054 // 카드리스트의 스크롤을 칼럼 영역으로 이동
5155 const scrollRef = useRef < HTMLDivElement | null > ( null ) ;
5256
@@ -83,6 +87,7 @@ export default function Column({
8387 setColumnTitle ( updated . title ) ;
8488 setIsColumnModalOpen ( false ) ;
8589 toast . success ( "칼럼 제목이 변경되었습니다." ) ;
90+ fetchColumnsAndCards ( ) ;
8691 } catch ( error ) {
8792 console . error ( "칼럼 제목 수정 실패:" , error ) ;
8893 toast . error ( "칼럼 제목 변경에 실패했습니다." ) ;
@@ -161,6 +166,8 @@ export default function Column({
161166 toast . error ( "읽기 전용 대시보드입니다." ) ;
162167 return ;
163168 }
169+ setEditTitle ( columnTitle ) ;
170+ setTitleLength ( columnTitle . length ) ;
164171 setIsColumnModalOpen ( true ) ;
165172 } }
166173 />
@@ -218,16 +225,36 @@ export default function Column({
218225 ) }
219226
220227 { /* 칼럼 관리 모달 */ }
221- < ColumnManageModal
222- isOpen = { isColumnModalOpen }
223- onClose = { ( ) => setIsColumnModalOpen ( false ) }
224- onDeleteClick = { ( ) => {
225- setIsColumnModalOpen ( false ) ;
226- setIsDeleteModalOpen ( true ) ;
227- } }
228- columnTitle = { columnTitle }
229- onEditSubmit = { handleEditColumn }
230- />
228+ { isColumnModalOpen && (
229+ < FormModal
230+ title = "칼럼 이름 수정"
231+ inputLabel = "이름"
232+ inputPlaceholder = "변경할 이름을 입력해 주세요"
233+ inputValue = { editTitle }
234+ onInputChange = { ( value ) => {
235+ if ( value . length <= maxColumnTitleLength ) {
236+ setEditTitle ( value ) ;
237+ setTitleLength ( value . length ) ;
238+ }
239+ } }
240+ isInputValid = { columnTitle . trim ( ) . length > 0 }
241+ charCount = { {
242+ current : titleLength ,
243+ max : maxColumnTitleLength ,
244+ } }
245+ onSubmit = { ( ) => {
246+ handleEditColumn ( editTitle ) ;
247+ setIsColumnModalOpen ( false ) ;
248+ } }
249+ submitText = "변경"
250+ leftButtonText = "삭제"
251+ onLeftButtonClick = { ( ) => {
252+ setIsColumnModalOpen ( false ) ;
253+ setIsDeleteModalOpen ( true ) ;
254+ } }
255+ onClose = { ( ) => setIsColumnModalOpen ( false ) }
256+ />
257+ ) }
231258
232259 { /* 칼럼 삭제 확인 모달 */ }
233260 < ColumnDeleteModal
0 commit comments