Modals

Open via Phoenix.LiveView.JS.show; close on Escape, backdrop click, or explicit button.

Preview

React preview

LiveView (HEEx)

alias DesignSystem.UI.Modals
alias Phoenix.LiveView.JS
import GoodbonesWeb.CoreComponents, only: [show: 1]

<Buttons.button phx-click={show("#confirm-modal")}>Confirm</Buttons.button>

<Modals.modal id="confirm-modal">
  <Modals.modal_close_button modal_id="confirm-modal" />
  <h3 class="text-base font-semibold text-gray-900 dark:text-white">
    Confirm action
  </h3>
  <p class="mt-2 text-sm text-gray-500 dark:text-gray-400">
    Are you sure?
  </p>
  <Buttons.button
    class="mt-4 w-full"
    phx-click={JS.exec("data-cancel", to: "#confirm-modal")}
  >
    OK
  </Buttons.button>
</Modals.modal>

React (JSX)

import { useState } from "react"
import { Button, Modal } from "../ui/index.mjs"

function Confirm() {
  const [open, setOpen] = useState(false)
  return (
    <>
      <Button onClick={() => setOpen(true)}>Confirm</Button>
      <Modal
        open={open}
        onClose={setOpen}
        title="Confirm action"
        footer={<Button onClick={() => setOpen(false)}>OK</Button>}
      >
        Are you sure?
      </Modal>
    </>
  )
}