Skip to content

Commit 2171d99

Browse files
feat!: Migrate Back button to Svelte 5 (#631)
# Motivation Migrating component Back button to Svelte 5. # Changes - Migrate events in `Back` component, using `stopPropagation` wrapper. - Adapt the usage in `Header` component: it will need to dispatch the old event `nnsBack`. We will remove it when we migrate it to Svelte 5. # Screenshots Current tests are sufficient.
1 parent 1caa5f3 commit 2171d99

File tree

3 files changed

+18
-6
lines changed

3 files changed

+18
-6
lines changed

src/lib/components/Back.svelte

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,20 @@
11
<script lang="ts">
22
import IconBack from "$lib/icons/IconBack.svelte";
33
import { i18n } from "$lib/stores/i18n";
4-
import { createEventDispatcher } from "svelte";
4+
import { stopPropagation } from "$lib/utils/event-modifiers.utils";
5+
import type { OnEventCallback } from "$lib/types/event-modifiers";
56
6-
const dispatch = createEventDispatcher();
7+
interface Props {
8+
onBack: OnEventCallback;
9+
}
10+
11+
let { onBack }: Props = $props();
712
</script>
813

914
<button
1015
class="back icon-only"
1116
data-tid="back"
12-
on:click|stopPropagation={() => dispatch("nnsBack")}
17+
onclick={stopPropagation(onBack)}
1318
aria-label={$i18n.core.back}><IconBack /></button
1419
>
1520

src/lib/components/Header.svelte

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,22 @@
33
import MenuButton from "$lib/components/MenuButton.svelte";
44
import Back from "$lib/components/Back.svelte";
55
import { layoutContentTopHidden } from "$lib/stores/layout.store";
6+
import { createEventDispatcher } from "svelte";
67
78
export let back = false;
9+
10+
const dispatch = createEventDispatcher();
11+
12+
const onBack = () => {
13+
dispatch("nnsBack");
14+
};
815
</script>
916

1017
<header data-tid="header-component" class:hidden={$layoutContentTopHidden}>
1118
<Toolbar>
1219
<svelte:fragment slot="start">
1320
{#if back}
14-
<Back on:nnsBack />
21+
<Back {onBack} />
1522
{:else}
1623
<MenuButton />
1724
{/if}

src/tests/lib/components/Back.spec.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ describe("Back", () => {
66
it("should forward the click event", () =>
77
new Promise<void>((done) => {
88
const { getByTestId } = render(Back, {
9-
events: {
10-
nnsBack: () => done(),
9+
props: {
10+
onBack: done,
1111
},
1212
});
1313

0 commit comments

Comments
 (0)