From aa1a9ee3e703e1c9ceffb8a7622205fe511d3a28 Mon Sep 17 00:00:00 2001 From: lepitaaar Date: Fri, 11 Jul 2025 09:05:37 +0900 Subject: [PATCH 01/12] =?UTF-8?q?feat:=20=EC=A7=80=EC=9B=90=EC=84=9C=20?= =?UTF-8?q?=EB=9D=BC=EC=9A=B0=ED=8C=85=20=EC=A3=BC=EC=84=9D=ED=95=B4?= =?UTF-8?q?=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/App.tsx | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index be74dc2d9..16933b390 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -15,6 +15,8 @@ import AccountEditTab from '@/pages/AdminPage/tabs/AccountEditTab/AccountEditTab import LoginTab from '@/pages/AdminPage/auth/LoginTab/LoginTab'; import PrivateRoute from '@/pages/AdminPage/auth/PrivateRoute/PrivateRoute'; import PhotoEditTab from '@/pages/AdminPage/tabs/PhotoEditTab/PhotoEditTab'; +import AnswerApplicationForm from './pages/AdminPage/application/answer/AnswerApplicationForm'; +import CreateApplicationForm from './pages/AdminPage/application/CreateApplicationForm'; // TODO: 지원서 개발 완료 후 활성화 // import AnswerApplicationForm from '@/pages/AdminPage/application/answer/AnswerApplicationForm'; // import CreateApplicationForm from '@/pages/AdminPage/application/CreateApplicationForm'; @@ -73,10 +75,10 @@ const App = () => { /> {/*🔒 메인 브랜치에서는 접근 차단 (배포용 차단 목적)*/} {/*develop-fe 브랜치에서는 접근 가능하도록 풀고 개발 예정*/} - {/*}*/} - {/*/>*/} + } + /> @@ -85,10 +87,10 @@ const App = () => { /> {/*🔒 사용자용 지원서 작성 페이지도 메인에서는 비활성화 처리 */} {/*🛠 develop-fe에서는 다시 노출 예정*/} - {/*}*/} - {/*/>*/} + } + /> } /> From 1613b2b774b73e10f4cadea791b77c4f02ed6b93 Mon Sep 17 00:00:00 2001 From: lepitaaar Date: Fri, 11 Jul 2025 09:06:00 +0900 Subject: [PATCH 02/12] =?UTF-8?q?fix:=20api=20=EB=AA=85=EC=84=B8=EC=97=90?= =?UTF-8?q?=20=EB=A7=9E=EA=B2=8C=20=ED=95=84=EB=93=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/hooks/useAnswers.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/frontend/src/hooks/useAnswers.ts b/frontend/src/hooks/useAnswers.ts index 6cf5dfead..51c096c4b 100644 --- a/frontend/src/hooks/useAnswers.ts +++ b/frontend/src/hooks/useAnswers.ts @@ -7,14 +7,14 @@ export const useAnswers = () => { const updateSingleAnswer = (id: number, value: string) => { setAnswers((prev) => [ ...prev.filter((a) => a.id !== id), - { id, answer: value }, + { id, value: value }, ]); }; const updateMultiAnswer = (id: number, values: string[]) => { setAnswers((prev) => [ ...prev.filter((a) => a.id !== id), - ...values.map((v) => ({ id, answer: v })), + ...values.map((v) => ({ id, value: v })), ]); }; @@ -27,7 +27,7 @@ export const useAnswers = () => { }; const getAnswersById = (id: number) => - answers.filter((a) => a.id === id).map((a) => a.answer); + answers.filter((a) => a.id === id).map((a) => a.value); - return { onAnswerChange, getAnswersById }; + return { onAnswerChange, getAnswersById, answers }; }; From fa00ffe69430dffeb959a9d71b6a9f380e316a49 Mon Sep 17 00:00:00 2001 From: lepitaaar Date: Fri, 11 Jul 2025 09:06:25 +0900 Subject: [PATCH 03/12] =?UTF-8?q?feat:=20=EC=A7=80=EC=9B=90=ED=95=98?= =?UTF-8?q?=EA=B8=B0=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/apis/application/applyToClub.ts | 36 +++++++++++++++++++ .../answer/AnswerApplicationForm.tsx | 15 ++++++-- frontend/src/types/application.ts | 2 +- 3 files changed, 50 insertions(+), 3 deletions(-) create mode 100644 frontend/src/apis/application/applyToClub.ts diff --git a/frontend/src/apis/application/applyToClub.ts b/frontend/src/apis/application/applyToClub.ts new file mode 100644 index 000000000..3d50d6ed0 --- /dev/null +++ b/frontend/src/apis/application/applyToClub.ts @@ -0,0 +1,36 @@ +import API_BASE_URL from '@/constants/api'; +import { AnswerItem } from '@/types/application'; + +export const applyToClub = async ( + clubId: string, + answers: AnswerItem[], +) => { + try { + const response = await fetch( + `${API_BASE_URL}/api/club/${clubId}/apply`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + questions: [ + ...answers + ] + }), + }, + ); + + if (!response.ok) { + throw new Error('답변 제출에 실패했습니다.'); + } + + const result = await response.json(); + return result.data; + } catch (error) { + console.error('답변 제출 중 오류 발생:', error); + throw error; + } +}; + +export default applyToClub; \ No newline at end of file diff --git a/frontend/src/pages/AdminPage/application/answer/AnswerApplicationForm.tsx b/frontend/src/pages/AdminPage/application/answer/AnswerApplicationForm.tsx index dd9fe6f9d..a1bf42729 100644 --- a/frontend/src/pages/AdminPage/application/answer/AnswerApplicationForm.tsx +++ b/frontend/src/pages/AdminPage/application/answer/AnswerApplicationForm.tsx @@ -9,6 +9,7 @@ import QuestionAnswerer from '@/pages/AdminPage/application/components/QuestionA import { useGetApplication } from '@/hooks/queries/application/useGetApplication'; import { Question } from '@/types/application'; import Spinner from '@/components/common/Spinner/Spinner'; +import applyToClub from '@/apis/application/applyToClub'; const AnswerApplicationForm = () => { const { clubId } = useParams<{ clubId: string }>(); @@ -17,7 +18,7 @@ const AnswerApplicationForm = () => { const { data: clubDetail, error } = useGetClubDetail(clubId); const { data: formData, isLoading, isError } = useGetApplication(clubId); - const { onAnswerChange, getAnswersById } = useAnswers(); + const { onAnswerChange, getAnswersById, answers } = useAnswers(); if (isLoading) return ; @@ -34,6 +35,16 @@ const AnswerApplicationForm = () => { ); } + const handleSubmit = async () => { + try { + await applyToClub(clubId, answers); + alert('답변이 성공적으로 제출되었습니다.'); + // TODO: 필요시 페이지 이동 등 추가 + } catch (e) { + alert('답변 제출에 실패했습니다. 잠시 후 다시 시도해 주세요.'); + } + }; + return ( <>
@@ -57,7 +68,7 @@ const AnswerApplicationForm = () => { ))} - 제출하기 + 제출하기 diff --git a/frontend/src/types/application.ts b/frontend/src/types/application.ts index 7a8375e19..b69db8154 100644 --- a/frontend/src/types/application.ts +++ b/frontend/src/types/application.ts @@ -52,5 +52,5 @@ export interface ApplicationFormData { export interface AnswerItem { id: number; - answer: string; + value: string; } From f13b8d54108a76dfef89ce0d8fca8b53d8f15f87 Mon Sep 17 00:00:00 2001 From: lepitaaar Date: Fri, 11 Jul 2025 09:06:51 +0900 Subject: [PATCH 04/12] =?UTF-8?q?feat:=20=EB=8F=99=EC=95=84=EB=A6=AC=20?= =?UTF-8?q?=EC=A7=80=EC=9B=90=ED=95=98=EA=B8=B0=20=ED=99=9C=EC=84=B1?= =?UTF-8?q?=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/ClubApplyButton/ClubApplyButton.tsx | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/frontend/src/pages/ClubDetailPage/components/ClubApplyButton/ClubApplyButton.tsx b/frontend/src/pages/ClubDetailPage/components/ClubApplyButton/ClubApplyButton.tsx index bb0d43a94..79e8afd22 100644 --- a/frontend/src/pages/ClubDetailPage/components/ClubApplyButton/ClubApplyButton.tsx +++ b/frontend/src/pages/ClubDetailPage/components/ClubApplyButton/ClubApplyButton.tsx @@ -49,14 +49,14 @@ const ClubApplyButton = ({ trackEvent('Club Apply Button Clicked'); //TODO: 지원서를 작성한 동아리의 경우에만 리다이렉트 - //navigate(`/application/${clubId}`); + navigate(`/application/${clubId}`); // [x] FIXME: recruitmentForm 있을 때는 리다이렉트 - if (presidentPhoneNumber) { - alert(`${presidentPhoneNumber} 으로 연락하여 지원해 주세요.`); - } else { - alert('모집이 마감되었습니다. 다음에 지원해 주세요.'); - } + // if (presidentPhoneNumber) { + // alert(`${presidentPhoneNumber} 으로 연락하여 지원해 주세요.`); + // } else { + // alert('모집이 마감되었습니다. 다음에 지원해 주세요.'); + // } }; return ; From 73662a54165370111010dd368200f4ed5d847095 Mon Sep 17 00:00:00 2001 From: lepitaaar Date: Fri, 11 Jul 2025 10:28:06 +0900 Subject: [PATCH 05/12] =?UTF-8?q?feat:=20=EC=B2=AB=EB=B2=88=EC=A7=B8=20?= =?UTF-8?q?=EC=A7=88=EB=AC=B8=EC=9D=80=20=EC=9D=B4=EB=A6=84=EC=9C=BC?= =?UTF-8?q?=EB=A1=9C=20=EA=B3=A0=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/constants/INITIAL_FORM_DATA.ts | 11 ++++++++++- .../AdminPage/application/CreateApplicationForm.tsx | 1 + 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/frontend/src/constants/INITIAL_FORM_DATA.ts b/frontend/src/constants/INITIAL_FORM_DATA.ts index e97cf76f1..6eeea290c 100644 --- a/frontend/src/constants/INITIAL_FORM_DATA.ts +++ b/frontend/src/constants/INITIAL_FORM_DATA.ts @@ -3,8 +3,17 @@ import { ApplicationFormData } from '@/types/application'; const INITIAL_FORM_DATA: ApplicationFormData = { title: '', questions: [ + //맨 처음은 이름 { id: 1, + title: '이름', + description: '지원자의 이름을 입력해주세요.', + type: 'SHORT_TEXT', + options: { required: true }, + items: [], + }, + { + id: 2, title: '', description: '', type: 'SHORT_TEXT', @@ -12,7 +21,7 @@ const INITIAL_FORM_DATA: ApplicationFormData = { items: [], }, { - id: 2, + id: 3, title: '', description: '', type: 'CHOICE', diff --git a/frontend/src/pages/AdminPage/application/CreateApplicationForm.tsx b/frontend/src/pages/AdminPage/application/CreateApplicationForm.tsx index bc3be5bcc..0c0de3761 100644 --- a/frontend/src/pages/AdminPage/application/CreateApplicationForm.tsx +++ b/frontend/src/pages/AdminPage/application/CreateApplicationForm.tsx @@ -158,6 +158,7 @@ const CreateApplicationForm = () => { options={question.options} items={question.items} type={question.type} + readOnly={index == 0} //인덱스 0번은 이름을 위한 고정 부분이므로 수정 불가 onTitleChange={handleTitleChange(question.id)} onDescriptionChange={handleDescriptionChange(question.id)} onItemsChange={handleItemsChange(question.id)} From e9446125901c2ef5d591484199208ef6b51e8951 Mon Sep 17 00:00:00 2001 From: lepitaaar Date: Fri, 11 Jul 2025 10:29:23 +0900 Subject: [PATCH 06/12] =?UTF-8?q?feat:=20=EC=A7=80=EC=9B=90=EC=84=9C?= =?UTF-8?q?=EA=B0=80=20=EC=A1=B4=EC=9E=AC=ED=95=98=EC=A7=80=20=EC=95=8A?= =?UTF-8?q?=EB=8A=94=EA=B2=BD=EC=9A=B0=20=EB=A6=AC=EB=8B=A4=EC=9D=B4?= =?UTF-8?q?=EB=A0=89=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/apis/application/getApplication.ts | 3 ++- .../answer/AnswerApplicationForm.tsx | 13 ++++++++++--- .../ClubApplyButton/ClubApplyButton.tsx | 17 ++++++----------- .../ClubDetailFooter/ClubDetailFooter.tsx | 5 +---- .../ClubDetailHeader/ClubDetailHeader.tsx | 5 +---- 5 files changed, 20 insertions(+), 23 deletions(-) diff --git a/frontend/src/apis/application/getApplication.ts b/frontend/src/apis/application/getApplication.ts index a9ec0e0bc..366d3339b 100644 --- a/frontend/src/apis/application/getApplication.ts +++ b/frontend/src/apis/application/getApplication.ts @@ -4,7 +4,8 @@ const getApplication = async (clubId: string) => { try { const response = await fetch(`${API_BASE_URL}/api/club/${clubId}/apply`); if (!response.ok) { - throw new Error(`Failed to fetch: ${response.statusText}`); + console.error(`Failed to fetch: ${response.statusText}`) + throw new Error((await response.json()).message); } const result = await response.json(); diff --git a/frontend/src/pages/AdminPage/application/answer/AnswerApplicationForm.tsx b/frontend/src/pages/AdminPage/application/answer/AnswerApplicationForm.tsx index a1bf42729..b81dcf0d4 100644 --- a/frontend/src/pages/AdminPage/application/answer/AnswerApplicationForm.tsx +++ b/frontend/src/pages/AdminPage/application/answer/AnswerApplicationForm.tsx @@ -1,7 +1,7 @@ import { PageContainer } from '@/styles/PageContainer.styles'; import * as Styled from './AnswerApplicationForm.styles'; import Header from '@/components/common/Header/Header'; -import { useParams } from 'react-router-dom'; +import { useNavigate, useParams } from 'react-router-dom'; import { useGetClubDetail } from '@/hooks/queries/club/useGetClubDetail'; import ClubProfile from '@/pages/ClubDetailPage/components/ClubProfile/ClubProfile'; import { useAnswers } from '@/hooks/useAnswers'; @@ -13,16 +13,23 @@ import applyToClub from '@/apis/application/applyToClub'; const AnswerApplicationForm = () => { const { clubId } = useParams<{ clubId: string }>(); + const navigate = useNavigate(); if (!clubId) return null; const { data: clubDetail, error } = useGetClubDetail(clubId); - const { data: formData, isLoading, isError } = useGetApplication(clubId); + const { data: formData, isLoading, isError, error: applicationError } = useGetApplication(clubId); const { onAnswerChange, getAnswersById, answers } = useAnswers(); if (isLoading) return ; + + if (isError) { + alert(applicationError.message) + navigate(`/club/${clubId}`) + return; + } - if (error || isError) { + if (error) { return
문제가 발생했어요. 잠시 후 다시 시도해 주세요.
; } diff --git a/frontend/src/pages/ClubDetailPage/components/ClubApplyButton/ClubApplyButton.tsx b/frontend/src/pages/ClubDetailPage/components/ClubApplyButton/ClubApplyButton.tsx index 79e8afd22..415c4366e 100644 --- a/frontend/src/pages/ClubDetailPage/components/ClubApplyButton/ClubApplyButton.tsx +++ b/frontend/src/pages/ClubDetailPage/components/ClubApplyButton/ClubApplyButton.tsx @@ -4,8 +4,7 @@ import { useNavigate, useParams } from 'react-router-dom'; import { useGetClubDetail } from '@/hooks/queries/club/useGetClubDetail'; interface ButtonProps { - recruitmentForm?: string; - presidentPhoneNumber?: string; + isRecruiting: boolean; } const Button = styled.button` @@ -38,8 +37,7 @@ const Button = styled.button` `; const ClubApplyButton = ({ - recruitmentForm, - presidentPhoneNumber, + isRecruiting }: ButtonProps) => { const { clubId } = useParams<{ clubId: string }>(); const trackEvent = useMixpanelTrack(); @@ -49,14 +47,11 @@ const ClubApplyButton = ({ trackEvent('Club Apply Button Clicked'); //TODO: 지원서를 작성한 동아리의 경우에만 리다이렉트 + if (!isRecruiting) { + alert('지원모집이 마감되었습니다. 다음에 지원해 주세요.') + return; + } navigate(`/application/${clubId}`); - - // [x] FIXME: recruitmentForm 있을 때는 리다이렉트 - // if (presidentPhoneNumber) { - // alert(`${presidentPhoneNumber} 으로 연락하여 지원해 주세요.`); - // } else { - // alert('모집이 마감되었습니다. 다음에 지원해 주세요.'); - // } }; return ; diff --git a/frontend/src/pages/ClubDetailPage/components/ClubDetailFooter/ClubDetailFooter.tsx b/frontend/src/pages/ClubDetailPage/components/ClubDetailFooter/ClubDetailFooter.tsx index 3aca35fae..307af9b5c 100644 --- a/frontend/src/pages/ClubDetailPage/components/ClubDetailFooter/ClubDetailFooter.tsx +++ b/frontend/src/pages/ClubDetailPage/components/ClubDetailFooter/ClubDetailFooter.tsx @@ -28,10 +28,7 @@ const ClubDetailFooter = ({ ); diff --git a/frontend/src/pages/ClubDetailPage/components/ClubDetailHeader/ClubDetailHeader.tsx b/frontend/src/pages/ClubDetailPage/components/ClubDetailHeader/ClubDetailHeader.tsx index 028c5744f..e56432559 100644 --- a/frontend/src/pages/ClubDetailPage/components/ClubDetailHeader/ClubDetailHeader.tsx +++ b/frontend/src/pages/ClubDetailPage/components/ClubDetailHeader/ClubDetailHeader.tsx @@ -43,10 +43,7 @@ const ClubDetailHeader = ({ logo={logo} /> ); From 92cebe075b2bd6c9371ca7b9cabb6761282cd7ab Mon Sep 17 00:00:00 2001 From: lepitaaar Date: Fri, 11 Jul 2025 10:29:41 +0900 Subject: [PATCH 07/12] =?UTF-8?q?feat:=20=EC=A7=88=EB=AC=B8=EC=97=90=20rea?= =?UTF-8?q?dOnly=20=EC=86=8D=EC=84=B1=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/QuestionBuilder/QuestionBuilder.styles.ts | 4 +++- .../components/QuestionBuilder/QuestionBuilder.tsx | 7 +++++-- frontend/src/types/application.ts | 1 + 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/frontend/src/pages/AdminPage/application/components/QuestionBuilder/QuestionBuilder.styles.ts b/frontend/src/pages/AdminPage/application/components/QuestionBuilder/QuestionBuilder.styles.ts index 8da426be7..d3dde767c 100644 --- a/frontend/src/pages/AdminPage/application/components/QuestionBuilder/QuestionBuilder.styles.ts +++ b/frontend/src/pages/AdminPage/application/components/QuestionBuilder/QuestionBuilder.styles.ts @@ -75,7 +75,9 @@ export const SelectionToggleButton = styled.button<{ active: boolean }>` color 0.2s ease; `; -export const QuestionWrapper = styled.div` +export const QuestionWrapper = styled.div<{readOnly?: boolean}>` display: flex; gap: 36px; + pointer-events: ${({ readOnly }) => (readOnly ? 'none' : 'auto')}; + cursor: not-allowed; `; diff --git a/frontend/src/pages/AdminPage/application/components/QuestionBuilder/QuestionBuilder.tsx b/frontend/src/pages/AdminPage/application/components/QuestionBuilder/QuestionBuilder.tsx index c84c57d03..e52d10117 100644 --- a/frontend/src/pages/AdminPage/application/components/QuestionBuilder/QuestionBuilder.tsx +++ b/frontend/src/pages/AdminPage/application/components/QuestionBuilder/QuestionBuilder.tsx @@ -16,6 +16,7 @@ const QuestionBuilder = ({ options, items, type, + readOnly, onTitleChange, onItemsChange, onDescriptionChange, @@ -117,7 +118,7 @@ const QuestionBuilder = ({ }; return ( - + onRequiredChange?.(!options?.required)} @@ -133,7 +134,9 @@ const QuestionBuilder = ({ }} /> {renderSelectionToggle()} - + {!readOnly && ( + + )} {renderFieldByQuestionType()} diff --git a/frontend/src/types/application.ts b/frontend/src/types/application.ts index b69db8154..e880eab61 100644 --- a/frontend/src/types/application.ts +++ b/frontend/src/types/application.ts @@ -14,6 +14,7 @@ export interface Question { } export interface QuestionBuilderProps extends Question { + readOnly: boolean; onTitleChange: (value: string) => void; onDescriptionChange: (value: string) => void; onItemsChange?: (newItems: { value: string }[]) => void; From db1e1c74daef257100fab8a7af2364c8885596f2 Mon Sep 17 00:00:00 2001 From: lepitaaar Date: Fri, 11 Jul 2025 10:29:50 +0900 Subject: [PATCH 08/12] =?UTF-8?q?feat:=20'=EC=A7=80=EC=9B=90=20=EA=B4=80?= =?UTF-8?q?=EB=A6=AC'=20=EC=95=8C=EB=A6=BC=20=EB=A9=94=EC=8B=9C=EC=A7=80?= =?UTF-8?q?=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/pages/AdminPage/components/SideBar/SideBar.tsx | 3 --- 1 file changed, 3 deletions(-) diff --git a/frontend/src/pages/AdminPage/components/SideBar/SideBar.tsx b/frontend/src/pages/AdminPage/components/SideBar/SideBar.tsx index d6b3b305d..f160cd25a 100644 --- a/frontend/src/pages/AdminPage/components/SideBar/SideBar.tsx +++ b/frontend/src/pages/AdminPage/components/SideBar/SideBar.tsx @@ -31,9 +31,6 @@ const SideBar = ({ clubLogo, clubName }: SideBarProps) => { if (tab.label === '계정 관리') { alert('계정 관리 기능은 아직 준비 중이에요. ☺️'); return; - } else if (tab.label === '지원 관리') { - alert('동아리 지원 관리 기능은 곧 오픈돼요!\n조금만 기다려주세요 🚀'); - return; } navigate(tab.path); }; From 2abf80961616af9236c319e7c089a8e49b0b8bf1 Mon Sep 17 00:00:00 2001 From: lepitaaar Date: Fri, 11 Jul 2025 10:41:43 +0900 Subject: [PATCH 09/12] =?UTF-8?q?fix:=20=EB=AA=A8=EB=93=A0=20=EC=83=81?= =?UTF-8?q?=EC=99=95=EC=97=90=EC=84=9C=20=EC=BB=A4=EC=84=9C=EA=B0=80=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD=EB=90=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/QuestionBuilder/QuestionBuilder.styles.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/pages/AdminPage/application/components/QuestionBuilder/QuestionBuilder.styles.ts b/frontend/src/pages/AdminPage/application/components/QuestionBuilder/QuestionBuilder.styles.ts index d3dde767c..05d359afe 100644 --- a/frontend/src/pages/AdminPage/application/components/QuestionBuilder/QuestionBuilder.styles.ts +++ b/frontend/src/pages/AdminPage/application/components/QuestionBuilder/QuestionBuilder.styles.ts @@ -79,5 +79,5 @@ export const QuestionWrapper = styled.div<{readOnly?: boolean}>` display: flex; gap: 36px; pointer-events: ${({ readOnly }) => (readOnly ? 'none' : 'auto')}; - cursor: not-allowed; + cursor: ${({ readOnly }) => (readOnly ? 'not-allowed' : 'auto')}; `; From 189bffbcfc2a552f8b75f6209afeccfb4c63fa7c Mon Sep 17 00:00:00 2001 From: lepitaaar Date: Fri, 11 Jul 2025 10:43:18 +0900 Subject: [PATCH 10/12] =?UTF-8?q?fix:=20=EC=98=A4=EB=A5=98=20=EB=B0=9C?= =?UTF-8?q?=EC=83=9D=20=EC=8B=9C=20=EC=82=AC=EC=9A=A9=EC=9E=90=EC=97=90?= =?UTF-8?q?=EA=B2=8C=20=EC=95=88=EB=82=B4=20=EB=A9=94=EC=8B=9C=EC=A7=80=20?= =?UTF-8?q?=ED=91=9C=EC=8B=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AdminPage/application/answer/AnswerApplicationForm.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/pages/AdminPage/application/answer/AnswerApplicationForm.tsx b/frontend/src/pages/AdminPage/application/answer/AnswerApplicationForm.tsx index b81dcf0d4..80336e013 100644 --- a/frontend/src/pages/AdminPage/application/answer/AnswerApplicationForm.tsx +++ b/frontend/src/pages/AdminPage/application/answer/AnswerApplicationForm.tsx @@ -26,7 +26,7 @@ const AnswerApplicationForm = () => { if (isError) { alert(applicationError.message) navigate(`/club/${clubId}`) - return; + return
문제가 발생했어요. 잠시 후 다시 시도해 주세요.
; } if (error) { From 512a559f268dfca59908ffbbadb854d1ebde1c22 Mon Sep 17 00:00:00 2001 From: Lepitar <66681282+lepitaaar@users.noreply.github.com> Date: Sun, 13 Jul 2025 15:16:06 +0900 Subject: [PATCH 11/12] Update frontend/src/pages/AdminPage/application/CreateApplicationForm.tsx MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: 김준서 Junseo Kim --- .../src/pages/AdminPage/application/CreateApplicationForm.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/pages/AdminPage/application/CreateApplicationForm.tsx b/frontend/src/pages/AdminPage/application/CreateApplicationForm.tsx index 0c0de3761..2ae388853 100644 --- a/frontend/src/pages/AdminPage/application/CreateApplicationForm.tsx +++ b/frontend/src/pages/AdminPage/application/CreateApplicationForm.tsx @@ -158,7 +158,7 @@ const CreateApplicationForm = () => { options={question.options} items={question.items} type={question.type} - readOnly={index == 0} //인덱스 0번은 이름을 위한 고정 부분이므로 수정 불가 + readOnly={index === 0} //인덱스 0번은 이름을 위한 고정 부분이므로 수정 불가 onTitleChange={handleTitleChange(question.id)} onDescriptionChange={handleDescriptionChange(question.id)} onItemsChange={handleItemsChange(question.id)} From ed44003866dcde71525498c3258b51efeda2a9a9 Mon Sep 17 00:00:00 2001 From: lepitaaar Date: Sun, 13 Jul 2025 15:27:34 +0900 Subject: [PATCH 12/12] refactor: field change --- frontend/src/constants/INITIAL_FORM_DATA.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/src/constants/INITIAL_FORM_DATA.ts b/frontend/src/constants/INITIAL_FORM_DATA.ts index 6eeea290c..2e7e82aaa 100644 --- a/frontend/src/constants/INITIAL_FORM_DATA.ts +++ b/frontend/src/constants/INITIAL_FORM_DATA.ts @@ -6,8 +6,8 @@ const INITIAL_FORM_DATA: ApplicationFormData = { //맨 처음은 이름 { id: 1, - title: '이름', - description: '지원자의 이름을 입력해주세요.', + title: '이름을 입력해주세요', + description: '지원자의 이름을 입력해주세요. (예: 홍길동)', type: 'SHORT_TEXT', options: { required: true }, items: [],