metadata_presenter 2.17.9 → 2.17.12
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/README.md +3 -0
- data/app/controllers/metadata_presenter/engine_controller.rb +1 -1
- data/app/controllers/metadata_presenter/pages_controller.rb +5 -0
- data/app/models/metadata_presenter/autocomplete_item.rb +9 -0
- data/app/models/metadata_presenter/component.rb +20 -1
- data/app/models/metadata_presenter/page.rb +14 -2
- data/app/presenters/metadata_presenter/page_answers_presenter.rb +4 -0
- data/config/initializers/supported_components.rb +1 -1
- data/fixtures/countries.json +7 -0
- data/fixtures/version.json +33 -0
- data/lib/metadata_presenter/version.rb +1 -1
- data/schemas/component/autocomplete.json +3 -5
- data/schemas/definition/select.json +3 -9
- data/schemas/definition/select_item.json +1 -5
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 83d44483b1324f5bd4feb59767282ae2356c985bfd7afc50be63335dd1c57dbe
|
4
|
+
data.tar.gz: 64dd7c4d4cd9c2815e1fada71c2780f60203b2530b305b0edd82a85833cf5f0b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6da916e33426cfbd2868b09aa0a92c16a78fbee45cf33016a24844686dfc82a8dc076c80538c2e5ab723e9448fd5a0a1802e06bea94abfe311922a046c94d190
|
7
|
+
data.tar.gz: 5af616852e99ec845cf63daf3eb630f9a6b6e83229f58a763df29f787fc0e940e8b7fd7f928a048687324469c7abbe78e611bca513936de80cf3a2838d2b7d64
|
data/README.md
CHANGED
@@ -49,6 +49,7 @@ that you need to write the following methods in your controller:
|
|
49
49
|
2. load_user_data
|
50
50
|
3. editable?
|
51
51
|
4. create_submission
|
52
|
+
5. assign_autocomplete_items
|
52
53
|
|
53
54
|
The user answers can be accessed via `params[:answers]`.
|
54
55
|
|
@@ -80,6 +81,8 @@ mountable app:
|
|
80
81
|
The `create_submission` is related to process the submission in a backend
|
81
82
|
service.
|
82
83
|
|
84
|
+
The `autocomplete_items` takes the components on a page and retrieves any items for them that may exist. For the Editor it will make an API call, for the Runner it will look it up via an environment variable.
|
85
|
+
|
83
86
|
## Generate documentation
|
84
87
|
|
85
88
|
Run `rake doc` and open the doc/index.html
|
@@ -46,7 +46,7 @@ module MetadataPresenter
|
|
46
46
|
helper_method :allow_analytics?
|
47
47
|
|
48
48
|
def show_cookie_banner?
|
49
|
-
no_analytics_cookie?
|
49
|
+
(Rails.application.config.respond_to?(:global_ga4) || analytics_tags_present?) && no_analytics_cookie?
|
50
50
|
end
|
51
51
|
helper_method :show_cookie_banner?
|
52
52
|
|
@@ -5,6 +5,11 @@ module MetadataPresenter
|
|
5
5
|
@page ||= service.find_page_by_url(request.env['PATH_INFO'])
|
6
6
|
|
7
7
|
if @page
|
8
|
+
if @page.autocomplete_component_present?
|
9
|
+
items = autocomplete_items(@page.components)
|
10
|
+
@page.assign_autocomplete_items(items)
|
11
|
+
end
|
12
|
+
|
8
13
|
@page_answers = PageAnswers.new(@page, @user_data)
|
9
14
|
render template: @page.template
|
10
15
|
else
|
@@ -10,6 +10,17 @@ class MetadataPresenter::Component < MetadataPresenter::Metadata
|
|
10
10
|
# Threshold percentage at which the remaining count is shown
|
11
11
|
VALIDATION_STRING_LENGTH_THRESHOLD = 75
|
12
12
|
|
13
|
+
# Overriding here because autocomplete component's items property is non interactable
|
14
|
+
# in the Editor therefore it does not need to exist in the data-fb-content-data
|
15
|
+
# attribute on the page. The data-fb-content-data attribute is what is used to
|
16
|
+
# update user interactable elements such as the component question or page section
|
17
|
+
# heading etc.
|
18
|
+
def to_json(*_args)
|
19
|
+
return super unless autocomplete?
|
20
|
+
|
21
|
+
JSON.parse(super).to_json(except: 'items')
|
22
|
+
end
|
23
|
+
|
13
24
|
def to_partial_path
|
14
25
|
"metadata_presenter/component/#{type}"
|
15
26
|
end
|
@@ -20,16 +31,24 @@ class MetadataPresenter::Component < MetadataPresenter::Metadata
|
|
20
31
|
|
21
32
|
def items
|
22
33
|
Array(metadata.items).map do |item|
|
23
|
-
|
34
|
+
item_klass.new(item, editor: editor?)
|
24
35
|
end
|
25
36
|
end
|
26
37
|
|
38
|
+
def item_klass
|
39
|
+
autocomplete? ? MetadataPresenter::AutocompleteItem : MetadataPresenter::Item
|
40
|
+
end
|
41
|
+
|
27
42
|
SUPPORTS_BRANCHING = %w[radios checkboxes].freeze
|
28
43
|
|
29
44
|
def supports_branching?
|
30
45
|
type.in?(SUPPORTS_BRANCHING)
|
31
46
|
end
|
32
47
|
|
48
|
+
def autocomplete?
|
49
|
+
type == 'autocomplete'
|
50
|
+
end
|
51
|
+
|
33
52
|
def content?
|
34
53
|
type == 'content'
|
35
54
|
end
|
@@ -39,7 +39,8 @@ module MetadataPresenter
|
|
39
39
|
end
|
40
40
|
|
41
41
|
def components
|
42
|
-
|
42
|
+
@components ||=
|
43
|
+
to_components(metadata.components, collection: :components)
|
43
44
|
end
|
44
45
|
|
45
46
|
def extra_components
|
@@ -104,6 +105,17 @@ module MetadataPresenter
|
|
104
105
|
type == 'page.multiplequestions'
|
105
106
|
end
|
106
107
|
|
108
|
+
def autocomplete_component_present?
|
109
|
+
components.any?(&:autocomplete?)
|
110
|
+
end
|
111
|
+
|
112
|
+
def assign_autocomplete_items(items)
|
113
|
+
component_uuids = items.keys
|
114
|
+
components.each do |component|
|
115
|
+
component.items = items[component.uuid] if component.uuid.in?(component_uuids)
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
107
119
|
private
|
108
120
|
|
109
121
|
def heading?
|
@@ -111,7 +123,7 @@ module MetadataPresenter
|
|
111
123
|
end
|
112
124
|
|
113
125
|
def to_components(node_components, collection:)
|
114
|
-
node_components
|
126
|
+
Array(node_components).map do |component|
|
115
127
|
MetadataPresenter::Component.new(
|
116
128
|
component.merge(collection: collection),
|
117
129
|
editor: editor?
|
@@ -21,7 +21,7 @@ Rails.application.config.supported_components =
|
|
21
21
|
content: %w(content)
|
22
22
|
},
|
23
23
|
singlequestion: {
|
24
|
-
input: %w(text textarea number date radios checkboxes email upload),
|
24
|
+
input: %w(text textarea number date radios checkboxes email upload autocomplete),
|
25
25
|
content: %w()
|
26
26
|
}
|
27
27
|
})
|
data/fixtures/version.json
CHANGED
@@ -69,6 +69,12 @@
|
|
69
69
|
}
|
70
70
|
},
|
71
71
|
"2ef7d11e-0307-49e9-9fe2-345dc528dd66": {
|
72
|
+
"_type": "flow.page",
|
73
|
+
"next": {
|
74
|
+
"default": "c7755991-436b-4495-afa6-803db58cefbc"
|
75
|
+
}
|
76
|
+
},
|
77
|
+
"c7755991-436b-4495-afa6-803db58cefbc": {
|
72
78
|
"_type": "flow.page",
|
73
79
|
"next": {
|
74
80
|
"default": "e337070b-f636-49a3-a65c-f506675265f0"
|
@@ -568,6 +574,33 @@
|
|
568
574
|
}
|
569
575
|
]
|
570
576
|
},
|
577
|
+
{
|
578
|
+
"_id": "page.countries",
|
579
|
+
"url": "countries",
|
580
|
+
"body": "Body section",
|
581
|
+
"lede": "",
|
582
|
+
"_type": "page.singlequestion",
|
583
|
+
"_uuid": "c7755991-436b-4495-afa6-803db58cefbc",
|
584
|
+
"heading": "",
|
585
|
+
"components": [
|
586
|
+
{
|
587
|
+
"_id": "countries_autocomplete_1",
|
588
|
+
"hint": "",
|
589
|
+
"name": "countries_autocomplete_1",
|
590
|
+
"_type": "autocomplete",
|
591
|
+
"_uuid": "4dc23b9c-9757-4526-813d-b43efbe07dad",
|
592
|
+
"items": [
|
593
|
+
],
|
594
|
+
"errors": {
|
595
|
+
},
|
596
|
+
"legend": "Countries",
|
597
|
+
"validation": {
|
598
|
+
"required": true
|
599
|
+
}
|
600
|
+
}
|
601
|
+
],
|
602
|
+
"section_heading": ""
|
603
|
+
},
|
571
604
|
{
|
572
605
|
"_id": "page.check-answers",
|
573
606
|
"url": "check-answers",
|
@@ -4,14 +4,12 @@
|
|
4
4
|
"title": "Autocomplete",
|
5
5
|
"description": "Let users select one option from an auto-completing list",
|
6
6
|
"type": "object",
|
7
|
-
"allOf": [
|
8
|
-
{
|
9
|
-
"$ref": "definition.select"
|
10
|
-
}
|
11
|
-
],
|
12
7
|
"properties": {
|
13
8
|
"_type": {
|
14
9
|
"const": "autocomplete"
|
10
|
+
},
|
11
|
+
"items": {
|
12
|
+
"$ref": "definition.select"
|
15
13
|
}
|
16
14
|
}
|
17
15
|
}
|
@@ -2,15 +2,9 @@
|
|
2
2
|
"$id": "http://gov.uk/schema/v1.0.0/definition/select",
|
3
3
|
"_name": "definition.select",
|
4
4
|
"title": "Select component definition",
|
5
|
-
"
|
6
|
-
|
7
|
-
|
8
|
-
"description": "Items that users can select",
|
9
|
-
"type": "array",
|
10
|
-
"items": {
|
11
|
-
"$ref": "definition.select_item"
|
12
|
-
}
|
13
|
-
}
|
5
|
+
"type": "array",
|
6
|
+
"items": {
|
7
|
+
"$ref": "definition.select_item"
|
14
8
|
},
|
15
9
|
"required": [
|
16
10
|
"items"
|
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.17.
|
4
|
+
version: 2.17.12
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- MoJ Forms
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-07-
|
11
|
+
date: 2022-07-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: govuk_design_system_formbuilder
|
@@ -262,6 +262,7 @@ files:
|
|
262
262
|
- app/helpers/metadata_presenter/application_helper.rb
|
263
263
|
- app/helpers/metadata_presenter/default_text.rb
|
264
264
|
- app/jobs/metadata_presenter/application_job.rb
|
265
|
+
- app/models/metadata_presenter/autocomplete_item.rb
|
265
266
|
- app/models/metadata_presenter/branch_destinations.rb
|
266
267
|
- app/models/metadata_presenter/column_number.rb
|
267
268
|
- app/models/metadata_presenter/component.rb
|
@@ -434,6 +435,7 @@ files:
|
|
434
435
|
- fixtures/branching_8.png
|
435
436
|
- fixtures/branching_9.json
|
436
437
|
- fixtures/branching_9.png
|
438
|
+
- fixtures/countries.json
|
437
439
|
- fixtures/exit_only_service.json
|
438
440
|
- fixtures/invalid_content_page.json
|
439
441
|
- fixtures/no_component_page.json
|