govuk_design_system_formbuilder 0.7.6 → 0.7.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/govuk_design_system_formbuilder/base.rb +1 -3
- data/lib/govuk_design_system_formbuilder/builder.rb +26 -8
- data/lib/govuk_design_system_formbuilder/containers/character_count.rb +2 -0
- data/lib/govuk_design_system_formbuilder/containers/fieldset.rb +3 -3
- data/lib/govuk_design_system_formbuilder/containers/radios.rb +1 -0
- data/lib/govuk_design_system_formbuilder/elements/check_boxes/hint.rb +3 -3
- data/lib/govuk_design_system_formbuilder/elements/check_boxes/label.rb +1 -1
- data/lib/govuk_design_system_formbuilder/elements/date.rb +2 -2
- data/lib/govuk_design_system_formbuilder/elements/hint.rb +4 -3
- data/lib/govuk_design_system_formbuilder/elements/radios/fieldset_radio.rb +9 -4
- data/lib/govuk_design_system_formbuilder/elements/submit.rb +6 -5
- data/lib/govuk_design_system_formbuilder/version.rb +1 -1
- metadata +22 -22
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e6685d3566f5cb5c92a953b68294c59d35470853cd3802d0671f893df5b4e8dd
|
4
|
+
data.tar.gz: d598a5153f570008c05562511ca3e164a93aa151050663a1f30b2434c3869661
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d6cda652f21dfc6f7a654943d80ce8830c2aa6d0ccab953925eb656d3a8e2b0a3177fa876031910cfef8d59733859cc7b8902442c734d354b66b4d4c10f6fa20
|
7
|
+
data.tar.gz: f8f65e2eae38bd02a1b58d675b966abe4849489d09e73b320cc3a21e5f13a81c2694bfbde7bb641b2019e333857aebf723ccd215fb135551442b48c0889d5667
|
@@ -43,11 +43,9 @@ module GOVUKDesignSystemFormBuilder
|
|
43
43
|
end
|
44
44
|
|
45
45
|
def wrap_conditional(block)
|
46
|
-
|
46
|
+
@builder.content_tag('div', class: conditional_classes, id: conditional_id) do
|
47
47
|
@builder.capture { block.call }
|
48
48
|
end
|
49
|
-
|
50
|
-
return conditional, conditional_id
|
51
49
|
end
|
52
50
|
|
53
51
|
private
|
@@ -145,7 +145,7 @@ module GOVUKDesignSystemFormBuilder
|
|
145
145
|
# label: { text: 'Tell us about your work history' },
|
146
146
|
# rows: 8,
|
147
147
|
# max_words: 300
|
148
|
-
def govuk_text_area(attribute_name, hint_text: nil, label: {}, max_words: nil, max_chars: nil, rows: 5, threshold: nil,
|
148
|
+
def govuk_text_area(attribute_name, hint_text: nil, label: {}, max_words: nil, max_chars: nil, rows: 5, threshold: nil, **args)
|
149
149
|
Elements::TextArea.new(self, object_name, attribute_name, hint_text: hint_text, label: label, max_words: max_words, max_chars: max_chars, rows: rows, threshold: threshold, **args).html
|
150
150
|
end
|
151
151
|
|
@@ -160,7 +160,7 @@ module GOVUKDesignSystemFormBuilder
|
|
160
160
|
# @option label size [String] the size of the label font, can be +large+, +medium+, +regular+ or +small+
|
161
161
|
# @option label weight [String] the weight of the label font, can be +bold+ or +regular+
|
162
162
|
# @return [ActiveSupport::SafeBuffer] HTML output
|
163
|
-
def govuk_collection_select(attribute_name, collection, value_method, text_method, options: {}, html_options: {}, hint_text: nil, label: {}
|
163
|
+
def govuk_collection_select(attribute_name, collection, value_method, text_method, options: {}, html_options: { class: 'govuk-select' }, hint_text: nil, label: {})
|
164
164
|
label_element = Elements::Label.new(self, object_name, attribute_name, label)
|
165
165
|
hint_element = Elements::Hint.new(self, object_name, attribute_name, hint_text)
|
166
166
|
error_element = Elements::ErrorMessage.new(self, object_name, attribute_name)
|
@@ -227,12 +227,12 @@ module GOVUKDesignSystemFormBuilder
|
|
227
227
|
# legend: { text: 'Pick your favourite colour', size: 'm' },
|
228
228
|
# hint_text: 'If you cannot find the exact match choose something close',
|
229
229
|
# inline: false
|
230
|
-
def govuk_collection_radio_buttons(attribute_name, collection, value_method, text_method, hint_method = nil, hint_text: nil, legend: { text: nil, size: 'm' }, inline: false
|
230
|
+
def govuk_collection_radio_buttons(attribute_name, collection, value_method, text_method, hint_method = nil, hint_text: nil, legend: { text: nil, size: 'm' }, inline: false)
|
231
231
|
hint_element = Elements::Hint.new(self, object_name, attribute_name, hint_text)
|
232
232
|
error_element = Elements::ErrorMessage.new(self, object_name, attribute_name)
|
233
233
|
|
234
234
|
Containers::FormGroup.new(self, object_name, attribute_name).html do
|
235
|
-
Containers::Fieldset.new(self,
|
235
|
+
Containers::Fieldset.new(self, legend: legend, described_by: [error_element.error_id, hint_element.hint_id]).html do
|
236
236
|
safe_join(
|
237
237
|
[
|
238
238
|
hint_element.html,
|
@@ -276,12 +276,12 @@ module GOVUKDesignSystemFormBuilder
|
|
276
276
|
# = f.govuk_radio_divider
|
277
277
|
# = f.govuk_radio_button :favourite_colour, :yellow, label: { text: 'Yellow' }
|
278
278
|
#
|
279
|
-
def govuk_radio_buttons_fieldset(attribute_name, inline: false, hint_text: nil, legend: {}
|
279
|
+
def govuk_radio_buttons_fieldset(attribute_name, inline: false, hint_text: nil, legend: {})
|
280
280
|
hint_element = Elements::Hint.new(self, object_name, attribute_name, hint_text)
|
281
281
|
error_element = Elements::ErrorMessage.new(self, object_name, attribute_name)
|
282
282
|
|
283
283
|
Containers::FormGroup.new(self, object_name, attribute_name).html do
|
284
|
-
Containers::Fieldset.new(self,
|
284
|
+
Containers::Fieldset.new(self, legend: legend, described_by: [error_element.error_id, hint_element.hint_id]).html do
|
285
285
|
safe_join([
|
286
286
|
hint_element.html,
|
287
287
|
error_element.html,
|
@@ -293,7 +293,6 @@ module GOVUKDesignSystemFormBuilder
|
|
293
293
|
end
|
294
294
|
end
|
295
295
|
|
296
|
-
|
297
296
|
# Generates a radio button
|
298
297
|
#
|
299
298
|
# @note This should only be used from within a {#govuk_radio_buttons_fieldset}
|
@@ -363,7 +362,7 @@ module GOVUKDesignSystemFormBuilder
|
|
363
362
|
error_element = Elements::ErrorMessage.new(self, object_name, attribute_name)
|
364
363
|
|
365
364
|
Containers::FormGroup.new(self, object_name, attribute_name).html do
|
366
|
-
Containers::Fieldset.new(self,
|
365
|
+
Containers::Fieldset.new(self, legend: legend, described_by: [error_element.error_id, hint_element.hint_id]).html do
|
367
366
|
safe_join(
|
368
367
|
[
|
369
368
|
hint_element.html,
|
@@ -449,5 +448,24 @@ module GOVUKDesignSystemFormBuilder
|
|
449
448
|
def govuk_error_summary(title = 'There is a problem')
|
450
449
|
Elements::ErrorSummary.new(self, object_name, title).html
|
451
450
|
end
|
451
|
+
|
452
|
+
# Generates a fieldset containing the contents of the block
|
453
|
+
#
|
454
|
+
# @param legend [Hash] options for configuring the hash
|
455
|
+
# @option legend text [String] the fieldset legend's text content
|
456
|
+
# @option legend size [String] the size of the fieldset legend font, can be +xl+, +l+, +m+ or +s+
|
457
|
+
# @option legend tag [Symbol,String] the tag used for the fieldset's header, defaults to +h1+
|
458
|
+
#
|
459
|
+
# @example A fieldset containing address fields
|
460
|
+
# = f.govuk_fieldset legend: { text: 'Address' }
|
461
|
+
# = f.govuk_text_field :street
|
462
|
+
# = f.govuk_text_field :town
|
463
|
+
# = f.govuk_text_field :city
|
464
|
+
#
|
465
|
+
# @see https://design-system.service.gov.uk/components/fieldset/ GOV.UK fieldset
|
466
|
+
# @return [ActiveSupport::SafeBuffer] HTML output
|
467
|
+
def govuk_fieldset(legend: { text: 'Fieldset heading' }, &block)
|
468
|
+
Containers::Fieldset.new(self, legend: legend).html(&block)
|
469
|
+
end
|
452
470
|
end
|
453
471
|
end
|
@@ -3,7 +3,9 @@ module GOVUKDesignSystemFormBuilder
|
|
3
3
|
class CharacterCount < Base
|
4
4
|
def initialize(builder, max_words:, max_chars:, threshold:)
|
5
5
|
@builder = builder
|
6
|
+
|
6
7
|
fail ArgumentError, 'limit can be words or chars' if max_words && max_chars
|
8
|
+
|
7
9
|
@max_words = max_words
|
8
10
|
@max_chars = max_chars
|
9
11
|
@threshold = threshold
|
@@ -4,10 +4,10 @@ module GOVUKDesignSystemFormBuilder
|
|
4
4
|
LEGEND_DEFAULTS = { text: nil, tag: 'h1', size: 'xl' }.freeze
|
5
5
|
|
6
6
|
# FIXME standardise sizes with labels
|
7
|
-
LEGEND_SIZES = %w(xl l m s)
|
7
|
+
LEGEND_SIZES = %w(xl l m s).freeze
|
8
8
|
|
9
|
-
def initialize(builder,
|
10
|
-
|
9
|
+
def initialize(builder, legend: {}, described_by: nil)
|
10
|
+
@builder = builder
|
11
11
|
@legend = LEGEND_DEFAULTS.merge(legend)
|
12
12
|
@described_by = descriptors(described_by)
|
13
13
|
end
|
@@ -3,10 +3,10 @@ module GOVUKDesignSystemFormBuilder
|
|
3
3
|
module CheckBoxes
|
4
4
|
class Hint
|
5
5
|
def initialize(builder, attribute, checkbox, text)
|
6
|
-
@builder
|
6
|
+
@builder = builder
|
7
7
|
@attribute = attribute
|
8
|
-
@checkbox
|
9
|
-
@text
|
8
|
+
@checkbox = checkbox
|
9
|
+
@text = text
|
10
10
|
end
|
11
11
|
|
12
12
|
def html
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module GOVUKDesignSystemFormBuilder
|
2
2
|
module Elements
|
3
3
|
class Date < GOVUKDesignSystemFormBuilder::Base
|
4
|
-
SEGMENTS = { day: '3i', month: '2i', year: '1i' }
|
4
|
+
SEGMENTS = { day: '3i', month: '2i', year: '1i' }.freeze
|
5
5
|
|
6
6
|
def initialize(builder, object_name, attribute_name, legend:, hint_text:, date_of_birth: false, &block)
|
7
7
|
super(builder, object_name, attribute_name)
|
@@ -16,7 +16,7 @@ module GOVUKDesignSystemFormBuilder
|
|
16
16
|
error_element = Elements::ErrorMessage.new(@builder, @object_name, @attribute_name)
|
17
17
|
|
18
18
|
Containers::FormGroup.new(@builder, @object_name, @attribute_name).html do
|
19
|
-
Containers::Fieldset.new(@builder,
|
19
|
+
Containers::Fieldset.new(@builder, legend: @legend, described_by: [error_element.error_id, hint_element.hint_id]).html do
|
20
20
|
@builder.safe_join(
|
21
21
|
[
|
22
22
|
hint_element.html,
|
@@ -3,9 +3,10 @@ module GOVUKDesignSystemFormBuilder
|
|
3
3
|
class Hint < GOVUKDesignSystemFormBuilder::Base
|
4
4
|
def initialize(builder, object_name, attribute_name, text, value = nil, radio: false, checkbox: false)
|
5
5
|
super(builder, object_name, attribute_name)
|
6
|
-
|
7
|
-
@
|
8
|
-
@
|
6
|
+
|
7
|
+
@value = value
|
8
|
+
@hint_text = text
|
9
|
+
@radio_class = radio_class(radio)
|
9
10
|
@checkbox_class = checkbox_class(checkbox)
|
10
11
|
end
|
11
12
|
|
@@ -4,10 +4,15 @@ module GOVUKDesignSystemFormBuilder
|
|
4
4
|
class FieldsetRadio < Base
|
5
5
|
def initialize(builder, object_name, attribute_name, value, label:, hint_text:, &block)
|
6
6
|
super(builder, object_name, attribute_name)
|
7
|
-
|
8
|
-
@
|
9
|
-
@
|
10
|
-
@
|
7
|
+
|
8
|
+
@value = value
|
9
|
+
@label = label
|
10
|
+
@hint_text = hint_text
|
11
|
+
|
12
|
+
if block_given?
|
13
|
+
@conditional_content = wrap_conditional(block)
|
14
|
+
@conditional_id = conditional_id
|
15
|
+
end
|
11
16
|
end
|
12
17
|
|
13
18
|
def html
|
@@ -2,14 +2,14 @@ module GOVUKDesignSystemFormBuilder
|
|
2
2
|
module Elements
|
3
3
|
class Submit < GOVUKDesignSystemFormBuilder::Base
|
4
4
|
def initialize(builder, text, warning:, secondary:, prevent_double_click:, &block)
|
5
|
+
fail ArgumentError, 'buttons can be warning or secondary' if warning && secondary
|
6
|
+
|
5
7
|
@builder = builder
|
6
8
|
@text = text
|
7
9
|
@prevent_double_click = prevent_double_click
|
8
|
-
|
9
|
-
|
10
|
-
@
|
11
|
-
@secondary = secondary
|
12
|
-
@block_content = @builder.capture { block.call } if block_given?
|
10
|
+
@warning = warning
|
11
|
+
@secondary = secondary
|
12
|
+
@block_content = @builder.capture { block.call } if block_given?
|
13
13
|
end
|
14
14
|
|
15
15
|
def html
|
@@ -20,6 +20,7 @@ module GOVUKDesignSystemFormBuilder
|
|
20
20
|
])
|
21
21
|
end
|
22
22
|
end
|
23
|
+
|
23
24
|
private
|
24
25
|
|
25
26
|
def submit_button_classes(content_present)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: govuk_design_system_formbuilder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Peter Yates
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-07-
|
11
|
+
date: 2019-07-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -31,7 +31,7 @@ dependencies:
|
|
31
31
|
- !ruby/object:Gem::Version
|
32
32
|
version: 5.2.3
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
|
-
name:
|
34
|
+
name: govuk-lint
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
36
36
|
requirements:
|
37
37
|
- - "~>"
|
@@ -45,35 +45,41 @@ dependencies:
|
|
45
45
|
- !ruby/object:Gem::Version
|
46
46
|
version: '0'
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
|
-
name:
|
48
|
+
name: pry
|
49
49
|
requirement: !ruby/object:Gem::Requirement
|
50
50
|
requirements:
|
51
51
|
- - "~>"
|
52
52
|
- !ruby/object:Gem::Version
|
53
|
-
version:
|
53
|
+
version: 0.12.2
|
54
54
|
type: :development
|
55
55
|
prerelease: false
|
56
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
57
|
requirements:
|
58
58
|
- - "~>"
|
59
59
|
- !ruby/object:Gem::Version
|
60
|
-
version:
|
60
|
+
version: 0.12.2
|
61
61
|
- !ruby/object:Gem::Dependency
|
62
|
-
name:
|
62
|
+
name: pry-byebug
|
63
63
|
requirement: !ruby/object:Gem::Requirement
|
64
64
|
requirements:
|
65
65
|
- - "~>"
|
66
66
|
- !ruby/object:Gem::Version
|
67
|
-
version: '
|
67
|
+
version: '3.7'
|
68
|
+
- - ">="
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: 3.7.0
|
68
71
|
type: :development
|
69
72
|
prerelease: false
|
70
73
|
version_requirements: !ruby/object:Gem::Requirement
|
71
74
|
requirements:
|
72
75
|
- - "~>"
|
73
76
|
- !ruby/object:Gem::Version
|
74
|
-
version: '
|
77
|
+
version: '3.7'
|
78
|
+
- - ">="
|
79
|
+
- !ruby/object:Gem::Version
|
80
|
+
version: 3.7.0
|
75
81
|
- !ruby/object:Gem::Dependency
|
76
|
-
name:
|
82
|
+
name: rspec-html-matchers
|
77
83
|
requirement: !ruby/object:Gem::Requirement
|
78
84
|
requirements:
|
79
85
|
- - "~>"
|
@@ -87,39 +93,33 @@ dependencies:
|
|
87
93
|
- !ruby/object:Gem::Version
|
88
94
|
version: '0'
|
89
95
|
- !ruby/object:Gem::Dependency
|
90
|
-
name:
|
96
|
+
name: rspec-rails
|
91
97
|
requirement: !ruby/object:Gem::Requirement
|
92
98
|
requirements:
|
93
99
|
- - "~>"
|
94
100
|
- !ruby/object:Gem::Version
|
95
|
-
version:
|
101
|
+
version: '3.8'
|
96
102
|
type: :development
|
97
103
|
prerelease: false
|
98
104
|
version_requirements: !ruby/object:Gem::Requirement
|
99
105
|
requirements:
|
100
106
|
- - "~>"
|
101
107
|
- !ruby/object:Gem::Version
|
102
|
-
version:
|
108
|
+
version: '3.8'
|
103
109
|
- !ruby/object:Gem::Dependency
|
104
|
-
name:
|
110
|
+
name: sqlite3
|
105
111
|
requirement: !ruby/object:Gem::Requirement
|
106
112
|
requirements:
|
107
113
|
- - "~>"
|
108
114
|
- !ruby/object:Gem::Version
|
109
|
-
version: '
|
110
|
-
- - ">="
|
111
|
-
- !ruby/object:Gem::Version
|
112
|
-
version: 3.7.0
|
115
|
+
version: '0'
|
113
116
|
type: :development
|
114
117
|
prerelease: false
|
115
118
|
version_requirements: !ruby/object:Gem::Requirement
|
116
119
|
requirements:
|
117
120
|
- - "~>"
|
118
121
|
- !ruby/object:Gem::Version
|
119
|
-
version: '
|
120
|
-
- - ">="
|
121
|
-
- !ruby/object:Gem::Version
|
122
|
-
version: 3.7.0
|
122
|
+
version: '0'
|
123
123
|
description: A Rails form builder that generates form inputs adhering to the GOV.UK
|
124
124
|
Design System
|
125
125
|
email:
|