defmodule Moon.Design.Drawer.Panel do
@moduledoc false
use Moon.StatelessComponent, slot: "panel"
slot(default)
prop(class, :css_class)
prop(testid, :string)
prop(id, :string)
prop(position, :string,
values!: [
"top",
"bottom",
"start",
"end"
],
default: "end"
)
# inner API
prop(on_close, :event, from_context: :on_close)
def render(assigns) do
~F"""
<#slot />
"""
end
defp animate_enter_class(position) do
case position do
"top" -> "animate-drawer_enter_top"
"bottom" -> "animate-drawer_enter_bottom"
"start" -> "ltr:animate-drawer_enter_left rtl:animate-drawer_enter_right"
"end" -> "ltr:animate-drawer_enter_right rtl:animate-drawer_enter_left"
end
end
defp animate_leave_class(position) do
case position do
"top" -> "animate-drawer_leave_top"
"bottom" -> "animate-drawer_leave_bottom"
"start" -> "ltr:animate-drawer_leave_left rtl:animate-drawer_leave_right"
"end" -> "ltr:animate-drawer_leave_right rtl:animate-drawer_leave_left"
end
end
end