expanded website settings

This commit is contained in:
Omer Sabic 2024-06-23 11:24:35 +02:00
parent 7aec066ef7
commit 84d04df159
2 changed files with 208 additions and 144 deletions

View File

@ -27,7 +27,7 @@
} else { } else {
// console.log(e.result); // console.log(e.result);
if (e.result.type === 'error') { if (e.result.type === 'error') {
// console.log(e.result.error); console.log(e.result.error);
toast.error( toast.error(
'Error when updating website. Message from server: ' + e.result.error.message 'Error when updating website. Message from server: ' + e.result.error.message
); );
@ -80,8 +80,9 @@
$: disable_autopublish = !$formData.auto_publish; $: disable_autopublish = !$formData.auto_publish;
</script> </script>
<div class="w-full max-w-7xl"> <div class="w-full">
<form method="post" use:enhance enctype="multipart/form-data"> <form method="post" use:enhance enctype="multipart/form-data">
<div class="max-w-7xl">
<input type="text" value={data.blog_info.id} name="id" readonly class="hidden" /> <input type="text" value={data.blog_info.id} name="id" readonly class="hidden" />
<div class="grid grid-cols-1 gap-16 md:grid-cols-2 md:grid-rows-1"> <div class="grid grid-cols-1 gap-16 md:grid-cols-2 md:grid-rows-1">
@ -281,9 +282,62 @@
</Form.Field> </Form.Field>
</div> </div>
</div> </div>
<div class="space-y-4">
<div class="flex items-center justify-between space-x-4 border-b px-4">
<h2 class="mb-4 text-2xl font-bold">Pages</h2>
</div>
<div>
<Form.Field {form} name="use_contact_page">
<Form.Control let:attrs>
<Form.Label class="text-right">Use contact page</Form.Label>
<div class="flex items-center justify-start">
<Switch {...attrs} bind:checked={$formData.use_contact_page} />
</div>
</Form.Control>
<Form.FieldErrors />
</Form.Field>
<Form.Field {form} name="contact_email">
<Form.Control let:attrs>
<Form.Label class="text-right">Contact email</Form.Label>
<div class="flex items-center justify-start">
<Input
{...attrs}
bind:value={$formData.contact_email}
readonly={!$formData.use_contact_page}
/>
</div>
</Form.Control>
<Form.FieldErrors />
</Form.Field>
<Form.Field {form} name="use_about_page">
<Form.Control let:attrs>
<Form.Label class="text-right">Use about page</Form.Label>
<div class="flex items-center justify-start">
<Switch {...attrs} bind:checked={$formData.use_about_page} />
</div>
</Form.Control>
<Form.FieldErrors />
</Form.Field>
<Form.Field {form} name="about_text">
<Form.Control let:attrs>
<Form.Label class="text-right">About text</Form.Label>
<div class="flex items-center justify-start">
<Textarea
{...attrs}
bind:value={$formData.about_text}
readonly={!$formData.use_about_page}
/>
</div>
</Form.Control>
<Form.FieldErrors />
</Form.Field>
</div> </div>
</div> </div>
<div class="mt-4"> </div>
</div>
</div>
<div class="mt-4 w-full border-t-[1px] border-t-gray-800 py-6 sticky bottom-0 bg-background">
<Form.Button disabled={!isTainted($tainted)}>Submit</Form.Button> <Form.Button disabled={!isTainted($tainted)}>Submit</Form.Button>
</div> </div>
</form> </form>

View File

@ -17,8 +17,11 @@ export const schema = z.object({
title: z.string(), title: z.string(),
subtitle: z.string(), subtitle: z.string(),
auto_publish: z.boolean(), auto_publish: z.boolean(),
use_contact_page: z.boolean(),
contact_email: z.string().email().nullable(),
use_about_page: z.boolean(),
about_text: z.string().nullable()
}).superRefine((data, ctx) => { }).superRefine((data, ctx) => {
console.log(data);
if (data.use_freebie) { if (data.use_freebie) {
if (!data.freebie_url) { if (!data.freebie_url) {
ctx.addIssue({ ctx.addIssue({
@ -35,4 +38,11 @@ export const schema = z.object({
// }); // });
// } // }
} }
if(data.use_contact_page && !data.contact_email) {
ctx.addIssue({
path: ['contact_email'],
message: "A contact email is required when the contact page is enabled",
code: "custom"
});
}
}); });