5. Modals

Overview

DomKit provides two classes for creating modal content: Dialog and Popup.

Dialog

Dialog opens a modal window above page content.

dialog := Dialog { it.title = "Hello" }
dialog.add(SashBox
{
  it.dir = Dir.down
  it.sizes = ["auto", "auto"]
  it.style->padding = "12px"
  Box
  {
    it.text= "Lorem ipsum dolor sit amet, consectetur adipiscing
              elit. Etiam accumsan, felis vestibulum elementum
              efficitur, ligula sem porta magna, sit amet semper
              lacus lorem vitae lacus."
  },
  FlowBox
  {
    it.style->paddingTop = "12px"
    it.halign = Align.right
    it.gaps = ["4px"]
    Button { it.text="OK";     it.onAction { dialog.close; echo("# OK") }},
    Button { it.text="Cancel"; it.onAction { dialog.close; echo("# Cancel") }},
  },
})

dialog.open

Dialog

To modify the default size of dialog, override the width and height styles:

Dialog
{
  it.style->width  = "600px"
  it.style->height = "400px"
  ...
}

To receive callbacks with Dialog is mounted into and removed from the DOM, use onOpen and onClose:

dialog.onOpen  { echo("Opened!") }
dialog.onClose { echo("Closed!") }

See Dialog for full API details.

Popup opens a popup window above page content. The popup is dismissed by clicking anywhere outside of the popup, or by pressing the Esc key:

popup := Popup
{
  it.style->width = "400px"
  it.style->padding = "12px"
  Box
  {
    it.text= "Lorem ipsum dolor sit amet, consectetur adipiscing
              elit. Etiam accumsan, felis vestibulum elementum
              efficitur, ligula sem porta magna, sit amet semper
              lacus lorem vitae lacus."
  },
}

popup.open(100, 100)

Popup

See Popup for full API details.