Skip to content

Commit eb98527

Browse files
committed
refact: 이벤트 주최자 정보 연락처 입력 간 자동 하이픈 추가 및 라벨 이름 통일
1 parent 1f3c94a commit eb98527

File tree

1 file changed

+17
-3
lines changed

1 file changed

+17
-3
lines changed

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

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,16 @@ interface EventOrganizerInfoPageProps {
1111
const EventOrganizerInfoPage = ({ onValidationChange }: EventOrganizerInfoPageProps) => {
1212
const { eventState, setEventState } = useFunnelState();
1313

14+
const formatPhoneNumber = (value: string) => {
15+
const numbers = value.replace(/[^\d]/g, '').slice(0, 11); // 11자리까지만 허용
16+
if (numbers.length <= 3) return numbers;
17+
if (numbers.length <= 7) return `${numbers.slice(0, 3)}-${numbers.slice(3)}`;
18+
return `${numbers.slice(0, 3)}-${numbers.slice(3, 7)}-${numbers.slice(7, 11)}`;
19+
};
20+
1421
const {
1522
register,
23+
setValue,
1624
watch,
1725
formState: { errors, isValid },
1826
} = useForm<OrganizerFormData>({
@@ -27,6 +35,11 @@ const EventOrganizerInfoPage = ({ onValidationChange }: EventOrganizerInfoPagePr
2735
const phoneValue = watch('phone');
2836
const emailValue = watch('email');
2937

38+
const handlePhoneChange = (e: React.ChangeEvent<HTMLInputElement>) => {
39+
const formatted = formatPhoneNumber(e.target.value);
40+
setValue('phone', formatted, { shouldValidate: true });
41+
};
42+
3043
useEffect(() => {
3144
onValidationChange?.(isValid);
3245
}, [isValid, onValidationChange]);
@@ -50,12 +63,13 @@ const EventOrganizerInfoPage = ({ onValidationChange }: EventOrganizerInfoPagePr
5063
{...register('email')}
5164
/>
5265
<UnderlineTextField
53-
label="전화번호"
54-
placeholder={`"-"를 포함하여 입력해주세요`}
66+
label="연락처"
67+
placeholder="010-1234-5678"
5568
type="tel"
5669
errorMessage={errors.phone?.message}
5770
className="w-full"
58-
{...register('phone')}
71+
value={phoneValue}
72+
onChange={handlePhoneChange}
5973
/>
6074
</div>
6175
);

0 commit comments

Comments
 (0)