publish operations

This commit is contained in:
2026-01-09 19:08:00 +02:00
parent 84cd04c94f
commit 0ed0106103
14 changed files with 519 additions and 106 deletions
@@ -3,6 +3,8 @@
import { onMount } from "svelte";
import TextField from "./fields/TextField.svelte";
import LocaleChooser from "./LocaleChooser.svelte";
import RecordStatus from "./RecordStatus.svelte";
import PublishingOptions from "./PublishingOptions.svelte";
import { getSelectedLocales } from "./locale.svelte.js";
let { channel, user, data } = $props();
let selectedLocales = $state(getSelectedLocales());
@@ -16,42 +18,52 @@
<!-- <svelte:window on:beforeunload={beforeUnload} /> -->
<ChannelLayout {body} {channel} schemas={data.schemas} {user}></ChannelLayout>
{#snippet body()}
<LocaleChooser {channel} onLocaleChange={handleLocaleChange}
></LocaleChooser>
{#each data.fields as field}
<div style="display:flex;gap:20px;">
{#if field.type === "text"}
<TextField
{channel}
{record}
errors={data.validationErrors.filter(
(f) => f.id === field.fieldId && f.locale === "main",
)}
schemaField={field}
locale="main"
dataField={data.draftData.find(
(f) => f.id === field.id && f.locale === "main",
)}
></TextField>
{#if field.translatable}
{#each selectedLocales as locale (locale)}
<TextField
{channel}
{record}
errors={data.validationErrors.filter(
(f) =>
f.fieldId === field.id &&
f.locale === locale,
)}
schemaField={field}
{locale}
dataField={data.draftData.find(
(f) => f.id === field.id && f.locale === locale,
)}
></TextField>
{/each}
<RecordStatus {channel} {record} status={data.recordStatus}></RecordStatus>
<div style="display:flex;gap:20px;justify-content: space-between;">
<LocaleChooser {channel} onLocaleChange={handleLocaleChange}
></LocaleChooser>
<PublishingOptions {record} status={data.recordStatus}
></PublishingOptions>
</div>
<fieldset disabled={data.recordStatus === "trashed"}>
{#each data.fields as field}
<div style="display:flex;gap:20px;">
{#if field.type === "text"}
<TextField
{channel}
{record}
validationError={data.validationErrors.find(
(f) =>
f.fieldId === field.id && f.locale === "main",
)}
schemaField={field}
locale="main"
dataField={data.draftData.find(
(f) => f.id === field.id && f.locale === "main",
)}
></TextField>
{#if field.translatable}
{#each selectedLocales as locale (locale)}
<TextField
{channel}
{record}
validationError={data.validationErrors.find(
(f) =>
f.fieldId === field.id &&
f.locale === locale,
)}
schemaField={field}
{locale}
dataField={data.draftData.find(
(f) =>
f.id === field.id &&
f.locale === locale,
)}
></TextField>
{/each}
{/if}
{/if}
{/if}
</div>
{/each}
</div>
{/each}
</fieldset>
{/snippet}