defmodule OutlookWeb.HtmlTreeComponent do
use Phoenix.Component
# use OutlookWeb, :html
import OutlookWeb.CoreComponents
import OutlookWeb.ViewHelpers
alias Phoenix.LiveView.JS
attr :tree, :list, required: true
def render_tree(assigns) do
~H"""
<.tnode :for={node <- @tree} node={node} />
"""
end
def attributes(assigns) do
~H" <%= @name %>="<%= elipsed_text(@value, 16) %>""
end
def tnode(%{node: %{status: _}} = assigns) do
~H"""
<%= elipsed_text(@node.content, 30) %>
"""
end
def tnode(assigns) when assigns.node.type == :element do
~H"""
<<%= @node.name %><.attributes :for={{k,v} <- @node.attributes} name={k} value={v}
/>>