govuk_publishing_components 5.2.3 → 5.3.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: 783e6b85b53649ff2075bf833cfe3713ce018789f6ca8569a6d0fd5383628646
4
- data.tar.gz: efe68ac7148834ab878113d659110abc33ef5c8a0f71667830f25cd585bb4d44
3
+ metadata.gz: b4902da197a494c6f39c5ed16ecb9ef84a8c8f56cf037a14130793141048274d
4
+ data.tar.gz: 0c614a237b36b5e919a705805de3bbedf2503efab958da940dd78abb74fb8b28
5
5
  SHA512:
6
- metadata.gz: 1c6d4212608687f381b8084441552f1ea632e23fdc872862e809fcbf452b7b03f8fa4bc55344cd37bbdb5f07e5d127072d07b37fa1b94bdb785f35031b8fad31
7
- data.tar.gz: 40afc265848b6c40680f0a3429ed683987caaad74c6f564a42689c21fa4423a09d7a072fbe1f84564809dc7e79398963d0435c35bc527ab0cd5c489f2b41a415
6
+ metadata.gz: da1bfcf8e9bf7ec67e07e2f90b901905ac214311bfd503d6d1a15756965befca953be7afa9921fa216236bb52b858bf7b35961eb4b40c25c7a2556e158b056f6
7
+ data.tar.gz: 3043a55019d7ebc3c91fc6f7bd600e4720ef4d8e140e2731fb1c79a5c336197f600533180846508ae25e417125b511070bd09ac36a713b190da7c5332e29e08a
@@ -3,5 +3,8 @@ require "govuk_publishing_components/engine"
3
3
  require "govuk_publishing_components/components/step_by_step_nav_helper"
4
4
  require "govuk_publishing_components/components/related_navigation_helper"
5
5
 
6
+ require "govuk_publishing_components/step_nav"
7
+ require "govuk_publishing_components/step_nav_helper"
8
+
6
9
  module GovukPublishingComponents
7
10
  end
@@ -0,0 +1,23 @@
1
+ module GovukPublishingComponents
2
+ class StepNav
3
+ def initialize(content_item)
4
+ @content_item = content_item.deep_symbolize_keys
5
+ end
6
+
7
+ def title
8
+ content_item[:title]
9
+ end
10
+
11
+ def base_path
12
+ content_item[:base_path]
13
+ end
14
+
15
+ def content
16
+ @content ||= content_item.dig(:details, :step_by_step_nav)
17
+ end
18
+
19
+ private
20
+
21
+ attr_reader :content_item
22
+ end
23
+ end
@@ -0,0 +1,86 @@
1
+ module GovukPublishingComponents
2
+ class StepNavHelper
3
+ def initialize(content_store_response, current_path)
4
+ @content_item = content_store_response.to_h
5
+ @current_path = current_path
6
+ end
7
+
8
+ def step_navs
9
+ @step_navs ||= parsed_step_navs.map do |step_nav|
10
+ StepNav.new(step_nav)
11
+ end
12
+ end
13
+
14
+ def show_sidebar?
15
+ step_navs.count == 1
16
+ end
17
+ alias_method :show_header?, :show_sidebar?
18
+
19
+ def show_related_links?
20
+ step_navs.any? && step_navs.count < 5
21
+ end
22
+
23
+ def related_links
24
+ step_navs.map do |step_nav|
25
+ {
26
+ href: step_nav.base_path,
27
+ text: step_nav.title
28
+ }
29
+ end
30
+ end
31
+
32
+ def sidebar
33
+ if show_sidebar?
34
+ @sidebar ||= first_step_nav.content.tap do |sb|
35
+ configure_for_sidebar(sb)
36
+ sb.merge!(small: true, heading_level: 3)
37
+ end
38
+ end
39
+ end
40
+
41
+ def header
42
+ if show_header?
43
+ {
44
+ title: first_step_nav.title,
45
+ path: first_step_nav.base_path
46
+ }
47
+ else
48
+ {}
49
+ end
50
+ end
51
+
52
+ private
53
+
54
+ attr_reader :content_item, :current_path
55
+
56
+ def first_step_nav
57
+ step_navs.first
58
+ end
59
+
60
+ def steps
61
+ @steps ||= step_nav[:steps]
62
+ end
63
+
64
+ def parsed_step_navs
65
+ content_item.dig("links", "part_of_step_navs").to_a
66
+ end
67
+
68
+ def configure_for_sidebar(step_nav_content)
69
+ step_nav_content[:steps].each_with_index do |step, step_index|
70
+ step[:contents].each do |content|
71
+ next unless content[:contents]
72
+
73
+ content[:contents].each do |link|
74
+ if link[:href] == current_path
75
+ link[:active] = true
76
+ step_nav_content[:show_step] = step_index + 1
77
+ step_nav_content[:highlight_step] = step_index + 1
78
+ return step_nav_content
79
+ end
80
+ end
81
+ end
82
+ end
83
+ step_nav_content
84
+ end
85
+ end
86
+ end
@@ -1,3 +1,3 @@
1
1
  module GovukPublishingComponents
2
- VERSION = '5.2.3'.freeze
2
+ VERSION = '5.3.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: govuk_publishing_components
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.2.3
4
+ version: 5.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - GOV.UK Dev
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-02-27 00:00:00.000000000 Z
11
+ date: 2018-03-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -206,6 +206,20 @@ dependencies:
206
206
  - - "~>"
207
207
  - !ruby/object:Gem::Version
208
208
  version: '0.64'
209
+ - !ruby/object:Gem::Dependency
210
+ name: gds-api-adapters
211
+ requirement: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - ">="
214
+ - !ruby/object:Gem::Version
215
+ version: '0'
216
+ type: :development
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - ">="
221
+ - !ruby/object:Gem::Version
222
+ version: '0'
209
223
  - !ruby/object:Gem::Dependency
210
224
  name: govuk_schemas
211
225
  requirement: !ruby/object:Gem::Requirement
@@ -234,6 +248,20 @@ dependencies:
234
248
  - - "~>"
235
249
  - !ruby/object:Gem::Version
236
250
  version: 3.0.1
251
+ - !ruby/object:Gem::Dependency
252
+ name: pry-byebug
253
+ requirement: !ruby/object:Gem::Requirement
254
+ requirements:
255
+ - - ">="
256
+ - !ruby/object:Gem::Version
257
+ version: '0'
258
+ type: :development
259
+ prerelease: false
260
+ version_requirements: !ruby/object:Gem::Requirement
261
+ requirements:
262
+ - - ">="
263
+ - !ruby/object:Gem::Version
264
+ version: '0'
237
265
  description: A gem to document components in GOV.UK frontend applications
238
266
  email:
239
267
  - govuk-dev@digital.cabinet-office.gov.uk
@@ -327,6 +355,8 @@ files:
327
355
  - lib/govuk_publishing_components/config.rb
328
356
  - lib/govuk_publishing_components/engine.rb
329
357
  - lib/govuk_publishing_components/minitest/component_guide_test.rb
358
+ - lib/govuk_publishing_components/step_nav.rb
359
+ - lib/govuk_publishing_components/step_nav_helper.rb
330
360
  - lib/govuk_publishing_components/version.rb
331
361
  - lib/tasks/govuk_publishing_components_tasks.rake
332
362
  homepage: https://github.com/alphagov/govuk_publishing_components