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

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

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)

See Popup for full API details.

Haxall 4.0.6 ∙ 21-Jul-2026 09:48 EDT