govuk_tech_docs 2.4.0 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of govuk_tech_docs might be problematic. Click here for more details.

@@ -52,48 +52,44 @@ $input-size: 40px;
52
52
  }
53
53
  }
54
54
 
55
- html.has-search-results-open {
56
- overflow: hidden;
57
- .app-pane__content {
58
- overflow: hidden;
59
- }
60
-
61
- .toc__close{
62
- display: none;
55
+ @include govuk-media-query($until: tablet) {
56
+ html.js.has-search-results-open:not(.toc-open) {
57
+ .toc {
58
+ display: block;
59
+ padding-bottom: 0;
60
+ }
61
+
62
+ .toc__close {
63
+ display: none;
64
+ }
65
+
66
+ .toc__list {
67
+ display: none;
68
+ }
63
69
  }
64
70
  }
71
+
65
72
  .search-results {
66
- display: none;
67
- &.is-open {
68
- display: block;
73
+ @include govuk-media-query(tablet) {
74
+ // Create basis for the search results caret (below)
75
+ position: relative;
76
+
77
+ @include govuk-font($size: 16);
78
+ padding-top: govuk-spacing(6);
69
79
  }
70
- }
71
80
 
72
- .search-results {
73
- position: absolute;
74
- top: 60px;
75
- left: 0;
76
- right: 0;
77
- bottom: 0;
78
- z-index: 600;
79
- overflow-x: scroll;
80
- -webkit-overflow-scrolling: touch;
81
- -ms-overflow-style: none;
82
- @include govuk-media-query(tablet) {
83
- padding: govuk-spacing(6);
84
- top: 0;
85
- // The width of the sidebar
86
- left: 330px;
87
- min-height: auto;
88
- }
81
+ a {
82
+ @include govuk-link-common;
83
+ @include govuk-link-style-no-visited-state;
84
+ }
89
85
 
90
- a {
91
- @include govuk-link-common;
92
- @include govuk-link-style-no-visited-state;
93
- }
86
+ ul {
87
+ list-style: none;
88
+ padding: 0;
89
+ margin: 0;
94
90
  }
91
+ }
95
92
  .search-results__inner {
96
- position: relative;
97
93
  background: govuk-colour("white");
98
94
  border-top: 1px solid govuk-colour("mid-grey");
99
95
  max-width: 40rem;
@@ -104,7 +100,7 @@ html.has-search-results-open {
104
100
  &::after {
105
101
  content: '';
106
102
  position: absolute;
107
- top: 10px;
103
+ top: 35px;
108
104
  left: -9px;
109
105
  width: 10px;
110
106
  height: 20px;
@@ -117,44 +113,6 @@ html.has-search-results-open {
117
113
  @include govuk-font($size: 27, $weight: bold);
118
114
  margin-bottom: govuk-spacing(6);
119
115
  }
120
- .search-results__close {
121
- @include govuk-font($size: 16);
122
- position: absolute;
123
- top: 18px;
124
- right: 20px;
125
- appearance: none;
126
- -webkit-appearance: none;
127
- background: none;
128
- border: 0;
129
- padding: 0;
130
- cursor: pointer;
131
-
132
- &:focus {
133
- @include govuk-focused-text;
134
- }
135
-
136
- &::after {
137
- content: '';
138
- display: inline-block;
139
- vertical-align: middle;
140
- padding-left: 8px;
141
- height: 18px;
142
- width: 18px;
143
- background: no-repeat url('/images/govuk-icn-close.png') center right;
144
- @include govuk-device-pixel-ratio {
145
- background-image: url('/images/govuk-icn-close@2x.png');
146
- }
147
- background-size: contain;
148
- }
149
- }
150
- .search-results__close-label {
151
- position: absolute;
152
- left: -9999em;
153
- top: auto;
154
- width: 1px;
155
- height: 1px;
156
- overflow: hidden;
157
- }
158
116
  .search-result {
159
117
  margin-bottom: govuk-spacing(6);
160
118
  }
@@ -162,4 +120,24 @@ html.has-search-results-open {
162
120
  background-color: transparent;
163
121
  color: inherit;
164
122
  font-weight: bold;
123
+
124
+ // In forced color mode some browsers will keep the background transparent
125
+ // but set the text colour black, making the highlighted text unreadable.
126
+ // The following blocks fix this by setting the text colour to be the same as
127
+ // other text in a way that forced color mode will respect.
128
+
129
+ @media screen and (-ms-high-contrast: active) {
130
+ // IE does not support `CanvasText`,
131
+ // and `currentColor` does not work with Blink
132
+ color: currentColor;
133
+ }
134
+
135
+ @media screen and (forced-colors: active) {
136
+ background-color: Canvas; // needed for Firefox
137
+ color: CanvasText;
138
+ }
139
+ }
140
+
141
+ .js .search-help__no-js {
142
+ display: none;
165
143
  }
@@ -11,10 +11,6 @@
11
11
  margin: 0 govuk-spacing(6) govuk-spacing(6);
12
12
  }
13
13
 
14
- .has-search-results-open & {
15
- visibility: hidden;
16
- }
17
-
18
14
  > h1 {
19
15
  @extend %govuk-heading-xl;
20
16
 
@@ -165,9 +165,6 @@
165
165
 
166
166
  .toc__list {
167
167
  margin-right: govuk-spacing(7);
168
- &.search-results-open {
169
- display: none;
170
- }
171
168
  }
172
169
 
173
170
  .toc__close {
@@ -8,14 +8,11 @@ module GovukTechDocs
8
8
  module TableOfContents
9
9
  module Helpers
10
10
  def single_page_table_of_contents(html, url: "", max_level: nil)
11
- headings = HeadingsBuilder.new(html, url).headings
12
-
13
- if headings.none? { |heading| heading.size == 1 }
14
- raise "No H1 tag found. You have to at least add one H1 heading to the page: " + url
15
- end
11
+ output = "<ul>\n"
12
+ output += list_items_from_headings(html, url: url, max_level: max_level)
13
+ output += "</ul>\n"
16
14
 
17
- tree = HeadingTreeBuilder.new(headings).tree
18
- HeadingTreeRenderer.new(tree, max_level: max_level).html
15
+ output
19
16
  end
20
17
 
21
18
  def multi_page_table_of_contents(resources, current_page, config, current_page_html = nil)
@@ -28,6 +25,17 @@ module GovukTechDocs
28
25
  render_page_tree(resources, current_page, config, current_page_html)
29
26
  end
30
27
 
28
+ def list_items_from_headings(html, url: "", max_level: nil)
29
+ headings = HeadingsBuilder.new(html, url).headings
30
+
31
+ if headings.none? { |heading| heading.size == 1 }
32
+ raise "No H1 tag found. You have to at least add one H1 heading to the page: " + url
33
+ end
34
+
35
+ tree = HeadingTreeBuilder.new(headings).tree
36
+ HeadingTreeRenderer.new(tree, max_level: max_level).html
37
+ end
38
+
31
39
  def render_page_tree(resources, current_page, config, current_page_html)
32
40
  # Sort by weight frontmatter
33
41
  resources = resources
@@ -69,7 +77,7 @@ module GovukTechDocs
69
77
  output += "</li>\n"
70
78
  else
71
79
  output +=
72
- single_page_table_of_contents(
80
+ list_items_from_headings(
73
81
  content,
74
82
  url: resource.url,
75
83
  max_level: config[:tech_docs][:max_toc_heading_level],
@@ -1,3 +1,3 @@
1
1
  module GovukTechDocs
2
- VERSION = "2.4.0".freeze
2
+ VERSION = "3.0.0".freeze
3
3
  end
@@ -113,10 +113,12 @@ module GovukTechDocs
113
113
  url: { index: false, store: true },
114
114
  }
115
115
 
116
- search.pipeline_remove = %w[stopWordFilter]
116
+ search.pipeline_remove = %w[stemmer stopWordFilter]
117
117
 
118
118
  search.tokenizer_separator = '/[\s\-/]+/'
119
119
  end
120
+ else
121
+ context.ignore "search/*"
120
122
  end
121
123
  end
122
124
  end
@@ -8,7 +8,6 @@
8
8
  <% end %>
9
9
  <% if config[:tech_docs][:show_govuk_logo] %>
10
10
  <span class="govuk-header__logotype">
11
- <!--[if gt IE 8]><!-->
12
11
  <svg
13
12
  aria-hidden="true"
14
13
  focusable="false"
@@ -23,10 +22,6 @@
23
22
  d="M25 30.2c3.5 1.5 7.7-.2 9.1-3.7 1.5-3.6-.2-7.8-3.9-9.2-3.6-1.4-7.6.3-9.1 3.9-1.4 3.5.3 7.5 3.9 9zM9 39.5c3.6 1.5 7.8-.2 9.2-3.7 1.5-3.6-.2-7.8-3.9-9.1-3.6-1.5-7.6.2-9.1 3.8-1.4 3.5.3 7.5 3.8 9zM4.4 57.2c3.5 1.5 7.7-.2 9.1-3.8 1.5-3.6-.2-7.7-3.9-9.1-3.5-1.5-7.6.3-9.1 3.8-1.4 3.5.3 7.6 3.9 9.1zm38.3-21.4c3.5 1.5 7.7-.2 9.1-3.8 1.5-3.6-.2-7.7-3.9-9.1-3.6-1.5-7.6.3-9.1 3.8-1.3 3.6.4 7.7 3.9 9.1zm64.4-5.6c-3.6 1.5-7.8-.2-9.1-3.7-1.5-3.6.2-7.8 3.8-9.2 3.6-1.4 7.7.3 9.2 3.9 1.3 3.5-.4 7.5-3.9 9zm15.9 9.3c-3.6 1.5-7.7-.2-9.1-3.7-1.5-3.6.2-7.8 3.7-9.1 3.6-1.5 7.7.2 9.2 3.8 1.5 3.5-.3 7.5-3.8 9zm4.7 17.7c-3.6 1.5-7.8-.2-9.2-3.8-1.5-3.6.2-7.7 3.9-9.1 3.6-1.5 7.7.3 9.2 3.8 1.3 3.5-.4 7.6-3.9 9.1zM89.3 35.8c-3.6 1.5-7.8-.2-9.2-3.8-1.4-3.6.2-7.7 3.9-9.1 3.6-1.5 7.7.3 9.2 3.8 1.4 3.6-.3 7.7-3.9 9.1zM69.7 17.7l8.9 4.7V9.3l-8.9 2.8c-.2-.3-.5-.6-.9-.9L72.4 0H59.6l3.5 11.2c-.3.3-.6.5-.9.9l-8.8-2.8v13.1l8.8-4.7c.3.3.6.7.9.9l-5 15.4v.1c-.2.8-.4 1.6-.4 2.4 0 4.1 3.1 7.5 7 8.1h.2c.3 0 .7.1 1 .1.4 0 .7 0 1-.1h.2c4-.6 7.1-4.1 7.1-8.1 0-.8-.1-1.7-.4-2.4V34l-5.1-15.4c.4-.2.7-.6 1-.9zM66 92.8c16.9 0 32.8 1.1 47.1 3.2 4-16.9 8.9-26.7 14-33.5l-9.6-3.4c1 4.9 1.1 7.2 0 10.2-1.5-1.4-3-4.3-4.2-8.7L108.6 76c2.8-2 5-3.2 7.5-3.3-4.4 9.4-10 11.9-13.6 11.2-4.3-.8-6.3-4.6-5.6-7.9 1-4.7 5.7-5.9 8-.5 4.3-8.7-3-11.4-7.6-8.8 7.1-7.2 7.9-13.5 2.1-21.1-8 6.1-8.1 12.3-4.5 20.8-4.7-5.4-12.1-2.5-9.5 6.2 3.4-5.2 7.9-2 7.2 3.1-.6 4.3-6.4 7.8-13.5 7.2-10.3-.9-10.9-8-11.2-13.8 2.5-.5 7.1 1.8 11 7.3L80.2 60c-4.1 4.4-8 5.3-12.3 5.4 1.4-4.4 8-11.6 8-11.6H55.5s6.4 7.2 7.9 11.6c-4.2-.1-8-1-12.3-5.4l1.4 16.4c3.9-5.5 8.5-7.7 10.9-7.3-.3 5.8-.9 12.8-11.1 13.8-7.2.6-12.9-2.9-13.5-7.2-.7-5 3.8-8.3 7.1-3.1 2.7-8.7-4.6-11.6-9.4-6.2 3.7-8.5 3.6-14.7-4.6-20.8-5.8 7.6-5 13.9 2.2 21.1-4.7-2.6-11.9.1-7.7 8.8 2.3-5.5 7.1-4.2 8.1.5.7 3.3-1.3 7.1-5.7 7.9-3.5.7-9-1.8-13.5-11.2 2.5.1 4.7 1.3 7.5 3.3l-4.7-15.4c-1.2 4.4-2.7 7.2-4.3 8.7-1.1-3-.9-5.3 0-10.2l-9.5 3.4c5 6.9 9.9 16.7 14 33.5 14.8-2.1 30.8-3.2 47.7-3.2z"
24
23
  ></path>
25
24
  </svg>
26
- <!--<![endif]-->
27
- <!--[if IE 8]>
28
- <img src="/assets/images/govuk-logotype-crown.png" class="govuk-header__logotype-crown-fallback-image" width="36" height="32">
29
- <![endif]-->
30
25
  <span class="govuk-header__logotype-text">
31
26
  GOV.UK
32
27
  </span>
@@ -13,12 +13,5 @@
13
13
  placeholder="Search">
14
14
  <button type="submit" class="search__button">Search</button>
15
15
  </form>
16
- <div id="search-results" class="search-results" aria-hidden="true" role="dialog" aria-labelledby="search-results-title">
17
- <div class="search-results__inner">
18
- <button class="search-results__close">Close<span class="search-results__close-label"> search results</span></button>
19
- <h2 id="search-results-title" class="search-results__title" aria-live="assertive" role="alert">Results</h2>
20
- <div class="search-results__content"></div>
21
- </div>
22
- </div>
23
16
  </div>
24
17
  <% end %>
@@ -4,8 +4,10 @@ wrap_layout :core do
4
4
 
5
5
  content_for(:toc_module, "in-page-navigation")
6
6
 
7
+ use_multipage_nav = current_page.data.fetch(:multipage_nav, config[:tech_docs][:multipage_nav])
8
+
7
9
  content_for :sidebar do
8
- if config[:tech_docs][:multipage_nav] %>
10
+ if use_multipage_nav %>
9
11
  <%= multi_page_table_of_contents(sitemap.resources, current_page, config, html) %>
10
12
  <% else %>
11
13
  <%= single_page_table_of_contents(html, max_level: config[:tech_docs][:max_toc_heading_level]) %>
@@ -0,0 +1,31 @@
1
+ ---
2
+ title: Search
3
+ index: false
4
+ prevent_indexing: true
5
+ hide_in_navigation: true
6
+ ---
7
+
8
+ <div id="search-help" class="search-help">
9
+ <%# strange id is to avoid clash with search input id #%>
10
+ <h1 id="how-to-search">Search</h1>
11
+
12
+ <p class="govuk-body search-help__no-js">
13
+ You need to turn on JavaScript in your browser to search this site. You can either:
14
+
15
+ <ul>
16
+ <li>turn on JavaScript in your browser</li>
17
+ <li>search this site using Google</li>
18
+ </ul>
19
+ </p>
20
+
21
+ <p class="govuk-body">
22
+ Enter a search term in the search box, then select the search button.
23
+ </p>
24
+ </div>
25
+
26
+ <div id="search-results" class="search-results" hidden aria-labelledby="search-results-title">
27
+ <div class="search-results__inner">
28
+ <h1 id="search-results-title" class="search-results__title" aria-live="assertive">Results</h1>
29
+ <div class="search-results__content"></div>
30
+ </div>
31
+ </div>
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: govuk_tech_docs
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.0
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Government Digital Service
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-07-28 00:00:00.000000000 Z
11
+ date: 2021-10-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: autoprefixer-rails
@@ -279,7 +279,6 @@ files:
279
279
  - ".ruby-version"
280
280
  - ".travis.yml"
281
281
  - CHANGELOG.md
282
- - CONTRIBUTING.md
283
282
  - Gemfile
284
283
  - LICENCE
285
284
  - README.md
@@ -309,6 +308,7 @@ files:
309
308
  - example/source/not-expired-page.html.md
310
309
  - example/source/pets.yml
311
310
  - example/source/prevent-index-page.html.md
311
+ - example/source/single-page-nav.html.md
312
312
  - example/source/stylesheets/print.css.scss
313
313
  - example/source/stylesheets/screen-old-ie.css.scss
314
314
  - example/source/stylesheets/screen.css.scss
@@ -387,6 +387,7 @@ files:
387
387
  - lib/source/layouts/_search.erb
388
388
  - lib/source/layouts/core.erb
389
389
  - lib/source/layouts/layout.erb
390
+ - lib/source/search/index.html.erb
390
391
  - lib/source/stylesheets/manifest.css
391
392
  - node_modules/govuk-frontend/govuk/_base.scss
392
393
  - node_modules/govuk-frontend/govuk/all-ie8.scss
data/CONTRIBUTING.md DELETED
@@ -1,12 +0,0 @@
1
- ## Contributing to this project
2
-
3
- Everybody who uses this project is encouraged to contribute to this project. If you're part of the [alphagov GitHub organisation](https://www.github.com/alphagov) you probably have write access to this repo. If you don't, ask a GitHub admin or #tech-docs-format on Slack.
4
-
5
- - Before adding your feature, [check the backlog to see if someone is already talking about it](https://github.com/alphagov/tech-docs-template/issues)
6
- - If you add a new option to `config/tech-docs.yml`, make sure you [document the new configuration option][configuration]
7
- - If you add a new option to the page frontmatter, make sure you [document the new frontmatter configuration](docs/frontmatter.md)
8
- - You can test your contribution using [unit tests](spec/govuk_tech_docs), [javascript tests](spec/javascripts) or [integration tests](spec/features)
9
- - If your change is relevant to the users of the gem, add something to [CHANGELOG](CHANGELOG.md). You don't have to do this if it's just refactoring. Make sure that you include any upgrade instructions.
10
-
11
- [configuration]: https://github.com/alphagov/tdt-documentation/blob/master/source/amend_project/configuration/index.html.md.erb
12
- [frontmatter]: https://github.com/alphagov/tdt-documentation/blob/master/source/frontmatter.html.md.erb