govuk_design_system_formbuilder 0.9.8 → 2.0.0

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.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +40 -35
  3. data/lib/govuk_design_system_formbuilder/base.rb +21 -46
  4. data/lib/govuk_design_system_formbuilder/builder.rb +528 -111
  5. data/lib/govuk_design_system_formbuilder/containers/character_count.rb +8 -7
  6. data/lib/govuk_design_system_formbuilder/containers/check_boxes.rb +20 -8
  7. data/lib/govuk_design_system_formbuilder/containers/check_boxes_fieldset.rb +39 -14
  8. data/lib/govuk_design_system_formbuilder/containers/fieldset.rb +21 -25
  9. data/lib/govuk_design_system_formbuilder/containers/form_group.rb +20 -9
  10. data/lib/govuk_design_system_formbuilder/containers/radio_buttons_fieldset.rb +28 -14
  11. data/lib/govuk_design_system_formbuilder/containers/radios.rb +27 -10
  12. data/lib/govuk_design_system_formbuilder/containers/supplemental.rb +8 -9
  13. data/lib/govuk_design_system_formbuilder/elements/caption.rb +41 -0
  14. data/lib/govuk_design_system_formbuilder/elements/check_boxes/collection.rb +34 -22
  15. data/lib/govuk_design_system_formbuilder/elements/check_boxes/collection_check_box.rb +28 -18
  16. data/lib/govuk_design_system_formbuilder/elements/check_boxes/fieldset_check_box.rb +47 -40
  17. data/lib/govuk_design_system_formbuilder/elements/check_boxes/label.rb +9 -3
  18. data/lib/govuk_design_system_formbuilder/elements/date.rb +65 -53
  19. data/lib/govuk_design_system_formbuilder/elements/error_message.rb +13 -8
  20. data/lib/govuk_design_system_formbuilder/elements/error_summary.rb +30 -31
  21. data/lib/govuk_design_system_formbuilder/elements/file.rb +31 -24
  22. data/lib/govuk_design_system_formbuilder/elements/hint.rb +50 -14
  23. data/lib/govuk_design_system_formbuilder/elements/inputs/email.rb +8 -0
  24. data/lib/govuk_design_system_formbuilder/elements/inputs/number.rb +6 -0
  25. data/lib/govuk_design_system_formbuilder/elements/inputs/password.rb +17 -0
  26. data/lib/govuk_design_system_formbuilder/elements/inputs/phone.rb +6 -0
  27. data/lib/govuk_design_system_formbuilder/elements/inputs/text.rb +6 -0
  28. data/lib/govuk_design_system_formbuilder/elements/inputs/url.rb +6 -0
  29. data/lib/govuk_design_system_formbuilder/elements/label.rb +63 -34
  30. data/lib/govuk_design_system_formbuilder/elements/legend.rb +87 -0
  31. data/lib/govuk_design_system_formbuilder/elements/radios/collection.rb +51 -35
  32. data/lib/govuk_design_system_formbuilder/elements/radios/collection_radio_button.rb +41 -19
  33. data/lib/govuk_design_system_formbuilder/elements/radios/fieldset_radio_button.rb +37 -24
  34. data/lib/govuk_design_system_formbuilder/elements/select.rb +34 -32
  35. data/lib/govuk_design_system_formbuilder/elements/submit.rb +39 -29
  36. data/lib/govuk_design_system_formbuilder/elements/text_area.rb +76 -32
  37. data/lib/govuk_design_system_formbuilder/traits/caption.rb +15 -0
  38. data/lib/govuk_design_system_formbuilder/traits/collection_item.rb +16 -0
  39. data/lib/govuk_design_system_formbuilder/traits/conditional.rb +17 -0
  40. data/lib/govuk_design_system_formbuilder/traits/error.rb +17 -0
  41. data/lib/govuk_design_system_formbuilder/traits/hint.rb +30 -0
  42. data/lib/govuk_design_system_formbuilder/traits/input.rb +105 -0
  43. data/lib/govuk_design_system_formbuilder/traits/label.rb +22 -0
  44. data/lib/govuk_design_system_formbuilder/traits/localisation.rb +51 -0
  45. data/lib/govuk_design_system_formbuilder/traits/supplemental.rb +17 -0
  46. data/lib/govuk_design_system_formbuilder/version.rb +1 -1
  47. data/lib/govuk_design_system_formbuilder.rb +89 -44
  48. metadata +62 -52
  49. data/lib/govuk_design_system_formbuilder/elements/check_boxes/hint.rb +0 -30
  50. data/lib/govuk_design_system_formbuilder/elements/inputs/base.rb +0 -79
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.9.8
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Yates
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-11-01 00:00:00.000000000 Z
11
+ date: 2020-09-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionview
@@ -53,53 +53,53 @@ dependencies:
53
53
  - !ruby/object:Gem::Version
54
54
  version: '5.2'
55
55
  - !ruby/object:Gem::Dependency
56
- name: govuk-lint
56
+ name: rubocop-govuk
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - '='
60
60
  - !ruby/object:Gem::Version
61
- version: '0'
61
+ version: 3.17.0
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - '='
67
67
  - !ruby/object:Gem::Version
68
- version: '0'
68
+ version: 3.17.0
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: pry
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 0.12.2
75
+ version: 0.13.0
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: 0.12.2
82
+ version: 0.13.0
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: pry-byebug
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: 3.7.0
90
87
  - - "~>"
91
88
  - !ruby/object:Gem::Version
92
- version: '3.7'
89
+ version: '3.9'
90
+ - - ">="
91
+ - !ruby/object:Gem::Version
92
+ version: 3.9.0
93
93
  type: :development
94
94
  prerelease: false
95
95
  version_requirements: !ruby/object:Gem::Requirement
96
96
  requirements:
97
- - - ">="
98
- - !ruby/object:Gem::Version
99
- version: 3.7.0
100
97
  - - "~>"
101
98
  - !ruby/object:Gem::Version
102
- version: '3.7'
99
+ version: '3.9'
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: 3.9.0
103
103
  - !ruby/object:Gem::Dependency
104
104
  name: rspec-html-matchers
105
105
  requirement: !ruby/object:Gem::Requirement
@@ -120,126 +120,126 @@ dependencies:
120
120
  requirements:
121
121
  - - "~>"
122
122
  - !ruby/object:Gem::Version
123
- version: '3.8'
123
+ version: '4.0'
124
124
  type: :development
125
125
  prerelease: false
126
126
  version_requirements: !ruby/object:Gem::Requirement
127
127
  requirements:
128
128
  - - "~>"
129
129
  - !ruby/object:Gem::Version
130
- version: '3.8'
130
+ version: '4.0'
131
131
  - !ruby/object:Gem::Dependency
132
132
  name: simplecov
133
133
  requirement: !ruby/object:Gem::Requirement
134
134
  requirements:
135
135
  - - "~>"
136
136
  - !ruby/object:Gem::Version
137
- version: '0'
137
+ version: 0.17.1
138
138
  type: :development
139
139
  prerelease: false
140
140
  version_requirements: !ruby/object:Gem::Requirement
141
141
  requirements:
142
142
  - - "~>"
143
143
  - !ruby/object:Gem::Version
144
- version: '0'
144
+ version: 0.17.1
145
145
  - !ruby/object:Gem::Dependency
146
- name: nanoc
146
+ name: htmlbeautifier
147
147
  requirement: !ruby/object:Gem::Requirement
148
148
  requirements:
149
149
  - - "~>"
150
150
  - !ruby/object:Gem::Version
151
- version: '4.11'
151
+ version: 1.3.1
152
152
  type: :development
153
153
  prerelease: false
154
154
  version_requirements: !ruby/object:Gem::Requirement
155
155
  requirements:
156
156
  - - "~>"
157
157
  - !ruby/object:Gem::Version
158
- version: '4.11'
158
+ version: 1.3.1
159
159
  - !ruby/object:Gem::Dependency
160
- name: slim
160
+ name: nanoc
161
161
  requirement: !ruby/object:Gem::Requirement
162
162
  requirements:
163
163
  - - "~>"
164
164
  - !ruby/object:Gem::Version
165
- version: 4.0.1
165
+ version: '4.11'
166
166
  type: :development
167
167
  prerelease: false
168
168
  version_requirements: !ruby/object:Gem::Requirement
169
169
  requirements:
170
170
  - - "~>"
171
171
  - !ruby/object:Gem::Version
172
- version: 4.0.1
172
+ version: '4.11'
173
173
  - !ruby/object:Gem::Dependency
174
- name: adsf
174
+ name: rouge
175
175
  requirement: !ruby/object:Gem::Requirement
176
176
  requirements:
177
177
  - - "~>"
178
178
  - !ruby/object:Gem::Version
179
- version: 1.4.2
179
+ version: 3.22.0
180
180
  type: :development
181
181
  prerelease: false
182
182
  version_requirements: !ruby/object:Gem::Requirement
183
183
  requirements:
184
184
  - - "~>"
185
185
  - !ruby/object:Gem::Version
186
- version: 1.4.2
186
+ version: 3.22.0
187
187
  - !ruby/object:Gem::Dependency
188
- name: adsf-live
188
+ name: rubypants
189
189
  requirement: !ruby/object:Gem::Requirement
190
190
  requirements:
191
191
  - - "~>"
192
192
  - !ruby/object:Gem::Version
193
- version: 1.4.2
193
+ version: 0.7.0
194
194
  type: :development
195
195
  prerelease: false
196
196
  version_requirements: !ruby/object:Gem::Requirement
197
197
  requirements:
198
198
  - - "~>"
199
199
  - !ruby/object:Gem::Version
200
- version: 1.4.2
200
+ version: 0.7.0
201
201
  - !ruby/object:Gem::Dependency
202
- name: rouge
202
+ name: sassc
203
203
  requirement: !ruby/object:Gem::Requirement
204
204
  requirements:
205
205
  - - "~>"
206
206
  - !ruby/object:Gem::Version
207
- version: 3.8.0
207
+ version: 2.4.0
208
208
  type: :development
209
209
  prerelease: false
210
210
  version_requirements: !ruby/object:Gem::Requirement
211
211
  requirements:
212
212
  - - "~>"
213
213
  - !ruby/object:Gem::Version
214
- version: 3.8.0
214
+ version: 2.4.0
215
215
  - !ruby/object:Gem::Dependency
216
- name: htmlbeautifier
216
+ name: sass
217
217
  requirement: !ruby/object:Gem::Requirement
218
218
  requirements:
219
- - - "~>"
219
+ - - ">="
220
220
  - !ruby/object:Gem::Version
221
- version: 1.3.1
221
+ version: '0'
222
222
  type: :development
223
223
  prerelease: false
224
224
  version_requirements: !ruby/object:Gem::Requirement
225
225
  requirements:
226
- - - "~>"
226
+ - - ">="
227
227
  - !ruby/object:Gem::Version
228
- version: 1.3.1
228
+ version: '0'
229
229
  - !ruby/object:Gem::Dependency
230
- name: sassc
230
+ name: slim
231
231
  requirement: !ruby/object:Gem::Requirement
232
232
  requirements:
233
233
  - - "~>"
234
234
  - !ruby/object:Gem::Version
235
- version: 2.1.0
235
+ version: 4.1.0
236
236
  type: :development
237
237
  prerelease: false
238
238
  version_requirements: !ruby/object:Gem::Requirement
239
239
  requirements:
240
240
  - - "~>"
241
241
  - !ruby/object:Gem::Version
242
- version: 2.1.0
242
+ version: 4.1.0
243
243
  description: A Rails form builder that generates form inputs adhering to the GOV.UK
244
244
  Design System
245
245
  email:
@@ -260,40 +260,50 @@ files:
260
260
  - lib/govuk_design_system_formbuilder/containers/radio_buttons_fieldset.rb
261
261
  - lib/govuk_design_system_formbuilder/containers/radios.rb
262
262
  - lib/govuk_design_system_formbuilder/containers/supplemental.rb
263
+ - lib/govuk_design_system_formbuilder/elements/caption.rb
263
264
  - lib/govuk_design_system_formbuilder/elements/check_boxes/collection.rb
264
265
  - lib/govuk_design_system_formbuilder/elements/check_boxes/collection_check_box.rb
265
266
  - lib/govuk_design_system_formbuilder/elements/check_boxes/fieldset_check_box.rb
266
- - lib/govuk_design_system_formbuilder/elements/check_boxes/hint.rb
267
267
  - lib/govuk_design_system_formbuilder/elements/check_boxes/label.rb
268
268
  - lib/govuk_design_system_formbuilder/elements/date.rb
269
269
  - lib/govuk_design_system_formbuilder/elements/error_message.rb
270
270
  - lib/govuk_design_system_formbuilder/elements/error_summary.rb
271
271
  - lib/govuk_design_system_formbuilder/elements/file.rb
272
272
  - lib/govuk_design_system_formbuilder/elements/hint.rb
273
- - lib/govuk_design_system_formbuilder/elements/inputs/base.rb
274
273
  - lib/govuk_design_system_formbuilder/elements/inputs/email.rb
275
274
  - lib/govuk_design_system_formbuilder/elements/inputs/number.rb
275
+ - lib/govuk_design_system_formbuilder/elements/inputs/password.rb
276
276
  - lib/govuk_design_system_formbuilder/elements/inputs/phone.rb
277
277
  - lib/govuk_design_system_formbuilder/elements/inputs/text.rb
278
278
  - lib/govuk_design_system_formbuilder/elements/inputs/url.rb
279
279
  - lib/govuk_design_system_formbuilder/elements/label.rb
280
+ - lib/govuk_design_system_formbuilder/elements/legend.rb
280
281
  - lib/govuk_design_system_formbuilder/elements/radios/collection.rb
281
282
  - lib/govuk_design_system_formbuilder/elements/radios/collection_radio_button.rb
282
283
  - lib/govuk_design_system_formbuilder/elements/radios/fieldset_radio_button.rb
283
284
  - lib/govuk_design_system_formbuilder/elements/select.rb
284
285
  - lib/govuk_design_system_formbuilder/elements/submit.rb
285
286
  - lib/govuk_design_system_formbuilder/elements/text_area.rb
287
+ - lib/govuk_design_system_formbuilder/traits/caption.rb
288
+ - lib/govuk_design_system_formbuilder/traits/collection_item.rb
289
+ - lib/govuk_design_system_formbuilder/traits/conditional.rb
290
+ - lib/govuk_design_system_formbuilder/traits/error.rb
291
+ - lib/govuk_design_system_formbuilder/traits/hint.rb
292
+ - lib/govuk_design_system_formbuilder/traits/input.rb
293
+ - lib/govuk_design_system_formbuilder/traits/label.rb
294
+ - lib/govuk_design_system_formbuilder/traits/localisation.rb
295
+ - lib/govuk_design_system_formbuilder/traits/supplemental.rb
286
296
  - lib/govuk_design_system_formbuilder/version.rb
287
- homepage: https://govuk-form-builder.netlify.com
297
+ homepage: https://govuk-form-builder.netlify.app
288
298
  licenses:
289
299
  - MIT
290
300
  metadata:
291
301
  bug_tracker_uri: https://github.com/DFE-Digital/govuk_design_system_formbuilder/issues
292
302
  changelog_uri: https://github.com/DFE-Digital/govuk_design_system_formbuilder/releases
293
303
  documentation_uri: https://www.rubydoc.info/gems/govuk_design_system_formbuilder/GOVUKDesignSystemFormBuilder/Builder
294
- homepage_uri: https://govuk-form-builder.netlify.com
304
+ homepage_uri: https://govuk-form-builder.netlify.app
295
305
  source_code_uri: https://github.com/DFE-Digital/govuk_design_system_formbuilder
296
- post_install_message:
306
+ post_install_message:
297
307
  rdoc_options: []
298
308
  require_paths:
299
309
  - lib
@@ -308,8 +318,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
308
318
  - !ruby/object:Gem::Version
309
319
  version: '0'
310
320
  requirements: []
311
- rubygems_version: 3.0.3
312
- signing_key:
321
+ rubygems_version: 3.1.2
322
+ signing_key:
313
323
  specification_version: 4
314
324
  summary: GOV.UK-compliant Rails form builder
315
325
  test_files: []
@@ -1,30 +0,0 @@
1
- module GOVUKDesignSystemFormBuilder
2
- module Elements
3
- module CheckBoxes
4
- class Hint < GOVUKDesignSystemFormBuilder::Base
5
- def initialize(builder, object_name, attribute_name, hint_text, value:)
6
- super(builder, object_name, attribute_name)
7
-
8
- @value = value
9
- @hint_text = hint_text
10
- end
11
-
12
- def html
13
- return nil if @hint_text.blank?
14
-
15
- tag.span(@hint_text, class: hint_classes, id: id)
16
- end
17
-
18
- def id
19
- hint_id
20
- end
21
-
22
- private
23
-
24
- def hint_classes
25
- %w(govuk-hint govuk-checkboxes__hint)
26
- end
27
- end
28
- end
29
- end
30
- end
@@ -1,79 +0,0 @@
1
- module GOVUKDesignSystemFormBuilder
2
- module Elements
3
- module Inputs
4
- class Base < GOVUKDesignSystemFormBuilder::Base
5
- def initialize(builder, object_name, attribute_name, hint_text:, label:, width:, **extra_args, &block)
6
- super(builder, object_name, attribute_name, &block)
7
-
8
- @width = width
9
- @extra_args = extra_args
10
- @label = label
11
- @hint_text = hint_text
12
- end
13
-
14
- def html
15
- Containers::FormGroup.new(@builder, @object_name, @attribute_name).html do
16
- safe_join(
17
- [
18
- label_element.html,
19
- hint_element.html,
20
- supplemental_content.html,
21
- error_element.html,
22
- @builder.send(
23
- builder_method,
24
- @attribute_name,
25
- id: field_id(link_errors: true),
26
- class: input_classes,
27
- aria: {
28
- describedby: described_by(
29
- hint_id,
30
- error_id,
31
- supplemental_id
32
- )
33
- },
34
- **@extra_args
35
- )
36
- ]
37
- )
38
- end
39
- end
40
-
41
- private
42
-
43
- def input_classes
44
- %w(govuk-input).push(width_classes, error_classes).compact
45
- end
46
-
47
- def error_classes
48
- ('govuk-input--error') if has_errors?
49
- end
50
-
51
- def width_classes
52
- return if @width.blank?
53
-
54
- case @width
55
- when nil then nil
56
-
57
- # fixed (character) widths
58
- when 20 then 'govuk-input--width-20'
59
- when 10 then 'govuk-input--width-10'
60
- when 5 then 'govuk-input--width-5'
61
- when 4 then 'govuk-input--width-4'
62
- when 3 then 'govuk-input--width-3'
63
- when 2 then 'govuk-input--width-2'
64
-
65
- # fluid widths
66
- when 'full' then 'govuk-!-width-full'
67
- when 'three-quarters' then 'govuk-!-width-three-quarters'
68
- when 'two-thirds' then 'govuk-!-width-two-thirds'
69
- when 'one-half' then 'govuk-!-width-one-half'
70
- when 'one-third' then 'govuk-!-width-one-third'
71
- when 'one-quarter' then 'govuk-!-width-one-quarter'
72
-
73
- else fail(ArgumentError, "invalid width '#{@width}'")
74
- end
75
- end
76
- end
77
- end
78
- end
79
- end