diff --git a/lib/backpex/field.ex b/lib/backpex/field.ex index 7dc82554d..d34c41c72 100644 --- a/lib/backpex/field.ex +++ b/lib/backpex/field.ex @@ -11,6 +11,11 @@ defmodule Backpex.Field do type: :string, required: true ], + readonly: [ + doc: "Sets the field to readonly. Also see the [panels](/guides/fields/readonly.md) guide.", + type: {:or, [:boolean, {:fun, 1}]}, + default: false + ], class: [ type: {:or, [:string, {:fun, 1}]}, doc: """ diff --git a/lib/backpex/fields/belongs_to.ex b/lib/backpex/fields/belongs_to.ex index 20e9a2493..192a2e112 100644 --- a/lib/backpex/fields/belongs_to.ex +++ b/lib/backpex/fields/belongs_to.ex @@ -143,6 +143,8 @@ defmodule Backpex.Fields.BelongsTo do field={@form[@owner_key]} options={@options} prompt={@prompt} + readonly={@readonly} + disabled={@readonly} translate_error_fun={Backpex.Field.translate_error_fun(@field_options, assigns)} help_text={Backpex.Field.help_text(@field_options, assigns)} phx-debounce={Backpex.Field.debounce(@field_options, assigns)} diff --git a/lib/backpex/fields/boolean.ex b/lib/backpex/fields/boolean.ex index 9345db88d..c33f1782b 100644 --- a/lib/backpex/fields/boolean.ex +++ b/lib/backpex/fields/boolean.ex @@ -42,6 +42,7 @@ defmodule Backpex.Fields.Boolean do - + <:trigger class={[ "input block h-fit w-full p-2", @@ -154,12 +154,13 @@ defmodule Backpex.Fields.HasMany do aria_labelledby={Map.get(assigns, :aria_labelledby)} >
-

{@prompt}

+

{@prompt}

<.badge :for={{label, value} <- @selected} live_resource={@live_resource} label={label} value={value} + readonly={@readonly} name={@name} />
@@ -302,10 +303,17 @@ defmodule Backpex.Fields.HasMany do end attr :live_resource, :atom, required: true + attr :readonly, :boolean, default: false attr :name, :string, required: true attr :label, :string, required: true attr :value, :string, required: true + defp badge(%{readonly: true} = assigns) do + ~H""" + {@label} + """ + end + defp badge(assigns) do ~H"""
diff --git a/lib/backpex/fields/has_many_through.ex b/lib/backpex/fields/has_many_through.ex index c78ae55b5..6fccaac50 100644 --- a/lib/backpex/fields/has_many_through.ex +++ b/lib/backpex/fields/has_many_through.ex @@ -259,7 +259,7 @@ defmodule Backpex.Fields.HasManyThrough do > {label} - + {Backpex.__("Actions", @live_resource)} @@ -289,7 +289,7 @@ defmodule Backpex.Fields.HasManyThrough do {assigns} /> - +
diff --git a/lib/backpex/fields/inline_crud.ex b/lib/backpex/fields/inline_crud.ex index a0388ec62..3439222bb 100644 --- a/lib/backpex/fields/inline_crud.ex +++ b/lib/backpex/fields/inline_crud.ex @@ -180,6 +180,7 @@ defmodule Backpex.Fields.InlineCRUD do