Allow handing custom field names to toggle fieldset component

This commit is contained in:
Râu Cao 2023-04-04 12:03:00 +02:00
parent 334b47353e
commit a33410eeb4
Signed by: raucao
GPG Key ID: 15E65F399D084BA9
2 changed files with 19 additions and 10 deletions

View File

@ -1,5 +1,5 @@
<%= tag.public_send @tag, class: "flex items-center justify-between mb-6 last:mb-0", <%= tag.public_send @tag, class: "flex items-center justify-between mb-6 last:mb-0",
data: @form.present? ? { data: @form_enabled ? {
controller: "settings--toggle", controller: "settings--toggle",
:'settings--toggle-switch-enabled-value' => @enabled.to_s :'settings--toggle-switch-enabled-value' => @enabled.to_s
} : nil do %> } : nil do %>
@ -11,16 +11,23 @@
<%= render FormElements::ToggleComponent.new( <%= render FormElements::ToggleComponent.new(
enabled: @enabled, enabled: @enabled,
input_enabled: @input_enabled, input_enabled: @input_enabled,
class_names: @form.present? ? "hidden" : nil, class_names: @form_enabled ? "hidden" : nil,
data: { data: {
:'settings--toggle-target' => "button", :'settings--toggle-target' => "button",
action: "settings--toggle#toggleSwitch" action: "settings--toggle#toggleSwitch"
}) %> }) %>
<% if @form.present? %> <% if @form_enabled %>
<%= @form.check_box @attribute, { <% if @attribute.present? %>
checked: @enabled, <%= @form.check_box @attribute, {
data: { :'settings--toggle-target' => "checkbox" } checked: @enabled,
}, "true", "false" %> data: { :'settings--toggle-target' => "checkbox" }
}, "true", "false" %>
<% else %>
<input name="<%= @field_name %>" type="hidden" value="false" autocomplete="off">
<%= check_box_tag @field_name, "true", @enabled, {
data: { :'settings--toggle-target' => "checkbox" }
} %>
<% end %>
<% end %> <% end %>
</div> </div>
<% end %> <% end %>

View File

@ -2,11 +2,13 @@
module FormElements module FormElements
class FieldsetToggleComponent < ViewComponent::Base class FieldsetToggleComponent < ViewComponent::Base
def initialize(form: nil, attribute: nil, tag: "li", enabled: false, def initialize(tag: "li", form: nil, attribute: nil, field_name: nil,
input_enabled: true, title:, description:) enabled: false, input_enabled: true, title:, description:)
@tag = tag
@form = form @form = form
@attribute = attribute @attribute = attribute
@tag = tag @field_name = field_name
@form_enabled = @form.present? || @field_name.present?
@enabled = enabled @enabled = enabled
@input_enabled = input_enabled @input_enabled = input_enabled
@title = title @title = title