Modals



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'
</script>


<slot/>
<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>
    import { Modal } from 'gros/modal'
    export let close
    export let props

    const user = 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>{user.id}</li>
        <li>{user.name}</li>
        <li>{user.email}</li>
    </ul>

    <svelte:fragment slot="footer">
        <button on:click={save}>Save</button>
        <button on:click={close}>Cancel</button>
    </svelte:fragment>
</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 on:click={() => modal.open(ExampleModal, { 
    id: 1, 
    name: 'John Doe', 
    email: 'john.doe@live.com' 
})}>
    OPEN
</button>