defmodule AshAdmin.Components.Resource.Show do @moduledoc false use Surface.LiveComponent alias Surface.Components.LiveRedirect alias AshAdmin.Components.Resource.Table alias AshAdmin.Components.HeroIcon import AshAdmin.Helpers prop(resource, :any) prop(record, :any, default: nil) prop(api, :any, default: nil) prop(action, :any) prop(authorizing, :boolean, default: false) prop(actor, :any) prop(tenant, :any) prop(set_actor, :event, required: true) prop(table, :any, required: true) prop(prefix, :any, required: true) data(load_errors, :map, default: %{}) def render(assigns) do ~H"""
{{ render_show(assigns, @record, @resource) }}
{{ render_relationships(assigns, @record, @resource) }}
""" end def render_show(assigns, record, resource, title \\ nil, buttons? \\ true) do ~H"""

{{ title }}

{{ render_attributes(assigns, record, resource) }}
Destroy Update
""" end defp render_relationships(assigns, _record, resource) do ~H"""
{{ to_name(relationship.name) }}
{{ render_relationship_data(assigns, @record, relationship) }}
""" end defp render_relationship_data(assigns, record, %{ cardinality: :one, name: name, destination: destination, context: context }) do case Map.get(record, name) do nil -> ~H"None" record -> ~H"""
{{ render_attributes(assigns, record, destination) }}
Show
""" end end defp render_relationship_data(assigns, record, %{ cardinality: :many, name: name, destination: destination, context: context, destination_field: destination_field }) do data = Map.get(record, name) ~H"""
""" end defp render_attributes(assigns, record, resource) do ~H""" {{ {attributes, flags, bottom_attributes, _} = AshAdmin.Components.Resource.Form.attributes(resource, :show) nil }}
{{ to_name(attribute.name) }}
{{ render_attribute(assigns, resource, record, attribute) }}