Modal
Initialisation
Les boîtes de dialogue sont téléportées à la racine du projet dans le fichier +layout.svelte
Il faut donc importer le conteneur de boîte pour activer le fonctionnement du système.
/src/routes/+layout.svelte
<script>
import { ModalContainer } from 'gros/modal'
let { children } = $props()
</script>
{@render children()}
<ModalContainer/>
Créer une boîte de dialogue
Pour l’exemple nous créons un composant de type boîte de dialogue nommé ExampleModal.svelte
<script lang="ts">import { Modal } from '$lib/modal';
let { close, props } = $props();
const save = () => {
close();
alert('You clicked on "save" button');
};
</script>
<Modal icon="account_circle" title="User informations">
<p>Some content</p>
<b>User</b>
<ul>
<li>{props.id}</li>
<li>{props.name}</li>
<li>{props.email}</li>
</ul>
{#snippet footer()}
<button onclick={save}>Save</button>
<button onclick={close}>Cancel</button>
{/snippet}
</Modal>
Déclencher l’ouverture de la boîte
Pour déclencher l’ouverture de la boîte de dialogue exposée ci-dessus, nous utilisons la fonction open
qui prend 2 paramètres :
- Un composant svelte :
ExampleModal
- Des données
props
à transmettre au composant (optionnel)
<script>
import { modal } from 'gros/modal'
import ExampleModal from './ExampleModal.svelte'
</script>
<button onclick={() => modal.open(ExampleModal, {
id: 1,
name: 'John Doe',
email: 'john.doe@live.com'
})}>
OPEN
</button>