module Bemer::SimpleForm::Inputs
Public Class Methods
new(builder, attribute_name, column, input_type, options = {})
click to toggle source
Calls superclass method
# File lib/bemer/simple_form/inputs.rb, line 9 def initialize(builder, attribute_name, column, input_type, options = {}) super bemify_input! end
Protected Instance Methods
add_input_type_modifiers!(namespace, options)
click to toggle source
rubocop:enable Metrics/LineLength
# File lib/bemer/simple_form/inputs.rb, line 56 def add_input_type_modifiers!(namespace, options) return if Bemer::SimpleForm.input_type_modifiers_for_suffix_namespaces.exclude?(namespace) options[:mods] = Array.wrap(options[:mods]) options[:mods].push(*additional_classes) end
bem_options_for(namespace)
click to toggle source
# File lib/bemer/simple_form/inputs.rb, line 64 def bem_options_for(namespace) namespace.eql?(:input_html) ? @input_html_options : @options[namespace] ||= {} end
bemify_input!()
click to toggle source
# File lib/bemer/simple_form/inputs.rb, line 21 def bemify_input! # rubocop:disable Metrics/AbcSize return unless block_entity default_name = options.delete(:elem) Bemer::SimpleForm.bemify_suffix_namespaces.each do |namespace| elem = extract_elem_name_for!(namespace, default_name) options = extract_bem_options_for!(namespace) add_input_type_modifiers!(namespace, options) elem_entity = ::Bemer::EntityBuilder.new(block_entity.block, elem, options) bem_options_for(namespace).merge!(elem_entity.attrs).delete(:block) end end
block_entity()
click to toggle source
# File lib/bemer/simple_form/inputs.rb, line 17 def block_entity @block_entity ||= @options.delete(:block_entity) end
extract_bem_cascade!(options)
click to toggle source
# File lib/bemer/simple_form/inputs.rb, line 80 def extract_bem_cascade!(options) bem_cascade = options.delete(:bem_cascade) bem_cascade.nil? ? block_entity.instance_variable_get(:@bem_cascade) : bem_cascade end
extract_bem_options_for!(namespace)
click to toggle source
# File lib/bemer/simple_form/inputs.rb, line 68 def extract_bem_options_for!(namespace) bem_options = bem_options_for(namespace) bem = bem_options.delete(:bem) bem_cascade = extract_bem_cascade!(bem_options) css_classes = [bem_options.delete(:cls), bem_options.delete(:class)] js = bem_options.delete(:js) mix = bem_options.delete(:mix) mods = bem_options.delete(:mods) { bem: bem, js: js, mods: mods, mix: mix, bem_cascade: bem_cascade, cls: css_classes } end
extract_elem_name_for!(namespace, default_name)
click to toggle source
rubocop:disable Metrics/LineLength
# File lib/bemer/simple_form/inputs.rb, line 39 def extract_elem_name_for!(namespace, default_name) # rubocop:disable Metrics/AbcSize elem = bem_options_for(namespace).delete(:elem) return elem unless elem.nil? elem = default_name.nil? ? reflection_or_attribute_name : default_name return elem if Bemer.bem_class(block_entity.block, elem).blank? suffix = namespace.to_s.chomp('_html') unless namespace.eql?(:input_html) namespaced_elem = [elem, suffix].compact.join('_').to_sym default_name.nil? ? Bemer::SimpleForm.transform_element_name(namespace, block_entity.block, namespaced_elem, elem) : namespaced_elem end