@@ -31,23 +31,21 @@ defmodule LiveDebugger.Components.Tree do
3131
3232 def tree ( assigns ) do
3333 ~H"""
34- < div class = { [ "min-h-20 w-full overflow-y-auto flex flex-col" , @ class ] } >
34+ < div class = { [ "min-h-20 px-1 overflow-y-auto overflow-x-hidden flex flex-col" , @ class ] } >
3535 < div class = "flex items-center justify-between " >
3636 < div class = "shrink-0 font-medium text-secondary-text px-6 py-3 " > <%= @ title %> </ div >
3737 <%= if LiveDebugger.Feature . enabled? ( :highlighting ) do %>
3838 < . toggle_switch label = "Highlight " checked = { @ highlight? } phx-click = "toggle-highlight " />
3939 <% end %>
4040 </ div >
41- < div class = "w-full px-1 overflow-y-auto " >
42- < . tree_node
43- tree_id = { @ id }
44- tree_node = { @ tree_node }
45- selected_node_id = { @ selected_node_id }
46- root? = { true }
47- max_opened_node_level = { @ max_opened_node_level }
48- level = { 0 }
49- />
50- </ div >
41+ < . tree_node
42+ tree_id = { @ id }
43+ tree_node = { @ tree_node }
44+ selected_node_id = { @ selected_node_id }
45+ root? = { true }
46+ max_opened_node_level = { @ max_opened_node_level }
47+ level = { 0 }
48+ />
5149 </ div >
5250 """
5351 end
@@ -90,50 +88,46 @@ defmodule LiveDebugger.Components.Tree do
9088 |> assign ( :open , assigns . level < assigns . max_opened_node_level )
9189
9290 ~H"""
93- < div class = "relative flex max-w-full " >
94- < div class = "w-full " >
95- < . collapsible
96- :if = { @ collapsible? }
97- id = { "collapsible-#{ @ tree_node . parsed_id } -#{ @ tree_id } " }
98- chevron_class = "text-accent-icon h-5 w-5 "
99- open = { @ open }
100- label_class = "w-full rounded-md py-1 hover:bg-surface-1-bg-hover "
101- style = { style_for_padding ( @ level , @ collapsible? ) }
102- >
103- <: label >
104- < . label
105- tree_id = { @ tree_id }
106- selected? = { @ selected? }
107- parent_dom_id = { @ parent_dom_id }
108- node = { @ tree_node }
109- level = { @ level }
110- collapsible? = { true }
111- />
112- </: label >
113- < div class = "flex flex-col " >
114- < . tree_node
115- :for = { child <- @ tree_node . children }
116- tree_id = { @ tree_id }
117- parent_dom_id = { if @ tree_node [ :dom_id ] , do: @ tree_node . dom_id , else: @ parent_dom_id }
118- tree_node = { child }
119- selected_node_id = { @ selected_node_id }
120- root? = { false }
121- max_opened_node_level = { @ max_opened_node_level }
122- level = { @ level + 1 }
123- />
124- </ div >
125- </ . collapsible >
91+ < . collapsible
92+ :if = { @ collapsible? }
93+ id = { "collapsible-#{ @ tree_node . parsed_id } -#{ @ tree_id } " }
94+ chevron_class = "text-accent-icon h-5 w-5 "
95+ open = { @ open }
96+ label_class = "rounded-md py-1 hover:bg-surface-1-bg-hover "
97+ style = { style_for_padding ( @ level , @ collapsible? ) }
98+ >
99+ <: label >
126100 < . label
127- :if = { not @ collapsible? }
128101 tree_id = { @ tree_id }
129102 selected? = { @ selected? }
130103 parent_dom_id = { @ parent_dom_id }
131104 node = { @ tree_node }
132105 level = { @ level }
133- collapsible? = { false }
106+ collapsible? = { true }
107+ />
108+ </: label >
109+ < div class = "flex flex-col " >
110+ < . tree_node
111+ :for = { child <- @ tree_node . children }
112+ tree_id = { @ tree_id }
113+ parent_dom_id = { if @ tree_node [ :dom_id ] , do: @ tree_node . dom_id , else: @ parent_dom_id }
114+ tree_node = { child }
115+ selected_node_id = { @ selected_node_id }
116+ root? = { false }
117+ max_opened_node_level = { @ max_opened_node_level }
118+ level = { @ level + 1 }
134119 />
135120 </ div >
136- </ div >
121+ </ . collapsible >
122+ < . label
123+ :if = { not @ collapsible? }
124+ tree_id = { @ tree_id }
125+ selected? = { @ selected? }
126+ parent_dom_id = { @ parent_dom_id }
127+ node = { @ tree_node }
128+ level = { @ level }
129+ collapsible? = { false }
130+ />
137131 """
138132 end
139133
@@ -143,43 +137,42 @@ defmodule LiveDebugger.Components.Tree do
143137 attr ( :level , :integer , required: true )
144138 attr ( :collapsible? , :boolean , required: true )
145139 attr ( :selected? , :boolean , required: true )
146- attr ( :class , :string , default: nil )
147140
148141 defp label ( assigns ) do
149142 assigns =
150- assign ( assigns , :padding_style , style_for_padding ( assigns . level , assigns . collapsible? ) )
143+ assigns
144+ |> assign ( :padding_style , style_for_padding ( assigns . level , assigns . collapsible? ) )
145+ |> assign ( :button_id , "tree-node-button-#{ assigns . node . parsed_id } -#{ assigns . tree_id } " )
151146
152147 ~H"""
153- < button
154- id = { "tree-node-button-#{ @ node . parsed_id } -#{ @ tree_id } " }
155- phx-click = "select_node "
156- phx-value-node_id = { @ node . parsed_id }
157- phx-value-search-attribute = { get_search_attribute ( @ node ) }
158- phx-value-search-value = { get_search_value ( @ node , @ parent_dom_id ) }
159- phx-hook = "Highlight "
148+ < span
160149 class = { [
161- "flex w-full rounded-md hover:bg-surface-1-bg-hover" ,
162- unless ( @ collapsible? , do: "p-1" ) ,
163- @ class
150+ "flex shrink grow items-center rounded-md hover:bg-surface-1-bg-hover" ,
151+ if ( ! @ collapsible? , do: "p-1" )
164152 ] }
165- style = { unless ( @ collapsible? , do: @ padding_style ) }
153+ style = { if ( ! @ collapsible? , do: @ padding_style ) }
166154 >
167- < div class = "flex w-full gap-0.5 items-center " >
155+ < button
156+ id = { @ button_id }
157+ phx-hook = "Highlight "
158+ phx-click = "select_node "
159+ phx-value-node_id = { @ node . parsed_id }
160+ phx-value-search-attribute = { get_search_attribute ( @ node ) }
161+ phx-value-search-value = { get_search_value ( @ node , @ parent_dom_id ) }
162+ class = "flex min-w-0 gap-0.5 items-center "
163+ >
168164 < . icon name = { @ node . icon } class = "text-accent-icon w-5 h-5 shrink-0 " />
169165 < . tooltip
170166 id = { "tree-node-#{ @ node . parsed_id } -#{ @ tree_id } " }
171167 content = { @ node . tooltip }
172- class = "w-full flex overflow-x-hidden "
168+ class = "truncate "
173169 >
174- < div class = { [
175- "truncate" ,
176- if ( @ selected? , do: "font-semibold" )
177- ] } >
170+ < span class = { [ "hover:underline" , if ( @ selected? , do: "font-semibold" ) ] } >
178171 <%= @ node . label %>
179- </ div >
172+ </ span >
180173 </ . tooltip >
181- </ div >
182- </ button >
174+ </ button >
175+ </ span >
183176 """
184177 end
185178
0 commit comments