Module: XRB::Formatters::HTML::LabelForm

Includes:
FormFormatter
Defined in:
lib/xrb/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.



77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# File 'lib/xrb/formatters/html/label_form.rb', line 77

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



108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
# File 'lib/xrb/formatters/html/label_form.rb', line 108

def element(klass, **options, &block)
	options = @options.merge(**options)
	buffer = XRB::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).



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/xrb/formatters/html/label_form.rb', line 18

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.



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

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



99
100
101
102
103
104
105
106
# File 'lib/xrb/formatters/html/label_form.rb', line 99

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).



56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/xrb/formatters/html/label_form.rb', line 56

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