Dialog implementation as Svelte component

This component uses the standard HTML <dialog> element and adds some basic functionality to it.

For example it adds the possibility to

  • Click outside the dialog to close it.
  • Add a title via attribute.
  • Slots for custom header and/or footer.

Check out the implementation at github.com/shadovo/svelper/.../Dialog.svelte

Simple dialog

The follwing code will show the simplest of dialogs.

<Dialog title="Simple dialog" bind:show={showSimpleDialog}> <p>Hello world</p> </Dialog>

Simple dialog

Hello world

Dialog with custom header element

The follwing code will show a dialog with a custom header.

<Dialog bind:show={showCustomHeaderDialog}> <div slot="header" class="flex-row"> <img src={srcOscar} alt="Avatar of the author" height="50" width="50" /> <h4>Hi! It's me!</h4> </div> <p>Hello world</p> </Dialog>
Avatar of the author

Hi! It's me!

Hello world

Dialog with custom header and footer

The following code will show a dialog with a custom footer.

const acceptDialog = () => { acceptedDialogOption = true; showCustomFooterDialog = false; }; const declinedDialog = () => { acceptedDialogOption = false; showCustomFooterDialog = false; }; <Dialog bind:show={showCustomFooterDialog}> <div slot="header" class="flex-row"> <img src={srcOscar} alt="Avatar of the author" height="50" width="50" /> <h4>Hi! It's me!</h4> </div> <div class="flex"> <p>This is a dialog with custom header and footer.</p> </div> <div class="dialog__footer" slot="footer"> <button on:click={declinedDialog}>No way!</button> <button on:click={acceptDialog}>Sure!</button> </div> </Dialog>
Avatar of the author

Hi! It's me!

This is a dialog with custom header and footer.

Dialog with scroll

This will show a dialog with scroll

<Dialog bind:show={showScrollingDialog}> <div class="dialog__header" slot="header"> <h2>Hello!</h2> </div> <div class="flex"> {#each longTextParagraphs as paragraph} <p>{paragraph}</p> {/each} </div> </Dialog>

Hello!

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed efficitur fringilla lectus eget faucibus. Vivamus congue nibh ante. Morbi id turpis mollis, semper ligula a, efficitur neque. Cras nec arcu faucibus dui dictum rhoncus. Morbi sapien ligula, sodales eu efficitur ut, aliquet eu ligula. Ut euismod ullamcorper turpis, ac feugiat neque pellentesque eu. Vivamus ac sem nec urna venenatis placerat. Curabitur feugiat pharetra tempus. Nulla porttitor magna eget nisl porta, vitae auctor lacus hendrerit. Suspendisse congue ultrices nisl, posuere porta eros porta in.

Vivamus mattis vehicula libero ut pretium. Duis sed libero purus. Fusce libero est, tristique vitae faucibus et, semper eget massa. Curabitur malesuada justo eros, et consectetur nisi rhoncus et. Praesent at dapibus eros. Nullam mattis tortor at diam aliquet lacinia. Fusce vitae sagittis nisi, non posuere ex. Aliquam faucibus, felis ac congue ultrices, urna turpis molestie eros, ac vulputate magna tortor nec augue. Suspendisse potenti. Donec at nulla vitae ipsum vehicula feugiat at at neque.

Maecenas ornare augue ante, nec fermentum sapien posuere sit amet. Maecenas ut nulla dictum, egestas turpis vitae, rutrum erat. Pellentesque turpis nunc, placerat sit amet tortor a, dapibus eleifend ante. Sed volutpat et ante in cursus. Aenean vitae est a ante semper ultrices a aliquam risus. Etiam at gravida diam, vel dignissim velit. Vivamus aliquet et felis quis pellentesque. Integer luctus risus sem, in maximus urna efficitur a. Pellentesque rutrum eleifend leo. Sed eu neque augue. Duis ut magna commodo leo blandit vestibulum.

Pellentesque blandit neque ut velit commodo auctor. Etiam gravida eu justo nec scelerisque. Vivamus tincidunt tellus eget molestie mattis. Pellentesque in porta orci. Praesent sed venenatis libero. Fusce lorem leo, suscipit eget tristique id, vestibulum vel ante. Maecenas sodales interdum justo sit amet pulvinar. Curabitur fermentum ligula dui, eget malesuada erat ultricies ac.

Etiam a nisl eu ligula interdum tincidunt. Donec imperdiet libero ut sem faucibus, et auctor tellus tempor. Vivamus semper lacus lacus, id egestas dui molestie et. Ut a sodales augue. Donec interdum at ipsum in pharetra. Nunc odio dui, elementum pretium iaculis eleifend, aliquet viverra sem. Mauris non felis vel est imperdiet vehicula. Aenean elementum odio vel nibh viverra, sit amet facilisis ex luctus. Maecenas eu arcu ac quam semper imperdiet quis nec magna. Nulla posuere porta orci.

Cras ac mi ullamcorper, fermentum arcu non, tempus libero. Sed at ex et dolor tincidunt tempus sed non nibh. Morbi eget diam ultricies, interdum libero eget, tempus tortor. Curabitur augue ex, cursus at gravida at, feugiat quis nisl. Pellentesque eleifend felis id dolor vulputate, sit amet tincidunt velit suscipit. Nunc faucibus placerat est. Cras a magna porttitor, mattis urna sed, condimentum ipsum. Vivamus ut convallis nunc, at fringilla nisi. Nulla sed ante quis mi dapibus suscipit sed vel purus. Sed a augue non felis dignissim pharetra sed vitae justo. Phasellus faucibus sit amet justo imperdiet molestie. Duis maximus egestas pharetra. Curabitur quam mauris, viverra nec velit ac, euismod tincidunt tortor. Aliquam faucibus consectetur orci quis commodo.

Maecenas vulputate elit ipsum, vitae luctus arcu mollis vel. Nam maximus condimentum ornare. Sed rhoncus lacus nec erat dictum, et tristique dui aliquam. Donec at diam ut sem vulputate consectetur at at nibh. Nam sollicitudin nunc tellus, facilisis condimentum tellus eleifend vel. Morbi finibus tortor vel mi semper vehicula. Suspendisse potenti. Integer tristique auctor lorem eu suscipit.

Nunc eu aliquam lectus. Aliquam posuere, augue non tristique aliquam, turpis velit efficitur ante, sed tristique ex tortor ut turpis. Nullam finibus sodales mi, at bibendum lectus vestibulum quis. Pellentesque vitae finibus risus, et molestie purus. Nulla facilisi. Sed ut mollis purus, vitae auctor augue. Sed varius sed est quis ultrices. Fusce non massa quis lectus porta maximus nec eget enim. Aenean quis tortor blandit, hendrerit justo ut, cursus magna. Nullam porttitor turpis eu varius fringilla. Nam velit risus, gravida ut velit euismod, laoreet blandit nunc. Fusce finibus enim sit amet eros vestibulum, non sagittis felis ornare. Vivamus id neque mauris. Phasellus egestas tortor ac lectus dictum, vel ultrices sapien commodo. Integer rhoncus leo quis ultrices pellentesque.

Donec tincidunt hendrerit dolor, ac mollis nisi malesuada id. Ut ac magna et nisi efficitur interdum. Cras risus risus, sagittis vel facilisis sit amet, sollicitudin at augue. Curabitur mauris lorem, placerat at mi sed, blandit egestas augue. In hac habitasse platea dictumst. Phasellus maximus finibus dolor. Praesent ac eros nibh. Vivamus quam odio, feugiat quis nisl placerat, vehicula accumsan urna. Integer quam magna, porttitor in nisi eget, dignissim varius libero. Vivamus eu urna vulputate, tempus quam ac, ultrices augue. Maecenas dolor massa, fringilla a efficitur ut, hendrerit sit amet libero. Pellentesque placerat quam non enim cursus aliquam. Sed id gravida augue, sed hendrerit odio. Vivamus ornare nunc vel libero auctor varius. Mauris non tortor pharetra, tincidunt risus in, interdum magna. Donec eu tellus nec massa pretium interdum ac vel ipsum.

Interdum et malesuada fames ac ante ipsum primis in faucibus. Nullam viverra molestie sem. Maecenas tempus bibendum volutpat. Phasellus congue leo ac nunc suscipit, quis efficitur quam mollis. In hac habitasse platea dictumst. Nulla gravida, elit ac pretium pulvinar, justo metus tincidunt tellus, non vestibulum urna purus ornare sapien. Aliquam lacinia tristique diam, ut egestas libero tristique eget. Curabitur vel facilisis ante. Donec lacinia egestas urna, at consectetur ipsum tincidunt sed. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum pretium at felis eget tempor. Fusce vestibulum iaculis gravida. In enim mi, porta nec suscipit quis, dapibus eu urna. Curabitur sit amet eros in libero luctus aliquam ac et metus. Aenean sit amet nunc eleifend, ornare lectus vel, tincidunt sem.

Check out the code at github.com/shadovo/svelper/../Dialog.svelte

Thanks for checking out the site! Feel free to use any and all parts of the code available at github ♥ Oscar.