diff --git a/demo/assets/css/app.css b/demo/assets/css/app.css index af0ad9ac..8deeb8a1 100644 --- a/demo/assets/css/app.css +++ b/demo/assets/css/app.css @@ -3,12 +3,6 @@ @import "tailwindcss/utilities"; @layer utilities { - /* LiveView specific classes */ - .phx-no-feedback.invalid-feedback, - .phx-no-feedback .invalid-feedback { - display: none; - } - .phx-click-loading { opacity: 0.5; transition: opacity 1s ease-out; diff --git a/demo/assets/tailwind.config.js b/demo/assets/tailwind.config.js index e0877030..bcc52b58 100644 --- a/demo/assets/tailwind.config.js +++ b/demo/assets/tailwind.config.js @@ -71,7 +71,6 @@ module.exports = { plugins: [ require('@tailwindcss/typography'), require('daisyui'), - plugin(({ addVariant }) => addVariant('phx-no-feedback', ['.phx-no-feedback&', '.phx-no-feedback &'])), plugin(({ addVariant }) => addVariant('phx-click-loading', ['.phx-click-loading&', '.phx-click-loading &'])), plugin(({ addVariant }) => addVariant('phx-submit-loading', ['.phx-submit-loading&', '.phx-submit-loading &'])), plugin(({ addVariant }) => addVariant('phx-change-loading', ['.phx-change-loading&', '.phx-change-loading &'])), diff --git a/demo/lib/demo_web/components/layouts/admin.html.heex b/demo/lib/demo_web/components/layouts/admin.html.heex index df923391..5b461efb 100644 --- a/demo/lib/demo_web/components/layouts/admin.html.heex +++ b/demo/lib/demo_web/components/layouts/admin.html.heex @@ -92,5 +92,5 @@ - <%= @inner_content %> + {@inner_content} diff --git a/demo/lib/demo_web/components/layouts/app.html.heex b/demo/lib/demo_web/components/layouts/app.html.heex index 05433985..ccdf89cc 100644 --- a/demo/lib/demo_web/components/layouts/app.html.heex +++ b/demo/lib/demo_web/components/layouts/app.html.heex @@ -1 +1 @@ -<%= @inner_content %> +{@inner_content} diff --git a/demo/lib/demo_web/components/layouts/root.html.heex b/demo/lib/demo_web/components/layouts/root.html.heex index 746d615d..65296f40 100644 --- a/demo/lib/demo_web/components/layouts/root.html.heex +++ b/demo/lib/demo_web/components/layouts/root.html.heex @@ -6,14 +6,14 @@ <.sentry_meta_tag /> <.live_title suffix=" ยท Backpex"> - <%= assigns[:page_title] || "Phoenix Admin Panel build with PETAL" %> + {assigns[:page_title] || "Phoenix Admin Panel build with PETAL"} - <%= @inner_content %> + {@inner_content} <.analytics /> diff --git a/demo/lib/demo_web/live/post_live.ex b/demo/lib/demo_web/live/post_live.ex index 4662935e..21214892 100644 --- a/demo/lib/demo_web/live/post_live.ex +++ b/demo/lib/demo_web/live/post_live.ex @@ -146,7 +146,7 @@ defmodule DemoWeb.PostLive do searchable: true, render: fn assigns -> ~H""" -

<%= Number.Delimit.number_to_delimited(@value, precision: 0, delimiter: ".") %>

+

{Number.Delimit.number_to_delimited(@value, precision: 0, delimiter: ".")}

""" end }, diff --git a/demo/lib/demo_web/live/product_live.ex b/demo/lib/demo_web/live/product_live.ex index cebc32bd..d963e99f 100644 --- a/demo/lib/demo_web/live/product_live.ex +++ b/demo/lib/demo_web/live/product_live.ex @@ -52,7 +52,7 @@ defmodule DemoWeb.ProductLive do """ assigns -> - ~H"

<%= Backpex.HTML.pretty_value(@value) %>

" + ~H"

{Backpex.HTML.pretty_value(@value)}

" end, except: [:index, :resource_action], align: :center @@ -80,7 +80,7 @@ defmodule DemoWeb.ProductLive do end, render: fn assigns -> ~H""" -

<%= Number.Delimit.number_to_delimited(@value, precision: 0, delimiter: ".") %>

+

{Number.Delimit.number_to_delimited(@value, precision: 0, delimiter: ".")}

""" end }, diff --git a/demo/lib/demo_web/live/user_live.ex b/demo/lib/demo_web/live/user_live.ex index 02c89968..0f8f7190 100644 --- a/demo/lib/demo_web/live/user_live.ex +++ b/demo/lib/demo_web/live/user_live.ex @@ -71,7 +71,7 @@ defmodule DemoWeb.UserLive do list_existing_files: &list_existing_files/1, render: fn %{value: value} = assigns when value == "" or is_nil(value) -> - ~H"

<%= Backpex.HTML.pretty_value(@value) %>

" + ~H"

{Backpex.HTML.pretty_value(@value)}

" assigns -> ~H'' diff --git a/demo/mix.exs b/demo/mix.exs index f37a233a..94622999 100644 --- a/demo/mix.exs +++ b/demo/mix.exs @@ -47,7 +47,7 @@ defmodule Demo.MixProject do {:telemetry_poller, "~> 1.0"}, {:telemetry_metrics, "~> 1.0"}, {:gettext, "~> 0.26"}, - {:sentry, "~> 10.1"}, + {:sentry, "~> 10.8"}, {:hackney, "~> 1.17", override: true}, {:circular_buffer, "~> 0.4.0"}, @@ -55,7 +55,7 @@ defmodule Demo.MixProject do {:bandit, "~> 1.0"}, {:phoenix, "~> 1.7.6"}, {:phoenix_pubsub, "~> 2.0"}, - {:phoenix_live_view, "~> 0.20.0"}, + {:phoenix_live_view, "~> 1.0"}, {:phoenix_live_dashboard, "~> 0.8"}, {:phoenix_live_reload, "~> 1.2", only: :dev}, diff --git a/demo/mix.lock b/demo/mix.lock index aa78a75d..d5a7be56 100644 --- a/demo/mix.lock +++ b/demo/mix.lock @@ -52,7 +52,7 @@ "phoenix_html_helpers": {:hex, :phoenix_html_helpers, "1.0.1", "7eed85c52eff80a179391036931791ee5d2f713d76a81d0d2c6ebafe1e11e5ec", [:mix], [{:phoenix_html, "~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:plug, "~> 1.5", [hex: :plug, repo: "hexpm", optional: true]}], "hexpm", "cffd2385d1fa4f78b04432df69ab8da63dc5cf63e07b713a4dcf36a3740e3090"}, "phoenix_live_dashboard": {:hex, :phoenix_live_dashboard, "0.8.6", "7b1f0327f54c9eb69845fd09a77accf922f488c549a7e7b8618775eb603a62c7", [:mix], [{:ecto, "~> 3.6.2 or ~> 3.7", [hex: :ecto, repo: "hexpm", optional: true]}, {:ecto_mysql_extras, "~> 0.5", [hex: :ecto_mysql_extras, repo: "hexpm", optional: true]}, {:ecto_psql_extras, "~> 0.7", [hex: :ecto_psql_extras, repo: "hexpm", optional: true]}, {:ecto_sqlite3_extras, "~> 1.1.7 or ~> 1.2.0", [hex: :ecto_sqlite3_extras, repo: "hexpm", optional: true]}, {:mime, "~> 1.6 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:phoenix_live_view, "~> 0.19 or ~> 1.0", [hex: :phoenix_live_view, repo: "hexpm", optional: false]}, {:telemetry_metrics, "~> 0.6 or ~> 1.0", [hex: :telemetry_metrics, repo: "hexpm", optional: false]}], "hexpm", "1681ab813ec26ca6915beb3414aa138f298e17721dc6a2bde9e6eb8a62360ff6"}, "phoenix_live_reload": {:hex, :phoenix_live_reload, "1.5.3", "f2161c207fda0e4fb55165f650f7f8db23f02b29e3bff00ff7ef161d6ac1f09d", [:mix], [{:file_system, "~> 0.3 or ~> 1.0", [hex: :file_system, repo: "hexpm", optional: false]}, {:phoenix, "~> 1.4", [hex: :phoenix, repo: "hexpm", optional: false]}], "hexpm", "b4ec9cd73cb01ff1bd1cac92e045d13e7030330b74164297d1aee3907b54803c"}, - "phoenix_live_view": {:hex, :phoenix_live_view, "0.20.17", "f396bbdaf4ba227b82251eb75ac0afa6b3da5e509bc0d030206374237dfc9450", [:mix], [{:floki, "~> 0.36", [hex: :floki, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix, "~> 1.6.15 or ~> 1.7.0", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 3.3 or ~> 4.0", [hex: :phoenix_html, 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.15", [hex: :plug, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "a61d741ffb78c85fdbca0de084da6a48f8ceb5261a79165b5a0b59e5f65ce98b"}, + "phoenix_live_view": {:hex, :phoenix_live_view, "1.0.1", "5389a30658176c0de816636ce276567478bffd063c082515a6e8368b8fc9a0db", [:mix], [{:floki, "~> 0.36", [hex: :floki, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix, "~> 1.6.15 or ~> 1.7.0", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 3.3 or ~> 4.0", [hex: :phoenix_html, 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.15", [hex: :plug, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "c0f517e6f290f10dbb94343ac22e0109437fb1fa6f0696e7c73967b789c1c285"}, "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"}, "plug": {:hex, :plug, "1.16.1", "40c74619c12f82736d2214557dedec2e9762029b2438d6d175c5074c933edc9d", [: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", "a13ff6b9006b03d7e33874945b2755253841b238c34071ed85b0e86057f8cddc"}, diff --git a/lib/backpex/fields/belongs_to.ex b/lib/backpex/fields/belongs_to.ex index f152e01a..5af27a90 100644 --- a/lib/backpex/fields/belongs_to.ex +++ b/lib/backpex/fields/belongs_to.ex @@ -87,7 +87,7 @@ defmodule Backpex.Fields.BelongsTo do def render_value(%{value: value} = assigns) when is_nil(value) do ~H"""

- <%= HTML.pretty_value(nil) %> + {HTML.pretty_value(nil)}

""" end @@ -105,11 +105,11 @@ defmodule Backpex.Fields.BelongsTo do
<%= if @link do %> <.link navigate={@link} class={[@live_action in [:index, :resource_action] && "truncate", "hover:underline"]}> - <%= @display_text %> + {@display_text} <% else %>

- <%= HTML.pretty_value(@display_text) %> + {HTML.pretty_value(@display_text)}

<% end %>
diff --git a/lib/backpex/fields/currency.ex b/lib/backpex/fields/currency.ex index 0ad96fde..1a323978 100644 --- a/lib/backpex/fields/currency.ex +++ b/lib/backpex/fields/currency.ex @@ -56,7 +56,7 @@ defmodule Backpex.Fields.Currency do ~H"""

- <%= @casted_value %> + {@casted_value}

""" end diff --git a/lib/backpex/fields/date.ex b/lib/backpex/fields/date.ex index 55b43845..979fc452 100644 --- a/lib/backpex/fields/date.ex +++ b/lib/backpex/fields/date.ex @@ -92,7 +92,7 @@ defmodule Backpex.Fields.Date do ~H"""

- <%= @value %> + {@value}

""" end diff --git a/lib/backpex/fields/date_time.ex b/lib/backpex/fields/date_time.ex index 3b435dba..8e0853f8 100644 --- a/lib/backpex/fields/date_time.ex +++ b/lib/backpex/fields/date_time.ex @@ -92,7 +92,7 @@ defmodule Backpex.Fields.DateTime do ~H"""

- <%= @value %> + {@value}

""" end diff --git a/lib/backpex/fields/has_many.ex b/lib/backpex/fields/has_many.ex index 52652917..ead8924e 100644 --- a/lib/backpex/fields/has_many.ex +++ b/lib/backpex/fields/has_many.ex @@ -115,7 +115,7 @@ defmodule Backpex.Fields.HasMany do def render_value(assigns) do ~H"""
- <%= if @value == [], do: raw("—") %> + {if @value == [], do: raw("—")}
<.intersperse :let={item} enum={@value |> Enum.sort_by(&Map.get(&1, display_field(@field)), :asc)}> @@ -146,23 +146,23 @@ defmodule Backpex.Fields.HasMany do <:label align={Backpex.Field.align_label(@field_options, assigns)}> -
@@ -373,9 +344,9 @@ defmodule Backpex.HTML.Form do def form_errors?(false, _form), do: false def form_errors?(true = _show_errors, form), do: form.errors != [] - def translate_form_errors(field = %Phoenix.HTML.FormField{}, translate_error_fun) + def translate_form_errors(errors, translate_error_fun) when is_function(translate_error_fun, 1) do - field.errors + errors |> Enum.map(fn error -> error |> translate_error_fun.() diff --git a/lib/backpex/html/layout.ex b/lib/backpex/html/layout.ex index c2a89c1f..07f613df 100644 --- a/lib/backpex/html/layout.ex +++ b/lib/backpex/html/layout.ex @@ -50,7 +50,7 @@ defmodule Backpex.HTML.Layout do @click.outside="mobile_menu_open = false" class={"#{for sidebar <- @sidebar, do: sidebar[:class] || ""} h-0 flex-1 flex-col space-y-1 overflow-y-auto px-2 pt-5 pb-4"} > - <%= render_slot(@sidebar) %> + {render_slot(@sidebar)}
@@ -64,7 +64,7 @@ defmodule Backpex.HTML.Layout do @@ -73,7 +73,7 @@ defmodule Backpex.HTML.Layout do
0, do: "md:pl-64", else: ""} flex flex-1 flex-col"}>
<.topbar class={for topbar <- @topbar, do: topbar[:class] || ""}> - <%= render_slot(@topbar) %> + {render_slot(@topbar)} <%= for _ <- @sidebar do %>
- <%= render_slot(@inner_block) %> + {render_slot(@inner_block)}
""" @@ -461,7 +460,7 @@ defmodule Backpex.HTML.Layout do ~H""" <.link class={@class} {@extra}> - <%= render_slot(@inner_block) %> + {render_slot(@inner_block)} """ end @@ -483,11 +482,11 @@ defmodule Backpex.HTML.Layout do ~H"""
- <%= render_slot(@label) %> + {render_slot(@label)}
- <%= render_slot(@inner_block) %> + {render_slot(@inner_block)}
""" @@ -542,7 +541,7 @@ defmodule Backpex.HTML.Layout do
- <%= @title %> + {@title}
@@ -608,7 +607,7 @@ defmodule Backpex.HTML.Layout do def input_label(assigns) do ~H"""

- <%= @text %> + {@text}

""" end diff --git a/lib/backpex/html/resource.ex b/lib/backpex/html/resource.ex index bdf3f28e..9eb2b791 100644 --- a/lib/backpex/html/resource.ex +++ b/lib/backpex/html/resource.ex @@ -70,9 +70,9 @@ defmodule Backpex.HTML.Resource do } replace > -

<%= @label %>

+

{@label}

<%= if @name == @query_options.order_by do %> - <%= order_icon(assigns, @query_options.order_direction) %> + {order_icon(assigns, @query_options.order_direction)} <% end %> """ @@ -220,11 +220,11 @@ defmodule Backpex.HTML.Resource do @@ -394,8 +394,8 @@ defmodule Backpex.HTML.Resource do ~H"""
0} class="text-base-content pr-2 text-sm"> - <%= Backpex.translate({"Items %{from} to %{to}", %{from: @from, to: @to}}) %> - <%= "(#{@total} #{Backpex.translate("total")})" %> + {Backpex.translate({"Items %{from} to %{to}", %{from: @from, to: @to}})} + {"(#{@total} #{Backpex.translate("total")})"}
""" end @@ -443,12 +443,12 @@ defmodule Backpex.HTML.Resource do ~H""" <%= if @current_page == @number do %> <% else %> <.link href={@href}> <% end %> @@ -605,7 +605,7 @@ defmodule Backpex.HTML.Resource do ~H""" <.form for={@form} class={@class} phx-change="select-page-size" phx-submit="select-page-size"> """ @@ -628,7 +628,7 @@ defmodule Backpex.HTML.Resource do
<.link :if={@live_resource.can?(assigns, :new, nil)} patch={Router.get_path(@socket, @live_resource, @params, :new)}> @@ -637,7 +637,7 @@ defmodule Backpex.HTML.Resource do patch={Router.get_path(@socket, @live_resource, @params, :resource_action, key, @query_options)} > @@ -650,7 +650,7 @@ defmodule Backpex.HTML.Resource do phx-click="item-action" phx-value-action-key={key} > - <%= action.module.label(assigns, nil) %> + {action.module.label(assigns, nil)}
""" @@ -774,7 +774,7 @@ defmodule Backpex.HTML.Resource do <.empty_state_content :if={not @search_active? and not @filter_active?} title={@title}> <.link :if={@create_allowed} patch={Router.get_path(@socket, @live_resource, @params, :new)}> @@ -792,9 +792,9 @@ defmodule Backpex.HTML.Resource do defp empty_state_content(assigns) do ~H""" -

<%= @title %>

-

<%= @subtitle %>

- <%= render_slot(@inner_block) %> +

{@title}

+

{@subtitle}

+ {render_slot(@inner_block)} """ end @@ -852,7 +852,7 @@ defmodule Backpex.HTML.Resource do ~H"""

- <%= @label %> + {@label}

@@ -890,7 +890,7 @@ defmodule Backpex.HTML.Resource do
- <%= @label %> + {@label}
@@ -916,11 +916,11 @@ defmodule Backpex.HTML.Resource do ~H"""
0 and @visible} class="items-center gap-4 lg:flex"> <%= for {_key, metric} <- @metrics do %> - <%= component( + {component( &metric.module.render/1, [metric: metric], {__ENV__.module, __ENV__.function, __ENV__.file, __ENV__.line} - ) %> + )} <% end %>
""" diff --git a/lib/backpex/html/resource/form_component.html.heex b/lib/backpex/html/resource/form_component.html.heex index a4f0386e..60a6add5 100644 --- a/lib/backpex/html/resource/form_component.html.heex +++ b/lib/backpex/html/resource/form_component.html.heex @@ -31,12 +31,12 @@

- <%= Backpex.translate("There are errors in the form.") %> + {Backpex.translate("There are errors in the form.")}

<%= if @action_type == :item do %> <% else %> <.link navigate={@live_resource.return_to(@socket, assigns, @live_action, @item)}> <% end %>
diff --git a/lib/backpex/html/resource/resource_form.html.heex b/lib/backpex/html/resource/resource_form.html.heex index b3b07d81..7b6934f2 100644 --- a/lib/backpex/html/resource/resource_form.html.heex +++ b/lib/backpex/html/resource/resource_form.html.heex @@ -1,7 +1,7 @@
- <%= @live_resource.render_resource_slot(assigns, @live_action, :before_page_title) %> - <%= @live_resource.render_resource_slot(assigns, @live_action, :page_title) %> + {@live_resource.render_resource_slot(assigns, @live_action, :before_page_title)} + {@live_resource.render_resource_slot(assigns, @live_action, :page_title)} - <%= @live_resource.render_resource_slot(assigns, @live_action, :before_main) %> - <%= @live_resource.render_resource_slot(assigns, @live_action, :main) %> + {@live_resource.render_resource_slot(assigns, @live_action, :before_main)} + {@live_resource.render_resource_slot(assigns, @live_action, :main)}
diff --git a/lib/backpex/html/resource/resource_index.html.heex b/lib/backpex/html/resource/resource_index.html.heex index 24692df3..38bfa319 100644 --- a/lib/backpex/html/resource/resource_index.html.heex +++ b/lib/backpex/html/resource/resource_index.html.heex @@ -14,7 +14,7 @@ <%= if @action_to_confirm do %> <.modal title={@action_to_confirm.module.label(assigns, nil)}>
- <%= @action_to_confirm.module.confirm(assigns) %> + {@action_to_confirm.module.confirm(assigns)}
<.live_component @@ -28,18 +28,18 @@ <% end %> - <%= @live_resource.render_resource_slot(assigns, :index, :before_page_title) %> - <%= @live_resource.render_resource_slot(assigns, :index, :page_title) %> + {@live_resource.render_resource_slot(assigns, :index, :before_page_title)} + {@live_resource.render_resource_slot(assigns, :index, :page_title)} - <%= @live_resource.render_resource_slot(assigns, :index, :before_actions) %> - <%= @live_resource.render_resource_slot(assigns, :index, :actions) %> + {@live_resource.render_resource_slot(assigns, :index, :before_actions)} + {@live_resource.render_resource_slot(assigns, :index, :actions)} - <%= @live_resource.render_resource_slot(assigns, :index, :before_filters) %> - <%= @live_resource.render_resource_slot(assigns, :index, :filters) %> + {@live_resource.render_resource_slot(assigns, :index, :before_filters)} + {@live_resource.render_resource_slot(assigns, :index, :filters)} - <%= @live_resource.render_resource_slot(assigns, :index, :before_metrics) %> - <%= @live_resource.render_resource_slot(assigns, :index, :metrics) %> + {@live_resource.render_resource_slot(assigns, :index, :before_metrics)} + {@live_resource.render_resource_slot(assigns, :index, :metrics)} - <%= @live_resource.render_resource_slot(assigns, :index, :before_main) %> - <%= @live_resource.render_resource_slot(assigns, :index, :main) %> + {@live_resource.render_resource_slot(assigns, :index, :before_main)} + {@live_resource.render_resource_slot(assigns, :index, :main)}
diff --git a/lib/backpex/html/resource/resource_index_table.html.heex b/lib/backpex/html/resource/resource_index_table.html.heex index bd6378c7..71f1a28e 100644 --- a/lib/backpex/html/resource/resource_index_table.html.heex +++ b/lib/backpex/html/resource/resource_index_table.html.heex @@ -43,7 +43,7 @@ query_options={@query_options} /> <% else %> - <%= label %> + {label} <% end %>
@@ -122,7 +122,7 @@ phx-value-item-id={Map.get(item, @live_resource.config(:primary_key))} aria-label={action.module.label(assigns, item)} > - <%= action.module.icon(assigns, item) %> + {action.module.icon(assigns, item)} diff --git a/lib/backpex/html/resource/resource_show.html.heex b/lib/backpex/html/resource/resource_show.html.heex index 7941aeea..5bcbcbea 100644 --- a/lib/backpex/html/resource/resource_show.html.heex +++ b/lib/backpex/html/resource/resource_show.html.heex @@ -1,7 +1,7 @@
- <%= @live_resource.render_resource_slot(assigns, :show, :before_page_title) %> - <%= @live_resource.render_resource_slot(assigns, :show, :page_title) %> + {@live_resource.render_resource_slot(assigns, :show, :before_page_title)} + {@live_resource.render_resource_slot(assigns, :show, :page_title)} - <%= @live_resource.render_resource_slot(assigns, :show, :before_main) %> - <%= @live_resource.render_resource_slot(assigns, :show, :main) %> + {@live_resource.render_resource_slot(assigns, :show, :before_main)} + {@live_resource.render_resource_slot(assigns, :show, :main)}
diff --git a/lib/backpex/live_components/form_component.ex b/lib/backpex/live_components/form_component.ex index 91c5996d..220a17fa 100644 --- a/lib/backpex/live_components/form_component.ex +++ b/lib/backpex/live_components/form_component.ex @@ -431,13 +431,35 @@ defmodule Backpex.FormComponent do defp put_upload_change(change, socket, action) do Enum.reduce(socket.assigns.fields, change, fn - {_name, %{upload_key: upload_key} = field_options} = _field, acc -> + {name, %{upload_key: upload_key} = field_options} = _field, acc -> %{put_upload_change: put_upload_change} = field_options uploaded_entries = uploaded_entries(socket, upload_key) removed_entries = Keyword.get(socket.assigns.removed_uploads, upload_key, []) - put_upload_change.(socket, acc, socket.assigns.item, uploaded_entries, removed_entries, action) + change = put_upload_change.(socket, acc, socket.assigns.item, uploaded_entries, removed_entries, action) + + upload_used_input_data = Map.get(change, "#{to_string(name)}_used_input") + + used_input? = + if upload_used_input_data == "false" do + false + else + true + end + + # Changed + if uploaded_entries != {[], []} or removed_entries != [] or used_input? == true do + change + |> Map.drop(["_unused_#{to_string(name)}", "_unused_#{to_string(name)}_used_input"]) + |> Map.put("#{to_string(name)}_used_input", "true") + + # Unchanged + else + change + |> Map.put("_unused_#{to_string(name)}", "") + |> Map.put("#{to_string(name)}_used_input", "false") + end _field, acc -> acc diff --git a/lib/backpex/live_resource.ex b/lib/backpex/live_resource.ex index dd714a99..1ee03d7e 100644 --- a/lib/backpex/live_resource.ex +++ b/lib/backpex/live_resource.ex @@ -349,7 +349,7 @@ defmodule Backpex.LiveResource do def render_resource_slot(var!(assigns), :index, :page_title) do ~H""" <.main_title class="flex items-center justify-between"> - <%= @plural_name %> + {@plural_name} """ end @@ -386,7 +386,7 @@ defmodule Backpex.LiveResource do def render_resource_slot(var!(assigns), :show, :page_title) do ~H""" <.main_title class="flex items-center justify-between"> - <%= @singular_name %> + {@singular_name} <.link :if={@live_resource.can?(assigns, :edit, @item)} class="tooltip hover:z-30" @@ -414,7 +414,7 @@ defmodule Backpex.LiveResource do def render_resource_slot(var!(assigns), :edit, :page_title) do ~H""" <.main_title class="mb-4"> - <%= Backpex.translate({"Edit %{resource}", %{resource: @singular_name}}) %> + {Backpex.translate({"Edit %{resource}", %{resource: @singular_name}})} """ end @@ -423,7 +423,7 @@ defmodule Backpex.LiveResource do def render_resource_slot(var!(assigns), :new, :page_title) do ~H""" <.main_title class="mb-4"> - <%= @create_button_label %> + {@create_button_label} """ end diff --git a/lib/backpex/metrics/value.ex b/lib/backpex/metrics/value.ex index 96f79717..0cc6db9b 100644 --- a/lib/backpex/metrics/value.ex +++ b/lib/backpex/metrics/value.ex @@ -50,10 +50,10 @@ defmodule Backpex.Metrics.Value do

- <%= @label %> + {@label}

- <%= @value %> + {@value}

diff --git a/mix.exs b/mix.exs index e4e8a151..082150b5 100644 --- a/mix.exs +++ b/mix.exs @@ -52,7 +52,7 @@ defmodule Backpex.MixProject do {:phoenix, "~> 1.7.6"}, {:phoenix_html, "~> 4.1"}, {:phoenix_html_helpers, "~> 1.0"}, - {:phoenix_live_view, "~> 0.20.0"}, + {:phoenix_live_view, "~> 1.0"}, # adapters {:ecto_sql, "~> 3.6"}, diff --git a/mix.lock b/mix.lock index bdfeb66e..a26aa557 100644 --- a/mix.lock +++ b/mix.lock @@ -3,7 +3,7 @@ "ash_postgres": {:hex, :ash_postgres, "2.4.21", "0bbe2f8603fc6709742fd666d347c9236bd1a5794d52692964d9170794a2b7d6", [:mix], [{:ash, ">= 3.4.48 and < 4.0.0-0", [hex: :ash, repo: "hexpm", optional: false]}, {:ash_sql, ">= 0.2.43 and < 1.0.0-0", [hex: :ash_sql, repo: "hexpm", optional: false]}, {:ecto, ">= 3.12.1 and < 4.0.0-0", [hex: :ecto, repo: "hexpm", optional: false]}, {:ecto_sql, "~> 3.12", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:igniter, ">= 0.4.4 and < 1.0.0-0", [hex: :igniter, repo: "hexpm", optional: true]}, {:inflex, "~> 2.1", [hex: :inflex, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:owl, "~> 0.11", [hex: :owl, repo: "hexpm", optional: false]}, {:postgrex, ">= 0.0.0", [hex: :postgrex, repo: "hexpm", optional: false]}], "hexpm", "dac98a6bc8f6836a942257674a038c682b017bafd3480d2f73c9889c808e86a9"}, "ash_sql": {:hex, :ash_sql, "0.2.44", "d9ab30acb8bedfbaf73f1a737ab319cdb04bcff40e4f4997b95d4e0a8a0e3536", [:mix], [{:ash, ">= 3.1.7 and < 4.0.0-0", [hex: :ash, repo: "hexpm", optional: false]}, {:ecto, "~> 3.9", [hex: :ecto, repo: "hexpm", optional: false]}, {:ecto_sql, "~> 3.9", [hex: :ecto_sql, repo: "hexpm", optional: false]}], "hexpm", "a4a178da467c57b443d7525632a686712c0f561b518ad870d14779b550d9e855"}, "bunt": {:hex, :bunt, "1.0.0", "081c2c665f086849e6d57900292b3a161727ab40431219529f13c4ddcf3e7a44", [:mix], [], "hexpm", "dc5f86aa08a5f6fa6b8096f0735c4e76d54ae5c9fa2c143e5a1fc7c1cd9bb6b5"}, - "castore": {:hex, :castore, "1.0.10", "43bbeeac820f16c89f79721af1b3e092399b3a1ecc8df1a472738fd853574911", [:mix], [], "hexpm", "1b0b7ea14d889d9ea21202c43a4fa015eb913021cb535e8ed91946f4b77a8848"}, + "castore": {:hex, :castore, "1.0.11", "4bbd584741601eb658007339ea730b082cc61f3554cf2e8f39bf693a11b49073", [:mix], [], "hexpm", "e03990b4db988df56262852f20de0f659871c35154691427a5047f4967a16a62"}, "credo": {:hex, :credo, "1.7.11", "d3e805f7ddf6c9c854fd36f089649d7cf6ba74c42bc3795d587814e3c9847102", [:mix], [{:bunt, "~> 0.2.1 or ~> 1.0", [hex: :bunt, repo: "hexpm", optional: false]}, {:file_system, "~> 0.2 or ~> 1.0", [hex: :file_system, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "56826b4306843253a66e47ae45e98e7d284ee1f95d53d1612bb483f88a8cf219"}, "db_connection": {:hex, :db_connection, "2.7.0", "b99faa9291bb09892c7da373bb82cba59aefa9b36300f6145c5f201c7adf48ec", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "dcf08f31b2701f857dfc787fbad78223d61a32204f217f15e881dd93e4bdd3ff"}, "decimal": {:hex, :decimal, "2.3.0", "3ad6255aa77b4a3c4f818171b12d237500e63525c2fd056699967a3e7ea20f62", [:mix], [], "hexpm", "a4d66355cb29cb47c3cf30e71329e58361cfcb37c34235ef3bf1d7bf3773aeac"}, @@ -33,7 +33,7 @@ "phoenix_ecto": {:hex, :phoenix_ecto, "4.6.3", "f686701b0499a07f2e3b122d84d52ff8a31f5def386e03706c916f6feddf69ef", [:mix], [{:ecto, "~> 3.5", [hex: :ecto, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 2.14.2 or ~> 3.0 or ~> 4.1", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:plug, "~> 1.9", [hex: :plug, repo: "hexpm", optional: false]}, {:postgrex, "~> 0.16 or ~> 1.0", [hex: :postgrex, repo: "hexpm", optional: true]}], "hexpm", "909502956916a657a197f94cc1206d9a65247538de8a5e186f7537c895d95764"}, "phoenix_html": {:hex, :phoenix_html, "4.2.0", "83a4d351b66f472ebcce242e4ae48af1b781866f00ef0eb34c15030d4e2069ac", [:mix], [], "hexpm", "9713b3f238d07043583a94296cc4bbdceacd3b3a6c74667f4df13971e7866ec8"}, "phoenix_html_helpers": {:hex, :phoenix_html_helpers, "1.0.1", "7eed85c52eff80a179391036931791ee5d2f713d76a81d0d2c6ebafe1e11e5ec", [:mix], [{:phoenix_html, "~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:plug, "~> 1.5", [hex: :plug, repo: "hexpm", optional: true]}], "hexpm", "cffd2385d1fa4f78b04432df69ab8da63dc5cf63e07b713a4dcf36a3740e3090"}, - "phoenix_live_view": {:hex, :phoenix_live_view, "0.20.17", "f396bbdaf4ba227b82251eb75ac0afa6b3da5e509bc0d030206374237dfc9450", [:mix], [{:floki, "~> 0.36", [hex: :floki, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix, "~> 1.6.15 or ~> 1.7.0", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 3.3 or ~> 4.0", [hex: :phoenix_html, 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.15", [hex: :plug, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "a61d741ffb78c85fdbca0de084da6a48f8ceb5261a79165b5a0b59e5f65ce98b"}, + "phoenix_live_view": {:hex, :phoenix_live_view, "1.0.2", "e7b1dd68c86326e2c45cc81da41e332cc8aa7228a7161e2c811dcd7f1dd14db1", [:mix], [{:floki, "~> 0.36", [hex: :floki, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix, "~> 1.6.15 or ~> 1.7.0", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 3.3 or ~> 4.0", [hex: :phoenix_html, 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.15", [hex: :plug, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "8a40265b0cd7d3a35f136dfa3cc048e3b198fc3718763411a78c323a44ebebee"}, "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"}, "plug": {:hex, :plug, "1.16.1", "40c74619c12f82736d2214557dedec2e9762029b2438d6d175c5074c933edc9d", [: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", "a13ff6b9006b03d7e33874945b2755253841b238c34071ed85b0e86057f8cddc"},