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