diff --git a/app/pages/dashboard-category-update/index.tsx b/app/pages/dashboard-category-update/index.tsx deleted file mode 100644 index ca8e173..0000000 --- a/app/pages/dashboard-category-update/index.tsx +++ /dev/null @@ -1,5 +0,0 @@ -import React from 'react' - -export const UpdateCategoryPage = () => { - return
UpdateCategoryPage
-} diff --git a/app/pages/form-category/index.tsx b/app/pages/form-category/index.tsx index 65ceb67..652a3ff 100644 --- a/app/pages/form-category/index.tsx +++ b/app/pages/form-category/index.tsx @@ -1,9 +1,10 @@ import { zodResolver } from '@hookform/resolvers/zod' -import { useEffect, useState, type ChangeEvent } from 'react' +import { useEffect, useState } from 'react' import { useFetcher, useNavigate } from 'react-router' import { RemixFormProvider, useRemixForm } from 'remix-hook-form' import { z } from 'zod' +import type { TCategoryResponse } from '~/apis/common/get-categories' import { Button } from '~/components/ui/button' import { Input } from '~/components/ui/input' import { TitleDashboard } from '~/components/ui/title-dashboard' @@ -14,21 +15,28 @@ export const createCategorySchema = z.object({ name: z.string().min(3, 'Nama minimal 3 karakter'), }) export type TCategorySchema = z.infer +type TProperties = { + categoryData?: TCategoryResponse +} -export const FormCategoryPage = () => { +export const FormCategoryPage = (properties: TProperties) => { + const { categoryData } = properties || {} const fetcher = useFetcher() const navigate = useNavigate() const formMethods = useRemixForm({ mode: 'onSubmit', fetcher, resolver: zodResolver(createCategorySchema), + values: { + code: categoryData?.code || '', + name: categoryData?.name || '', + }, }) const [error, setError] = useState() const [disabled, setDisabled] = useState(false) - const [code, setCode] = useState('') - const [name, setName] = useState('') - const { handleSubmit } = formMethods + const { handleSubmit, watch, setValue } = formMethods + const watchName = watch('name') useEffect(() => { if (!fetcher.data?.success) { @@ -42,15 +50,14 @@ export const FormCategoryPage = () => { // eslint-disable-next-line react-hooks/exhaustive-deps }, [fetcher]) - const handelCodeAuto = (name: ChangeEvent) => { - const inputName = name.target.value - setName(inputName) - setCode(urlFriendlyCode(inputName)) - } + useEffect(() => { + setValue('code', urlFriendlyCode(watchName)) + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [watchName]) return (
- +
{