Current section

Files

Jump to
corex lib components tree_view api.ex
Raw

lib/components/tree_view/api.ex

defmodule Corex.TreeView.Api do
@moduledoc false
alias Corex.Api.RespondTo
alias Phoenix.LiveView
alias Phoenix.LiveView.JS
import Corex.Helpers, only: [validate_value!: 1, respond_to_fields: 1]
def set_expanded_value(tree_view_id, value) when is_binary(tree_view_id) do
JS.dispatch("corex:tree-view:set-expanded-value",
to: "##{tree_view_id}",
detail: %{value: validate_value!(value)},
bubbles: false
)
end
def set_selected_value(tree_view_id, value) when is_binary(tree_view_id) do
JS.dispatch("corex:tree-view:set-selected-value",
to: "##{tree_view_id}",
detail: %{value: validate_value!(value)},
bubbles: false
)
end
def set_expanded_value(socket, tree_view_id, value)
when is_struct(socket, Phoenix.LiveView.Socket) and is_binary(tree_view_id) do
RespondTo.push_set_value(
socket,
"tree_view_set_expanded_value",
tree_view_id,
validate_value!(value)
)
end
def set_selected_value(socket, tree_view_id, value)
when is_struct(socket, Phoenix.LiveView.Socket) and is_binary(tree_view_id) do
RespondTo.push_set_value(
socket,
"tree_view_set_selected_value",
tree_view_id,
validate_value!(value)
)
end
def value(tree_view_id, opts) when is_binary(tree_view_id) and is_list(opts) do
JS.dispatch("corex:tree-view:value",
to: "##{tree_view_id}",
detail: respond_to_fields(opts),
bubbles: false
)
end
def value(tree_view_id) when is_binary(tree_view_id), do: value(tree_view_id, [])
def value(socket, tree_view_id, opts \\ [])
when is_struct(socket, Phoenix.LiveView.Socket) and is_binary(tree_view_id) and
is_list(opts) do
LiveView.push_event(
socket,
"tree_view_value",
Map.merge(%{id: tree_view_id}, respond_to_fields(opts))
)
end
def expanded_value(tree_view_id, opts) when is_binary(tree_view_id) and is_list(opts) do
JS.dispatch("corex:tree-view:expanded-value",
to: "##{tree_view_id}",
detail: respond_to_fields(opts),
bubbles: false
)
end
def expanded_value(tree_view_id) when is_binary(tree_view_id),
do: expanded_value(tree_view_id, [])
def expanded_value(socket, tree_view_id, opts \\ [])
when is_struct(socket, Phoenix.LiveView.Socket) and is_binary(tree_view_id) and
is_list(opts) do
LiveView.push_event(
socket,
"tree_view_expanded_value",
Map.merge(%{id: tree_view_id}, respond_to_fields(opts))
)
end
end