Class: HakumiComponents::Radio::Component

Inherits:
BaseComponent
  • Object
show all
Extended by:
T::Sig
Includes:
Concerns::FormField
Defined in:
app/components/hakumi_components/radio/component.rb

Constant Summary

Constants inherited from BaseComponent

BaseComponent::ControllerOptions, BaseComponent::DateInput, BaseComponent::DateLikeValue, BaseComponent::DimensionInput, BaseComponent::HtmlPayloadInput, BaseComponent::I18nOptionValue, BaseComponent::PresenceArray, BaseComponent::PresenceScalar, BaseComponent::PresenceValue, BaseComponent::RawHtmlInput, BaseComponent::SIZES, BaseComponent::SizeValue, BaseComponent::SymbolInput

Instance Method Summary collapse

Methods included from Concerns::FormField

#describedby_ids, #error?, #error_message, #form_field_caption, #form_field_contract, #form_field_errors, #form_field_html_options, #form_field_label, #form_field_name, #form_field_required, #form_field_rules, #form_field_standalone, #form_item_attributes, #form_item_classes, #input_id, #render_caption, #render_error, #render_explain, #render_label, #standalone?

Methods included from Concerns::FormFieldInterface

#form_field_contract

Methods inherited from BaseComponent

#append_data_token, boolean_html_param, #build_inline_style, cast_boolean, #cast_boolean, #class_names, #component_classes, #data_attributes_from, #dimension_to_css, #ensure_dom_id!, float_html_param, #generate_id, #html_classes, html_param, html_primitive_param, #html_style, #i18n_scope, integer_html_param, #merge_attributes, #render_value, #size_to_pixels, #stimulus_attrs, string_html_param, string_or_symbol_array_html_param, symbol_html_param, #t_default, #translate_with_default, #validate_inclusion!, #validate_required!, #value_present?

Constructor Details

#initialize(name:, value: nil, text: nil, label: nil, caption: nil, checked: false, disabled: false, size: :default, id: nil, auto_focus: false, required: false, standalone: true, errors: [], **html_options) ⇒ Component

Returns a new instance of Component.



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# File 'app/components/hakumi_components/radio/component.rb', line 29

def initialize(
  name:,
  value: nil,
  text: nil,
  label: nil,
  caption: nil,
  checked: false,
  disabled: false,
  size: :default,
  id: nil,
  auto_focus: false,
  required: false,
  standalone: true,
  errors: [],
  **html_options
)
  @name = name
  @value = T.let(value, HakumiComponents::Types::FormFieldScalar)
  @text = text
  @label = label
  @caption = caption
  @checked = checked
  @disabled = disabled
  @size = size
  @id = T.let(id || generate_id("radio"), Types::FormFieldName)
  @auto_focus = auto_focus
  @required = required
  @standalone = standalone
  @errors = T.let(errors, Types::FormFieldErrors)
  @html_options = T.let(html_options, Types::HtmlAttributes)
  @html_options[:id] ||= @id
  initialize_form_field_contract!(
    name: @name,
    label: @label,
    caption: @caption,
    errors: @errors,
    standalone: @standalone,
    required: @required,
    html_options: @html_options
  )

  validate_props!
end

Instance Method Details

#data_controllersObject



96
97
98
# File 'app/components/hakumi_components/radio/component.rb', line 96

def data_controllers
  "hakumi--radio"
end

#label_textObject



101
102
103
# File 'app/components/hakumi_components/radio/component.rb', line 101

def label_text
  @text || content
end

#radio_classesObject



85
86
87
88
89
90
91
92
93
# File 'app/components/hakumi_components/radio/component.rb', line 85

def radio_classes
  modifiers = {
    checked: @checked,
    disabled: @disabled
  }
  modifiers[@size] = true if @size != :default

  class_names("radio", modifiers)
end

#wrapper_classesObject



74
75
76
77
78
79
80
81
82
# File 'app/components/hakumi_components/radio/component.rb', line 74

def wrapper_classes
  modifiers = {
    checked: @checked,
    disabled: @disabled
  }
  modifiers[@size] = true if @size != :default

  class_names("radio-wrapper", modifiers)
end