mirror of
https://github.com/ash-project/ash_phoenix.git
synced 2024-09-20 07:12:49 +12:00
fix: ensure nested forms included as params when adding forms get proper names
This commit is contained in:
parent
ffcba2e00b
commit
66ef3e5db8
1 changed files with 50 additions and 20 deletions
|
@ -3434,32 +3434,62 @@ defmodule AshPhoenix.Form do
|
||||||
resource
|
resource
|
||||||
end
|
end
|
||||||
|
|
||||||
new_form =
|
|
||||||
for_action(
|
|
||||||
data_or_resource,
|
|
||||||
action,
|
|
||||||
Keyword.merge(opts[:validate_opts] || [],
|
|
||||||
params: opts[:params] || %{},
|
|
||||||
domain: form.domain,
|
|
||||||
actor: form.opts[:actor],
|
|
||||||
tenant: form.opts[:tenant],
|
|
||||||
accessing_from: config[:managed_relationship],
|
|
||||||
transform_params: config[:transform_params],
|
|
||||||
prepare_source: config[:prepare_source],
|
|
||||||
warn_on_unhandled_errors?: form.warn_on_unhandled_errors?,
|
|
||||||
forms: config[:forms] || [],
|
|
||||||
data: opts[:data],
|
|
||||||
transform_errors: transform_errors
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
case config[:type] || :single do
|
case config[:type] || :single do
|
||||||
:single ->
|
:single ->
|
||||||
%{new_form | name: form.name <> "[#{key}]", id: form.id <> "_#{key}", added?: true}
|
new_form =
|
||||||
|
for_action(
|
||||||
|
data_or_resource,
|
||||||
|
action,
|
||||||
|
Keyword.merge(opts[:validate_opts] || [],
|
||||||
|
as: form.name <> "[#{key}]",
|
||||||
|
id: form.id <> "_#{key}",
|
||||||
|
params: opts[:params] || %{},
|
||||||
|
domain: form.domain,
|
||||||
|
actor: form.opts[:actor],
|
||||||
|
tenant: form.opts[:tenant],
|
||||||
|
accessing_from: config[:managed_relationship],
|
||||||
|
transform_params: config[:transform_params],
|
||||||
|
prepare_source: config[:prepare_source],
|
||||||
|
warn_on_unhandled_errors?: form.warn_on_unhandled_errors?,
|
||||||
|
forms: config[:forms] || [],
|
||||||
|
data: opts[:data],
|
||||||
|
transform_errors: transform_errors
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
%{new_form | added?: true}
|
||||||
|
|
||||||
:list ->
|
:list ->
|
||||||
forms = List.wrap(forms)
|
forms = List.wrap(forms)
|
||||||
|
|
||||||
|
index =
|
||||||
|
if opts[:prepend] do
|
||||||
|
0
|
||||||
|
else
|
||||||
|
Enum.count(forms)
|
||||||
|
end
|
||||||
|
|
||||||
|
new_form =
|
||||||
|
for_action(
|
||||||
|
data_or_resource,
|
||||||
|
action,
|
||||||
|
Keyword.merge(opts[:validate_opts] || [],
|
||||||
|
as: form.name <> "[#{key}][#{index}]",
|
||||||
|
id: form.id <> "_#{key}_#{index}",
|
||||||
|
params: opts[:params] || %{},
|
||||||
|
domain: form.domain,
|
||||||
|
actor: form.opts[:actor],
|
||||||
|
tenant: form.opts[:tenant],
|
||||||
|
accessing_from: config[:managed_relationship],
|
||||||
|
transform_params: config[:transform_params],
|
||||||
|
prepare_source: config[:prepare_source],
|
||||||
|
warn_on_unhandled_errors?: form.warn_on_unhandled_errors?,
|
||||||
|
forms: config[:forms] || [],
|
||||||
|
data: opts[:data],
|
||||||
|
transform_errors: transform_errors
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
if opts[:prepend] do
|
if opts[:prepend] do
|
||||||
[%{new_form | added?: true} | forms]
|
[%{new_form | added?: true} | forms]
|
||||||
else
|
else
|
||||||
|
|
Loading…
Reference in a new issue