gitlab-org--gitlab-foss/app/components/pajamas/checkbox_component.rb

60 lines
1.6 KiB
Ruby

# frozen_string_literal: true
# Renders a Pajamas compliant checkbox element
# An instance of `ActionView::Helpers::FormBuilder` must be passed as the `form` argument.
# The easiest way to use this component is by using the `gitlab_ui_checkbox_component` helper.
# See https://docs.gitlab.com/ee/development/fe_guide/haml.html#gitlab_ui_checkbox_component
# To use a checkbox without an instance of `ActionView::Helpers::FormBuilder` use `CheckboxTagComponent`.
module Pajamas
class CheckboxComponent < Pajamas::Component
include Pajamas::Concerns::CheckboxRadioLabelWithHelpText
include Pajamas::Concerns::CheckboxRadioOptions
renders_one :label
renders_one :help_text
def initialize(
form:,
method:,
label: nil,
help_text: nil,
label_options: {},
checkbox_options: {},
checked_value: '1',
unchecked_value: '0'
)
@form = form
@method = method
@label_argument = label
@help_text_argument = help_text
@label_options = label_options
@input_options = checkbox_options
@checked_value = checked_value
@unchecked_value = unchecked_value
@value = checked_value if checkbox_options[:multiple]
end
private
attr_reader(
:form,
:method,
:label_argument,
:help_text_argument,
:label_options,
:input_options,
:checked_value,
:unchecked_value,
:value
)
def label_content
label? ? label : label_argument
end
def help_text_content
help_text? ? help_text : help_text_argument
end
end
end