import { standardSchemaResolver } from "@hookform/resolvers/standard-schema"; import { TextInput, Textarea } from "@mantine/core"; import { useFocusTrap } from "@mantine/hooks"; import { useForm } from "react-hook-form"; import { ModalBody, ModalFooter, useStepContext } from "./CreateModal"; import { entitySchema, type TCreateModalSchema } from "./schema"; import { s } from "bknd/core"; import { cloneSchema } from "core/object/schema"; const schema = s.object({ name: entitySchema.properties.name, config: entitySchema.properties.config.partial().optional(), }); type Schema = s.Static; export function StepEntity() { const focusTrapRef = useFocusTrap(); const { nextStep, stepBack, state, setState } = useStepContext(); const { register, handleSubmit, formState, watch, control } = useForm({ mode: "onChange", resolver: standardSchemaResolver(cloneSchema(schema)), defaultValues: (state.entities?.create?.[0] ?? {}) as Schema, }); function onSubmit(data: any) { console.log("onSubmit", data); setState((prev) => { const prevEntity = prev.entities?.create?.[0]; if (prevEntity && prevEntity.name !== data.name) { return { ...prev, entities: { create: [{ ...data, fields: prevEntity.fields }] } }; } return { ...prev, entities: { create: [data] } }; }); if (formState.isValid) { console.log("would go next"); nextStep("entity-fields")(); } } return ( <>