govuk_publishing_components 16.13.0 → 16.14.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: f6863e9153d0b12188aed4f43fcb62456b55028092eba4fc787aa551a2593431
4
- data.tar.gz: ea222dfcc127409a58837e10efa99b9ab00acd271bc0a61ca0aa77250a66035b
3
+ metadata.gz: 4e1561e655072e39b952b72b04117d705aca387289c84754e6260996186c1cdb
4
+ data.tar.gz: 49ea1ba1d5d37ccbbb2c7f87be315ce9945d74a8795eedd4440ac2f0e4ab9ee2
5
5
  SHA512:
6
- metadata.gz: c7a1d41db49527835781204c6c5da6b76694c3b01217f6050f79cfa1141f8239ceef4d075ad5c4414eeace32f6439d8cd52258dd04f559424a02035b683bbb7e
7
- data.tar.gz: 84b53ce768d43c4192f250acbe0d533009488087e75b50f60bfecad20a3dc04b1e7e913b608424c82997ab52accd61f98b567fee777e74eaac9f5de2b26f9e48
6
+ metadata.gz: ea203317b7d1c8abcabc8011a19bce5eff879f2d3ba3fd132780a22334427dd42ca85af6cc60f5942f9a143339a29bf9db5c0c40575940a52d66a73c4e5202de
7
+ data.tar.gz: d4c8f0249e8642554b686ac50e7a6b1185be6b4a0a5d6b804b689d412d64a4d6d49330cb6d4c70ec5a19e2facd9d7bcdc2898166515b45f1c5aa28c56aa4881e
@@ -1,6 +1,7 @@
1
1
  // This file contains the styles for the Component Guide.
2
2
 
3
3
  @import "govuk_publishing_components/components/helpers/govuk-frontend-settings";
4
+ @import "govuk_publishing_components/components/helpers/markdown-typography";
4
5
  @import "govuk-frontend/settings/all";
5
6
  @import "govuk-frontend/tools/all";
6
7
  @import "govuk-frontend/helpers/all";
@@ -234,6 +235,10 @@
234
235
  }
235
236
  }
236
237
 
238
+ .component-markdown {
239
+ @include markdown-typography;
240
+ }
241
+
237
242
  // Preview Page Styling
238
243
  html {
239
244
  background: govuk-colour("white");
@@ -24,6 +24,7 @@
24
24
  // components
25
25
  @import "components/accessible-autocomplete";
26
26
  @import "components/accordion";
27
+ @import "components/attachment-link";
27
28
  @import "components/back-link";
28
29
  @import "components/breadcrumbs";
29
30
  @import "components/button";
@@ -0,0 +1,4 @@
1
+ .gem-c-attachment-link__abbr {
2
+ text-decoration: none;
3
+ cursor: help;
4
+ }
@@ -1,3 +1,4 @@
1
+ @import "../helpers/markdown-typography";
1
2
  // Govspeak typography
2
3
  // https://govuk-publishing-components.herokuapp.com/component-guide/govspeak/heading_levels
3
4
  // https://govuk-publishing-components.herokuapp.com/component-guide/govspeak/lists
@@ -9,126 +10,7 @@
9
10
  // - alphagov/govspeak: ✔︎
10
11
 
11
12
  .gem-c-govspeak {
12
- @include govuk-text-colour;
13
-
14
- @include govuk-font($size: 16);
15
-
16
- ol,
17
- ul,
18
- p {
19
- @include govuk-font($size: 19);
20
- margin-top: $gutter-half;
21
- margin-bottom: $gutter-half;
22
-
23
- @include govuk-media-query($from: tablet) {
24
- margin-top: $gutter-two-thirds;
25
- margin-bottom: $gutter-two-thirds;
26
- }
27
- }
28
-
29
- // Headings
30
-
31
- // H1's are not allowed and thus are styled bare
32
- h1 {
33
- @include govuk-font($size: 19);
34
- margin: 0;
35
- padding: 0;
36
- }
37
-
38
- h2 {
39
- @include govuk-font($size: 27, $weight: bold);
40
- margin-top: $gutter;
41
- margin-bottom: 0;
42
-
43
- @include govuk-media-query($from: desktop) {
44
- margin-top: $gutter * 1.5;
45
- margin-bottom: 0;
46
- }
47
- }
48
-
49
- h3 {
50
- @include govuk-font($size: 19, $weight: bold);
51
- margin-top: $gutter + 5px;
52
- margin-bottom: 0;
53
- }
54
-
55
- h4,
56
- h5,
57
- h6 {
58
- @include govuk-font($size: 19, $weight: bold);
59
- margin-top: $gutter + 5px;
60
- margin-bottom: 0;
61
-
62
- + p {
63
- margin-top: 5px;
64
- }
65
- }
66
-
67
- h5,
68
- h6 {
69
- margin: 0;
70
- }
71
-
72
- h2:first-child,
73
- h3:first-child,
74
- h4:first-child,
75
- p:first-child {
76
- margin-top: 0;
77
- }
78
-
79
- // Links
80
- a {
81
- @include govuk-link-style-default;
82
- @include govuk-focusable-fill;
83
- }
84
-
85
- // Lists
86
-
87
- ol,
88
- ul {
89
- list-style: decimal;
90
- list-style-position: outside;
91
- margin-left: $gutter-two-thirds;
92
- padding: 0;
93
-
94
- ul,
95
- ol {
96
- margin-top: 0;
97
- margin-bottom: 0;
98
- padding: 0;
99
- }
100
-
101
- @include ie(7) {
102
- li {
103
- margin-left: $gutter;
104
- }
105
- }
106
- }
107
-
108
- ul {
109
- list-style: disc;
110
- list-style-position: outside;
111
- }
112
-
113
- li {
114
- margin: 0 0 5px 0;
115
- padding: 0;
116
-
117
- p {
118
- margin: 0;
119
- padding: 0;
120
- }
121
-
122
- p + p,
123
- p + ul,
124
- p + ol,
125
- ul + p,
126
- ul + ol,
127
- ol + p,
128
- ol + ul {
129
- margin-top: 5px;
130
- }
131
- }
13
+ @include markdown-typography;
132
14
 
133
15
  &.direction-rtl ol,
134
16
  &.direction-rtl ul {
@@ -209,23 +91,4 @@
209
91
  font-style: normal;
210
92
  font-weight: inherit;
211
93
  }
212
-
213
- sup {
214
- font-size: 0.8em;
215
- line-height: 0.7em;
216
- vertical-align: super;
217
- }
218
-
219
- abbr {
220
- cursor: help;
221
- text-decoration: none;
222
- }
223
-
224
- // Horizontal Rule
225
-
226
- hr {
227
- margin-top: $gutter - 1px;
228
- margin-bottom: $gutter;
229
- border-top: 1px solid $border-colour;
230
- }
231
94
  }
@@ -0,0 +1,144 @@
1
+ @mixin markdown-typography {
2
+ @include govuk-text-colour;
3
+
4
+ @include govuk-font($size: 16);
5
+
6
+ $gutter-two-thirds: $govuk-gutter - ($govuk-gutter / 3);
7
+
8
+ ol,
9
+ ul,
10
+ p {
11
+ @include govuk-font($size: 19);
12
+ margin-top: $govuk-gutter-half;
13
+ margin-bottom: $govuk-gutter-half;
14
+
15
+ @include govuk-media-query($from: tablet) {
16
+ margin-top: $gutter-two-thirds;
17
+ margin-bottom: $gutter-two-thirds;
18
+ }
19
+ }
20
+
21
+ // Headings
22
+
23
+ // Markdown is expected to be styled within a document with a H1 title
24
+ // thus H1's are not expected and are discouraged by bare styling
25
+
26
+ h1 {
27
+ @include govuk-font($size: 19);
28
+ margin: 0;
29
+ padding: 0;
30
+ }
31
+
32
+ h2 {
33
+ @include govuk-font($size: 27, $weight: bold);
34
+ margin-top: $govuk-gutter;
35
+ margin-bottom: 0;
36
+
37
+ @include govuk-media-query($from: desktop) {
38
+ margin-top: $govuk-gutter * 1.5;
39
+ margin-bottom: 0;
40
+ }
41
+ }
42
+
43
+ h3 {
44
+ @include govuk-font($size: 19, $weight: bold);
45
+ margin-top: $govuk-gutter + 5px;
46
+ margin-bottom: 0;
47
+ }
48
+
49
+ // H4, H5 and H6 are discouraged and thus styled the same
50
+
51
+ h4,
52
+ h5,
53
+ h6 {
54
+ @include govuk-font($size: 19, $weight: bold);
55
+ margin-top: $govuk-gutter + 5px;
56
+ margin-bottom: 0;
57
+
58
+ + p {
59
+ margin-top: 5px;
60
+ }
61
+ }
62
+
63
+ h5,
64
+ h6 {
65
+ margin: 0;
66
+ }
67
+
68
+ h2:first-child,
69
+ h3:first-child,
70
+ h4:first-child,
71
+ p:first-child {
72
+ margin-top: 0;
73
+ }
74
+
75
+ // Links
76
+
77
+ a {
78
+ @include govuk-link-style-default;
79
+ @include govuk-focusable-fill;
80
+ }
81
+
82
+ // Lists
83
+
84
+ ol,
85
+ ul {
86
+ list-style: decimal;
87
+ list-style-position: outside;
88
+ margin-left: $gutter-two-thirds;
89
+ padding: 0;
90
+
91
+ ul,
92
+ ol {
93
+ margin-top: 0;
94
+ margin-bottom: 0;
95
+ padding: 0;
96
+ }
97
+ }
98
+
99
+ ul {
100
+ list-style: disc;
101
+ list-style-position: outside;
102
+ }
103
+
104
+ li {
105
+ margin: 0 0 5px 0;
106
+ padding: 0;
107
+
108
+ p {
109
+ margin: 0;
110
+ padding: 0;
111
+ }
112
+
113
+ p + p,
114
+ p + ul,
115
+ p + ol,
116
+ ul + p,
117
+ ul + ol,
118
+ ol + p,
119
+ ol + ul {
120
+ margin-top: 5px;
121
+ }
122
+ }
123
+
124
+ // Text styles
125
+
126
+ sup {
127
+ font-size: 0.8em;
128
+ line-height: 0.7em;
129
+ vertical-align: super;
130
+ }
131
+
132
+ abbr {
133
+ cursor: help;
134
+ text-decoration: none;
135
+ }
136
+
137
+ // Horizontal Rule
138
+
139
+ hr {
140
+ margin-top: $govuk-gutter - 1px;
141
+ margin-bottom: $govuk-gutter;
142
+ border-top: 1px solid $govuk-border-colour;
143
+ }
144
+ }
@@ -49,11 +49,11 @@ module GovukPublishingComponents
49
49
  end
50
50
 
51
51
  def html_body
52
- govspeak_to_html(body) if body.present?
52
+ markdown_to_html(body) if body.present?
53
53
  end
54
54
 
55
55
  def html_accessibility_criteria
56
- govspeak_to_html(accessibility_criteria) if accessibility_criteria.present?
56
+ markdown_to_html(accessibility_criteria) if accessibility_criteria.present?
57
57
  end
58
58
 
59
59
  def partial_path
@@ -83,8 +83,8 @@ module GovukPublishingComponents
83
83
 
84
84
  private
85
85
 
86
- def govspeak_to_html(govspeak)
87
- Govspeak::Document.new(govspeak).to_html
86
+ def markdown_to_html(markdown)
87
+ Kramdown::Document.new(markdown).to_html
88
88
  end
89
89
  end
90
90
  end
@@ -68,7 +68,7 @@ module GovukPublishingComponents
68
68
  end
69
69
 
70
70
  def html_description
71
- govspeak_to_html(description) if description.present?
71
+ markdown_to_html(description) if description.present?
72
72
  end
73
73
 
74
74
  def has_block?
@@ -81,8 +81,8 @@ module GovukPublishingComponents
81
81
 
82
82
  private
83
83
 
84
- def govspeak_to_html(govspeak)
85
- Govspeak::Document.new(govspeak).to_html
84
+ def markdown_to_html(markdown)
85
+ Kramdown::Document.new(markdown).to_html
86
86
  end
87
87
  end
88
88
  end
@@ -3,7 +3,9 @@
3
3
 
4
4
  <div class="component-show">
5
5
  <div class="component-doc">
6
- <%= render "govuk_publishing_components/components/govspeak", content: raw(@component_example.html_description) %>
6
+ <div class="component-markdown">
7
+ <%= raw(@component_example.html_description) %>
8
+ </div>
7
9
  <h2 class="component-doc-h2">How to call this example</h2>
8
10
  <%= render partial: "govuk_publishing_components/component_guide/component_doc/call", locals: { component_doc: @component_doc, example: @component_example } %>
9
11
 
@@ -1,6 +1,6 @@
1
1
  <%= render 'govuk_publishing_components/components/title', title: GovukPublishingComponents::Config.component_guide_title %>
2
2
 
3
- <div class="gem-c-govspeak">
3
+ <div class="component-markdown">
4
4
  <p>Components are packages of template, style, behaviour and documentation that live in your application.</p>
5
5
  <p>A component must:</p>
6
6
  <ul>
@@ -13,7 +13,9 @@
13
13
  <%= render 'govuk_publishing_components/components/lead_paragraph', text: @component_doc.description %>
14
14
  <% if @component_doc.body.present? %>
15
15
  <div class="component-body">
16
- <%= render 'govuk_publishing_components/components/govspeak', content: raw(@component_doc.html_body) %>
16
+ <div class="component-markdown">
17
+ <%= raw(@component_doc.html_body) %>
18
+ </div>
17
19
  </div>
18
20
  <% end %>
19
21
  </div>
@@ -30,7 +32,7 @@
30
32
 
31
33
  <% if @component_doc.govuk_frontend_components.any? %>
32
34
  <h2 class="component-doc-h2">GOV.UK Design System</h2>
33
- <%= render 'govuk_publishing_components/components/govspeak' do %>
35
+ <div class="component-markdown">
34
36
  <p>This component incorporates components from the <%= link_to "GOV.UK Design System", "https://design-system.service.gov.uk" %>:</p>
35
37
 
36
38
  <ul>
@@ -38,14 +40,16 @@
38
40
  <li><%= link_to component.humanize, "https://design-system.service.gov.uk/components/#{component}" %></li>
39
41
  <% end %>
40
42
  </ul>
41
- <% end %>
43
+ </div>
42
44
  <% end %>
43
45
 
44
46
  <% if @component_doc.accessibility_criteria.present? %>
45
47
  <div class="govuk-grid-row component-accessibility-criteria">
46
48
  <div class="govuk-grid-column-two-thirds">
47
49
  <h2 class="component-doc-h2">Accessibility acceptance criteria</h2>
48
- <%= render 'govuk_publishing_components/components/govspeak', content: raw(@component_doc.html_accessibility_criteria) %>
50
+ <div class="component-markdown">
51
+ <%= raw(@component_doc.html_accessibility_criteria) %>
52
+ </div>
49
53
  </div>
50
54
  </div>
51
55
  <% end %>
@@ -61,7 +65,9 @@
61
65
  <a href="<%= component_example_path(@component_doc.id, example.id) %>" class="govuk-link"><%= example.name %></a>
62
66
  <small>(<a href="<%= component_preview_path(@component_doc.id, example.id) %>" class="govuk-link">preview</a>)</small>
63
67
  </h3>
64
- <%= render "govuk_publishing_components/components/govspeak", content: raw(example.html_description) %>
68
+ <div class="component-markdown">
69
+ <%= raw(example.html_description) %>
70
+ </div>
65
71
  <%= render "govuk_publishing_components/component_guide/component_doc/call", component_doc: @component_doc, example: example %>
66
72
  <%= render "govuk_publishing_components/component_guide/component_doc/preview", component_doc: @component_doc, example: example %>
67
73
  </div>
@@ -0,0 +1,28 @@
1
+ <%
2
+ attachment = GovukPublishingComponents::Presenters::Attachment.new(attachment)
3
+ target ||= nil
4
+ attributes = []
5
+ if attachment.readable_content_type
6
+ content = if attachment.content_type_abbr
7
+ raw tag.abbr(attachment.content_type.abbr,
8
+ title: attachment.readable_content_type,
9
+ class: "gem-c-attachment-link__abbr")
10
+ else
11
+ attachment.readable_content_type
12
+ end
13
+
14
+ attributes << tag.span(content, class: "gem-c-attachment-link__attribute")
15
+ end
16
+
17
+ if attachment.readable_file_size
18
+ attributes << tag.span(attachment.readable_file_size, class: "gem-c-attachment-link__attribute")
19
+ end
20
+
21
+ if attachment.readable_number_of_pages
22
+ attributes << tag.span(attachment.readable_number_of_pages, class: "gem-c-attachment-link__attribute")
23
+ end
24
+ %>
25
+ <%= tag.span(class: "gem-c-attachment-link") do %>
26
+ <%= link_to(attachment.title, attachment.url, class: "govuk-link", target: target) %>
27
+ <%= raw("(#{attributes.join(', ')})") if attributes.any? %>
28
+ <% end %>
@@ -0,0 +1,45 @@
1
+ name: Attachment link (experimental)
2
+ description: A link to a file with metadata of the file contents
3
+ body: |
4
+ This component is marked as experimental as it is part of a drive to provide
5
+ a consistent place for attachment presentation logic (currently this logic is
6
+ within [Govspeak][] and [Whitehall][]). The API for this
7
+ component may change during this process.
8
+
9
+ It provides a means to show a link to an attachment with some
10
+ relevant file data.
11
+
12
+ It is expected to be embedded inside an element that provides text styles
13
+ (such as `.govuk-body`) so does not provide its own text styling.
14
+
15
+ [Govspeak]: https://github.com/alphagov/govspeak/blob/c3a0742c87537a371108d097cea23688efa90a14/lib/govspeak/presenters/attachment_presenter.rb
16
+ [Whitehall]: https://github.com/alphagov/whitehall/blob/5c760eea912320c5a80ef59791df47161d889f2f/app/helpers/document_helper.rb
17
+ shared_accessibility_criteria:
18
+ - link
19
+ examples:
20
+ default:
21
+ data:
22
+ attachment:
23
+ title: "Temporary snow ploughs: guidance note"
24
+ url: https://assets.publishing.service.gov.uk/government/uploads/system/uploads/attachment_data/file/259634/temporary-snow-ploughs.pdf
25
+ content_type: application/pdf
26
+ file_size: 20000
27
+ number_of_pages: 1
28
+ embedded_in_govuk_body:
29
+ embed: |
30
+ <p class="govuk-body">
31
+ <%= component %>
32
+ </p>
33
+ data:
34
+ attachment:
35
+ title: "Temporary snow ploughs: guidance note"
36
+ url: https://assets.publishing.service.gov.uk/government/uploads/system/uploads/attachment_data/file/259634/temporary-snow-ploughs.pdf
37
+ content_type: application/pdf
38
+ file_size: 20000
39
+ number_of_pages: 1
40
+ with_target_blank:
41
+ data:
42
+ attachment:
43
+ title: "Temporary snow ploughs: guidance note"
44
+ url: https://assets.publishing.service.gov.uk/government/uploads/system/uploads/attachment_data/file/259634/temporary-snow-ploughs.pdf
45
+ target: _blank
@@ -1,6 +1,10 @@
1
+ require "active_support"
2
+ require "action_controller"
3
+ require "action_view"
1
4
  require "govuk_publishing_components/config"
2
5
  require "govuk_publishing_components/engine"
3
6
  require "govuk_publishing_components/presenters/shared_helper"
7
+ require "govuk_publishing_components/presenters/attachment"
4
8
  require "govuk_publishing_components/presenters/breadcrumbs"
5
9
  require "govuk_publishing_components/presenters/button_helper"
6
10
  require "govuk_publishing_components/presenters/contextual_navigation"
@@ -10,7 +14,6 @@ require "govuk_publishing_components/presenters/page_with_step_by_step_navigatio
10
14
  require "govuk_publishing_components/presenters/content_breadcrumbs_based_on_parent"
11
15
  require "govuk_publishing_components/presenters/content_breadcrumbs_based_on_taxons"
12
16
  require "govuk_publishing_components/presenters/checkboxes_helper"
13
- require "govuk_publishing_components/presenters/services"
14
17
  require "govuk_publishing_components/presenters/select"
15
18
  require "govuk_publishing_components/presenters/meta_tags"
16
19
  require "govuk_publishing_components/presenters/content_item"
@@ -29,5 +32,20 @@ require "govuk_publishing_components/app_helpers/table_helper"
29
32
  require "govuk_publishing_components/app_helpers/brand_helper"
30
33
  require "govuk_publishing_components/app_helpers/environment"
31
34
 
35
+ # Add view and i18n paths for usage outside of a Rails app
36
+ ActionController::Base.append_view_path(
37
+ File.expand_path("app/views", GovukPublishingComponents::Config.gem_directory)
38
+ )
39
+
40
+ I18n.load_path.unshift(
41
+ *Dir.glob(File.expand_path("config/locales/*.yml", GovukPublishingComponents::Config.gem_directory))
42
+ )
43
+
32
44
  module GovukPublishingComponents
45
+ def self.render(component, options = {})
46
+ I18n.with_locale(options.fetch(:locale, "en")) do
47
+ renderer = ActionController::Base.renderer
48
+ renderer.render(partial: component, locals: options)
49
+ end
50
+ end
33
51
  end
@@ -1,7 +1,10 @@
1
+ require "rails/engine"
2
+ require "action_dispatch"
3
+
1
4
  module GovukPublishingComponents
2
5
  class Engine < ::Rails::Engine
3
6
  isolate_namespace GovukPublishingComponents
4
7
  require 'govuk_frontend_toolkit'
5
- require 'govspeak'
8
+ require 'kramdown'
6
9
  end
7
10
  end
@@ -0,0 +1,114 @@
1
+ module GovukPublishingComponents
2
+ module Presenters
3
+ class Attachment
4
+ include ActionView::Helpers::NumberHelper
5
+ include ActionView::Helpers::TextHelper
6
+
7
+ attr_reader :attachment_data
8
+
9
+ # Expects a hash of attachment data
10
+ # * title and url are required
11
+ # * content_type, filename, file_size, number of pages can be provided
12
+ def initialize(attachment_data)
13
+ @attachment_data = attachment_data.with_indifferent_access
14
+ end
15
+
16
+ def title
17
+ attachment_data.fetch(:title)
18
+ end
19
+
20
+ def url
21
+ attachment_data.fetch(:url)
22
+ end
23
+
24
+ def content_type
25
+ @content_type ||= SupportedContentType.find(
26
+ attachment_data[:content_type],
27
+ attachment_data[:filename] ? File.extname(attachment_data[:filename]) : nil,
28
+ )
29
+ end
30
+
31
+ def content_type_abbr
32
+ content_type.abbr
33
+ end
34
+
35
+ def readable_content_type
36
+ content_type.name
37
+ end
38
+
39
+ def readable_file_size
40
+ return unless attachment_data[:file_size]
41
+
42
+ number_to_human_size(attachment_data[:file_size])
43
+ end
44
+
45
+ def readable_number_of_pages
46
+ return unless attachment_data[:number_of_pages]
47
+
48
+ pluralize(attachment_data[:number_of_pages], "page")
49
+ end
50
+
51
+ class SupportedContentType
52
+ attr_reader :content_type, :name, :abbr
53
+
54
+ TYPES = [
55
+ { content_type: "application/msword", name: "MS Word Document" }.freeze, # doc
56
+ { content_type: "application/pdf", abbr: "PDF", name: "Portable Document Format" }.freeze,
57
+ { content_type: "application/postscript", extension: ".ps", abbr: "PS", name: "PostScript" }.freeze,
58
+ { content_type: "application/postscript", extension: ".eps", abbr: "EPS", name: "Encapsulated PostScript" }.freeze,
59
+ { content_type: "application/rtf", abbr: "RTF", name: "Rich Text Format" }.freeze,
60
+ { content_type: "application/vnd.ms-excel", name: "MS Excel Spreadsheet" }.freeze,
61
+ { content_type: "application/vnd.ms-excel.sheet.macroenabled.12", abbr: "XLSM", name: "MS Excel Macro-Enabled Workbook" }.freeze,
62
+ { content_type: "application/vnd.ms-powerpoint", name: "MS Powerpoint Presentation" }.freeze, # ppt
63
+ { content_type: "application/vnd.oasis.opendocument.presentation", abbr: "ODP", name: "OpenDocument Presentation" }.freeze,
64
+ { content_type: "application/vnd.oasis.opendocument.spreadsheet", abbr: "ODS", name: "OpenDocument Spreadsheet" }.freeze,
65
+ { content_type: "application/vnd.oasis.opendocument.text", abbr: "ODT", name: "OpenDocument Text document" }.freeze,
66
+ { content_type: "application/vnd.openxmlformats-officedocument.presentationml.presentation", name: "MS Powerpoint Presentation" }.freeze, # pptx
67
+ { content_type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", name: "MS Excel Spreadsheet" }.freeze, # xlsx
68
+ { content_type: "application/vnd.openxmlformats-officedocument.wordprocessingml.document", name: "MS Word Document" }.freeze, # docx
69
+ { content_type: "application/xml", abbr: "XML", name: "XML Document" }.freeze,
70
+ { content_type: "image/gif", abbr: "GIF", name: "Graphics Interchange Format" }.freeze,
71
+ { content_type: "image/jpeg", name: "JPEG" }.freeze,
72
+ { content_type: "image/png", abbr: "PNG", name: "Portable Network Graphic" }.freeze,
73
+ { content_type: "image/vnd.dxf", abbr: "DXF", name: "AutoCAD Drawing Exchange Format" }.freeze,
74
+ { content_type: "text/csv", abbr: "CSV", name: "Comma-separated Values" }.freeze,
75
+ { content_type: "text/plain", name: "Plain Text" }.freeze,
76
+ { content_type: "text/xml", extension: ".xml", abbr: "XML", name: "XML Document" }.freeze,
77
+ { content_type: "text/xml", extension: ".xsd", abbr: "XSD", name: "XML Schema" }.freeze,
78
+ ].freeze
79
+
80
+ def self.find(content_type, extension = nil)
81
+ matching_types = TYPES.select { |type| type[:content_type] == content_type }
82
+
83
+ return UnsupportedContentType.new(content_type: content_type) if matching_types.empty?
84
+
85
+ extension_match = if matching_types.length > 1
86
+ matching_types.find { |type| type[:extension] == extension }
87
+ end
88
+
89
+ content_type = extension_match || matching_types.first
90
+
91
+ new(content_type)
92
+ end
93
+
94
+ def initialize(content_type)
95
+ @content_type = content_type[:content_type]
96
+ @name = content_type[:name]
97
+ @abbr = content_type[:abbr]
98
+ end
99
+ end
100
+
101
+ class UnsupportedContentType
102
+ attr_reader :content_type
103
+
104
+ def initialize(content_type:)
105
+ @content_type = content_type
106
+ end
107
+
108
+ def name; end
109
+
110
+ def abbr; end
111
+ end
112
+ end
113
+ end
114
+ end
@@ -1,3 +1,3 @@
1
1
  module GovukPublishingComponents
2
- VERSION = '16.13.0'.freeze
2
+ VERSION = '16.14.0'.freeze
3
3
  end
@@ -49,7 +49,7 @@
49
49
  "/"
50
50
  ],
51
51
  "_resolved": "git://github.com/alphagov/accessible-autocomplete.git#0c518b4fa79b9a95b544410858486ed9e6403c84",
52
- "_shasum": "1a5a047fd7e065ba5647099c5da51dc1f7f621f2",
52
+ "_shasum": "a6d2bc517641fa0b894674f7cfd965493cd1a094",
53
53
  "_shrinkwrap": null,
54
54
  "_spec": "accessible-autocomplete@git://github.com/alphagov/accessible-autocomplete.git#add-multiselect-support",
55
55
  "_where": "/var/lib/jenkins/workspace/ublishing_components_master-N4FWJIUY4CIFHKGZOAAEVVXODRY3YBORQOPIBBXWX72VUPSGJRRQ",
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: govuk_publishing_components
3
3
  version: !ruby/object:Gem::Version
4
- version: 16.13.0
4
+ version: 16.14.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: 2019-04-30 00:00:00.000000000 Z
11
+ date: 2019-05-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: govspeak
14
+ name: gds-api-adapters
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 5.0.3
19
+ version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 5.0.3
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: govuk_app_config
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -52,6 +52,34 @@ dependencies:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: kramdown
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: plek
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
55
83
  - !ruby/object:Gem::Dependency
56
84
  name: rails
57
85
  requirement: !ruby/object:Gem::Requirement
@@ -140,16 +168,16 @@ dependencies:
140
168
  name: gds-api-adapters
141
169
  requirement: !ruby/object:Gem::Requirement
142
170
  requirements:
143
- - - ">="
171
+ - - "~>"
144
172
  - !ruby/object:Gem::Version
145
- version: '0'
173
+ version: '59.1'
146
174
  type: :development
147
175
  prerelease: false
148
176
  version_requirements: !ruby/object:Gem::Requirement
149
177
  requirements:
150
- - - ">="
178
+ - - "~>"
151
179
  - !ruby/object:Gem::Version
152
- version: '0'
180
+ version: '59.1'
153
181
  - !ruby/object:Gem::Dependency
154
182
  name: govuk-lint
155
183
  requirement: !ruby/object:Gem::Requirement
@@ -340,6 +368,7 @@ files:
340
368
  - app/assets/stylesheets/govuk_publishing_components/_all_components_print.scss
341
369
  - app/assets/stylesheets/govuk_publishing_components/components/_accessible-autocomplete.scss
342
370
  - app/assets/stylesheets/govuk_publishing_components/components/_accordion.scss
371
+ - app/assets/stylesheets/govuk_publishing_components/components/_attachment-link.scss
343
372
  - app/assets/stylesheets/govuk_publishing_components/components/_back-link.scss
344
373
  - app/assets/stylesheets/govuk_publishing_components/components/_breadcrumbs.scss
345
374
  - app/assets/stylesheets/govuk_publishing_components/components/_button.scss
@@ -422,6 +451,7 @@ files:
422
451
  - app/assets/stylesheets/govuk_publishing_components/components/helpers/_brand-colours.scss
423
452
  - app/assets/stylesheets/govuk_publishing_components/components/helpers/_contents-list-helper.scss
424
453
  - app/assets/stylesheets/govuk_publishing_components/components/helpers/_govuk-frontend-settings.scss
454
+ - app/assets/stylesheets/govuk_publishing_components/components/helpers/_markdown-typography.scss
425
455
  - app/assets/stylesheets/govuk_publishing_components/components/helpers/_px-to-em.scss
426
456
  - app/assets/stylesheets/govuk_publishing_components/components/helpers/_variables.scss
427
457
  - app/assets/stylesheets/govuk_publishing_components/components/mixins/_back-arrow.scss
@@ -455,6 +485,7 @@ files:
455
485
  - app/views/govuk_publishing_components/components/_accessible_autocomplete.html.erb
456
486
  - app/views/govuk_publishing_components/components/_accordion.html.erb
457
487
  - app/views/govuk_publishing_components/components/_admin_analytics.html.erb
488
+ - app/views/govuk_publishing_components/components/_attachment_link.html.erb
458
489
  - app/views/govuk_publishing_components/components/_back_link.html.erb
459
490
  - app/views/govuk_publishing_components/components/_breadcrumbs.html.erb
460
491
  - app/views/govuk_publishing_components/components/_button.html.erb
@@ -521,6 +552,7 @@ files:
521
552
  - app/views/govuk_publishing_components/components/docs/accessible_autocomplete.yml
522
553
  - app/views/govuk_publishing_components/components/docs/accordion.yml
523
554
  - app/views/govuk_publishing_components/components/docs/admin_analytics.yml
555
+ - app/views/govuk_publishing_components/components/docs/attachment_link.yml
524
556
  - app/views/govuk_publishing_components/components/docs/back_link.yml
525
557
  - app/views/govuk_publishing_components/components/docs/breadcrumbs.yml
526
558
  - app/views/govuk_publishing_components/components/docs/button.yml
@@ -607,6 +639,7 @@ files:
607
639
  - lib/govuk_publishing_components/config.rb
608
640
  - lib/govuk_publishing_components/engine.rb
609
641
  - lib/govuk_publishing_components/minitest/component_guide_test.rb
642
+ - lib/govuk_publishing_components/presenters/attachment.rb
610
643
  - lib/govuk_publishing_components/presenters/breadcrumbs.rb
611
644
  - lib/govuk_publishing_components/presenters/button_helper.rb
612
645
  - lib/govuk_publishing_components/presenters/checkboxes_helper.rb
@@ -633,7 +666,6 @@ files:
633
666
  - lib/govuk_publishing_components/presenters/related_navigation_helper.rb
634
667
  - lib/govuk_publishing_components/presenters/schema_org.rb
635
668
  - lib/govuk_publishing_components/presenters/select.rb
636
- - lib/govuk_publishing_components/presenters/services.rb
637
669
  - lib/govuk_publishing_components/presenters/shared_helper.rb
638
670
  - lib/govuk_publishing_components/presenters/step_by_step_nav_helper.rb
639
671
  - lib/govuk_publishing_components/presenters/subscription_links_helper.rb
@@ -1,12 +0,0 @@
1
- require 'gds_api/rummager'
2
-
3
- module GovukPublishingComponents
4
- module Presenters
5
- # @private
6
- module Services
7
- def self.rummager
8
- @rummager ||= GdsApi::Rummager.new(Plek.find('search'))
9
- end
10
- end
11
- end
12
- end