Files
lucent-laravel/front/js/svelte/records/FormField.svelte
T

115 lines
3.4 KiB
Svelte
Raw Normal View History

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 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">
2026-05-06 18:11:42 +03:00
<FieldHeader {field} {id} />
2024-08-18 19:20:53 +03:00
{#if field.info.name === "reference" && field.layout === "tags"}
2026-05-06 18:11:42 +03:00
<ReferenceTags bind:graph {id} {record} {field} {validationErrors} />
2023-10-02 23:10:49 +03:00
{:else if field.info.name === "reference"}
2026-05-06 18:11:42 +03:00
<Reference bind:graph {id} {record} {field} {validationErrors} />
{:else if field.info.name === "file"}
<!-- <File bind:graph {record} {field} {validationErrors} /> -->
<File
bind:value={data[field.name]}
2023-10-02 23:10:49 +03:00
{record}
2026-05-06 18:11:42 +03:00
{id}
2023-10-02 23:10:49 +03:00
{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
2026-05-06 18:11:42 +03:00
bind:value={data[field.name]}
{field}
{id}
{validationErrors}
{isCreateMode}
2023-10-06 18:47:50 +03:00
/>
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
2026-05-06 18:11:42 +03:00
bind:value={data[field.name]}
{field}
{validationErrors}
{record}
2024-08-18 17:23:18 +03:00
/>
2024-09-07 15:31:56 +03:00
{:else if field.info.name === "markdown"}
<Markdown
2026-05-06 18:11:42 +03:00
bind:value={data[field.name]}
{schema}
{field}
{validationErrors}
{isCreateMode}
bind:graph
{record}
2024-09-07 15:31:56 +03:00
/>
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>