mirror of
https://github.com/BradNut/svelte-library
synced 2025-09-08 17:40:21 +00:00
Animations on the toast messages and remove on click.
This commit is contained in:
parent
6af33c27d2
commit
b1fd5a59af
3 changed files with 20 additions and 5 deletions
|
|
@ -1,12 +1,20 @@
|
||||||
<script>
|
<script>
|
||||||
|
import { fly, fade } from 'svelte/transition';
|
||||||
|
import { flip } from 'svelte/animate';
|
||||||
import Portal from '../Portal.svelte';
|
import Portal from '../Portal.svelte';
|
||||||
import { toast } from './toast';
|
import { toast } from './toast';
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<Portal>
|
<Portal>
|
||||||
<div class="toast-wrapper">
|
<div class="toast-wrapper">
|
||||||
{#each $toast as message}
|
{#each $toast as message (message)}
|
||||||
<div class="toast">
|
<div
|
||||||
|
on:click={toast.remove}
|
||||||
|
animate:flip
|
||||||
|
out:fade
|
||||||
|
in:fly={{ opacity: 0, x: 100 }}
|
||||||
|
class="toast"
|
||||||
|
>
|
||||||
<p>{message}</p>
|
<p>{message}</p>
|
||||||
</div>
|
</div>
|
||||||
{/each}
|
{/each}
|
||||||
|
|
|
||||||
|
|
@ -6,10 +6,17 @@ const newToast = () => {
|
||||||
function send(message) {
|
function send(message) {
|
||||||
update((state) => {
|
update((state) => {
|
||||||
return [...state, message];
|
return [...state, message];
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
return { subscribe, send };
|
function remove() {
|
||||||
|
update((state) => {
|
||||||
|
let [first, ...rest] = state;
|
||||||
|
return [...rest];
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return { subscribe, send, remove };
|
||||||
}
|
}
|
||||||
|
|
||||||
export const toast = newToast();
|
export const toast = newToast();
|
||||||
|
|
@ -27,7 +27,7 @@
|
||||||
</Modal>
|
</Modal>
|
||||||
|
|
||||||
<Toast />
|
<Toast />
|
||||||
<button on:click={() => toast.send('New Message')}>New Toast</button>
|
<button on:click={() => toast.send('New Message' + Math.random())}>New Toast</button>
|
||||||
|
|
||||||
<!-- <button on:click={() => (isModalOpen = true)}>Open Modal Form</button> -->
|
<!-- <button on:click={() => (isModalOpen = true)}>Open Modal Form</button> -->
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue