2023-10-02 23:10:49 +03:00
|
|
|
<script>
|
|
|
|
|
import Text from "./elements/Text.svelte";
|
2023-10-06 18:47:50 +03:00
|
|
|
import Slug from "./elements/Slug.svelte";
|
2023-10-02 23:10:49 +03:00
|
|
|
import Reference from "./elements/Reference.svelte";
|
|
|
|
|
import ReferenceInline from "./elements/ReferenceInline.svelte";
|
|
|
|
|
import Color from "./elements/Color.svelte";
|
|
|
|
|
import Checkbox from "./elements/Checkbox.svelte";
|
|
|
|
|
import Number from "./elements/Number.svelte";
|
|
|
|
|
import Url from "./elements/Url.svelte";
|
|
|
|
|
import Date from "./elements/Date.svelte";
|
|
|
|
|
import UUID from "./elements/UUID.svelte";
|
|
|
|
|
import File from "./elements/File.svelte";
|
|
|
|
|
import Textarea from "./elements/Textarea.svelte";
|
|
|
|
|
import Datetime from "./elements/Datetime.svelte";
|
|
|
|
|
import RichEditor from "./elements/RichEditor.svelte";
|
|
|
|
|
import Json from "./elements/JSON.svelte";
|
2023-10-23 18:05:06 +03:00
|
|
|
import Markdown from "./elements/Markdown.svelte";
|
2023-10-02 23:10:49 +03:00
|
|
|
import FieldHeader from "./elements/FieldHeader.svelte";
|
2023-10-07 21:18:18 +03:00
|
|
|
import ReferenceTags from "./elements/ReferenceTags.svelte";
|
2023-10-02 23:10:49 +03:00
|
|
|
|
|
|
|
|
const formElements = {
|
|
|
|
|
text: Text,
|
2023-10-06 18:47:50 +03:00
|
|
|
slug: Slug,
|
2023-10-02 23:10:49 +03:00
|
|
|
textarea: Textarea,
|
|
|
|
|
rich: RichEditor,
|
|
|
|
|
color: Color,
|
|
|
|
|
checkbox: Checkbox,
|
|
|
|
|
number: Number,
|
|
|
|
|
url: Url,
|
|
|
|
|
date: Date,
|
|
|
|
|
datetime: Datetime,
|
|
|
|
|
uuid: UUID,
|
|
|
|
|
json: Json,
|
2023-10-23 18:05:06 +03:00
|
|
|
markdown: Markdown,
|
2023-10-02 23:10:49 +03:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export let field;
|
|
|
|
|
export let data;
|
|
|
|
|
export let schema;
|
|
|
|
|
export let record;
|
|
|
|
|
export let graph;
|
|
|
|
|
export let validationErrors;
|
|
|
|
|
export let isCreateMode;
|
|
|
|
|
let formElement = formElements[field.info.name];
|
|
|
|
|
const id = `field-${field.name}-${record.id}`;
|
|
|
|
|
</script>
|
|
|
|
|
|
2024-08-15 18:52:53 +03:00
|
|
|
<div class="editor-field">
|
|
|
|
|
<FieldHeader {field} {id}/>
|
2023-10-02 23:10:49 +03:00
|
|
|
{#if field.info.name === "reference" && field.layout === "inline"}
|
|
|
|
|
<ReferenceInline
|
|
|
|
|
bind:graph
|
|
|
|
|
{record}
|
|
|
|
|
{field}
|
|
|
|
|
{validationErrors}
|
|
|
|
|
/>
|
2023-10-07 21:18:18 +03:00
|
|
|
{:else if field.info.name === "reference" && field.layout === "tags"}
|
|
|
|
|
<ReferenceTags
|
|
|
|
|
bind:graph
|
|
|
|
|
{id}
|
|
|
|
|
{record}
|
|
|
|
|
{field}
|
|
|
|
|
{validationErrors}
|
|
|
|
|
/>
|
2023-10-02 23:10:49 +03:00
|
|
|
{:else if field.info.name === "reference"}
|
|
|
|
|
<Reference
|
|
|
|
|
bind:graph
|
2023-10-13 21:06:23 +03:00
|
|
|
{id}
|
2023-10-02 23:10:49 +03:00
|
|
|
{record}
|
|
|
|
|
{field}
|
|
|
|
|
{validationErrors}
|
|
|
|
|
/>
|
|
|
|
|
{:else if field.info.name === "file"}
|
|
|
|
|
<File bind:graph {record} {field} {validationErrors}/>
|
|
|
|
|
{:else if field.info.name === "text"}
|
|
|
|
|
<Text
|
|
|
|
|
bind:value={data[field.name]}
|
|
|
|
|
{field}
|
|
|
|
|
{id}
|
|
|
|
|
{validationErrors}
|
|
|
|
|
{isCreateMode}
|
|
|
|
|
/>
|
2023-10-06 18:47:50 +03:00
|
|
|
{:else if field.info.name === "slug"}
|
|
|
|
|
<Slug
|
|
|
|
|
bind:value={data[field.name]}
|
|
|
|
|
{field}
|
|
|
|
|
{id}
|
|
|
|
|
{validationErrors}
|
|
|
|
|
{isCreateMode}
|
|
|
|
|
/>
|
2023-10-02 23:10:49 +03:00
|
|
|
{:else if field.info.name === "textarea"}
|
|
|
|
|
<Textarea
|
|
|
|
|
bind:value={data[field.name]}
|
|
|
|
|
{field}
|
|
|
|
|
{validationErrors}
|
|
|
|
|
{isCreateMode}
|
|
|
|
|
{id}
|
|
|
|
|
/>
|
2024-08-18 17:23:18 +03:00
|
|
|
{:else if field.info.name === "rich"}
|
|
|
|
|
<RichEditor
|
|
|
|
|
bind:value={data[field.name]}
|
|
|
|
|
{schema}
|
|
|
|
|
{field}
|
|
|
|
|
{validationErrors}
|
|
|
|
|
{isCreateMode}
|
|
|
|
|
bind:graph
|
|
|
|
|
{record}
|
|
|
|
|
/>
|
2023-10-02 23:10:49 +03:00
|
|
|
{:else}
|
|
|
|
|
<svelte:component
|
|
|
|
|
this={formElement}
|
|
|
|
|
bind:value={data[field.name]}
|
|
|
|
|
{schema}
|
|
|
|
|
{field}
|
|
|
|
|
{validationErrors}
|
|
|
|
|
{isCreateMode}
|
|
|
|
|
{id}
|
|
|
|
|
/>
|
|
|
|
|
{/if}
|
|
|
|
|
</div>
|