feat(frontend): add field editing

This commit is contained in:
Sam 2023-03-14 00:42:44 +01:00
parent 1647ec16a4
commit 37fe5813f0
Signed by: sam
GPG key ID: B4EF20DDE721CAA1
2 changed files with 127 additions and 0 deletions

View file

@ -16,6 +16,7 @@
import { encode } from "base64-arraybuffer";
import { apiFetchClient } from "$lib/api/fetch";
import IconButton from "$lib/components/IconButton.svelte";
import EditableField from "../EditableField.svelte";
const MAX_AVATAR_BYTES = 1_000_000;
@ -196,6 +197,13 @@
else links = [...links.slice(0, index - 1), ...links.slice(0, index + 1)];
};
const removeField = (index: number) => {
if (fields.length === 1) fields = [];
else if (index === 0) fields = fields.slice(1);
else if (index === fields.length - 1) fields = fields.slice(0, fields.length - 1);
else fields = [...fields.slice(0, index - 1), ...fields.slice(0, index + 1)];
};
const updateUser = async () => {
try {
const resp = await apiFetchClient<MeUser>("/users/@me", "PATCH", {
@ -419,5 +427,18 @@
</div>
</div>
</div>
<hr />
<h4>
Fields <Button on:click={() => (fields = [...fields, { name: "New field", entries: [] }])}>
Add new field
</Button>
</h4>
</div>
<div class="grid gap-3">
<div class="row row-cols-1 row-cols-md-2">
{#each fields as _, index}
<EditableField bind:field={fields[index]} deleteField={() => removeField(index)} />
{/each}
</div>
</div>
{/if}