class Trenni::Formatters::HTML::RadioSelect
Table based select boxes using per-row checkboxes.
Public Class Methods
call(formatter, builder, **options, &block)
click to toggle source
# File lib/trenni/formatters/html/radio_select.rb, line 30 def self.call(formatter, builder, **options, &block) instance = self.new(formatter, builder, **options) instance.call(&block) end
new(formatter, builder, **options)
click to toggle source
# File lib/trenni/formatters/html/radio_select.rb, line 36 def initialize(formatter, builder, **options) @formatter = formatter @builder = builder @options = options @field = options[:field] end
Public Instance Methods
call(&block)
click to toggle source
# File lib/trenni/formatters/html/radio_select.rb, line 105 def call(&block) Builder.fragment(@builder) do |builder| builder.tag :table do builder.tag :tbody do if self.optional? builder << item(title: optional_title_for(**@options), value: nil) end builder.capture(self, &block) end end end end
item(**options, &block)
click to toggle source
# File lib/trenni/formatters/html/radio_select.rb, line 75 def item(**options, &block) Builder.fragment(block&.binding || @builder) do |builder| builder.tag :tr do builder.inline(:td, :class => :handle) do builder.tag :input, radio_attributes_for(**options) end builder.inline(:td, :class => :item) do if block_given? builder.capture(self, &block) else builder.text title_for(**options) end end end end end
name_for(**options)
click to toggle source
# File lib/trenni/formatters/html/radio_select.rb, line 44 def name_for(**options) @formatter.name_for(**options) end
optional?()
click to toggle source
# File lib/trenni/formatters/html/radio_select.rb, line 101 def optional? @options[:optional] end
optional_title_for(**options)
click to toggle source
# File lib/trenni/formatters/html/radio_select.rb, line 93 def optional_title_for(**options) if options[:optional] == true options[:blank] || '' else options[:optional] end end
radio_attributes_for(**options)
click to toggle source
# File lib/trenni/formatters/html/radio_select.rb, line 64 def radio_attributes_for(**options) return { :type => :radio, :name => @field, # We set a default value to empty string, otherwise it becomes "on". :value => value_for(**options) || "", :checked => options.fetch(:selected) {raw_value == raw_value_for(**options)}, :data => options[:data], } end
raw_value()
click to toggle source
# File lib/trenni/formatters/html/radio_select.rb, line 52 def raw_value @raw_value ||= raw_value_for(**@options) end
raw_value_for(**options)
click to toggle source
# File lib/trenni/formatters/html/radio_select.rb, line 48 def raw_value_for(**options) @formatter.raw_value_for(**options) end
title_for(**options)
click to toggle source
# File lib/trenni/formatters/html/radio_select.rb, line 60 def title_for(**options) @formatter.title_for(**options) end
value_for(**options)
click to toggle source
# File lib/trenni/formatters/html/radio_select.rb, line 56 def value_for(**options) @formatter.value_for(**options) end