+
+
+ {React.cloneElement(component(field), {
+ id: inputId,
+ "aria-required": isRequired,
+ "aria-invalid": !!error,
+ "aria-describedby": error ? errorId : undefined
+ })}
+
+ {error?.message && (
+
+ {error.message}
+
+ )}
+
+ )}
+ />
+ );
+ })}
>
);
}
\ No newline at end of file
diff --git a/packages/common/business_components/src/ui/sdmInsertForm/index.tsx b/packages/common/business_components/src/ui/sdmInsertForm/index.tsx
index 4219602e6..35c609f9e 100644
--- a/packages/common/business_components/src/ui/sdmInsertForm/index.tsx
+++ b/packages/common/business_components/src/ui/sdmInsertForm/index.tsx
@@ -42,12 +42,24 @@ const createFormSchema = (isBznmTotNoDisabled: boolean, isDuplicate: boolean ,up
.min(8, "전화번호는 8자 이상 입력해주세요")
.max(11, "전화번호는 11자 이내로 입력해주세요")
.regex(/^[0-9]+$/, "전화번호는 숫자만 입력 가능합니다"),
- rgtr: z.string().optional(),
+ rgtr: z.string().nullish(),
dmdAplyPswd : updateList?.dmdInfoPk // 업데이트일경우
? z.string().optional() // 패스워드는 선택 사항이며 길이 제한 없음
: z.string().optional()
.refine((val) => !val || (val.length >= 8 && val.length <= 16), "패스워드는 8자 이상 16자 이내로 입력해주세요"),
-
+ dmdAplyPswdConfirm: updateList?.dmdInfoPk // 업데이트일경우
+ ? z.string().optional() // 패스워드는 선택 사항이며 길이 제한 없음
+ :z.string()
+ .min(1, "패스워드확인을 입력해주세요"),
+}).refine((data) => {
+ // 패스워드 확인 검증
+ if (data.dmdAplyPswd && data.dmdAplyPswdConfirm) {
+ return data.dmdAplyPswd === data.dmdAplyPswdConfirm;
+ }
+ return true;
+}, {
+ message: "패스워드가 일치하지 않습니다",
+ path: ["dmdAplyPswdConfirm"], // 에러를 패스워드 확인 필드에 표시
});
type FormSchema = z.infer