"use client" import { Input } from "@/components/ui/input"; import { CellContext } from "@tanstack/react-table"; import { updateField } from "app/lib/update"; import { useState } from "react"; import { z } from "zod"; import { useForm } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; import { toast } from "@/components/ui/use-toast"; import { Form, FormControl, FormField, FormItem, FormMessage } from "@/components/ui/form"; export default function NumberInputCell({ cellContext, className }: { cellContext: CellContext, className: string }) { const [isActive, setIsActive] = useState(false) //@ts-ignore const table = cellContext.table.options.meta.tableName const id = cellContext.row.original.id const column = cellContext.column.id //@ts-ignore const pathname = cellContext.table.options.meta.pathname const value = cellContext.cell.getValue() //@ts-ignore const formSchema = cellContext.column.columnDef.meta.formSchema.pick({ [column]: true }) const form = useForm>({ resolver: zodResolver(formSchema), defaultValues: { [column]: cellContext.cell.getValue() }, }) async function onSubmit(value: z.infer) { try { const res = await updateField({ id, table, datum: value[column], column, pathname }) if (res === undefined) throw new Error("something went wrong") toast({ title: "Field updated successfully." }) } catch (error) { console.error(error) toast({ title: "Something went wrong." }) } setIsActive(false) } function onErrors(errors: Error) { toast({ title: "You have errors", description: errors.message, }) console.log(JSON.stringify(errors)) } return (
setIsActive(true)} className={className + " w-full h-fit flex items-center justify-center"} tabIndex={0} onKeyDown={e => { if (e.code === "Enter" && !isActive) { e.preventDefault() setIsActive(true) } }} > {isActive ?
( setIsActive(false)} > {/* @ts-ignore */} )} /> :

{cellContext.cell.getValue()}

}
) }