42 lines
1,005 B
Ruby
42 lines
1,005 B
Ruby
# frozen_string_literal: true
|
|
|
|
class Dsfr::ToggleComponent < ApplicationComponent
|
|
attr_reader :target
|
|
attr_reader :title
|
|
attr_reader :html_title
|
|
attr_reader :hint
|
|
attr_reader :toggle_labels
|
|
attr_reader :disabled
|
|
attr_reader :data
|
|
attr_reader :extra_class_names
|
|
|
|
def initialize(form:, target:, title: nil, html_title: nil, disabled: nil, hint: nil, toggle_labels: { checked: 'Activé', unchecked: 'Désactivé' }, opt: nil, extra_class_names: nil)
|
|
@form = form
|
|
@target = target
|
|
@title = title
|
|
@html_title = html_title
|
|
@hint = hint
|
|
@disabled = disabled
|
|
@toggle_labels = toggle_labels
|
|
@data = opt
|
|
@extra_class_names = extra_class_names
|
|
end
|
|
|
|
private
|
|
|
|
def label_for
|
|
return input_id if @form.object.present?
|
|
|
|
return "#{@form.options[:namespace]}_#{target}" if @form.options[:namespace].present?
|
|
|
|
target.to_s
|
|
end
|
|
|
|
def input_id
|
|
if @form.object.present?
|
|
dom_id(@form.object, target)
|
|
else
|
|
target.to_s
|
|
end
|
|
end
|
|
end
|