defmodule AshAdmin.Components.TopNav do @moduledoc false use Phoenix.LiveComponent import AshAdmin.Helpers alias AshAdmin.Components.TopNav.{ ActorSelect, DrawerDropdown, Dropdown, DropdownHelper, TenantForm } attr :domain, :any, required: true attr :resource, :any, required: true attr :actor_resources, :any, required: true attr :domains, :any, required: true attr :tenant, :any, required: true attr :clear_tenant, :string attr :set_tenant, :string attr :toggle_authorizing, :string, required: true attr :toggle_actor_paused, :string, required: true attr :clear_actor, :string, required: true attr :authorizing, :boolean, required: true attr :actor_paused, :boolean, required: true attr :actor_tenant, :string, required: true attr :actor, :any, required: true attr :actor_domain, :any, required: true attr :prefix, :any, required: true def render(assigns) do ~H""" """ end def mount(socket) do {:ok, assign(socket, nav_collapsed: false, open: false)} end def handle_event("collapse_nav", _, socket) do {:noreply, assign(socket, :nav_collapsed, !socket.assigns.nav_collapsed)} end def handle_event("close", _, socket) do {:noreply, assign(socket, :open, false)} end def handle_event("toggle", _, socket) do {:noreply, assign(socket, :open, !socket.assigns.open)} end defp show_tenant_form?(domains) do Enum.any?(domains, fn domain -> domain |> AshAdmin.Domain.show_resources() |> Enum.any?(fn resource -> Ash.Resource.Info.multitenancy_strategy(resource) end) end) end end