From a33410eeb421652416d472d9d20f58cd64da6b53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A2u=20Cao?= Date: Tue, 4 Apr 2023 12:03:00 +0200 Subject: [PATCH] Allow handing custom field names to toggle fieldset component --- .../fieldset_toggle_component.html.erb | 21 ++++++++++++------- .../fieldset_toggle_component.rb | 8 ++++--- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/app/components/form_elements/fieldset_toggle_component.html.erb b/app/components/form_elements/fieldset_toggle_component.html.erb index 504a5b5..f4acd3d 100644 --- a/app/components/form_elements/fieldset_toggle_component.html.erb +++ b/app/components/form_elements/fieldset_toggle_component.html.erb @@ -1,5 +1,5 @@ <%= tag.public_send @tag, class: "flex items-center justify-between mb-6 last:mb-0", - data: @form.present? ? { + data: @form_enabled ? { controller: "settings--toggle", :'settings--toggle-switch-enabled-value' => @enabled.to_s } : nil do %> @@ -11,16 +11,23 @@ <%= render FormElements::ToggleComponent.new( enabled: @enabled, input_enabled: @input_enabled, - class_names: @form.present? ? "hidden" : nil, + class_names: @form_enabled ? "hidden" : nil, data: { :'settings--toggle-target' => "button", action: "settings--toggle#toggleSwitch" }) %> - <% if @form.present? %> - <%= @form.check_box @attribute, { - checked: @enabled, - data: { :'settings--toggle-target' => "checkbox" } - }, "true", "false" %> + <% if @form_enabled %> + <% if @attribute.present? %> + <%= @form.check_box @attribute, { + checked: @enabled, + data: { :'settings--toggle-target' => "checkbox" } + }, "true", "false" %> + <% else %> + + <%= check_box_tag @field_name, "true", @enabled, { + data: { :'settings--toggle-target' => "checkbox" } + } %> + <% end %> <% end %> <% end %> diff --git a/app/components/form_elements/fieldset_toggle_component.rb b/app/components/form_elements/fieldset_toggle_component.rb index b38bee7..686f5f1 100644 --- a/app/components/form_elements/fieldset_toggle_component.rb +++ b/app/components/form_elements/fieldset_toggle_component.rb @@ -2,11 +2,13 @@ module FormElements class FieldsetToggleComponent < ViewComponent::Base - def initialize(form: nil, attribute: nil, tag: "li", enabled: false, - input_enabled: true, title:, description:) + def initialize(tag: "li", form: nil, attribute: nil, field_name: nil, + enabled: false, input_enabled: true, title:, description:) + @tag = tag @form = form @attribute = attribute - @tag = tag + @field_name = field_name + @form_enabled = @form.present? || @field_name.present? @enabled = enabled @input_enabled = input_enabled @title = title