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