class ERBLint::Linters::ArgumentMappers::Button
Maps classes in a button element to arguments for the Button
component.
Constants
- ATTRIBUTES
- DEFAULT_TAG
- SCHEME_MAPPINGS
- TYPE_OPTIONS
- VARIANT_MAPPINGS
Public Instance Methods
attribute_to_args(attribute)
click to toggle source
# File lib/primer/view_components/linters/argument_mappers/button.rb, line 34 def attribute_to_args(attribute) attr_name = attribute.name case attr_name when "disabled" { disabled: true } when "type" # button is the default type, so we don't need to do anything. return {} if attribute.value == "button" raise ConversionError, "Button component does not support type \"#{attribute.value}\"" unless TYPE_OPTIONS.include?(attribute.value) { type: ":#{attribute.value}" } else { attr_name.to_sym => erb_helper.convert(attribute) } end end
classes_to_args(classes)
click to toggle source
# File lib/primer/view_components/linters/argument_mappers/button.rb, line 52 def classes_to_args(classes) classes.each_with_object({ classes: [] }) do |class_name, acc| next if class_name == "btn" if SCHEME_MAPPINGS[class_name] && acc[:scheme].nil? acc[:scheme] = SCHEME_MAPPINGS[class_name] elsif VARIANT_MAPPINGS[class_name] && acc[:variant].nil? acc[:variant] = VARIANT_MAPPINGS[class_name] elsif class_name == "btn-block" acc[:block] = true elsif class_name == "BtnGroup-item" acc[:group_item] = true else acc[:classes] << class_name end end end