Current section
Files
Jump to
Current section
Files
lib/moon_backoffice_web/components/subbar.ex
defmodule MoonBackofficeWeb.Subbar do
use Phoenix.Component
import Customizations.Subbar
import MoonBackofficeWeb.CoreComponents, only: [icon: 1]
attr :parameters, :list, required: true
defp list_item(%{parameters: %{active: true}} = assigns) do
%{ class: item_class, icon: %{ image: icon, class: icon_class }} = pick_outfit(:active_item)
assigns = assign(assigns, :item_class, item_class)
|> assign(icon_class: icon_class)
|> assign(icon: icon)
~H"""
<li class={assigns.item_class}>
<.icon name={assigns.icon} class={assigns.icon_class} />
<span><%= @parameters.name %></span>
</li>
"""
end
defp list_item(assigns) do
%{ class: item_class, anchor: anchor_class, icon: %{ image: icon, class: icon_class }} = pick_outfit(:item)
assigns = assign(assigns, :item_class, item_class)
|> assign(icon_class: icon_class)
|> assign(icon: icon)
|> assign(anchor_class: anchor_class)
~H"""
<li class={assigns.item_class}>
<a href={@parameters.path} class={assigns.anchor_class}>
<.icon name={assigns.icon} class={assigns.icon_class} />
<span><%= @parameters.name %></span>
</a>
</li>
"""
end
attr :parameters, :list, required: true
defp subsection(assigns) do
%{ class: header_class, icon: %{ image: icon, class: icon_class }, subclass: list_class } = pick_outfit(:subsection)
assigns = assign(assigns, :header_class, header_class)
|> assign(icon_class: icon_class)
|> assign(icon: icon)
|> assign(list_class: list_class)
~H"""
<h6 class={assigns.header_class}>
<.icon name={assigns.icon} class={assigns.icon_class} />
<%= @parameters.name %>
</h6>
<ul class={assigns.list_class}>
<%= for item <- @parameters.items do %>
<.list_item parameters={item} />
<% end %>
</ul>
"""
end
attr :items, :list, required: true
def subbar(assigns) do
%{ class: class } = pick_outfit(:list)
assigns = assign(assigns, :class, class)
~H"""
<ul class={assigns.class}>
<%= for sub_section <- @items do %>
<li>
<.subsection parameters={sub_section} />
</li>
<% end %>
</ul>
"""
end
end