// Copyright DWJ 2024.
// Distributed under the Boost Software License, Version 1.0.
// https://www.boost.org/LICENSE_1_0.txt
import { StyledButton, StyledLoader, StyledText } from "@dwidge/components-rnw";
import { useNavAction2 } from "@dwidge/hooks-expo";
import {
defaultFormSchemaString,
defaultJsonFormDataString,
FormSubmit,
} from "@dwidge/json-forms-designer";
import { useContext } from "react";
import { AttachmentListEdit } from "../Attachment/AttachmentListEdit";
import { filterId } from "../hooks";
import { FormApi } from "../hooks/FormApi";
import { FormsContext } from "../hooks/FormsContext";
import { SchemaApi } from "../hooks/SchemaApi";
import { useParams } from "../hooks/useParams";
export const FormEdit = ({
id = useParams().FormId,
form: [form, setForm] = FormApi.useItem(filterId(id)),
schema = SchemaApi.useGetItem(filterId(form?.SchemaId)),
onEditSchema = useNavAction2(
useContext(FormsContext).routes.SCHEMA_EDIT_SCREEN,
async (SchemaId: string) => ({
SchemaId,
}),
),
onSaveForm = useNavAction2(
useContext(FormsContext).routes.FORM_LIST_SCREEN,
async () => ({}),
),
}) =>
form === undefined || schema === undefined ? (
) : form === null || schema === null ? (
No form
) : schema.schema ? (
<>
setForm((prev) => ({
...prev,
data:
typeof data === "function"
? data(prev?.data ?? defaultJsonFormDataString)
: data,
}))),
]}
schemaString={[schema.schema ?? defaultFormSchemaString]}
/>
Save
>
) : (
<>
This form design has not been created yet.
{onEditSchema && (
onEditSchema(schema.id!)}>
Edit Form Design
)}
>
);