From e7fcdeb07af389767cbb12c0ad2ab05193b25369 Mon Sep 17 00:00:00 2001 From: NaveOWO <87578512+NaveOWO@users.noreply.github.com> Date: Wed, 20 Dec 2023 15:02:34 +0900 Subject: [PATCH] chore: rename file --- src/hooks/useFormContextWithRef.ts | 15 ---- src/hooks/useReactiveFields.ts | 116 ----------------------------- src/lib/index.tsx | 2 +- 3 files changed, 1 insertion(+), 132 deletions(-) delete mode 100644 src/hooks/useFormContextWithRef.ts delete mode 100644 src/hooks/useReactiveFields.ts diff --git a/src/hooks/useFormContextWithRef.ts b/src/hooks/useFormContextWithRef.ts deleted file mode 100644 index bf5faa2..0000000 --- a/src/hooks/useFormContextWithRef.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { FieldValues } from "react-hook-form"; -import { useRegisterWithRef } from "./useRegisterWithRef"; -import { useValidFormContext } from "./useValidFormContext"; - -export default function useFormContextWithRef< - TFieldValues extends FieldValues ->() { - const methods = useValidFormContext(); - const { register } = methods; - - const { registerWithRef, instanceRef } = - useRegisterWithRef(register); - - return { ...methods, instanceRef, registerWithRef }; -} diff --git a/src/hooks/useReactiveFields.ts b/src/hooks/useReactiveFields.ts deleted file mode 100644 index 8f14eb7..0000000 --- a/src/hooks/useReactiveFields.ts +++ /dev/null @@ -1,116 +0,0 @@ -import { - FieldValues, - UseFieldArrayAppend, - UseFieldArrayRemove, - UseFormGetValues, -} from "react-hook-form"; -import { checkIsDuplicated } from "../utils/checkDuplicated"; - -type FieldArrayType = { - append: UseFieldArrayAppend; - remove: UseFieldArrayRemove; - fields: Record<"id", string>[]; -}; - -type FormContextType = { - instanceRef: React.MutableRefObject; - getValues: UseFormGetValues; -}; - -export default function useDynamicFields( - formContext: FormContextType, - fieldArray: FieldArrayType, - fieldName: T -) { - const { instanceRef, getValues } = formContext; - const { append, remove, fields } = fieldArray; - const idx = Number(instanceRef.current?.name.split(".")[1]); - - const checkFieldValueDuplicated = (alertMessage?: string) => { - if (instanceRef.current === undefined) return; - - if ( - idx > 0 && - checkIsDuplicated( - getValues(`${fieldName}.${idx}`), - getValues(`${fieldName}`).slice(0, getValues(`${fieldName}`).length - 1) - ) - ) { - alertMessage ?? alert(alertMessage); - instanceRef.current.autofocus = true; - return; - } - }; - - const lockDynamicField = () => { - if (instanceRef.current === undefined) return; - - instanceRef.current.readOnly = true; - }; - - const appendDynamicField = (fieldLimit?: number) => { - if (fieldLimit && fields.length > fieldLimit) return; - - append(""); - }; - - const handleKeyDownEnter = ( - e: React.KeyboardEvent, - handleFieldCallbacks?: (() => void)[] - ) => { - if (instanceRef.current === undefined) return; - - if (e.code === "Enter") { - handleFieldCallbacks?.forEach((callback) => { - callback?.(); - }); - } - }; - - const deleteDynamicField = ( - e: React.MouseEvent, - idx: number, - appendNewFiled?: boolean - ) => { - const deleteTarget = e.target as T; - - deleteTarget.style.display = "none"; - - remove(idx); - appendNewFiled ?? append(""); - }; - - const activeField = () => { - if (instanceRef.current === undefined) return; - - if (instanceRef.current.value === "") { - instanceRef.current.readOnly = false; - } - }; - - const clickOutside = ( - e: Event, - ignoredTarget?: HTMLElement, - handleFieldCallbacks?: (() => void)[] - ) => { - if (instanceRef.current === undefined) return; - - const target = e.target as HTMLElement; - - if (ignoredTarget && Number(target.dataset.idx) === idx) return; - - handleFieldCallbacks?.forEach((callback) => { - callback?.(); - }); - }; - - return { - handleKeyDownEnter, - checkFieldValueDuplicated, - lockDynamicField, - appendDynamicField, - deleteDynamicField, - activeField, - clickOutside, - }; -} diff --git a/src/lib/index.tsx b/src/lib/index.tsx index d8d6935..b2a9b68 100644 --- a/src/lib/index.tsx +++ b/src/lib/index.tsx @@ -1,3 +1,3 @@ -export { default as useReactiveFields } from "../hooks/useReactiveFields"; +export { default as useReactiveFields } from "../hooks/useDynamicFields"; export { default as useFormContextWithRef } from "../hooks/useFormContextWithRef"; export { default as useFormWithRef } from "../hooks/useFormWithRef";