Skip to content

Commit 144bd35

Browse files
committed
feat: 배너 이미지 데이터 없을때 버튼 비활성화 기능 추가
1 parent 302a8f3 commit 144bd35

File tree

3 files changed

+16
-3
lines changed

3 files changed

+16
-3
lines changed

src/features/event/ui/EventFunnel.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ const EventFunnel = ({ onNext, onPrev, Funnel, Step, currentStep }: EventFunnelI
9898
title="이벤트 정보를 입력해주세요"
9999
onNext={() => handleNext(String(currentStep + 1))}
100100
onPrev={() => onPrev(String(currentStep - 1))}
101+
requireValidation={true}
101102
>
102103
<EventInfoPage />
103104
</EventRegisterLayout>

src/features/event/ui/FileUpload.tsx

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,17 @@
11
import FileUploadImage from '../../../../public/assets/event-manage/creation/FileUpload.svg';
22
import { FunnelState } from '../model/FunnelContext';
33
import useImageUpload from '../../../shared/hooks/useImageUpload';
4+
import { useEffect } from 'react';
45

56
interface FileUploadProps {
67
value?: string;
78
onChange?: (url: string) => void;
89
setEventState?: React.Dispatch<React.SetStateAction<FunnelState['eventState']>>;
910
useDefaultImage?: boolean;
11+
onValidationChange?: (isValid: boolean) => void;
1012
}
1113

12-
const FileUpload = ({ value, onChange, setEventState, useDefaultImage }: FileUploadProps) => {
14+
const FileUpload = ({ value, onChange, setEventState, useDefaultImage, onValidationChange }: FileUploadProps) => {
1315
const { previewUrl, fileInputRef, handleFileChange, handleDrop, setIsDragging, isDragging } = useImageUpload({
1416
value, // 서버에서 받아온 기본 이미지
1517
onSuccess: url => {
@@ -19,6 +21,12 @@ const FileUpload = ({ value, onChange, setEventState, useDefaultImage }: FileUpl
1921
useDefaultImage,
2022
});
2123

24+
useEffect(() => {
25+
if (onValidationChange) {
26+
onValidationChange(!!previewUrl);
27+
}
28+
}, [previewUrl, onValidationChange]);
29+
2230
return (
2331
<div className="flex flex-col justify-start gap-1">
2432
<h1 className="font-bold text-black text-lg">배너 사진 첨부</h1>

src/pages/event/ui/create-event/EventInfoPage.tsx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,15 @@ import TextEditor from '../../../../features/event/ui/TextEditor';
33
import LinkInput from '../../../../features/event/ui/LinkInput';
44
import { useFunnelState } from '../../../../features/event/model/FunnelContext';
55

6-
const EventInfoPage = () => {
6+
interface EventInfoPageProps {
7+
onValidationChange?: (isValid: boolean) => void;
8+
}
9+
10+
const EventInfoPage = ({ onValidationChange }: EventInfoPageProps) => {
711
const { setEventState } = useFunnelState();
812
return (
913
<div className="w-full px-5 space-y-8">
10-
<FileUpload setEventState={setEventState} useDefaultImage={false} />
14+
<FileUpload setEventState={setEventState} useDefaultImage={false} onValidationChange={onValidationChange} />
1115
<TextEditor setEventState={setEventState} />
1216
<LinkInput setEventState={setEventState} />
1317
</div>

0 commit comments

Comments
 (0)