metadata_presenter 2.15.0 → 2.15.4

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: 403f05545513e03fa74a28791ce736ec7cde6812e27f412ba8c60f8b18f8766c
4
- data.tar.gz: 2f8eddc4cb7cbb664d3b7577f56c50fe6a6e27326aa1bf5ef449eaec66940b78
3
+ metadata.gz: c526a54a48a250a291b565231b133b3a517cefef5c29757df8a7c90cd84187eb
4
+ data.tar.gz: 2a64ff2e896a36457768b91fd79bb9337d4f07d9661b90d55512fb8e7b78af48
5
5
  SHA512:
6
- metadata.gz: 627b8dc27af8939370194ce5a7bd753da8f7213f147b1140698b4a9f7e22f087722975293d7dee622abc983a612be4d877b71be4b9655fb58f7f620aab6c5c7b
7
- data.tar.gz: 2a8c603f96b6692d851773db995a34b2ad232f60c766126b0ef5063531d5faad96572f8c576ebbd13a3c50aa06a8fb9f66773355355e1325b6be564327e3823e
6
+ metadata.gz: c77ab91131390c107db8fb90c0bb77c6a660a3ea54857270008c6c9d7142e545c8b1749eafe737fba0030febecb70dd82f2b0555cab815676fb9e5e0e3da6c0c
7
+ data.tar.gz: 929ab9d91e625a4c8d693d766688bcc2b454f2707f957d318f86d46da1f157e04323fce86bf628b5edc91949a5c6ebaf757d1e0b2654c6216a5c85aae8f4b158
@@ -19,7 +19,7 @@ module MetadataPresenter
19
19
 
20
20
  class Grid
21
21
  include BranchDestinations
22
- attr_reader :start_from
22
+ attr_reader :service, :start_from
23
23
 
24
24
  def initialize(service, start_from: nil, main_flow: [])
25
25
  @service = service
@@ -67,9 +67,13 @@ module MetadataPresenter
67
67
  ordered_pages.map(&:uuid)
68
68
  end
69
69
 
70
+ def show_warning?
71
+ checkanswers_warning.show_warning? || confirmation_warning.show_warning?
72
+ end
73
+
70
74
  private
71
75
 
72
- attr_reader :service, :main_flow
76
+ attr_reader :main_flow
73
77
  attr_accessor :ordered, :traversed, :routes, :coordinates
74
78
 
75
79
  def route_from_start
@@ -277,46 +281,21 @@ module MetadataPresenter
277
281
  # Include a warning if a service does not have a CYA or Confirmation page in the
278
282
  # main flow. The warning should always be in the first row, last column.
279
283
  def insert_warning
280
- if cya_and_confirmation_pages_not_in_service? ||
281
- cya_and_confirmation_pages_detached?
282
- @ordered.append([MetadataPresenter::Warning.new])
283
- end
284
- end
285
-
286
- def cya_and_confirmation_pages_not_in_service?
287
- (checkanswers_not_in_service? && confirmation_not_in_service?) ||
288
- checkanswers_not_in_service? ||
289
- confirmation_not_in_service?
290
- end
291
-
292
- def checkanswers_not_in_service?
293
- service.checkanswers_page.blank?
284
+ @ordered.append([MetadataPresenter::Warning.new]) if show_warning?
294
285
  end
295
286
 
296
- def confirmation_not_in_service?
297
- service.confirmation_page.blank?
287
+ def checkanswers_warning
288
+ MetadataPresenter::PageWarning.new(
289
+ page: service.checkanswers_page,
290
+ main_flow_uuids: flow_uuids
291
+ )
298
292
  end
299
293
 
300
- def cya_and_confirmation_pages_detached?
301
- (checkanswers_detached? && confirmation_detached?) ||
302
- checkanswers_detached? ||
303
- confirmation_detached?
304
- end
305
-
306
- def checkanswers_detached?
307
- if service.checkanswers_page.present?
308
- uuid = service.checkanswers_page.uuid
309
- position = coordinates.positions[uuid]
310
- detached?(position)
311
- end
312
- end
313
-
314
- def confirmation_detached?
315
- if service.confirmation_page.present?
316
- uuid = service.confirmation_page.uuid
317
- position = coordinates.positions[uuid]
318
- detached?(position)
319
- end
294
+ def confirmation_warning
295
+ MetadataPresenter::PageWarning.new(
296
+ page: service.confirmation_page,
297
+ main_flow_uuids: flow_uuids
298
+ )
320
299
  end
321
300
 
322
301
  # Any destinations exiting the branch that have not already been traversed.
@@ -0,0 +1,24 @@
1
+ module MetadataPresenter
2
+ class PageWarning
3
+ def initialize(page:, main_flow_uuids:)
4
+ @page = page
5
+ @main_flow_uuids = main_flow_uuids
6
+ end
7
+
8
+ def show_warning?
9
+ missing? || detached?
10
+ end
11
+
12
+ def missing?
13
+ page.blank?
14
+ end
15
+
16
+ def detached?
17
+ main_flow_uuids.exclude?(page&.uuid)
18
+ end
19
+
20
+ private
21
+
22
+ attr_reader :page, :main_flow_uuids
23
+ end
24
+ end
@@ -0,0 +1,8 @@
1
+ module MetadataPresenter
2
+ class EmailValidator < BaseValidator
3
+ def invalid_answer?
4
+ regex = URI::MailTo::EMAIL_REGEXP
5
+ user_answer.match(regex).nil?
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,11 @@
1
+ <%=
2
+ f.govuk_email_field component.id.to_sym,
3
+ label: { text: input_title },
4
+ hint: {
5
+ data: { "fb-default-text" => default_text('hint') },
6
+ text: component.hint
7
+ },
8
+ name: "answers[#{component.name}]",
9
+ spellcheck: "false",
10
+ autocomplete: "email"
11
+ %>
@@ -17,11 +17,11 @@ Rails.application.config.supported_components =
17
17
  content: %w(content)
18
18
  },
19
19
  multiplequestions: {
20
- input: %w(text textarea number date radios checkboxes),
20
+ input: %w(text textarea email number date radios checkboxes),
21
21
  content: %w(content)
22
22
  },
23
23
  singlequestion: {
24
- input: %w(text textarea number date radios checkboxes upload),
24
+ input: %w(text textarea number date radios checkboxes email upload),
25
25
  content: %w()
26
26
  }
27
27
  })
@@ -0,0 +1,13 @@
1
+ {
2
+ "_id": "component.email",
3
+ "_type": "email",
4
+ "errors": {},
5
+ "label": "Email address question",
6
+ "hint": "",
7
+ "name": "component-name",
8
+ "validation": {
9
+ "email": true,
10
+ "max_length": 256,
11
+ "required": true
12
+ }
13
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "_id": "error.email",
3
+ "_type": "string.error",
4
+ "description": "Input (email) is not a valid email",
5
+ "value": "Enter an email address in the correct format, like name@example.com"
6
+ }
@@ -63,6 +63,12 @@
63
63
  }
64
64
  },
65
65
  "80420693-d6f2-4fce-a860-777ca774a6f5": {
66
+ "_type": "flow.page",
67
+ "next": {
68
+ "default": "adcb61c3-52b1-479b-be51-1bb610876d54"
69
+ }
70
+ },
71
+ "adcb61c3-52b1-479b-be51-1bb610876d54" : {
66
72
  "_type": "flow.page",
67
73
  "next": {
68
74
  "default": "2ef7d11e-0307-49e9-9fe2-345dc528dd66"
@@ -503,6 +509,31 @@
503
509
  "add_component": "content",
504
510
  "section_heading": "Chain of Command"
505
511
  },
512
+ {
513
+ "_id": "page.email",
514
+ "url": "email",
515
+ "body": "Body section",
516
+ "_type": "page.singlequestion",
517
+ "_uuid": "adcb61c3-52b1-479b-be51-1bb610876d54",
518
+ "heading": "Email",
519
+ "components": [
520
+ {
521
+ "_id": "email-address_email_1",
522
+ "hint": "",
523
+ "name": "email-address_email_1",
524
+ "_type": "email",
525
+ "_uuid": "482cb2d0-fda7-4e5c-9591-96dcb546e181",
526
+ "label": "Email address",
527
+ "errors": {},
528
+ "collection": "components",
529
+ "validation": {
530
+ "required": true,
531
+ "email": true,
532
+ "max_length": 256
533
+ }
534
+ }
535
+ ]
536
+ },
506
537
  {
507
538
  "_id": "page.dog-picture",
508
539
  "url": "dog-picture",
@@ -1,3 +1,3 @@
1
1
  module MetadataPresenter
2
- VERSION = '2.15.0'.freeze
2
+ VERSION = '2.15.4'.freeze
3
3
  end
@@ -0,0 +1,23 @@
1
+ {
2
+ "$id": "http://gov.uk/schema/v1.0.0/email",
3
+ "_name": "component.email",
4
+ "title": "Email",
5
+ "description": "Let users enter an email address",
6
+ "type": "object",
7
+ "properties": {
8
+ "_type": {
9
+ "const": "email"
10
+ }
11
+ },
12
+ "allOf": [
13
+ {
14
+ "$ref": "http://gov.uk/schema/v1.0.0/definition/field"
15
+ },
16
+ {
17
+ "$ref": "http://gov.uk/schema/v1.0.0/definition/widthclass/input"
18
+ }
19
+ ],
20
+ "validation": {
21
+ "format": "email"
22
+ }
23
+ }
@@ -13,9 +13,6 @@
13
13
  {
14
14
  "$ref": "definition.field"
15
15
  },
16
- {
17
- "$ref": "validations#/definitions/string_bundle"
18
- },
19
16
  {
20
17
  "$ref": "definition.width_class.input"
21
18
  }
@@ -45,9 +45,6 @@
45
45
  {
46
46
  "$ref": "definition.field"
47
47
  },
48
- {
49
- "$ref": "validations#/definitions/string_bundle"
50
- },
51
48
  {
52
49
  "$ref": "definition.width_class.input"
53
50
  }
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: 2.15.0
4
+ version: 2.15.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - MoJ Forms
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-12-31 00:00:00.000000000 Z
11
+ date: 2022-01-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: govuk_design_system_formbuilder
@@ -295,6 +295,7 @@ files:
295
295
  - app/models/metadata_presenter/offline_upload_adapter.rb
296
296
  - app/models/metadata_presenter/page.rb
297
297
  - app/models/metadata_presenter/page_answers.rb
298
+ - app/models/metadata_presenter/page_warning.rb
298
299
  - app/models/metadata_presenter/previous_page.rb
299
300
  - app/models/metadata_presenter/route.rb
300
301
  - app/models/metadata_presenter/row_number.rb
@@ -311,6 +312,7 @@ files:
311
312
  - app/validators/metadata_presenter/accept_validator.rb
312
313
  - app/validators/metadata_presenter/base_validator.rb
313
314
  - app/validators/metadata_presenter/date_validator.rb
315
+ - app/validators/metadata_presenter/email_validator.rb
314
316
  - app/validators/metadata_presenter/max_length_validator.rb
315
317
  - app/validators/metadata_presenter/max_size_validator.rb
316
318
  - app/validators/metadata_presenter/min_length_validator.rb
@@ -330,6 +332,7 @@ files:
330
332
  - app/views/metadata_presenter/component/_components.html.erb
331
333
  - app/views/metadata_presenter/component/_content.html.erb
332
334
  - app/views/metadata_presenter/component/_date.html.erb
335
+ - app/views/metadata_presenter/component/_email.html.erb
333
336
  - app/views/metadata_presenter/component/_number.html.erb
334
337
  - app/views/metadata_presenter/component/_radios.html.erb
335
338
  - app/views/metadata_presenter/component/_text.html.erb
@@ -356,6 +359,7 @@ files:
356
359
  - default_metadata/component/checkboxes.json
357
360
  - default_metadata/component/content.json
358
361
  - default_metadata/component/date.json
362
+ - default_metadata/component/email.json
359
363
  - default_metadata/component/number.json
360
364
  - default_metadata/component/radios.json
361
365
  - default_metadata/component/text.json
@@ -380,6 +384,7 @@ files:
380
384
  - default_metadata/service/base.json
381
385
  - default_metadata/string/error.accept.json
382
386
  - default_metadata/string/error.date.json
387
+ - default_metadata/string/error.email.json
383
388
  - default_metadata/string/error.max_length.json
384
389
  - default_metadata/string/error.max_size.json
385
390
  - default_metadata/string/error.min_length.json
@@ -422,6 +427,7 @@ files:
422
427
  - schemas/component/checkboxes.json
423
428
  - schemas/component/content.json
424
429
  - schemas/component/date.json
430
+ - schemas/component/email.json
425
431
  - schemas/component/number.json
426
432
  - schemas/component/radios.json
427
433
  - schemas/component/text.json