import { FormEvent, useState } from "react"; import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; import { Plus, SquareStack } from "lucide-react"; import { api, ServiceCatalogItem } from "../api/client"; import { DataTable } from "../components/DataTable"; import { buttonClass, Field, inputClass } from "../components/FormControls"; import { PageHeader } from "../components/PageHeader"; export function ServiceCatalog() { const queryClient = useQueryClient(); const services = useQuery({ queryKey: ["service-catalog"], queryFn: () => api("/service-catalog") }); const [form, setForm] = useState({ name: "Custom API", protocol: "tcp", ports: "8443", editable: true }); const create = useMutation({ mutationFn: () => api("/service-catalog", { method: "POST", body: JSON.stringify(form) }), onSuccess: () => queryClient.invalidateQueries({ queryKey: ["service-catalog"] }), }); async function submit(event: FormEvent) { event.preventDefault(); await create.mutateAsync(); } return ( <>
Add Service
setForm({ ...form, name: event.target.value })} /> setForm({ ...form, protocol: event.target.value })} /> setForm({ ...form, ports: event.target.value })} />
[]} columns={[{ key: "name", label: "Name" }, { key: "protocol", label: "Protocol" }, { key: "ports", label: "Ports" }]} />
); }