mirror of
https://github.com/ash-project/ash_admin.git
synced 2024-09-08 13:31:07 +12:00
fix: get checks passing, fix various bugs
This commit is contained in:
parent
2b94944247
commit
5d1b3a1d5b
9 changed files with 166 additions and 52 deletions
|
@ -8,6 +8,7 @@
|
|||
## curated tools may be disabled (e.g. the check for compilation warnings)
|
||||
# {:compiler, false},
|
||||
{:npm_test, false},
|
||||
{:gettext, false},
|
||||
{:check_formatter, command: "mix spark.formatter --check"}
|
||||
|
||||
## ...or adjusted (e.g. use one-line formatter for more compact credo output)
|
||||
|
|
|
@ -1462,7 +1462,7 @@ defmodule AshAdmin.Components.Resource.Form do
|
|||
def relationships(resource, action, nil) do
|
||||
resource
|
||||
|> Ash.Resource.Info.relationships()
|
||||
|> Enum.filter(& &1.writable? && &1.public?)
|
||||
|> Enum.filter(&(&1.writable? && &1.public?))
|
||||
|> only_accepted(action)
|
||||
|> sort_relationships()
|
||||
end
|
||||
|
@ -1523,7 +1523,7 @@ defmodule AshAdmin.Components.Resource.Form do
|
|||
attributes =
|
||||
resource
|
||||
|> Ash.Resource.Info.attributes()
|
||||
|> Enum.filter(& &1.writable? && &1.public?)
|
||||
|> Enum.filter(&(&1.writable? && &1.public?))
|
||||
|> Enum.reject(&(&1.name == :autogenerated_id))
|
||||
|> only_accepted(action)
|
||||
|> Enum.reject(fn attribute ->
|
||||
|
|
|
@ -157,7 +157,7 @@ defmodule AshAdmin.Components.Resource.MetadataTable do
|
|||
defp attributes(resource) do
|
||||
resource
|
||||
|> Ash.Resource.Info.attributes()
|
||||
|> Enum.sort_by(& not(&1.public?))
|
||||
|> Enum.sort_by(&(not &1.public?))
|
||||
end
|
||||
|
||||
defp attribute_type(attribute) do
|
||||
|
@ -173,6 +173,6 @@ defmodule AshAdmin.Components.Resource.MetadataTable do
|
|||
defp relationships(resource) do
|
||||
resource
|
||||
|> Ash.Resource.Info.relationships()
|
||||
|> Enum.sort_by(& not(&1.public?))
|
||||
|> Enum.sort_by(&(not &1.public?))
|
||||
end
|
||||
end
|
||||
|
|
|
@ -144,7 +144,7 @@ defmodule AshAdmin.Components.Resource.Show do
|
|||
|
||||
~H"""
|
||||
<div class="mb-10">
|
||||
<%= render_attributes(assigns, @record, @destination) %>
|
||||
<%= render_attributes(assigns, @record, @destination, @name) %>
|
||||
<div class="px-4 py-3 text-right sm:px-6">
|
||||
<.link
|
||||
:if={AshAdmin.Resource.show_action(@destination)}
|
||||
|
@ -192,7 +192,7 @@ defmodule AshAdmin.Components.Resource.Show do
|
|||
"""
|
||||
end
|
||||
|
||||
defp render_attributes(assigns, record, resource) do
|
||||
defp render_attributes(assigns, record, resource, relationship_name \\ nil) do
|
||||
{attributes, flags, bottom_attributes, _} =
|
||||
AshAdmin.Components.Resource.Form.attributes(resource, :show)
|
||||
|
||||
|
@ -202,7 +202,8 @@ defmodule AshAdmin.Components.Resource.Show do
|
|||
resource: resource,
|
||||
attributes: attributes,
|
||||
flags: flags,
|
||||
bottom_attributes: bottom_attributes
|
||||
bottom_attributes: bottom_attributes,
|
||||
relationship_name: relationship_name
|
||||
)
|
||||
|
||||
~H"""
|
||||
|
@ -219,7 +220,13 @@ defmodule AshAdmin.Components.Resource.Show do
|
|||
>
|
||||
<div class="block text-sm font-medium text-gray-700"><%= to_name(attribute.name) %></div>
|
||||
<div>
|
||||
<%= render_maybe_sensitive_attribute(assigns, @resource, @record, attribute) %>
|
||||
<%= render_maybe_sensitive_attribute(
|
||||
assigns,
|
||||
@resource,
|
||||
@record,
|
||||
attribute,
|
||||
@relationship_name
|
||||
) %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -241,7 +248,13 @@ defmodule AshAdmin.Components.Resource.Show do
|
|||
>
|
||||
<div class="block text-sm font-medium text-gray-700"><%= to_name(attribute.name) %></div>
|
||||
<div>
|
||||
<%= render_maybe_sensitive_attribute(assigns, @resource, @record, attribute) %>
|
||||
<%= render_maybe_sensitive_attribute(
|
||||
assigns,
|
||||
@resource,
|
||||
@record,
|
||||
attribute,
|
||||
@relationship_name
|
||||
) %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -264,39 +277,46 @@ defmodule AshAdmin.Components.Resource.Show do
|
|||
>
|
||||
<div class="block text-sm font-medium text-gray-700"><%= to_name(attribute.name) %></div>
|
||||
<div>
|
||||
<%= render_maybe_sensitive_attribute(assigns, @resource, @record, attribute) %>
|
||||
<%= render_maybe_sensitive_attribute(
|
||||
assigns,
|
||||
@resource,
|
||||
@record,
|
||||
attribute,
|
||||
@relationship_name
|
||||
) %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
"""
|
||||
end
|
||||
|
||||
defp render_maybe_sensitive_attribute(assigns, resource, record, attribute) do
|
||||
assigns = assign(assigns, attribute: attribute)
|
||||
defp render_maybe_sensitive_attribute(assigns, resource, record, attribute, relationship_name) do
|
||||
assigns = assign(assigns, attribute: attribute, relationship_name: relationship_name)
|
||||
show_sensitive_fields = AshAdmin.Resource.show_sensitive_fields(resource)
|
||||
|
||||
if attribute.sensitive? && not Enum.member?(show_sensitive_fields, attribute.name) do
|
||||
~H"""
|
||||
<.live_component
|
||||
id={"#{@record.id}-#{@attribute.name}"}
|
||||
id={"#{@relationship_name}_#{AshAdmin.Helpers.encode_primary_key(@record)}-#{@attribute.name}"}
|
||||
module={SensitiveAttribute}
|
||||
value={Map.get(@record, @attribute.name)}
|
||||
>
|
||||
<%= render_attribute(assigns, @resource, @record, @attribute) %>
|
||||
<%= render_attribute(assigns, @resource, @record, @attribute, @relationship_name) %>
|
||||
</.live_component>
|
||||
"""
|
||||
else
|
||||
render_attribute(assigns, resource, record, attribute)
|
||||
render_attribute(assigns, resource, record, attribute, relationship_name)
|
||||
end
|
||||
end
|
||||
|
||||
defp render_attribute(assigns, resource, record, attribute, nested? \\ false)
|
||||
defp render_attribute(assigns, resource, record, attribute, relationship_name, nested? \\ false)
|
||||
|
||||
defp render_attribute(
|
||||
assigns,
|
||||
resource,
|
||||
record,
|
||||
%{type: {:array, type}, name: name} = attribute,
|
||||
relationship_name,
|
||||
nested?
|
||||
) do
|
||||
if Map.get(record, name) in [[], nil] do
|
||||
|
@ -309,6 +329,7 @@ defmodule AshAdmin.Components.Resource.Show do
|
|||
type: type,
|
||||
name: name,
|
||||
attribute: attribute,
|
||||
relationship_name: relationship_name,
|
||||
nested: nested?
|
||||
)
|
||||
|
||||
|
@ -321,6 +342,7 @@ defmodule AshAdmin.Components.Resource.Show do
|
|||
@resource,
|
||||
Map.put(@record, @name, value),
|
||||
%{@attribute | type: @type},
|
||||
@relationship_name,
|
||||
true
|
||||
) %>
|
||||
</li>
|
||||
|
@ -334,6 +356,7 @@ defmodule AshAdmin.Components.Resource.Show do
|
|||
@resource,
|
||||
Map.put(@record, @name, value),
|
||||
%{@attribute | type: @type},
|
||||
@relationship_name,
|
||||
true
|
||||
) %>
|
||||
</li>
|
||||
|
@ -349,21 +372,42 @@ defmodule AshAdmin.Components.Resource.Show do
|
|||
resource,
|
||||
record,
|
||||
%{type: {:array, Ash.Type.Map}} = attribute,
|
||||
relationship_name,
|
||||
nested?
|
||||
) do
|
||||
render_attribute(assigns, resource, record, %{attribute | type: Ash.Type.Map}, nested?)
|
||||
render_attribute(
|
||||
assigns,
|
||||
resource,
|
||||
record,
|
||||
%{attribute | type: Ash.Type.Map},
|
||||
relationship_name,
|
||||
nested?
|
||||
)
|
||||
end
|
||||
|
||||
defp render_attribute(assigns, _resource, record, %{type: Ash.Type.Map} = attribute, _nested?) do
|
||||
defp render_attribute(
|
||||
assigns,
|
||||
_resource,
|
||||
record,
|
||||
%{type: Ash.Type.Map} = attribute,
|
||||
relationship_name,
|
||||
_nested?
|
||||
) do
|
||||
encoded = Jason.encode!(Map.get(record, attribute.name))
|
||||
|
||||
assigns = assign(assigns, record: record, attribute: attribute, encoded: encoded)
|
||||
assigns =
|
||||
assign(assigns,
|
||||
record: record,
|
||||
attribute: attribute,
|
||||
encoded: encoded,
|
||||
relationship_name: relationship_name
|
||||
)
|
||||
|
||||
~H"""
|
||||
<div
|
||||
phx-hook="JsonView"
|
||||
data-json={@encoded}
|
||||
id={"_#{AshAdmin.Helpers.encode_primary_key(@record)}_#{@attribute.name}_json"}
|
||||
id={"#{@relationship_name}_#{AshAdmin.Helpers.encode_primary_key(@record)}_#{@attribute.name}_json"}
|
||||
/>
|
||||
"""
|
||||
rescue
|
||||
|
@ -371,7 +415,14 @@ defmodule AshAdmin.Components.Resource.Show do
|
|||
"..."
|
||||
end
|
||||
|
||||
defp render_attribute(assigns, _resource, record, %{name: name, type: Ash.Type.Boolean}, _) do
|
||||
defp render_attribute(
|
||||
assigns,
|
||||
_resource,
|
||||
record,
|
||||
%{name: name, type: Ash.Type.Boolean},
|
||||
_relationship_name,
|
||||
_
|
||||
) do
|
||||
case Map.get(record, name) do
|
||||
true ->
|
||||
~H"""
|
||||
|
@ -390,7 +441,14 @@ defmodule AshAdmin.Components.Resource.Show do
|
|||
end
|
||||
end
|
||||
|
||||
defp render_attribute(assigns, _resource, record, %{name: name, type: Ash.Type.Binary}, _) do
|
||||
defp render_attribute(
|
||||
assigns,
|
||||
_resource,
|
||||
record,
|
||||
%{name: name, type: Ash.Type.Binary},
|
||||
_relationship_name,
|
||||
_
|
||||
) do
|
||||
if Map.get(record, name) do
|
||||
~H"""
|
||||
<span class="italic">(binary data)</span>
|
||||
|
@ -400,7 +458,7 @@ defmodule AshAdmin.Components.Resource.Show do
|
|||
end
|
||||
end
|
||||
|
||||
defp render_attribute(assigns, resource, record, attribute, nested?) do
|
||||
defp render_attribute(assigns, resource, record, attribute, relationship_name, nested?) do
|
||||
if Ash.Type.embedded_type?(attribute.type) do
|
||||
if Map.get(record, attribute.name) in [nil, []] do
|
||||
"None"
|
||||
|
@ -410,17 +468,28 @@ defmodule AshAdmin.Components.Resource.Show do
|
|||
resource: resource,
|
||||
record: record,
|
||||
attribute: attribute,
|
||||
nested: nested?
|
||||
nested: nested?,
|
||||
relationship_name: relationship_name
|
||||
)
|
||||
|
||||
~H"""
|
||||
<%= if @nested do %>
|
||||
<div class="ml-1 pl-2 pr-2">
|
||||
<%= render_attributes(assigns, Map.get(@record, @attribute.name), @attribute.type) %>
|
||||
<%= render_attributes(
|
||||
assigns,
|
||||
Map.get(@record, @attribute.name),
|
||||
@attribute.type,
|
||||
@relationship_name
|
||||
) %>
|
||||
</div>
|
||||
<% else %>
|
||||
<div class="shadow-md border mt-4 mb-4 rounded py-2 px-2 ml-1 pl-2 pr-2">
|
||||
<%= render_attributes(assigns, Map.get(@record, @attribute.name), @attribute.type) %>
|
||||
<%= render_attributes(
|
||||
assigns,
|
||||
Map.get(@record, @attribute.name),
|
||||
@attribute.type,
|
||||
@relationship_name
|
||||
) %>
|
||||
</div>
|
||||
<% end %>
|
||||
"""
|
||||
|
|
|
@ -101,8 +101,24 @@ defmodule AshAdmin.Components.Resource.Table do
|
|||
|> Enum.reject(&(&1.name in skip))
|
||||
end
|
||||
|
||||
defp render_attribute(domain, record, attribute, formats, show_sensitive_fields, actor, relationship_name) do
|
||||
process_attribute(domain, record, attribute, formats, show_sensitive_fields, actor, relationship_name)
|
||||
defp render_attribute(
|
||||
domain,
|
||||
record,
|
||||
attribute,
|
||||
formats,
|
||||
show_sensitive_fields,
|
||||
actor,
|
||||
relationship_name
|
||||
) do
|
||||
process_attribute(
|
||||
domain,
|
||||
record,
|
||||
attribute,
|
||||
formats,
|
||||
show_sensitive_fields,
|
||||
actor,
|
||||
relationship_name
|
||||
)
|
||||
rescue
|
||||
_ ->
|
||||
"..."
|
||||
|
@ -138,13 +154,29 @@ defmodule AshAdmin.Components.Resource.Table do
|
|||
attributes = attributes(attribute.destination, display_attributes, [])
|
||||
|
||||
Enum.map_join(attributes, " - ", fn x ->
|
||||
render_attribute(domain, relationship, x, formats, show_sensitive_fields, actor, relationship_name)
|
||||
render_attribute(
|
||||
domain,
|
||||
relationship,
|
||||
x,
|
||||
formats,
|
||||
show_sensitive_fields,
|
||||
actor,
|
||||
relationship_name
|
||||
)
|
||||
end)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
defp process_attribute(_, record, %struct{} = attribute, formats, show_sensitive_fields, _actor, relationship_name)
|
||||
defp process_attribute(
|
||||
_,
|
||||
record,
|
||||
%struct{} = attribute,
|
||||
formats,
|
||||
show_sensitive_fields,
|
||||
_actor,
|
||||
relationship_name
|
||||
)
|
||||
when struct in [Ash.Resource.Attribute, Ash.Resource.Aggregate, Ash.Resource.Calculation] do
|
||||
{mod, func, args} =
|
||||
Keyword.get(formats || [], attribute.name, {Phoenix.HTML.Safe, :to_iodata, []})
|
||||
|
@ -162,16 +194,29 @@ defmodule AshAdmin.Components.Resource.Table do
|
|||
end
|
||||
end
|
||||
|
||||
defp process_attribute(_domain, _record, _attr, _formats, _show_sensitive_fields, _actor) do
|
||||
defp process_attribute(
|
||||
_domain,
|
||||
_record,
|
||||
_attr,
|
||||
_formats,
|
||||
_show_sensitive_fields,
|
||||
_actor,
|
||||
_relationship_name
|
||||
) do
|
||||
"..."
|
||||
end
|
||||
|
||||
defp format_sensitive_value(value, attribute, record, relationship_name) do
|
||||
assigns = %{value: value, attribute: attribute, record: record, relationship_name: relationship_name}
|
||||
assigns = %{
|
||||
value: value,
|
||||
attribute: attribute,
|
||||
record: record,
|
||||
relationship_name: relationship_name
|
||||
}
|
||||
|
||||
~H"""
|
||||
<.live_component
|
||||
id={"#{@relationship_name}-#{@record.id}-#{@attribute.name}"}
|
||||
id={"#{@relationship_name}-#{AshAdmin.Helpers.encode_primary_key(@record)}-#{@attribute.name}"}
|
||||
module={SensitiveAttribute}
|
||||
value={@value}
|
||||
>
|
||||
|
|
2
mix.exs
2
mix.exs
|
@ -37,7 +37,7 @@ defmodule AshAdmin.MixProject do
|
|||
end
|
||||
|
||||
defp elixirc_paths(:test) do
|
||||
["test/support", "lib"]
|
||||
["test/support", "lib", "dev"]
|
||||
end
|
||||
|
||||
defp elixirc_paths(:prod) do
|
||||
|
|
4
mix.lock
4
mix.lock
|
@ -12,11 +12,9 @@
|
|||
"db_connection": {:hex, :db_connection, "2.6.0", "77d835c472b5b67fc4f29556dee74bf511bbafecdcaf98c27d27fa5918152086", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "c2f992d15725e721ec7fbc1189d4ecdb8afef76648c746a8e1cad35e3b8a35f3"},
|
||||
"decimal": {:hex, :decimal, "2.1.1", "5611dca5d4b2c3dd497dec8f68751f1f1a54755e8ed2a966c2633cf885973ad6", [:mix], [], "hexpm", "53cfe5f497ed0e7771ae1a475575603d77425099ba5faef9394932b35020ffcc"},
|
||||
"dialyxir": {:hex, :dialyxir, "1.4.3", "edd0124f358f0b9e95bfe53a9fcf806d615d8f838e2202a9f430d59566b6b53b", [:mix], [{:erlex, ">= 0.2.6", [hex: :erlex, repo: "hexpm", optional: false]}], "hexpm", "bf2cfb75cd5c5006bec30141b131663299c661a864ec7fbbc72dfa557487a986"},
|
||||
"earmark": {:hex, :earmark, "1.4.46", "8c7287bd3137e99d26ae4643e5b7ef2129a260e3dcf41f251750cb4563c8fb81", [:mix], [], "hexpm", "798d86db3d79964e759ddc0c077d5eb254968ed426399fbf5a62de2b5ff8910a"},
|
||||
"earmark_parser": {:hex, :earmark_parser, "1.4.39", "424642f8335b05bb9eb611aa1564c148a8ee35c9c8a8bba6e129d51a3e3c6769", [:mix], [], "hexpm", "06553a88d1f1846da9ef066b87b57c6f605552cfbe40d20bd8d59cc6bde41944"},
|
||||
"ecto": {:hex, :ecto, "3.11.2", "e1d26be989db350a633667c5cda9c3d115ae779b66da567c68c80cfb26a8c9ee", [:mix], [{:decimal, "~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "3c38bca2c6f8d8023f2145326cc8a80100c3ffe4dcbd9842ff867f7fc6156c65"},
|
||||
"ecto_sql": {:hex, :ecto_sql, "3.11.1", "e9abf28ae27ef3916b43545f9578b4750956ccea444853606472089e7d169470", [:mix], [{:db_connection, "~> 2.4.1 or ~> 2.5", [hex: :db_connection, repo: "hexpm", optional: false]}, {:ecto, "~> 3.11.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:myxql, "~> 0.6.0", [hex: :myxql, repo: "hexpm", optional: true]}, {:postgrex, "~> 0.16.0 or ~> 0.17.0 or ~> 1.0", [hex: :postgrex, repo: "hexpm", optional: true]}, {:tds, "~> 2.1.1 or ~> 2.2", [hex: :tds, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.0 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "ce14063ab3514424276e7e360108ad6c2308f6d88164a076aac8a387e1fea634"},
|
||||
"elixir_make": {:hex, :elixir_make, "0.8.2", "cd4a5a75891362e9207adaac7e66223fd256ec2518ae013af7f10c9c85b50b5c", [:mix], [{:castore, "~> 0.1 or ~> 1.0", [hex: :castore, repo: "hexpm", optional: true]}, {:certifi, "~> 2.0", [hex: :certifi, repo: "hexpm", optional: true]}], "hexpm", "9d9607d640c372a7291e5a56ce655aa2351897929be20bd211648fdb79e725dc"},
|
||||
"erlex": {:hex, :erlex, "0.2.6", "c7987d15e899c7a2f34f5420d2a2ea0d659682c06ac607572df55a43753aa12e", [:mix], [], "hexpm", "2ed2e25711feb44d52b17d2780eabf998452f6efda104877a3881c2f8c0c0c75"},
|
||||
"esbuild": {:hex, :esbuild, "0.8.1", "0cbf919f0eccb136d2eeef0df49c4acf55336de864e63594adcea3814f3edf41", [:mix], [{:castore, ">= 0.0.0", [hex: :castore, repo: "hexpm", optional: false]}, {:jason, "~> 1.4", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "25fc876a67c13cb0a776e7b5d7974851556baeda2085296c14ab48555ea7560f"},
|
||||
"ets": {:hex, :ets, "0.9.0", "79c6a6c205436780486f72d84230c6cba2f8a9920456750ddd1e47389107d5fd", [:mix], [], "hexpm", "2861fdfb04bcaeff370f1a5904eec864f0a56dcfebe5921ea9aadf2a481c822b"},
|
||||
|
@ -35,7 +33,6 @@
|
|||
"makeup_elixir": {:hex, :makeup_elixir, "0.16.2", "627e84b8e8bf22e60a2579dad15067c755531fea049ae26ef1020cad58fe9578", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.2.3 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "41193978704763f6bbe6cc2758b84909e62984c7752b3784bd3c218bb341706b"},
|
||||
"makeup_erlang": {:hex, :makeup_erlang, "0.1.5", "e0ff5a7c708dda34311f7522a8758e23bfcd7d8d8068dc312b5eb41c6fd76eba", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "94d2e986428585a21516d7d7149781480013c56e30c6a233534bedf38867a59a"},
|
||||
"mime": {:hex, :mime, "2.0.5", "dc34c8efd439abe6ae0343edbb8556f4d63f178594894720607772a041b04b02", [:mix], [], "hexpm", "da0d64a365c45bc9935cc5c8a7fc5e49a0e0f9932a761c55d6c52b142780a05c"},
|
||||
"nimble_options": {:hex, :nimble_options, "1.1.0", "3b31a57ede9cb1502071fade751ab0c7b8dbe75a9a4c2b5bbb0943a690b63172", [:mix], [], "hexpm", "8bbbb3941af3ca9acc7835f5655ea062111c9c27bcac53e004460dfd19008a99"},
|
||||
"nimble_parsec": {:hex, :nimble_parsec, "1.4.0", "51f9b613ea62cfa97b25ccc2c1b4216e81df970acd8e16e8d1bdc58fef21370d", [:mix], [], "hexpm", "9c565862810fb383e9838c1dd2d7d2c437b3d13b267414ba6af33e50d2d1cf28"},
|
||||
"phoenix": {:hex, :phoenix, "1.7.11", "1d88fc6b05ab0c735b250932c4e6e33bfa1c186f76dcf623d8dd52f07d6379c7", [:mix], [{:castore, ">= 0.0.0", [hex: :castore, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 2.1", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: true]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.7", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:plug_crypto, "~> 1.2 or ~> 2.0", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}, {:websock_adapter, "~> 0.5.3", [hex: :websock_adapter, repo: "hexpm", optional: false]}], "hexpm", "b1ec57f2e40316b306708fe59b92a16b9f6f4bf50ccfa41aa8c7feb79e0ec02a"},
|
||||
"phoenix_html": {:hex, :phoenix_html, "4.1.1", "4c064fd3873d12ebb1388425a8f2a19348cef56e7289e1998e2d2fa758aa982e", [:mix], [], "hexpm", "f2f2df5a72bc9a2f510b21497fd7d2b86d932ec0598f0210fed4114adc546c6f"},
|
||||
|
@ -44,7 +41,6 @@
|
|||
"phoenix_pubsub": {:hex, :phoenix_pubsub, "2.1.3", "3168d78ba41835aecad272d5e8cd51aa87a7ac9eb836eabc42f6e57538e3731d", [:mix], [], "hexpm", "bba06bc1dcfd8cb086759f0edc94a8ba2bc8896d5331a1e2c2902bf8e36ee502"},
|
||||
"phoenix_template": {:hex, :phoenix_template, "1.0.4", "e2092c132f3b5e5b2d49c96695342eb36d0ed514c5b252a77048d5969330d639", [:mix], [{:phoenix_html, "~> 2.14.2 or ~> 3.0 or ~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}], "hexpm", "2c0c81f0e5c6753faf5cca2f229c9709919aba34fab866d3bc05060c9c444206"},
|
||||
"phoenix_view": {:hex, :phoenix_view, "2.0.3", "4d32c4817fce933693741deeb99ef1392619f942633dde834a5163124813aad3", [:mix], [{:phoenix_html, "~> 2.14.2 or ~> 3.0 or ~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}], "hexpm", "cd34049af41be2c627df99cd4eaa71fc52a328c0c3d8e7d4aa28f880c30e7f64"},
|
||||
"picosat_elixir": {:hex, :picosat_elixir, "0.2.3", "bf326d0f179fbb3b706bb2c15fbc367dacfa2517157d090fdfc32edae004c597", [:make, :mix], [{:elixir_make, "~> 0.6", [hex: :elixir_make, repo: "hexpm", optional: false]}], "hexpm", "f76c9db2dec9d2561ffaa9be35f65403d53e984e8cd99c832383b7ab78c16c66"},
|
||||
"plug": {:hex, :plug, "1.15.3", "712976f504418f6dff0a3e554c40d705a9bcf89a7ccef92fc6a5ef8f16a30a97", [:mix], [{:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.1.1 or ~> 1.2 or ~> 2.0", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.3 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "cc4365a3c010a56af402e0809208873d113e9c38c401cabd88027ef4f5c01fd2"},
|
||||
"plug_cowboy": {:hex, :plug_cowboy, "2.7.0", "3ae9369c60641084363b08fe90267cbdd316df57e3557ea522114b30b63256ea", [:mix], [{:cowboy, "~> 2.7.0 or ~> 2.8.0 or ~> 2.9.0 or ~> 2.10.0", [hex: :cowboy, repo: "hexpm", optional: false]}, {:cowboy_telemetry, "~> 0.3", [hex: :cowboy_telemetry, repo: "hexpm", optional: false]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "d85444fb8aa1f2fc62eabe83bbe387d81510d773886774ebdcb429b3da3c1a4a"},
|
||||
"plug_crypto": {:hex, :plug_crypto, "2.0.0", "77515cc10af06645abbfb5e6ad7a3e9714f805ae118fa1a70205f80d2d70fe73", [:mix], [], "hexpm", "53695bae57cc4e54566d993eb01074e4d894b65a3766f1c43e2c61a1b0f45ea9"},
|
||||
|
|
|
@ -2307,14 +2307,17 @@
|
|||
findPhxChildren(el, parentId) {
|
||||
return this.all(el, `${PHX_VIEW_SELECTOR}[${PHX_PARENT_ID}="${parentId}"]`);
|
||||
},
|
||||
findParentCIDs(node, cids) {
|
||||
let initial = new Set(cids);
|
||||
let parentCids = cids.reduce((acc, cid) => {
|
||||
let selector = `[${PHX_COMPONENT}="${cid}"] [${PHX_COMPONENT}]`;
|
||||
this.filterWithinSameLiveView(this.all(node, selector), node).map((el) => parseInt(el.getAttribute(PHX_COMPONENT))).forEach((childCID) => acc.delete(childCID));
|
||||
return acc;
|
||||
}, initial);
|
||||
return parentCids.size === 0 ? new Set(cids) : parentCids;
|
||||
findExistingParentCIDs(node, cids) {
|
||||
let parentCids = /* @__PURE__ */ new Set();
|
||||
let childrenCids = /* @__PURE__ */ new Set();
|
||||
cids.forEach((cid) => {
|
||||
this.filterWithinSameLiveView(this.all(node, `[${PHX_COMPONENT}="${cid}"]`), node).forEach((parent) => {
|
||||
parentCids.add(cid);
|
||||
this.all(parent, `[${PHX_COMPONENT}]`).map((el) => parseInt(el.getAttribute(PHX_COMPONENT))).forEach((childCID) => childrenCids.add(childCID));
|
||||
});
|
||||
});
|
||||
childrenCids.forEach((childCid) => parentCids.delete(childCid));
|
||||
return parentCids;
|
||||
},
|
||||
filterWithinSameLiveView(nodes, parent) {
|
||||
if (parent.querySelector(PHX_VIEW_SELECTOR)) {
|
||||
|
@ -4918,7 +4921,7 @@ removing illegal node: "${(childNode.outerHTML || childNode.nodeValue).trim()}"
|
|||
let phxChildrenAdded = false;
|
||||
if (this.rendered.isComponentOnlyDiff(diff)) {
|
||||
this.liveSocket.time("component patch complete", () => {
|
||||
let parentCids = dom_default.findParentCIDs(this.el, this.rendered.componentCIDs(diff));
|
||||
let parentCids = dom_default.findExistingParentCIDs(this.el, this.rendered.componentCIDs(diff));
|
||||
parentCids.forEach((parentCID) => {
|
||||
if (this.componentPatch(this.rendered.getComponent(diff, parentCID), parentCID)) {
|
||||
phxChildrenAdded = true;
|
||||
|
@ -6569,13 +6572,13 @@ removing illegal node: "${(childNode.outerHTML || childNode.nodeValue).trim()}"
|
|||
document.cookie = "actor_resource=" + payload.resource + ";path=/";
|
||||
document.cookie = "actor_primary_key=" + payload.primary_key + ";path=/";
|
||||
document.cookie = "actor_action=" + payload.action + ";path=/";
|
||||
document.cookie = "actor_api=" + payload.api + ";path=/";
|
||||
document.cookie = "actor_domain=" + payload.domain + ";path=/";
|
||||
});
|
||||
this.handleEvent("clear_actor", () => {
|
||||
document.cookie = "actor_resource=;path=/";
|
||||
document.cookie = "actor_primary_key=;path=/";
|
||||
document.cookie = "actor_action;path=/";
|
||||
document.cookie = "actor_api=;path=/";
|
||||
document.cookie = "actor_domain=;path=/";
|
||||
document.cookie = "actor_authorizing=false;path=/";
|
||||
document.cookie = "actor_paused=true;path=/";
|
||||
});
|
||||
|
@ -6623,7 +6626,7 @@ removing illegal node: "${(childNode.outerHTML || childNode.nodeValue).trim()}"
|
|||
actor_resource: getCookie("actor_resource"),
|
||||
actor_primary_key: getCookie("actor_primary_key"),
|
||||
actor_action: getCookie("actor_action"),
|
||||
actor_api: getCookie("actor_api"),
|
||||
actor_domain: getCookie("actor_domain"),
|
||||
actor_authorizing: getCookie("actor_authorizing"),
|
||||
actor_paused: getCookie("actor_paused")
|
||||
};
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
defmodule AshAdmin.Test.Post do
|
||||
@moduledoc false
|
||||
use Ash.Resource,
|
||||
domain: Demo.Tickets.Domain,
|
||||
domain: AshAdmin.Test.Domain,
|
||||
data_layer: Ash.DataLayer.Ets
|
||||
|
||||
attributes do
|
||||
|
@ -9,7 +9,7 @@ defmodule AshAdmin.Test.Post do
|
|||
|
||||
attribute :body, :string do
|
||||
allow_nil?(false)
|
||||
public? true
|
||||
public?(true)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue