metadata_presenter 0.15.3 → 0.16.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 62b09847c307e12ca743e4ea24dc243f0f1f40f44bd53c44326fd8cdeb228459
4
- data.tar.gz: d9d68daebe45b7ff45de6ae0f47af1d694a81185a5d6ab5ffd96e8f60c26c408
3
+ metadata.gz: 15e470bd0e87527625fba6e246f2e9a43bf3523bc7689ecb1bfd18d760bca18c
4
+ data.tar.gz: 90dc8301fa94e80d07f7072f009ba44f79d4741e80539f5331bb27440d8672f6
5
5
  SHA512:
6
- metadata.gz: 2009b6c486d9f0446756d9cde53390d56ff831cea06467520c21e1ae757af5738a44eac823e134741c0156ee81d0f1d6c1580828a9486875d06b29551c7c1bb0
7
- data.tar.gz: ec7f9cce8fc53ad5c48b7f6995329d638c6b28f3ad906196af535341baf192b2bf7ce650c9c93d9e82967ab47a791f16a3530e4d8b44238e12dde1298fc70d41
6
+ metadata.gz: 873b081845358aa9569833889372ec358f034add8e6f6437b62c32ad8c3aa98d8292a86e605e7109f2d62a8ca5073a40e5354289b10369401f2975a5ff4cb89a
7
+ data.tar.gz: d3ffa82016eb6b56825ca39e9ef01b93f903a5488d2a1e5599474b2c04d0654a718dc6a3f1528fcb26ce69fc89dabcfcb757d206aceeb668163be4bff729ae6c
@@ -12,13 +12,13 @@ module MetadataPresenter
12
12
  end
13
13
  end
14
14
 
15
- def page_answers_presenters
15
+ def pages_presenters
16
16
  PageAnswersPresenter.map(
17
17
  view: view_context,
18
18
  pages: service.pages,
19
19
  answers: @user_data
20
20
  )
21
21
  end
22
- helper_method :page_answers_presenters
22
+ helper_method :pages_presenters
23
23
  end
24
24
  end
@@ -1,14 +1,14 @@
1
1
  module MetadataPresenter
2
2
  module ApplicationHelper
3
- def main_h1(component)
3
+ def main_title(component:, tag: :h1, classes: 'govuk-heading-xl')
4
4
  if component.legend.present?
5
5
  content_tag(:legend, class: 'govuk-fieldset__legend govuk-fieldset__legend--l') do
6
- content_tag(:h1, class: 'govuk-heading-xl') do
6
+ content_tag(tag, class: classes) do
7
7
  component.legend
8
8
  end
9
9
  end
10
10
  else
11
- content_tag(:h1, class: 'govuk-heading-xl') do
11
+ content_tag(tag, class: classes) do
12
12
  component.label
13
13
  end
14
14
  end
@@ -1,5 +1,7 @@
1
1
  module MetadataPresenter
2
2
  class PageAnswersPresenter
3
+ FIRST_ANSWER = 0.freeze
4
+
3
5
  def self.map(view:, pages:, answers:)
4
6
  pages.map do |page|
5
7
  Array(page.components).map do |component|
@@ -10,7 +12,7 @@ module MetadataPresenter
10
12
  answers: answers
11
13
  )
12
14
  end
13
- end.flatten
15
+ end.reject { |page| page.empty? }
14
16
  end
15
17
 
16
18
  attr_reader :view, :component, :page, :answers
@@ -37,6 +39,10 @@ module MetadataPresenter
37
39
  end
38
40
  end
39
41
 
42
+ def display_heading?(index)
43
+ page.type == 'page.multiplequestions' && index == FIRST_ANSWER
44
+ end
45
+
40
46
  private
41
47
 
42
48
  def date(value)
@@ -35,25 +35,36 @@
35
35
  <%= form_for @page, url: reserved_submissions_path do |f| %>
36
36
  <div data-block-id="page.checkanswers.answers" data-block-type="answers">
37
37
  <dl class="fb-block fb-block-answers govuk-summary-list">
38
- <% page_answers_presenters.each do |page_answers_presenter| %>
39
- <div class="govuk-summary-list__row">
40
- <dt class="govuk-summary-list__key">
41
- <%= page_answers_presenter.humanised_title %>
42
- </dt>
38
+ <% pages_presenters.each do |page_answers_presenters| %>
39
+ <% page_answers_presenters.each_with_index do |page_answers_presenter, index| %>
43
40
 
44
- <dd class="govuk-summary-list__value">
45
- <%= page_answers_presenter.answer %>
46
- </dd>
47
- <dd class="govuk-summary-list__actions">
48
- <%= link_to(
49
- change_answer_path(url: page_answers_presenter.url),
50
- class: 'govuk-link'
51
- ) do %>
52
- Change<span class="govuk-visually-hidden"> Your answer for <%= page_answers_presenter.humanised_title %></span>
53
- <% end %>
54
- </a>
55
- </dd>
56
- </div>
41
+ <% if page_answers_presenter.display_heading?(index) %>
42
+ </dl>
43
+
44
+ <h3 class="govuk-heading-m"><%= page_answers_presenter.page.heading %></h3>
45
+
46
+ <dl class="fb-block fb-block-answers govuk-summary-list">
47
+ <% end %>
48
+
49
+ <div class="govuk-summary-list__row">
50
+ <dt class="govuk-summary-list__key">
51
+ <%= page_answers_presenter.humanised_title %>
52
+ </dt>
53
+
54
+ <dd class="govuk-summary-list__value">
55
+ <%= page_answers_presenter.answer %>
56
+ </dd>
57
+ <dd class="govuk-summary-list__actions">
58
+ <%= link_to(
59
+ change_answer_path(url: page_answers_presenter.url),
60
+ class: 'govuk-link'
61
+ ) do %>
62
+ Change<span class="govuk-visually-hidden"> Your answer for <%= page_answers_presenter.humanised_title %></span>
63
+ <% end %>
64
+ </a>
65
+ </dd>
66
+ </div>
67
+ <% end %>
57
68
  <% end %>
58
69
  </dl>
59
70
  </div>
@@ -0,0 +1,33 @@
1
+ <div class="fb-main-grid-wrapper" data-block-id="<%= @page.id %>" data-block-type="page" data-block-pagetype="<%= @page.type %>">
2
+ <div class="govuk-grid-row">
3
+ <div class="govuk-grid-column-two-thirds">
4
+ <% if @page.section_heading %>
5
+ <p class="fb-editable govuk-caption-l fb-section_heading"
6
+ data-fb-content-type="element"
7
+ data-fb-content-id="page[section_heading]">
8
+ <%= @page.section_heading.html_safe %>
9
+ </p>
10
+ <%- end %>
11
+
12
+ <h1 class="govuk-heading-xl"><%= @page.heading %></h1>
13
+
14
+ <%= form_for @page_answers, as: :answers, url: @page.url, method: :post do |f| %>
15
+ <%= f.govuk_error_summary %>
16
+ <% @page.components.each_with_index do |component, index| %>
17
+ <%= render partial: component, locals: {
18
+ component: component,
19
+ component_id: "page[components[#{index}]]",
20
+ f: f,
21
+ input_title: main_title(
22
+ component: component,
23
+ tag: :h2,
24
+ classes: 'govuk-heading-m govuk-!-margin-top-8'
25
+ ) }
26
+ %>
27
+ <% end %>
28
+
29
+ <%= f.govuk_submit(disabled: editable?) %>
30
+ <% end %>
31
+ </div>
32
+ </div>
33
+ </div>
@@ -8,7 +8,7 @@
8
8
  component: component,
9
9
  component_id: "page[components[#{index}]]",
10
10
  f: f,
11
- input_title: main_h1(component) }
11
+ input_title: main_title(component: component) }
12
12
  %>
13
13
  <% end %>
14
14
 
@@ -0,0 +1,8 @@
1
+ {
2
+ "_id": "page.multiplequestions",
3
+ "_type": "page.multiplequestions",
4
+ "section_heading": "[Section heading (optional)]",
5
+ "heading": "Question",
6
+ "components": [],
7
+ "url": ""
8
+ }
@@ -266,6 +266,59 @@
266
266
  "heading": "Checkboxes",
267
267
  "url": "/burgers"
268
268
  },
269
+ {
270
+ "_uuid": "9403b67a-19b5-4422-a91d-0774537e4c96",
271
+ "_id": "page.star-wars-knowledge",
272
+ "_type": "page.multiplequestions",
273
+ "components": [
274
+ {
275
+ "_id": "star-wars-knowledge_text_1",
276
+ "_type": "text",
277
+ "label": "What was the name of the band playing in Jabba's palace?",
278
+ "name": "star-wars-knowledge_text_1",
279
+ "validation": {
280
+ "required": true
281
+ }
282
+ },
283
+ {
284
+ "_id": "star-wars-knowledge_radios_1",
285
+ "_type": "radios",
286
+ "errors": {},
287
+ "hint": "Component hint",
288
+ "legend": "What is The Mandalorian's real name?",
289
+ "items": [
290
+ {
291
+ "_id": "star-wars-knowledge_radio_1",
292
+ "_type": "radio",
293
+ "label": "Harry Potter",
294
+ "hint": "Optional item hint",
295
+ "value": "harry-potter"
296
+ },
297
+ {
298
+ "_id": "star-wars-knowledge_radio_2",
299
+ "_type": "radio",
300
+ "label": "Din Jarrin",
301
+ "hint": "Optional item hint",
302
+ "value": "din-jarrin"
303
+ },
304
+ {
305
+ "_id": "star-wars-knowledge_radio_3",
306
+ "_type": "radio",
307
+ "label": "Tony Stark",
308
+ "hint": "Optional item hint",
309
+ "value": "tony-stark"
310
+ }
311
+ ],
312
+ "name": "star-wars-knowledge_radios_1",
313
+ "validation": {
314
+ "required": true
315
+ }
316
+ }
317
+ ],
318
+ "heading": "How well do you know Star Wars?",
319
+ "section_heading": "That's no moon",
320
+ "url": "/star-wars-knowledge"
321
+ },
269
322
  {
270
323
  "_uuid": "e819d0c2-7062-4997-89cf-44d26d098404",
271
324
  "_id": "page._check-answers",
@@ -1,3 +1,3 @@
1
1
  module MetadataPresenter
2
- VERSION = '0.15.3'
2
+ VERSION = '0.16.0'
3
3
  end
@@ -0,0 +1,20 @@
1
+ {
2
+ "$id": "http://gov.uk/schema/v1.0.0/page/multiplequestions",
3
+ "_name": "page.multiplequestions",
4
+ "title": "Multiple questions",
5
+ "description": "Ask users more than one question on a page",
6
+ "type": "object",
7
+ "properties": {
8
+ "_type": {
9
+ "const": "page.multiplequestions"
10
+ }
11
+ },
12
+ "allOf": [
13
+ {
14
+ "$ref": "definition.page.form"
15
+ }
16
+ ],
17
+ "required": [
18
+ "heading"
19
+ ]
20
+ }
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.15.3
4
+ version: 0.16.0
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-03-03 00:00:00.000000000 Z
11
+ date: 2021-03-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -261,6 +261,7 @@ files:
261
261
  - app/views/metadata_presenter/page/checkanswers.html.erb
262
262
  - app/views/metadata_presenter/page/confirmation.html.erb
263
263
  - app/views/metadata_presenter/page/form.html.erb
264
+ - app/views/metadata_presenter/page/multiplequestions.html.erb
264
265
  - app/views/metadata_presenter/page/singlequestion.html.erb
265
266
  - app/views/metadata_presenter/page/start.html.erb
266
267
  - config/initializers/default_metadata.rb
@@ -278,6 +279,7 @@ files:
278
279
  - default_metadata/definition/radio.json
279
280
  - default_metadata/page/checkanswers.json
280
281
  - default_metadata/page/confirmation.json
282
+ - default_metadata/page/multiplequestions.json
281
283
  - default_metadata/page/singlequestion.json
282
284
  - default_metadata/page/start.json
283
285
  - default_metadata/service/base.json
@@ -342,6 +344,7 @@ files:
342
344
  - schemas/link/link.json
343
345
  - schemas/page/checkanswers.json
344
346
  - schemas/page/confirmation.json
347
+ - schemas/page/multiplequestions.json
345
348
  - schemas/page/singlequestion.json
346
349
  - schemas/page/start.json
347
350
  - schemas/request/service.json