govuk_design_system_formbuilder 0.7.6 → 0.7.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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:
|