Class: Fluxbit::Form::ToggleInputComponent
- Inherits:
-
Component
- Object
- Component
- Fluxbit::Form::ToggleInputComponent
- Defined in:
- app/components/fluxbit/form/toggle_input_component.rb
Instance Method Summary collapse
- #call ⇒ Object
- #declare_classes ⇒ Object
-
#initialize(form: nil, field: nil, color: nil, unchecked_color: :default, sizing: :md, right_sided: false, label: nil, helper_text: nil, helper_popover: nil, helper_popover_placement: "right", **props) ⇒ ToggleInputComponent
constructor
A new instance of ToggleInputComponent.
- #input ⇒ Object
- #label_container ⇒ Object
- #left_sided ⇒ Object
- #right_sided ⇒ Object
- #toggle ⇒ Object
- #toggle_input ⇒ Object
- #valid_color(color) ⇒ Object
Constructor Details
#initialize(form: nil, field: nil, color: nil, unchecked_color: :default, sizing: :md, right_sided: false, label: nil, helper_text: nil, helper_popover: nil, helper_popover_placement: "right", **props) ⇒ ToggleInputComponent
Returns a new instance of ToggleInputComponent.
77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 |
# File 'app/components/fluxbit/form/toggle_input_component.rb', line 77 def initialize(form: nil, field: nil, color: nil, unchecked_color: :default, sizing: :md, right_sided: false, label: nil, helper_text: nil, helper_popover: nil, helper_popover_placement: "right", **props) super @form = form @field = field @object = form&.object @right_sided = right_sided @sizing = sizing.in?(styles[:toggle][:sizes].keys) ? sizing : :md @color = valid_color(color) @unchecked_color = unchecked_color.in?(styles[:toggle][:unchecked].keys) ? unchecked_color : :default @props = props @label = label_value(label, @object, field, id) @helper_text = define_helper_text(helper_text, @object, field) @helper_popover = define_helper_popover(helper_popover, @object, field) @helper_popover_placement = helper_popover_placement @label_class = "ml-2" unless right_sided # Input @props[:type] = "checkbox" declare_classes end |
Instance Method Details
#call ⇒ Object
162 163 164 165 |
# File 'app/components/fluxbit/form/toggle_input_component.rb', line 162 def call add(class: styles[:root][:no_helper_text], to: @root_element) if @helper_text.nil? && !helper? @right_sided ? right_sided : left_sided end |
#declare_classes ⇒ Object
107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 |
# File 'app/components/fluxbit/form/toggle_input_component.rb', line 107 def declare_classes add(class: styles[:root][:input], to: @props) # Root @root_element = { class: "#{styles[:root][:base]} #{styles[:root][:active][(@props[:disabled] ? :off : :on)]}" } # Toggle @toggle_element = { class: [ styles[:toggle][:base], styles[:toggle][:unchecked][@unchecked_color], styles[:toggle][:checked][@color], styles[:toggle][:sizes][@sizing] ].join(" ") } end |
#input ⇒ Object
125 126 127 128 129 130 131 |
# File 'app/components/fluxbit/form/toggle_input_component.rb', line 125 def input if @form.nil? content_tag :input, content, @props else @form.check_box(@field, **@props) end end |
#label_container ⇒ Object
141 142 143 |
# File 'app/components/fluxbit/form/toggle_input_component.rb', line 141 def label_container content_tag(:label, safe_join(toggle_input, label), @root_element) end |
#left_sided ⇒ Object
145 146 147 |
# File 'app/components/fluxbit/form/toggle_input_component.rb', line 145 def left_sided safe_join label_container, (helper? ? helper : helper_text) end |
#right_sided ⇒ Object
149 150 151 152 153 154 155 156 157 158 159 160 |
# File 'app/components/fluxbit/form/toggle_input_component.rb', line 149 def right_sided content_tag :label, class: styles[:right_sided][:top] do safe_join( content_tag( :div, safe_join(label, (helper? ? helper : helper_text)), class: styles[:right_sided][:inside] ), toggle_input ) end end |
#toggle ⇒ Object
133 134 135 |
# File 'app/components/fluxbit/form/toggle_input_component.rb', line 133 def toggle content_tag :div, "", @toggle_element end |
#toggle_input ⇒ Object
137 138 139 |
# File 'app/components/fluxbit/form/toggle_input_component.rb', line 137 def toggle_input content_tag :div, safe_join(input, toggle), class: styles[:root][:base2] end |
#valid_color(color) ⇒ Object
100 101 102 103 104 105 |
# File 'app/components/fluxbit/form/toggle_input_component.rb', line 100 def valid_color(color) return color if styles[:toggle][:checked].key?(color) return :failure if errors.present? :default end |