defmodule MoonWeb.Pages.Components.Dialog.PopoverPage.PopoverExample do @moduledoc false use MoonWeb, :stateful_component alias Moon.Components.Button alias Moon.Components.Popover prop(placement, :string, required: true) data(show, :boolean, default: false) def render(assigns) do ~F"""
<:content>
{"#{@placement}"}
""" end def handle_event("toggle_show", _, socket = %{assigns: %{show: show}}) do {:noreply, socket |> assign(show: !show)} end end defmodule MoonWeb.Pages.Components.Dialog.PopoverPage do @moduledoc false use MoonWeb, :live_view alias MoonWeb.Components.Facing.DeprecationWarning alias Moon.Autolayouts.LeftToRight alias MoonWeb.Components.ExampleAndCode alias MoonWeb.Components.Page alias MoonWeb.Pages.Components.Dialog.PopoverPage.PopoverExample alias MoonWeb.Components.ComponentPageDescription alias MoonWeb.Components.PropsTable alias MoonWeb.Components.Facing.DeprecationWarning data(breadcrumbs, :any, default: [ %{ to: "#", name: "Components" }, %{ to: "/components/popover", name: "Popover" } ] ) data(props_info_array, :list, default: [ %{ :name => ~c"content", :type => ~c"slot", :required => ~c"Yes", :default => ~c"-", :description => ~c"Content of popover" }, %{ :name => ~c"default", :type => ~c"slot", :required => ~c"Yes", :default => ~c"-", :description => ~c"Content of popover toggle element" }, %{ :name => ~c"default_state", :type => ~c"-", :required => ~c"-", :default => ~c"-", :description => ~c"TODO - Open/Closed popover by default" }, %{ :name => ~c"close_on_click_outside", :type => ~c"-", :required => ~c"-", :default => ~c"-", :description => ~c"TODO - Close popover if clicked outside" }, %{ :name => ~c"placement", :type => ~c"top-start | top | top-end | right-start | right | right-end | bottom-start | bottom | bottom-end | left-start | left | left-end", :required => ~c"No", :default => ~c"bottom-start", :description => ~c"TODO - Placement of popover" }, %{ :name => ~c"min_width", :type => ~c"-", :required => ~c"-", :default => ~c"-", :description => ~c"TODO - min-width value of popover (px)min-width value of popover (px)" }, %{ :name => ~c"max_width", :type => ~c"-", :required => ~c"-", :default => ~c"-", :description => ~c"TODO - max-width value of popover (px)" } ] ) def handle_params(_params, uri, socket) do {:noreply, assign(socket, uri: uri)} end def render(assigns) do ~F""" {#for placement <- [ "top-start", "top", "top-end", "right-start", "right", "right-end", "bottom-start", "bottom", "bottom-end", "left-start", "left", "left-end" ]} <:example> <:code> {get_popover_code(placement)} {/for} """ end def get_popover_code(placement) do """ Click Me <:content>... """ end end