import React, { useMemo } from "react"; import { SelectBox2 } from "@common/business_components/ui/select/index-2"; interface Option { id: number; name: string; } interface SidoSigunguSelectBoxProps { sido: number; sigungu: number; onSidoChange: (id: number) => void; onSigunguChange: (id: number) => void; className?: string; } const sidoList: { id: number, name: string }[] = [ { id: 0, name: '선택' }, { id: 26, name: '부산광역시' }, { id: 28, name: '인천광역시' }, { id: 30, name: '대전광역시' }, { id: 41, name: '경기도' }, { id: 42, name: '강원도' }, { id: 44, name: '충청남도' }, { id: 45, name: '전라북도' }, { id: 46, name: '전라남도' }, { id: 47, name: '경상북도' }, { id: 48, name: '경상남도' }, ]; const sigunguMap: Record = { 26: [ { id: 0, name: '선택' }, // ...부산산광역시의 시군구 추가 ], 28: [ { id: 0, name: '선택' }, // ...인천광역시의 시군구 추가 ], 30: [ { id: 0, name: '선택' }, // ...대전광역시의 시군구 추가 ], 41: [ { id: 0, name: '선택' }, { id: 41820, name: '가평군' }, { id: 41550, name: '안성시' }, { id: 41830, name: '양평군' }, { id: 41670, name: '여주시' }, { id: 41500, name: '이천시' }, { id: 41430, name: '의왕시' }, { id: 41150, name: '의정부시' }, { id: 41480, name: '파주시' }, { id: 41650, name: '포천시' }, // ...경기도의 시군구 추가 ], 42: [ { id: 0, name: '선택' }, { id: 42170, name: '동해시' }, { id: 42110, name: '춘천시' }, { id: 42720, name: '홍천군' }, // ...강원도의 시군구 추가 ], 44: [ { id: 0, name: '선택' }, { id: 44770, name: '서천군' }, // ...충청남도의 시군구 추가 ], 45: [ { id: 0, name: '선택' }, { id: 45130, name: '군산시' }, { id: 45190, name: '남원시' }, { id: 45730, name: '무주군' }, { id: 45800, name: '부안군' }, { id: 45770, name: '순창군' }, { id: 45140, name: '익산시' }, { id: 45750, name: '임실군' }, { id: 45710, name: '완주군' }, { id: 45110, name: '전주시' }, // ...전라북도의 시군구 추가 ], 46: [ { id: 0, name: '선택' }, { id: 46810, name: "강진군" }, { id: 46770, name: "고흥군" }, { id: 46720, name: "곡성군" }, { id: 46730, name: "구례군" }, { id: 46230, name: "광양시" }, { id: 46170, name: "나주시" }, { id: 46110, name: "목포시" }, { id: 46840, name: "무안군" }, { id: 46150, name: "순천시" }, { id: 46910, name: "신안군" }, { id: 46130, name: "여수시" }, { id: 46890, name: "완도군" }, // ...전라남도의 시군구 추가 ], 47: [ { id: 0, name: '선택' }, { id: 47130, name: "경주시" }, { id: 47830, name: "고령군" }, { id: 47190, name: "구미시" }, { id: 47720, name: "군위군" }, { id: 47150, name: "김천시" }, { id: 47280, name: "문경시" }, { id: 47920, name: "봉화군" }, { id: 47250, name: "상주시" }, { id: 47770, name: "영덕군" }, { id: 47760, name: "영양군" }, { id: 47210, name: "영주시" }, { id: 47900, name: "예천군" }, { id: 47930, name: "울진군" }, { id: 47730, name: "의성군" }, { id: 47750, name: "청송군" }, { id: 47850, name: "칠곡군" }, { id: 47110, name: "포항시" }, // ...경상북도의 시군구 추가 ], 48: [ { id: 0, name: '선택' }, { id: 48310, name: "거제시" }, { id: 48250, name: "김해시" }, { id: 48270, name: "밀양시" }, { id: 48220, name: "통영시" }, // ...경상남도의 시군구 추가 ], // ...나머지 시도별 시군구 추가 }; export function SidoSigunguSelectBox({ sido, sigungu, onSidoChange, onSigunguChange, className = "", }: SidoSigunguSelectBoxProps) { // 선택된 시도에 따라 시군구 리스트를 가져옴 const sigunguList = useMemo(() => sigunguMap[sido] || [{ id: 0, name: '선택' }], [sido]); return (
({ val: opt.id, text: opt.name }))} value={sido} onSelectValue={val => onSidoChange(Number(val))} /> ({ val: opt.id, text: opt.name }))} value={sigungu} onSelectValue={val => onSigunguChange(Number(val))} />
); }