Files
lucent-laravel/front/js/entry/RecordEditEntry/RecordEditEntry.svelte
T

75 lines
2.6 KiB
Svelte
Raw Normal View History

2026-01-09 16:54:42 +02:00
<script>
import ChannelLayout from "../../layouts/ChannelLayout.svelte";
import { onMount } from "svelte";
2026-01-09 19:19:43 +02:00
2026-01-09 16:54:42 +02:00
import LocaleChooser from "./LocaleChooser.svelte";
2026-01-09 19:19:43 +02:00
import RecordForm from "./RecordForm.svelte";
2026-01-09 19:08:00 +02:00
import RecordStatus from "./RecordStatus.svelte";
import PublishingOptions from "./PublishingOptions.svelte";
2026-01-09 16:54:42 +02:00
import { getSelectedLocales } from "./locale.svelte.js";
let { channel, user, data } = $props();
let selectedLocales = $state(getSelectedLocales());
let record = $state(data.record);
2026-01-09 19:19:43 +02:00
let showPublished = $state(false);
2026-01-09 16:54:42 +02:00
function handleLocaleChange() {
selectedLocales = getSelectedLocales();
}
2026-01-12 19:25:40 +02:00
function toggleLiveData() {
if (!showPublished) {
// to avoid state sync
Turbo.visit(window.location.href);
}
}
2026-01-09 16:54:42 +02:00
</script>
<!-- <svelte:window on:beforeunload={beforeUnload} /> -->
<ChannelLayout {body} {channel} schemas={data.schemas} {user}></ChannelLayout>
{#snippet body()}
2026-01-09 19:08:00 +02:00
<RecordStatus {channel} {record} status={data.recordStatus}></RecordStatus>
<div style="display:flex;gap:20px;justify-content: space-between;">
<LocaleChooser {channel} onLocaleChange={handleLocaleChange}
></LocaleChooser>
2026-01-09 19:29:50 +02:00
{#if record.publishedBy}
<label>
<input
bind:checked={showPublished}
2026-01-12 19:25:40 +02:00
onchange={toggleLiveData}
2026-01-09 19:29:50 +02:00
type="checkbox"
role="switch"
/>
Show Live Data
</label>
{/if}
2026-01-09 19:08:00 +02:00
<PublishingOptions {record} status={data.recordStatus}
></PublishingOptions>
</div>
2026-01-09 19:19:43 +02:00
{#if !showPublished}
<fieldset disabled={data.recordStatus === "trashed"}>
<RecordForm
{channel}
fields={data.fields}
2026-01-10 13:40:33 +02:00
edgeRecordPreviews={data.edgeRecordPreviewsDraft}
2026-01-13 18:20:01 +02:00
filesPreviews={data.filesPreviewsDraft}
2026-01-09 19:19:43 +02:00
{record}
{selectedLocales}
validationErrors={data.validationErrors}
fieldData={data.draftData}
></RecordForm>
</fieldset>
{:else}
<fieldset disabled={true}>
<RecordForm
{channel}
fields={data.fields}
2026-01-10 13:40:33 +02:00
edgeRecordPreviews={data.edgeRecordPreviewsLive}
2026-01-13 18:20:01 +02:00
filesPreviews={data.filesPreviewsLive}
2026-01-09 19:19:43 +02:00
{record}
{selectedLocales}
validationErrors={data.validationErrors}
fieldData={data.liveData}
></RecordForm>
</fieldset>
{/if}
2026-01-09 16:54:42 +02:00
{/snippet}