defmodule AshAdmin.Components.Resource.Nav do @moduledoc false use Surface.Component alias Surface.Components.LiveRedirect alias AshAdmin.Components.TopNav.Dropdown import AshAdmin.Helpers prop(resource, :any, required: true) prop(api, :any, required: true) prop(tab, :string, required: true) prop(action, :any) prop(table, :any, default: nil) prop(prefix, :any, default: nil) def render(assigns) do ~H""" """ end defp data_groups(prefix, api, resource, current_action, table) do read_actions = AshAdmin.Resource.read_actions(resource) [ resource |> Ash.Resource.Info.actions() |> Enum.filter(&(&1.type == :read)) |> Enum.filter(&(is_nil(read_actions) || &1.name in read_actions)) |> Enum.map(fn action -> %{ text: action_name(action), to: ash_action_path(prefix, api, resource, :read, action.name, table), active: current_action == action } end) ] end defp has_create_action?(resource) do resource |> Ash.Resource.Info.actions() |> Enum.any?(&(&1.type == :create)) end defp action_name(action) do action.name |> to_string() |> String.split("_") |> Enum.map(&String.capitalize/1) |> Enum.join(" ") end end