diff --git a/frontend/src/routes/persons/[id]/edit/+page.server.ts b/frontend/src/routes/persons/[id]/edit/+page.server.ts index 6b5f9ebc..13e39509 100644 --- a/frontend/src/routes/persons/[id]/edit/+page.server.ts +++ b/frontend/src/routes/persons/[id]/edit/+page.server.ts @@ -12,14 +12,17 @@ export async function load({ params, fetch, locals }) { const { id } = params; const api = createApiClient(fetch); - const result = await api.GET('/api/persons/{id}', { params: { path: { id } } }); + const [result, aliasesResult] = await Promise.all([ + api.GET('/api/persons/{id}', { params: { path: { id } } }), + api.GET('/api/persons/{id}/aliases', { params: { path: { id } } }) + ]); if (!result.response.ok) { const code = (result.error as unknown as { code?: string })?.code; throw error(result.response.status, getErrorMessage(code)); } - return { person: result.data! }; + return { person: result.data!, aliases: aliasesResult.data ?? [] }; } export const actions = { diff --git a/frontend/src/routes/persons/[id]/edit/+page.svelte b/frontend/src/routes/persons/[id]/edit/+page.svelte index a3483e4b..ef308f63 100644 --- a/frontend/src/routes/persons/[id]/edit/+page.svelte +++ b/frontend/src/routes/persons/[id]/edit/+page.svelte @@ -3,6 +3,7 @@ import { m } from '$lib/paraglide/messages.js'; import { enhance } from '$app/forms'; import PersonEditForm from './PersonEditForm.svelte'; import PersonEditSaveBar from './PersonEditSaveBar.svelte'; +import NameHistoryEditCard from './NameHistoryEditCard.svelte'; import PersonDangerZone from './PersonDangerZone.svelte'; let { data, form } = $props(); @@ -49,8 +50,15 @@ const person = $derived(data.person); - - + + + + diff --git a/frontend/src/routes/persons/[id]/edit/NameHistoryEditCard.svelte b/frontend/src/routes/persons/[id]/edit/NameHistoryEditCard.svelte new file mode 100644 index 00000000..f62ac094 --- /dev/null +++ b/frontend/src/routes/persons/[id]/edit/NameHistoryEditCard.svelte @@ -0,0 +1,231 @@ + + +
+

+ {m.person_alias_heading()} +

+ + {#if sorted.length === 0} +

{m.person_alias_empty()}

+ {:else} +
    + {#each sorted as alias (alias.id)} +
  • + + {typeLabel(alias.type)} + + {alias.firstName ?? personFirstName} + {alias.lastName} + + + {#if canWrite} + + {/if} +
  • + {/each} +
+ {/if} + + {#if canWrite} +
+

+ {m.person_alias_add_heading()} +

+ + {#if addError} +

{addError}

+ {/if} + +
+ + + + + + +
+ +
+
+
+ {/if} +
+ +{#if showDeleteModal} +
+
+

{m.person_alias_delete_title()}

+

{m.person_alias_delete_body()}

+
+ + +
+
+
+{/if}