Move template from a live component to html.heex template

Hello I would like to know if it’s possible to render the template on a .html.heex file for compoients inside liveview

I have this component

  attr :group, Group
  attr :user_id, :integer

  def group(assigns) do
    ~H"""
    <div class="group space-y-4" id={"group-#{@group.id}"}>
      <div class="flex">
        <div class="flex-1"></div>
        <%= if Enum.count(@group.users) > 1 && @group.user_id == @user_id do %>
          <button
            phx-value-group_id={@group.id}
            class="font-semibold text-accent icon"
            phx-click="new-leader"
          >
            <.icon name="log-out" /> Leave Group
          </button>
        <% else %>
          <button
            data-confirm={gettext("Are you sure to leave the group?")}
            phx-click="leave-group"
            phx-value-group_id={@group.id}
            class="font-semibold text-accent icon"
          >
            <.icon name="log-out" /> {gettext("Leave Group")}
          </button>
        <% end %>
      </div>

      <div class="text-xl">
        {@group.name}
      </div>

      <div :for={{user, index} <- Enum.with_index(@group.users)} class="leading-3 flex gap-2">
        <div class="text-secondary">
          {index + 1}
        </div>
        <div>
          <div>
            {user.name}
          </div>
          <div class="text-sm text-secondary">
            {user.email}
          </div>
        </div>
      </div>

      <div class="flex justify-between">
        <.link patch={~p"/groups/#{@group.slug}"} class="text-primary font-semibold">
          View All
        </.link>
        <%= if @user_id == @group.user_id do %>
          <.link patch={~p"/groups/#{@group.slug}/add_members"} class="text-primary font-semibold">
            {gettext("Add members")}
          </.link>
        <% end %>
      </div>
    </div>
    """
  end

Can I move this to a group.html.heex and call from the group function, I had some suggestions from AI but did not work, one of them was

def group(assigns) do
  render("group.html", assigns)
end

Back before the robots took over we had documentation which is thankfully still lying around :stuck_out_tongue_winking_eye:

5 Likes

Thanks I will look and see how this works.

I can’t wait for the day when juniors can’t figure anything out that the LLM doesn’t give them a copy paste solution…