Module: Trenni::Formatters::HTML::LabelForm

Includes:
FormFormatter
Defined in:
lib/trenni/formatters/html/label_form.rb

Instance Method Summary collapse

Methods included from FormFormatter

#button, #button_attributes_for, #button_title_for, #checkbox_attributes_for, #details_for, #field_for, #fieldset, #hidden, #hidden_attributes_for, #input_attributes_for, #new_record?, #object_value_for, #output_attributes_for, #pattern_for, #placeholder_for, #raw_value_for, #submit_attributes_for, #submit_title_for, #textarea_attributes_for, #title_for, #value_for

Instance Method Details

#checkbox(**options) ⇒ Object

A checkbox field.



94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
# File 'lib/trenni/formatters/html/label_form.rb', line 94

def checkbox(**options)
	options = @options.merge(**options)
	
	Builder.fragment do |builder|
		builder.inline(:label) do
			builder.inline :input, :type => :hidden, :name => name_for(**options), :value => 'false'
			
			builder.inline(:span) do
				if details = details_for(**options)
					builder.inline(:small) {builder.text details}
				end
			end
			
			builder.tag :input, checkbox_attributes_for(**options)
			
			# We would like a little bit of whitespace between the checkbox and the title:
			builder.text " " + title_for(**options)
		end
	end
end

#element(klass, **options, &block) ⇒ Object



125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
# File 'lib/trenni/formatters/html/label_form.rb', line 125

def element(klass, **options, &block)
	options = @options.merge(**options)
	buffer = Trenni::Template.buffer(block.binding)
	
	Builder.fragment(buffer) do |builder|
		builder.inline(:label) do
			builder.inline(:span) do
				builder.text title_for(**options)
				
				if details = details_for(**options)
					builder.inline(:small) {builder.text details}
				end
			end
			
			klass.call(self, builder, **options, &block)
		end
	end
end

#input(**options) ⇒ Object

An input field (single line text).



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/trenni/formatters/html/label_form.rb', line 35

def input(**options)
	options = @options.merge(**options)
	
	Builder.fragment do |builder|
		builder.inline(:label) do
			builder.inline(:span) do
				builder.text title_for(**options)
				
				if details = details_for(**options)
					builder.inline(:small) {builder.text details}
				end
			end
			
			builder.inline :input, input_attributes_for(**options)
		end
	end
end

#output(**options) ⇒ Object

An output field for the result of a computation.



54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/trenni/formatters/html/label_form.rb', line 54

def output(**options)
	options = @options.merge(**options)
	
	builder.inline(:label) do
		builder.inline(:span) do
			builder.text title_for(**options)
			
			if details = details_for(**options)
				builder.inline(:small) {builder.text details}
			end
		end
		
		builder.inline :output, output_attributes_for(**options) do
			builder.text value_for(**options)
		end
	end
end

#submit(**options) ⇒ Object

A submission button



116
117
118
119
120
121
122
123
# File 'lib/trenni/formatters/html/label_form.rb', line 116

def submit(**options)
	options = @options.merge(**options)
	options[:title] ||= submit_title_for(**options)
	
	Builder.fragment do |builder|
		builder.inline :input, submit_attributes_for(**options)
	end
end

#textarea(**options) ⇒ Object

A textarea field (multi-line text).



73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
# File 'lib/trenni/formatters/html/label_form.rb', line 73

def textarea(**options)
	options = @options.merge(**options)
	
	Builder.fragment do |builder|
		builder.inline(:label) do
			builder.inline(:span) do
				builder.text title_for(**options)
				
				if details = details_for(**options)
					builder.inline(:small) {builder.text details}
				end
			end
			
			builder.tag :textarea, textarea_attributes_for(**options) do
				builder.text value_for(**options)
			end
		end
	end
end