2022-02-11 22:47:33 -05:00
|
|
|
defmodule CanneryWeb.Components.Topbar do
|
2022-01-22 21:40:29 -05:00
|
|
|
@moduledoc """
|
|
|
|
Component that renders a topbar with user functions/links
|
|
|
|
"""
|
|
|
|
|
2022-01-22 15:15:23 -05:00
|
|
|
use CanneryWeb, :component
|
|
|
|
|
2022-01-22 21:40:29 -05:00
|
|
|
alias Cannery.Accounts
|
2023-02-26 14:21:49 -05:00
|
|
|
alias CanneryWeb.HomeLive
|
2022-01-22 15:15:23 -05:00
|
|
|
|
|
|
|
def topbar(assigns) do
|
|
|
|
assigns =
|
|
|
|
%{results: [], title_content: nil, flash: nil, current_user: nil} |> Map.merge(assigns)
|
|
|
|
|
|
|
|
~H"""
|
2022-02-15 23:52:44 -05:00
|
|
|
<nav role="navigation" class="mb-8 px-8 py-4 w-full bg-primary-400">
|
|
|
|
<div class="flex flex-col sm:flex-row justify-between items-center">
|
|
|
|
<div class="mb-4 sm:mb-0 sm:mr-8 flex flex-row justify-start items-center space-x-2">
|
2022-11-07 22:36:38 -05:00
|
|
|
<.link
|
2022-11-09 23:47:11 -05:00
|
|
|
navigate={Routes.live_path(Endpoint, HomeLive)}
|
2022-11-07 22:36:38 -05:00
|
|
|
class="inline mx-2 my-1 leading-5 text-xl text-white"
|
|
|
|
>
|
2022-07-04 20:19:03 -04:00
|
|
|
<img
|
|
|
|
src={Routes.static_path(Endpoint, "/images/cannery.svg")}
|
|
|
|
alt={gettext("Cannery logo")}
|
|
|
|
class="inline-block h-8 mx-1"
|
|
|
|
/>
|
|
|
|
<h1 class="inline hover:underline">Cannery</h1>
|
2022-11-07 22:36:38 -05:00
|
|
|
</.link>
|
2022-01-31 22:40:07 -05:00
|
|
|
|
2022-02-15 23:52:44 -05:00
|
|
|
<%= if @title_content do %>
|
|
|
|
<span class="mx-2 my-1">
|
|
|
|
|
|
|
|
|
</span>
|
|
|
|
<%= @title_content %>
|
|
|
|
<% end %>
|
|
|
|
</div>
|
|
|
|
|
2022-02-17 21:24:59 -05:00
|
|
|
<hr class="mb-2 sm:hidden hr-light" />
|
2022-02-15 23:52:44 -05:00
|
|
|
|
2022-04-19 20:08:12 -04:00
|
|
|
<ul class="flex flex-row flex-wrap justify-center items-center
|
|
|
|
text-lg text-white text-ellipsis">
|
2022-02-15 23:52:44 -05:00
|
|
|
<%= if @current_user do %>
|
|
|
|
<li class="mx-2 my-1">
|
2022-11-07 22:36:38 -05:00
|
|
|
<.link
|
2022-11-09 23:47:11 -05:00
|
|
|
navigate={Routes.tag_index_path(Endpoint, :index)}
|
2022-11-07 22:36:38 -05:00
|
|
|
class="text-primary-600 text-white hover:underline"
|
|
|
|
>
|
|
|
|
<%= gettext("Tags") %>
|
|
|
|
</.link>
|
2022-02-15 23:52:44 -05:00
|
|
|
</li>
|
|
|
|
<li class="mx-2 my-1">
|
2022-11-07 22:36:38 -05:00
|
|
|
<.link
|
2022-11-09 23:47:11 -05:00
|
|
|
navigate={Routes.container_index_path(Endpoint, :index)}
|
2022-11-07 22:36:38 -05:00
|
|
|
class="text-primary-600 text-white hover:underline"
|
|
|
|
>
|
|
|
|
<%= gettext("Containers") %>
|
|
|
|
</.link>
|
2022-02-15 23:52:44 -05:00
|
|
|
</li>
|
|
|
|
<li class="mx-2 my-1">
|
2022-11-07 22:36:38 -05:00
|
|
|
<.link
|
2022-11-09 23:47:11 -05:00
|
|
|
navigate={Routes.ammo_type_index_path(Endpoint, :index)}
|
2022-11-07 22:36:38 -05:00
|
|
|
class="text-primary-600 text-white hover:underline"
|
|
|
|
>
|
|
|
|
<%= gettext("Catalog") %>
|
|
|
|
</.link>
|
2022-02-15 23:52:44 -05:00
|
|
|
</li>
|
|
|
|
<li class="mx-2 my-1">
|
2022-11-07 22:36:38 -05:00
|
|
|
<.link
|
2022-11-09 23:47:11 -05:00
|
|
|
navigate={Routes.ammo_group_index_path(Endpoint, :index)}
|
2022-11-07 22:36:38 -05:00
|
|
|
class="text-primary-600 text-white hover:underline"
|
|
|
|
>
|
|
|
|
<%= gettext("Ammo") %>
|
|
|
|
</.link>
|
2022-02-15 23:52:44 -05:00
|
|
|
</li>
|
|
|
|
<li class="mx-2 my-1">
|
2022-11-07 22:36:38 -05:00
|
|
|
<.link
|
2022-11-09 23:47:11 -05:00
|
|
|
navigate={Routes.range_index_path(Endpoint, :index)}
|
2022-11-07 22:36:38 -05:00
|
|
|
class="text-primary-600 text-white hover:underline"
|
|
|
|
>
|
|
|
|
<%= gettext("Range") %>
|
|
|
|
</.link>
|
2022-02-15 23:52:44 -05:00
|
|
|
</li>
|
2023-02-26 14:21:49 -05:00
|
|
|
<li :if={@current_user |> Accounts.is_already_admin?()} class="mx-2 my-1">
|
|
|
|
<.link
|
|
|
|
navigate={Routes.invite_index_path(Endpoint, :index)}
|
|
|
|
class="text-primary-600 text-white hover:underline"
|
|
|
|
>
|
|
|
|
<%= gettext("Invites") %>
|
|
|
|
</.link>
|
|
|
|
</li>
|
2022-02-15 23:52:44 -05:00
|
|
|
<li class="mx-2 my-1">
|
2022-11-07 22:36:38 -05:00
|
|
|
<.link
|
2023-02-26 00:40:55 -05:00
|
|
|
href={Routes.user_settings_path(Endpoint, :edit)}
|
2022-11-07 22:36:38 -05:00
|
|
|
class="text-primary-600 text-white hover:underline truncate"
|
|
|
|
>
|
|
|
|
<%= @current_user.email %>
|
|
|
|
</.link>
|
2022-02-15 23:52:44 -05:00
|
|
|
</li>
|
|
|
|
<li class="mx-2 my-1">
|
2022-11-07 22:36:38 -05:00
|
|
|
<.link
|
|
|
|
href={Routes.user_session_path(Endpoint, :delete)}
|
|
|
|
method="delete"
|
|
|
|
data-confirm={dgettext("prompts", "Are you sure you want to log out?")}
|
|
|
|
>
|
2022-02-15 23:52:44 -05:00
|
|
|
<i class="fas fa-sign-out-alt"></i>
|
2022-11-07 22:36:38 -05:00
|
|
|
</.link>
|
2022-02-15 23:52:44 -05:00
|
|
|
</li>
|
2023-02-04 09:16:51 -05:00
|
|
|
<li
|
|
|
|
:if={
|
2023-02-26 14:21:49 -05:00
|
|
|
@current_user |> Accounts.is_already_admin?() and
|
|
|
|
function_exported?(Routes, :live_dashboard_path, 2)
|
2023-02-04 09:16:51 -05:00
|
|
|
}
|
|
|
|
class="mx-2 my-1"
|
|
|
|
>
|
|
|
|
<.link
|
|
|
|
navigate={Routes.live_dashboard_path(Endpoint, :home)}
|
|
|
|
class="text-white text-white hover:underline"
|
|
|
|
>
|
|
|
|
<i class="fas fa-gauge"></i>
|
|
|
|
</.link>
|
|
|
|
</li>
|
2022-02-15 23:52:44 -05:00
|
|
|
<% else %>
|
2023-02-04 10:28:13 -05:00
|
|
|
<li :if={Accounts.allow_registration?()} class="mx-2 my-1">
|
|
|
|
<.link
|
2023-02-26 00:40:55 -05:00
|
|
|
href={Routes.user_registration_path(Endpoint, :new)}
|
|
|
|
class="text-white hover:underline truncate"
|
2023-02-04 10:28:13 -05:00
|
|
|
>
|
|
|
|
<%= dgettext("actions", "Register") %>
|
|
|
|
</.link>
|
|
|
|
</li>
|
2022-02-15 23:52:44 -05:00
|
|
|
<li class="mx-2 my-1">
|
2022-11-07 22:36:38 -05:00
|
|
|
<.link
|
2023-02-26 00:40:55 -05:00
|
|
|
href={Routes.user_session_path(Endpoint, :new)}
|
|
|
|
class="text-white hover:underline truncate"
|
2022-11-07 22:36:38 -05:00
|
|
|
>
|
|
|
|
<%= dgettext("actions", "Log in") %>
|
|
|
|
</.link>
|
2022-02-15 23:52:44 -05:00
|
|
|
</li>
|
|
|
|
<% end %>
|
|
|
|
</ul>
|
|
|
|
</div>
|
|
|
|
</nav>
|
2022-01-22 15:15:23 -05:00
|
|
|
"""
|
|
|
|
end
|
|
|
|
end
|