"use client"; import { useForm } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; import { useQuery } from "@tanstack/react-query"; import { Button } from "@/shared/components/ui/button"; import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage, } from "@/shared/components/ui/form"; import { Input } from "@/shared/components/ui/input"; import { Switch } from "@/shared/components/ui/switch"; import { Textarea } from "@/shared/components/ui/textarea"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/shared/components/ui/select"; import { MapSourceFormValues, mapSourceSchema, } from "@/shared/schemas/map-source"; import credentialApi from "@/shared/services/credential"; import { Credential } from "@/shared/types/credential"; import { MapSource } from "@/shared/types/map-source"; interface MapSourceFormProps { defaultValues?: Partial; onSubmitAction: (data: MapSourceFormValues) => void; isSubmitting?: boolean; onCancelAction?: () => void; } export function MapSourceForm({ defaultValues, onSubmitAction, isSubmitting, onCancelAction, }: MapSourceFormProps) { const form = useForm({ resolver: zodResolver(mapSourceSchema), defaultValues: { name: defaultValues?.name || "", description: defaultValues?.description || "", credential_id: defaultValues?.credential?.id || "", url: defaultValues?.url || "", is_active: defaultValues?.is_active ?? true, }, }); const { data: credentials, isLoading: isCredLoading } = useQuery< Credential[] >({ queryKey: ["credentials"], queryFn: () => credentialApi.getCredentials().then((response) => response.items), }); return (
( Nama )} /> ( Deskripsi