metadata_presenter 0.12.1 → 0.13.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 302551ce821bf55cd56db43ad25a904cbc84a85f99f01e9cda169b6f8e44aa9e
4
- data.tar.gz: e0db2085489e9e46eca6a6f7a785fea374e7b98e003a2aa53fc97c37b69c5180
3
+ metadata.gz: 1a8dce466c95696d58b5bcacb36d9718dc7c0896be25c34f07897f3ef294dd11
4
+ data.tar.gz: b32d4a787136f21eeeb72f667b40628739c1f8c48444a500cf936adb17d7decb
5
5
  SHA512:
6
- metadata.gz: 82b377a0b22cbd8f2b826f5f57c4d3d704c659049e208db1044a4913e42a0c8e725c22bcc58c9eb6e93b0698672984128216ba26bccccf4d73300ada3ab2c5bb
7
- data.tar.gz: 1b24c21b3c4a3000d4fbc7d25e3e2dd4ce6fdc600911ef821e299da122871bde22d15864931362b2e9378cf65640906ee451e1e14089e31f2058964a3cd507bc
6
+ metadata.gz: f7b10768d74009b16cd78a6d58d454e6c4fab8dbcb5fcf19f9af447f071910e9bb0801fb4e7816709aa8d58c5ac9ef12f23ac0fae235748cb78391a03a74a0d5
7
+ data.tar.gz: 2982e42f4bec096e62bc686d29ab544feb709a5aa84c428bd6b6572bfbac32affe3e760089522a3145aed0e9b4577fd7a29828a6a11a14e976e80e98f2878b9e
@@ -30,17 +30,28 @@ module MetadataPresenter
30
30
  value = @page_answers.send(component.id)
31
31
 
32
32
  return '' if value.blank?
33
-
34
- if component.type == 'date'
35
- I18n.l(
36
- Date.civil(value.year.to_i, value.month.to_i, value.day.to_i),
37
- format: '%d %B %Y'
38
- )
39
- elsif component.type == 'textarea'
40
- view.simple_format(value)
33
+ if self.class.private_method_defined?(component.type.to_sym)
34
+ send(component.type.to_sym, value)
41
35
  else
42
36
  value
43
37
  end
44
38
  end
39
+
40
+ private
41
+
42
+ def date(value)
43
+ I18n.l(
44
+ Date.civil(value.year.to_i, value.month.to_i, value.day.to_i),
45
+ format: '%d %B %Y'
46
+ )
47
+ end
48
+
49
+ def textarea(value)
50
+ view.simple_format(value, {}, wrapper_tag: 'span')
51
+ end
52
+
53
+ def checkboxes(value)
54
+ value.reject(&:blank?).join("<br>").html_safe
55
+ end
45
56
  end
46
57
  end
@@ -63,7 +63,12 @@ module MetadataPresenter
63
63
  # @return [String] user answer for the specific component
64
64
  #
65
65
  def user_answer
66
- page_answers.send(component.name)
66
+ value = page_answers.send(component.name)
67
+ if component.type == 'checkboxes'
68
+ Array(value).reject(&:blank?)
69
+ else
70
+ value
71
+ end
67
72
  end
68
73
 
69
74
  # The default error message will be look using the schema key.
@@ -0,0 +1,9 @@
1
+ <%=
2
+ f.govuk_collection_check_boxes component.id.to_sym,
3
+ component.items,
4
+ :id,
5
+ :name,
6
+ :description,
7
+ legend: { text: input_title },
8
+ hint: { text: component.hint }
9
+ %>
@@ -0,0 +1,9 @@
1
+ {
2
+ "_id": "component.checkboxes",
3
+ "_type": "checkboxes",
4
+ "errors": {},
5
+ "hint": "[Hint text (optional)]",
6
+ "items": [],
7
+ "name": "component-name",
8
+ "legend": "Question"
9
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "_id": "definition.checkbox",
3
+ "_type": "checkbox",
4
+ "label": "Option",
5
+ "hint": "[Hint text (optional)]",
6
+ "value": "checkbox-value"
7
+ }
@@ -223,6 +223,49 @@
223
223
  }
224
224
  ]
225
225
  },
226
+ {
227
+ "_uuid": "7b748584-100e-4d81-a54a-5049190136cc",
228
+ "_id": "page.burgers",
229
+ "_type": "page.singlequestion",
230
+ "components": [
231
+ {
232
+ "_id": "burgers_checkboxes_1",
233
+ "_type": "checkboxes",
234
+ "errors": {},
235
+ "hint": "Select all that apply",
236
+ "legend": "What would you like on your burger?",
237
+ "items": [
238
+ {
239
+ "_id": "burgers_checkbox_1",
240
+ "_type": "checkbox",
241
+ "label": "Beef, cheese, tomato",
242
+ "hint": "Optional item hint",
243
+ "value": "beef-cheese-tomato"
244
+ },
245
+ {
246
+ "_id": "burgers_checkbox_2",
247
+ "_type": "checkbox",
248
+ "label": "Chicken, cheese, tomato",
249
+ "hint": "Optional item hint",
250
+ "value": "chicken-cheese-tomato"
251
+ },
252
+ {
253
+ "_id": "burgers_checkbox_3",
254
+ "_type": "checkbox",
255
+ "label": "Mozzarella, cheddar, feta",
256
+ "hint": "Optional item hint",
257
+ "value": "mozzarella-cheddar-feta"
258
+ }
259
+ ],
260
+ "name": "burgers_checkboxes_1",
261
+ "validation": {
262
+ "required": true
263
+ }
264
+ }
265
+ ],
266
+ "heading": "Checkboxes",
267
+ "url": "/burgers"
268
+ },
226
269
  {
227
270
  "_uuid": "e819d0c2-7062-4997-89cf-44d26d098404",
228
271
  "_id": "page._check-answers",
@@ -1,3 +1,3 @@
1
1
  module MetadataPresenter
2
- VERSION = '0.12.1'
2
+ VERSION = '0.13.1'
3
3
  end
@@ -0,0 +1,33 @@
1
+ {
2
+ "$id": "http://gov.uk/schema/v1.0.0/checkboxes",
3
+ "_name": "component.checkboxes",
4
+ "title": "Checkboxes",
5
+ "description": "Let users select one or more options from a list",
6
+ "type": "object",
7
+ "properties": {
8
+ "_type": {
9
+ "const": "checkboxes"
10
+ },
11
+ "items": {
12
+ "title": "Options",
13
+ "description": "Items that users can select",
14
+ "type": "array",
15
+ "items": {
16
+ "$ref": "definition.checkbox"
17
+ }
18
+ }
19
+ },
20
+ "allOf": [
21
+ {
22
+ "$ref": "definition.fieldset"
23
+ }
24
+ ],
25
+ "transforms": {
26
+ "namespace": {
27
+ "propagation": "items[?(@._type === 'checkbox')]"
28
+ }
29
+ },
30
+ "required": [
31
+ "items"
32
+ ]
33
+ }
@@ -0,0 +1,47 @@
1
+ {
2
+ "$id": "http://gov.uk/schema/v1.0.0/checkbox",
3
+ "_name": "definition.checkbox",
4
+ "title": "Checkbox item",
5
+ "description": "Component that provides a checkbox item",
6
+ "type": "object",
7
+ "properties": {
8
+ "_type": {
9
+ "const": "checkbox"
10
+ },
11
+ "value": {
12
+ "default": "yes"
13
+ },
14
+ "label": {
15
+ "skipOptional": true
16
+ },
17
+ "hint": {
18
+ "title": "Hint text",
19
+ "description": "Text to help users understand an option - appears in grey under the label",
20
+ "type": "string",
21
+ "content": true
22
+ },
23
+ "conditional_component": {
24
+ "$ref": "definition.conditionalcomponent"
25
+ }
26
+ },
27
+ "allOf": [
28
+ {
29
+ "$ref": "definition.namespace"
30
+ },
31
+ {
32
+ "$ref": "definition.option"
33
+ },
34
+ {
35
+ "$ref": "definition.name"
36
+ }
37
+ ],
38
+ "required": [
39
+ "name",
40
+ "label"
41
+ ],
42
+ "transforms": {
43
+ "namespace": {
44
+ "propagation": "conditional_component"
45
+ }
46
+ }
47
+ }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metadata_presenter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.1
4
+ version: 0.13.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - MoJ Online
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-02-15 00:00:00.000000000 Z
11
+ date: 2021-02-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -250,6 +250,7 @@ files:
250
250
  - app/validators/metadata_presenter/validate_schema.rb
251
251
  - app/views/errors/404.html
252
252
  - app/views/layouts/metadata_presenter/application.html.erb
253
+ - app/views/metadata_presenter/component/_checkboxes.html.erb
253
254
  - app/views/metadata_presenter/component/_date.html.erb
254
255
  - app/views/metadata_presenter/component/_number.html.erb
255
256
  - app/views/metadata_presenter/component/_radios.html.erb
@@ -264,6 +265,7 @@ files:
264
265
  - config/initializers/default_metadata.rb
265
266
  - config/initializers/schemas.rb
266
267
  - config/routes.rb
268
+ - default_metadata/component/checkboxes.json
267
269
  - default_metadata/component/date.json
268
270
  - default_metadata/component/number.json
269
271
  - default_metadata/component/radios.json
@@ -271,6 +273,7 @@ files:
271
273
  - default_metadata/component/textarea.json
272
274
  - default_metadata/config/meta.json
273
275
  - default_metadata/config/service.json
276
+ - default_metadata/definition/checkbox.json
274
277
  - default_metadata/definition/radio.json
275
278
  - default_metadata/page/checkanswers.json
276
279
  - default_metadata/page/confirmation.json
@@ -290,6 +293,7 @@ files:
290
293
  - lib/metadata_presenter/test_helpers.rb
291
294
  - lib/metadata_presenter/version.rb
292
295
  - lib/tasks/metadata_presenter_tasks.rake
296
+ - schemas/component/checkboxes.json
293
297
  - schemas/component/date.json
294
298
  - schemas/component/number.json
295
299
  - schemas/component/radios.json
@@ -299,6 +303,7 @@ files:
299
303
  - schemas/config/meta.json
300
304
  - schemas/config/service.json
301
305
  - schemas/definition/block.json
306
+ - schemas/definition/checkbox.json
302
307
  - schemas/definition/component.json
303
308
  - schemas/definition/components.json
304
309
  - schemas/definition/condition.base.json