defmodule Moon.Design.Modal do @moduledoc false use Moon.StatefulComponent prop(is_open, :boolean, default: false) data(is_closing, :boolean, default: false) slot(backdrop, required: true) slot(panel, required: true) prop(on_close, :event) prop(testid, :string) def render(assigns) do ~F"""
""" end def open(modal_id) do send_update(__MODULE__, id: modal_id, is_open: true) end def close(modal_id) do send_update(__MODULE__, id: modal_id, is_closing: true) end def handle_event("set_open", _, socket) do {:noreply, assign(socket, is_open: true)} end def handle_event("start_closing_modal", _, socket) do {:noreply, assign(socket, is_closing: true)} end def handle_event("stop_closing", _, socket) do {:noreply, assign(socket, is_closing: false)} end def handle_event("set_close", _, socket) do {:noreply, assign(socket, is_open: false, is_closing: false)} end end