Collapsible.svelte 396 B

123456789101112131415161718
  1. <script lang="ts">
  2. import { slide } from 'svelte/transition';
  3. import { quintOut } from 'svelte/easing';
  4. export let open = false;
  5. export let className = '';
  6. </script>
  7. <div class={className}>
  8. <button on:click={() => (open = !open)}>
  9. <slot />
  10. </button>
  11. {#if open}
  12. <div transition:slide={{ duration: 300, easing: quintOut, axis: 'y' }}>
  13. <slot name="content" />
  14. </div>
  15. {/if}
  16. </div>