diff --git a/lib/live_debugger/components.ex b/lib/live_debugger/components.ex index 6b4a21480..e0ced7f96 100644 --- a/lib/live_debugger/components.ex +++ b/lib/live_debugger/components.ex @@ -103,7 +103,7 @@ defmodule LiveDebugger.Components do @doc """ Collapsible element that can be toggled open and closed. It uses the `details` and `summary` HTML elements. - If you add `hide-on-open` class to element it will be hidden when collapsible is opened. + `hide-on-open` and `show-on-open` css classes are used to hide or show elements based on the open state of the collapsible. ## Examples @@ -142,9 +142,8 @@ defmodule LiveDebugger.Components do {show_collapsible_assign(@open)} > "-summary"} + class={["flex items-center cursor-pointer" | List.wrap(@label_class)]} {@rest} > <.icon name={@icon} class={["rotate-icon shrink-0" | List.wrap(@chevron_class)]} /> @@ -246,7 +245,7 @@ defmodule LiveDebugger.Components do end @doc """ - Used to add Hook to element based on condition. + Used to add CollapsibleOpen hook to element based on condition. """ def show_collapsible_assign(true), do: %{:"phx-hook" => "CollapsibleOpen"} def show_collapsible_assign(_), do: %{} @@ -489,7 +488,7 @@ defmodule LiveDebugger.Components do +
<%= @title %>
<%= if LiveDebugger.Feature.enabled?(:highlighting) do %> <.toggle_switch label="Highlight" checked={@highlight?} phx-click="toggle-highlight" /> <% end %>
-
- <.tree_node - tree_id={@id} - tree_node={@tree_node} - selected_node_id={@selected_node_id} - root?={true} - max_opened_node_level={@max_opened_node_level} - level={0} - /> -
+ <.tree_node + tree_id={@id} + tree_node={@tree_node} + selected_node_id={@selected_node_id} + root?={true} + max_opened_node_level={@max_opened_node_level} + level={0} + />
""" end @@ -90,50 +88,46 @@ defmodule LiveDebugger.Components.Tree do |> assign(:open, assigns.level < assigns.max_opened_node_level) ~H""" -
-
- <.collapsible - :if={@collapsible?} - id={"collapsible-#{@tree_node.parsed_id}-#{@tree_id}"} - chevron_class="text-accent-icon h-5 w-5" - open={@open} - label_class="w-full rounded-md py-1 hover:bg-surface-1-bg-hover" - style={style_for_padding(@level, @collapsible?)} - > - <:label> - <.label - tree_id={@tree_id} - selected?={@selected?} - parent_dom_id={@parent_dom_id} - node={@tree_node} - level={@level} - collapsible?={true} - /> - -
- <.tree_node - :for={child <- @tree_node.children} - tree_id={@tree_id} - parent_dom_id={if @tree_node[:dom_id], do: @tree_node.dom_id, else: @parent_dom_id} - tree_node={child} - selected_node_id={@selected_node_id} - root?={false} - max_opened_node_level={@max_opened_node_level} - level={@level + 1} - /> -
- + <.collapsible + :if={@collapsible?} + id={"collapsible-#{@tree_node.parsed_id}-#{@tree_id}"} + chevron_class="text-accent-icon h-5 w-5" + open={@open} + label_class="rounded-md py-1 hover:bg-surface-1-bg-hover" + style={style_for_padding(@level, @collapsible?)} + > + <:label> <.label - :if={not @collapsible?} tree_id={@tree_id} selected?={@selected?} parent_dom_id={@parent_dom_id} node={@tree_node} level={@level} - collapsible?={false} + collapsible?={true} + /> + +
+ <.tree_node + :for={child <- @tree_node.children} + tree_id={@tree_id} + parent_dom_id={if @tree_node[:dom_id], do: @tree_node.dom_id, else: @parent_dom_id} + tree_node={child} + selected_node_id={@selected_node_id} + root?={false} + max_opened_node_level={@max_opened_node_level} + level={@level + 1} />
-
+ + <.label + :if={not @collapsible?} + tree_id={@tree_id} + selected?={@selected?} + parent_dom_id={@parent_dom_id} + node={@tree_node} + level={@level} + collapsible?={false} + /> """ end @@ -143,43 +137,42 @@ defmodule LiveDebugger.Components.Tree do attr(:level, :integer, required: true) attr(:collapsible?, :boolean, required: true) attr(:selected?, :boolean, required: true) - attr(:class, :string, default: nil) defp label(assigns) do assigns = - assign(assigns, :padding_style, style_for_padding(assigns.level, assigns.collapsible?)) + assigns + |> assign(:padding_style, style_for_padding(assigns.level, assigns.collapsible?)) + |> assign(:button_id, "tree-node-button-#{assigns.node.parsed_id}-#{assigns.tree_id}") ~H""" -
- + + """ end diff --git a/lib/live_debugger/live_components/live_dropdown.ex b/lib/live_debugger/live_components/live_dropdown.ex index 19b228fd8..237d0b962 100644 --- a/lib/live_debugger/live_components/live_dropdown.ex +++ b/lib/live_debugger/live_components/live_dropdown.ex @@ -62,7 +62,7 @@ defmodule LiveDebugger.LiveComponents.LiveDropdown do variant={Map.get(button_slot, :variant, "secondary")} size={Map.get(button_slot, :size, "sm")} id={@id <> "-button"} - phx-click={unless @open, do: "open"} + phx-click={if !@open, do: "open"} phx-target={@myself} > <%= render_slot(button_slot) %> diff --git a/lib/live_debugger/services/module_discovery_service.ex b/lib/live_debugger/services/module_discovery_service.ex index bf3d94eb8..6f804f8c8 100644 --- a/lib/live_debugger/services/module_discovery_service.ex +++ b/lib/live_debugger/services/module_discovery_service.ex @@ -11,7 +11,9 @@ defmodule LiveDebugger.Services.ModuleDiscoveryService do @spec all_modules() :: [module()] def all_modules() do ModuleService.all() - |> Enum.map(fn {module_charlist, _, _} -> module_charlist |> to_string |> String.to_atom() end) + |> Enum.map(fn {module_charlist, _, _} -> + module_charlist |> to_string |> String.to_atom() + end) end @doc """