Packages
moon
2.87.6
2.90.5
retired
2.90.4
2.90.3
2.90.2
2.90.1
2.90.0
2.89.4
2.89.1
2.89.0
2.88.0
2.87.11
2.87.10
2.87.9
2.87.8
2.87.7
2.87.6
2.87.5
2.87.4
2.87.3
2.87.2
2.87.1
2.87.0
2.86.1
2.86.0
2.85.1
2.85.0
2.84.0
2.83.0
2.82.0
2.81.4
2.81.3
2.81.2
2.81.1
2.81.0
2.80.2
2.80.1
2.80.0
2.79.13
2.79.12
2.79.11
2.79.10
2.79.9
2.79.8
2.79.7
2.79.6
2.79.5
2.79.4
2.79.3
2.79.2
2.79.1
2.79.0
2.78.4
2.78.3
2.78.2
2.78.1
2.78.0
2.77.0
2.76.5
2.76.4
2.76.3
2.76.2
2.76.1
2.76.0
2.75.0
2.74.1
2.74.0
2.73.8
2.73.7
2.73.6
2.73.5
2.73.4
2.73.3
2.73.2
2.73.1
2.73.0
2.72.5
2.72.4
2.72.3
2.72.2
2.72.1
2.72.0
2.71.1
2.71.0
2.70.0
2.69.2
2.69.1
2.69.0
2.68.11
2.68.10
Components-based design system written in elixir
Current section
Files
Jump to
Current section
Files
lib/moon/design/dropdown/trigger.ex
defmodule Moon.Design.Dropdown.Trigger do
@moduledoc "Element that triggers Dropdown component, renders with no HTML tag"
use Moon.StatelessComponent, slot: "trigger"
@doc "Title to be shown when no defaul slot given"
prop(title, :string)
@doc "If the trigger is open. Should be taken from context"
prop(is_open, :boolean, from_context: :is_open)
@doc "Event that fired when trigger is clicked"
prop(on_click, :event, from_context: :on_trigger)
@doc "Data-testid attribute for HTML tag"
prop(testid, :string)
@doc "Additional Tailwind classes"
prop(class, :css_class)
@doc "If the item should be marked as disabled"
prop(disabled, :boolean, from_context: :disabled)
@doc "Inner content of the component"
slot(default)
def render(assigns) do
~F"""
<div
:on-click={(!@disabled && @on_click) || nil}
data-testid={@testid}
aria-haspopup="true"
aria-expanded={@is_open}
class={merge([["cursor-pointer": !@disabled], @class])}
>
<#slot>{@title}</#slot>
</div>
"""
end
end