summaryrefslogtreecommitdiff
path: root/components/signup/join-form.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'components/signup/join-form.tsx')
-rw-r--r--components/signup/join-form.tsx49
1 files changed, 46 insertions, 3 deletions
diff --git a/components/signup/join-form.tsx b/components/signup/join-form.tsx
index 6885279a..c6281b24 100644
--- a/components/signup/join-form.tsx
+++ b/components/signup/join-form.tsx
@@ -910,6 +910,32 @@ function CompleteVendorForm({
}: VendorStepProps) {
const [isSubmitting, setIsSubmitting] = useState(false);
const { toast } = useToast();
+ const effectiveCountry = data.country || accountData.country || "";
+ const isKR = effectiveCountry === "KR";
+
+ useEffect(() => {
+ const handleMessage = (event: MessageEvent) => {
+ if (!event.data || event.data.type !== "JUSO_SELECTED") return;
+ const { zipNo, roadAddrPart1, roadAddrPart2, addrDetail } = event.data.payload || {};
+ const combinedAddress = [roadAddrPart1, roadAddrPart2].filter(Boolean).join(" ").trim();
+ onChange(prev => ({
+ ...prev,
+ postalCode: zipNo || prev.postalCode,
+ address: combinedAddress || prev.address,
+ addressDetail: addrDetail || prev.addressDetail,
+ }));
+ };
+ window.addEventListener("message", handleMessage);
+ return () => window.removeEventListener("message", handleMessage);
+ }, [onChange]);
+
+ const handleJusoSearch = () => {
+ window.open(
+ "/api/juso",
+ "jusoSearch",
+ "width=570,height=420,scrollbars=yes,resizable=yes"
+ );
+ };
// 담당자 관리 함수들
const addContact = () => {
@@ -1259,13 +1285,28 @@ function CompleteVendorForm({
{/* 주소 */}
<div>
- <label className="block text-sm font-medium mb-1">
- {t('address')} <span className="text-red-500">*</span>
- </label>
+ <div className="flex items-center justify-between gap-2 mb-1">
+ <label className="block text-sm font-medium">
+ {t('address')} <span className="text-red-500">*</span>
+ </label>
+ {isKR && (
+ <Button
+ type="button"
+ variant="secondary"
+ size="sm"
+ onClick={handleJusoSearch}
+ disabled={isSubmitting}
+ >
+ 주소 검색
+ </Button>
+ )}
+ </div>
<Input
value={data.address}
onChange={(e) => handleInputChange('address', e.target.value)}
disabled={isSubmitting}
+ readOnly={isKR}
+ className={cn(isKR && "bg-muted text-muted-foreground")}
/>
</div>
@@ -1291,6 +1332,8 @@ function CompleteVendorForm({
value={data.postalCode}
onChange={(e) => handleInputChange('postalCode', e.target.value)}
disabled={isSubmitting}
+ readOnly={isKR}
+ className={cn(isKR && "bg-muted text-muted-foreground")}
placeholder="우편번호를 입력해주세요"
/>
</div>