Implements uneditable type for custom fields closes #198 #433

Merged
carla merged 4 commits from feature/198_edit_custom_fields into main 2026-02-19 10:02:19 +01:00
2 changed files with 28 additions and 16 deletions
Showing only changes of commit 9b1aad884e - Show all commits

View file

@ -75,9 +75,7 @@ defmodule Mv.Membership.CustomField do
validate fn changeset, _context -> validate fn changeset, _context ->
if Ash.Changeset.changing_attribute?(changeset, :value_type) do if Ash.Changeset.changing_attribute?(changeset, :value_type) do
{:error, {:error, field: :value_type, message: "cannot be changed after creation"}
field: :value_type,
message: "cannot be changed after creation"}
else else
:ok :ok
end end

View file

@ -45,19 +45,33 @@ defmodule MvWeb.CustomFieldLive.FormComponent do
<.input field={@form[:name]} type="text" label={gettext("Name")} /> <.input field={@form[:name]} type="text" label={gettext("Name")} />
<%= if @custom_field do %> <%= if @custom_field do %>
<%!-- Show value_type as read-only text when editing --%> <%!-- Show value_type as read-only input when editing (matches Member Field pattern) --%>
<div class="form-control"> <div
<label class="label"> class="tooltip tooltip-right"
<span class="label-text">{gettext("Value type")}</span> data-tip={gettext("Value type cannot be changed after creation")}
</label> aria-label={gettext("Value type cannot be changed after creation")}
<div class="input input-bordered bg-base-200 text-base-content/70"> >
{MvWeb.Translations.FieldTypes.label(@custom_field.value_type)} <fieldset class="mb-2 fieldset">
</div> <label>
<label class="label"> <span class="mb-1 label flex items-center gap-2">
<span class="label-text-alt text-base-content/70"> {gettext("Value type")}
{gettext("Value type cannot be changed after creation")} <.icon
</span> name="hero-information-circle"
</label> class="w-4 h-4 text-base-content/60 cursor-help"
aria-hidden="true"
/>
</span>
<input
type="text"
name={@form[:value_type].name}
id={@form[:value_type].id}
value={MvWeb.Translations.FieldTypes.label(@custom_field.value_type)}
disabled
readonly
class="w-full input"
/>
</label>
</fieldset>
</div> </div>
<% else %> <% else %>
<%!-- Show value_type as select when creating --%> <%!-- Show value_type as select when creating --%>