Current section
Files
Jump to
Current section
Files
lib/list.ex
defmodule Satsuma.List do
use Phoenix.Component
import Satsuma.Util
attr(:height, :string)
attr(:separator, :boolean, default: false)
slot(:inner_block, required: true)
def list(assigns) do
style =
styles(%{
"max-height: #{Map.get(assigns, :height, "0")}" => Map.get(assigns, :height, nil) != nil
})
classes =
class_names(%{
"satsuma_list--separator": assigns.separator
})
assigns = assign(assigns, style: style, classes: classes)
~H"""
<ul class="satsuma_list" style={@style} class={@classes}>
<%= render_slot(@inner_block) %>
</ul>
"""
end
attr(:link, :string, default: nil, doc: "The URI that this list item should go to when clicked")
slot(:actions)
slot(:inner_block, required: true)
def list_item(assigns) do
~H"""
<li class="satsuma_list__item">
<a :if={@link} href={@link} class="satsuma_list__target">
<div class="satsuma_list__item-title"><%= render_slot(@inner_block) %></div>
</a>
<div :if={@link == nil} class="satsuma_list__item-title"><%= render_slot(@inner_block) %></div>
<div :if={@actions} class="satsuma_list__item-actions">
<%= render_slot(@actions) %>
</div>
</li>
"""
end
end