govuk_publishing_components 9.6.0 → 9.7.0

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.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/govuk_publishing_components/components/radio.js +32 -0
  3. data/app/assets/stylesheets/govuk_publishing_components/_all_components.scss +1 -1
  4. data/app/assets/stylesheets/govuk_publishing_components/components/_back-link.scss +4 -31
  5. data/app/assets/stylesheets/govuk_publishing_components/components/_button.scss +13 -42
  6. data/app/assets/stylesheets/govuk_publishing_components/components/_input.scss +4 -32
  7. data/app/assets/stylesheets/govuk_publishing_components/components/_label.scss +4 -23
  8. data/app/assets/stylesheets/govuk_publishing_components/components/_layout-header.scss +0 -8
  9. data/app/assets/stylesheets/govuk_publishing_components/components/_radio.scss +5 -129
  10. data/app/assets/stylesheets/govuk_publishing_components/components/govspeak/_button.scss +5 -3
  11. data/app/views/govuk_publishing_components/components/_back_link.html.erb +7 -6
  12. data/app/views/govuk_publishing_components/components/_button.html.erb +2 -2
  13. data/app/views/govuk_publishing_components/components/_input.html.erb +32 -25
  14. data/app/views/govuk_publishing_components/components/_label.html.erb +13 -31
  15. data/app/views/govuk_publishing_components/components/_radio.html.erb +54 -38
  16. data/app/views/govuk_publishing_components/components/docs/radio.yml +14 -2
  17. data/lib/govuk_publishing_components/version.rb +1 -1
  18. data/node_modules/govuk-frontend/all.js +172 -172
  19. data/node_modules/govuk-frontend/components/checkboxes/README.md +92 -4
  20. data/node_modules/govuk-frontend/components/checkboxes/_checkboxes.scss +7 -1
  21. data/node_modules/govuk-frontend/components/checkboxes/checkboxes.js +356 -1
  22. data/node_modules/govuk-frontend/components/checkboxes/template.njk +15 -3
  23. data/node_modules/govuk-frontend/components/date-input/README.md +3 -3
  24. data/node_modules/govuk-frontend/components/file-upload/README.md +3 -3
  25. data/node_modules/govuk-frontend/components/header/_header.scss +5 -3
  26. data/node_modules/govuk-frontend/components/input/README.md +3 -3
  27. data/node_modules/govuk-frontend/components/phase-banner/README.md +1 -1
  28. data/node_modules/govuk-frontend/components/radios/README.md +176 -3
  29. data/node_modules/govuk-frontend/components/radios/_radios.scss +15 -1
  30. data/node_modules/govuk-frontend/components/radios/radios.js +356 -1
  31. data/node_modules/govuk-frontend/components/radios/template.njk +19 -3
  32. data/node_modules/govuk-frontend/components/select/README.md +3 -3
  33. data/node_modules/govuk-frontend/components/tabs/_tabs.scss +4 -4
  34. data/node_modules/govuk-frontend/components/tabs/tabs.js +1 -1
  35. data/node_modules/govuk-frontend/components/textarea/README.md +3 -3
  36. data/node_modules/govuk-frontend/package.json +18 -18
  37. data/node_modules/govuk-frontend/template.njk +4 -2
  38. data/node_modules/govuk-frontend/tools/_font-url.scss +1 -1
  39. data/node_modules/govuk-frontend/tools/_image-url.scss +1 -1
  40. metadata +3 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ee1bc2d4e6fb993c27eba2510c283cda497987294f93fc21f3a30e94f2deecf8
4
- data.tar.gz: 9f9cc5eb7519cd81ba336464e8a9f6f3b7dc3fb0c254d5d12d59e667201ed6d8
3
+ metadata.gz: 2f3131ba99a3b7dd9d31bf4334388ab00549d24e094139aa9ca894fe992bdbb1
4
+ data.tar.gz: 9649c4163ee5badbcb2ad66fe321293c106010068bad671db17a59b625075a22
5
5
  SHA512:
6
- metadata.gz: f7fd7e8f9617b31d253a820723d312b67cbd7d2c770c90f8e05c205463505e1155cf3a990c8e292e20d0fd58cdb1533506f49f31b0a50f4a0c68c51f612ba764
7
- data.tar.gz: 14141157d36c0985c423074c3e2d095bb1ca6c7d0c066b45417d201cc8e61a0f6ba5853ca44d6d60e486463b8a94e3420c85b8530a709c4e9e58525abd0afe8b
6
+ metadata.gz: f393badabcf4a976abc0fa696026351809a10c7158b6ea5146c6c105dcf1c2cc80e2c5c66717a06cd7dc5d83b6c8514619c1413fb3bb919cf70ff068b054b240
7
+ data.tar.gz: 45801c06bfda33cd98104c7031a308ff9459a522a8879c4cd2486f6f85244b1953b2c03648d110e4bcdef9e57802ca1b7c2e3ce0d99c6e3040d0fe462e48c752
@@ -0,0 +1,32 @@
1
+ // This component relies on JavaScript from GOV.UK Frontend
2
+ //= require components/radios/radios.js
3
+
4
+ window.GOVUK = window.GOVUK || {}
5
+ window.GOVUK.FrontendModules = window.GOVUK.FrontendModules || {};
6
+
7
+ (function (global, GOVUK) {
8
+ 'use strict'
9
+
10
+ /**
11
+ * TODO: Ideally this would be a NodeList.prototype.forEach polyfill
12
+ *
13
+ * See: https://github.com/imagitama/nodelist-foreach-polyfill
14
+ * but the polyfill doesn't work in IE8 and needs more investigation
15
+ */
16
+ function nodeListForEach (nodes, callback) {
17
+ if (window.NodeList.prototype.forEach) {
18
+ return nodes.forEach(callback)
19
+ }
20
+ for (var i = 0; i < nodes.length; i++) {
21
+ callback.call(window, nodes[i], i, nodes)
22
+ }
23
+ }
24
+
25
+ GOVUK.FrontendModules.Radios = window.GOVUKFrontend
26
+
27
+ var $radios = document.querySelectorAll('[data-module="radios"]')
28
+
29
+ nodeListForEach($radios, function ($radio) {
30
+ new GOVUK.FrontendModules.Radios($radio).init()
31
+ })
32
+ })(window, window.GOVUK)
@@ -6,7 +6,7 @@
6
6
  @import "grid_layout";
7
7
  @import "typography";
8
8
  @import "colours";
9
-
9
+ @import "components/helpers/variables";
10
10
  @import "components/helpers/brand-colours";
11
11
 
12
12
  @import "components/back-link";
@@ -1,33 +1,6 @@
1
- @import "helpers/variables";
1
+ // This component relies on styles from GOV.UK Frontend
2
2
 
3
- .gem-c-back-link {
4
- position: relative;
5
- display: inline-block;
6
- margin-top: $gem-spacing-scale-3;
7
- margin-bottom: $gem-spacing-scale-3;
8
- font-size: 16px;
9
- line-height: 1.25;
3
+ // Specify the functions used to resolve assets paths in SCSS
4
+ $govuk-font-url-function: "font-url";
10
5
 
11
- text-decoration: none;
12
- border-bottom: 1px solid currentColor;
13
-
14
- &:link,
15
- &:link:focus,
16
- &:visited,
17
- &:active {
18
- color: currentColor;
19
- }
20
-
21
- &:hover {
22
- color: $link-colour;
23
- }
24
-
25
- &::before {
26
- content: "";
27
- display: inline-block;
28
- margin-right: .3em;
29
- border-top: 0.3125em solid transparent;
30
- border-right: 0.375em solid currentColor;
31
- border-bottom: 0.3125em solid transparent;
32
- }
33
- }
6
+ @import "../../../../node_modules/govuk-frontend/components/back-link/back-link";
@@ -1,20 +1,18 @@
1
- @import "design-patterns/buttons";
2
- @import "mixins/media-down";
3
- @import "mixins/margins";
1
+ // This component relies on styles from GOV.UK Frontend
4
2
 
5
- %gem-c-button,
6
- .gem-c-button {
7
- @include button;
3
+ // Specify the functions used to resolve assets paths in SCSS
4
+ $govuk-image-url-function: "image-url";
5
+ $govuk-font-url-function: "font-url";
8
6
 
9
- @media(max-width: 425px) {
10
- box-sizing: border-box;
11
- width: 100%;
12
- text-align: center;
13
- }
7
+ @import "../../../../node_modules/govuk-frontend/components/button/button";
8
+
9
+ @import "mixins/margins";
14
10
 
15
- &:focus {
16
- outline: 3px solid $focus-colour;
17
- }
11
+ // Because govuk-frontend adds a responsive bottom margin by default for each component
12
+ // we reset it to zero so we can set it separately using `gem-c-button--bottom-margin`
13
+ // If we decide to use responsive margins consistently across components we can remove this
14
+ .gem-c-button {
15
+ margin-bottom: 0;
18
16
  }
19
17
 
20
18
  // this will be moved and extended into a model for general component spacing
@@ -24,35 +22,8 @@
24
22
  @include responsive-bottom-margin;
25
23
  }
26
24
 
27
- %gem-c-button--start,
28
- .gem-c-button--start {
29
- @include bold-24($line-height: (24 / 20));
30
- display: inline-block;
31
- padding: 0.6em 1.7em 0.45em 0.67em;
32
-
33
- @include media(tablet) {
34
- padding-top: 0.3em;
35
- padding-bottom: 0.15em;
36
- }
37
-
38
- background-image: image-url("govuk_publishing_components/icon-pointer.png");
39
- background-position: 100% 50%;
40
- background-repeat: no-repeat;
41
-
42
- @include media-down(mobile) {
43
- background-position: center right -.35em;
44
- }
45
-
46
- @include device-pixel-ratio() {
47
- background-image: image-url("govuk_publishing_components/icon-pointer-2x.png");
48
- background-size: 30px 19px;
49
- }
50
- }
51
-
52
- // scss-lint:disable SelectorFormat
53
25
  .gem-c-button__info-text {
54
26
  display: block;
55
- margin-top: .5em;
56
27
  max-width: 14em;
28
+ margin-top: .5em;
57
29
  }
58
- // scss-lint:enable SelectorFormat
@@ -1,34 +1,6 @@
1
- // scss-lint:disable QualifyingElement
2
- .gem-c-input,
1
+ // This component relies on styles from GOV.UK Frontend
3
2
 
4
- // Explicitly set the input type so that we have higher specificity than
5
- // https://github.com/alphagov/static/blob/79d29b6a4221874ead27e67d007704a6be166a57/app/assets/stylesheets/helpers/_buttons.scss#L91-L122
6
- // This can be removed once everything is using `core_layout`.
7
- input[type=text].gem-c-input {
8
- @include core-19;
3
+ // Specify the functions used to resolve assets paths in SCSS
4
+ $govuk-font-url-function: "font-url";
9
5
 
10
- box-sizing: border-box;
11
- width: 100%;
12
- height: 2.10526em;
13
-
14
- margin: 0; // Override unwanted global cascaded styles
15
- margin-bottom: 20px;
16
-
17
- padding: $gem-spacing-scale-1;
18
- // setting any background-color makes text invisible when changing colours to dark backgrounds in Firefox (https://bugzilla.mozilla.org/show_bug.cgi?id=1335476)
19
- // as background-color and color need to always be set together, color should not be set either
20
- border: $gem-border-width-form-element solid;
21
- border-radius: 0;
22
-
23
- // Disable inner shadow and remove rounded corners
24
- appearance: none;
25
-
26
- &.gem-c-input:focus {
27
- outline: $gem-focus-width solid $gem-focus-colour;
28
- }
29
-
30
- &.gem-c-input--error {
31
- border: $gem-border-width-error solid $gem-error-colour;
32
- }
33
- }
34
- // scss-lint:enable QualifyingElement
6
+ @import "../../../../node_modules/govuk-frontend/components/input/input";
@@ -1,25 +1,6 @@
1
- @import "helpers/variables";
1
+ // This component relies on styles from GOV.UK Frontend
2
2
 
3
- .gem-c-label {
4
- display: block;
5
- color: $gem-text-colour;
6
- @include core-19;
7
- }
3
+ // Specify the functions used to resolve assets paths in SCSS
4
+ $govuk-font-url-function: "font-url";
8
5
 
9
- .gem-c-label--bold {
10
- font-weight: 700;
11
- }
12
-
13
- // Hint text sits inside a label, to be read by AT
14
- .gem-c-label__hint {
15
- display: block;
16
- color: $gem-secondary-text-colour;
17
- font-weight: 400;
18
- }
19
-
20
- // TODO: Replace this with the error message component.
21
- .gem-c-label__error {
22
- font-weight: bold;
23
- color: $gem-error-colour;
24
- padding-top: 4px;
25
- }
6
+ @import "../../../../node_modules/govuk-frontend/components/label/label";
@@ -10,14 +10,6 @@
10
10
  border-bottom-color: govuk-colour("grey-1");
11
11
  }
12
12
 
13
- // Fix header component's reliance on markup whitespace
14
- // https://github.com/alphagov/govuk-frontend/pull/884/files
15
- //
16
- // Remove this fix after updating to GOV.UK Frontend 1.1.0
17
- .govuk-header__container {
18
- @include govuk-clearfix;
19
- }
20
-
21
13
  .govuk-header__logo {
22
14
  @include mq ($from: desktop) {
23
15
  float: left;
@@ -1,131 +1,7 @@
1
- @import "helpers/variables";
2
- @import "helpers/px-to-em";
1
+ // This component relies on styles from GOV.UK Frontend
3
2
 
4
- .gem-c-radio {
5
- display: block;
3
+ // Specify the functions used to resolve assets paths in SCSS
4
+ $govuk-image-url-function: "image-url";
5
+ $govuk-font-url-function: "font-url";
6
6
 
7
- position: relative;
8
-
9
- margin-bottom: $gem-spacing-scale-2;
10
- padding: 0 0 0 em(40px, 19px);
11
-
12
- clear: left;
13
-
14
- @include core-19;
15
- }
16
-
17
- .gem-c-radio:last-child,
18
- .gem-c-radio:last-of-type {
19
- margin-bottom: 0;
20
- }
21
-
22
- .gem-c-radio--inline {
23
- margin-right: $gem-spacing-scale-4;
24
- float: left;
25
- clear: none;
26
- }
27
-
28
- .gem-c-radio__input {
29
- font-size: inherit;
30
- position: absolute;
31
-
32
- z-index: 1;
33
- top: 0;
34
- left: 0;
35
-
36
- width: em(40px, 19px);
37
- height: em(40px, 19px);
38
-
39
- cursor: pointer;
40
-
41
- // IE8 doesn’t support pseudoelements, so we don’t want to hide native elements there. Double colons get ommited by IE8.
42
- @if ($is-ie == false) or ($ie-version == 9) {
43
- margin: 0;
44
- opacity: 0;
45
- }
46
- }
47
-
48
- .gem-c-radio__label {
49
- display: block;
50
- border: 2px solid transparent;
51
- }
52
-
53
- .gem-c-radio__label__text {
54
- cursor: pointer;
55
- // remove 300ms pause on mobile
56
- -ms-touch-action: manipulation;
57
- touch-action: manipulation;
58
-
59
- display: block;
60
- padding-top: em(8px, 19px);
61
- padding-bottom: em($gem-spacing-scale-1, 19px);
62
- }
63
-
64
- .gem-c-radio__label__text,
65
- .gem-c-radio__label__hint {
66
- padding-left: em($gem-spacing-scale-3, 19px);
67
- padding-right: em($gem-spacing-scale-3, 19px);
68
- }
69
-
70
- .gem-c-radio__input + .gem-c-radio__label::before {
71
- content: "";
72
- box-sizing: border-box;
73
- position: absolute;
74
- top: 0;
75
- left: 0;
76
-
77
- width: em(40px, 19px);
78
- height: em(40px, 19px);
79
-
80
- border: $gem-border-width-form-element solid;
81
- border-radius: 50%;
82
- background: transparent;
83
- }
84
-
85
- .gem-c-radio__input + .gem-c-radio__label::after {
86
- content: "";
87
-
88
- position: absolute;
89
- top: em($gem-spacing-scale-2, 19px);
90
- left: em($gem-spacing-scale-2, 19px);
91
-
92
- width: 0;
93
- height: 0;
94
-
95
- border: em($gem-spacing-scale-2, 19px) solid;
96
- border-radius: 50%;
97
- background: currentColor;
98
- opacity: 0;
99
- }
100
-
101
- // Focused state
102
- .gem-c-radio__input:focus + .gem-c-radio__label::before {
103
- box-shadow: 0 0 0 4px $gem-focus-colour;
104
- }
105
-
106
- // Selected state
107
- .gem-c-radio__input:checked + .gem-c-radio__label::after {
108
- opacity: 1;
109
- }
110
-
111
- // Disabled state
112
- .gem-c-radio__input:disabled,
113
- .gem-c-radio__input:disabled + .gem-c-radio__label__text {
114
- cursor: default;
115
- }
116
-
117
- .gem-c-radio__input:disabled + .gem-c-radio__label {
118
- opacity: .5;
119
- }
120
-
121
- // TODO: Can be replaced by spacing + typography helpers from GOV.UK Frontend
122
- .gem-c-radio--margin-bottom-0 {
123
- margin-bottom: $gem-spacing-scale-0 !important;
124
- }
125
-
126
- // TODO: Can be replaced by spacing + typography helpers from GOV.UK Frontend
127
- .gem-c-radio__block-text {
128
- display: block;
129
- @include core-19;
130
- margin-bottom: $gem-spacing-scale-3;
131
- }
7
+ @import "../../../../node_modules/govuk-frontend/components/radios/radios";
@@ -1,11 +1,13 @@
1
- @import "govuk_publishing_components/components/button";
1
+ @import "../../../../node_modules/govuk-frontend/components/button/button";
2
2
 
3
+ // scss-lint:disable PlaceholderInExtend
3
4
  .gem-c-govspeak {
4
5
  .button {
5
- @extend %gem-c-button;
6
+ @extend .govuk-button;
6
7
  }
7
8
 
8
9
  .button-start {
9
- @extend %gem-c-button--start;
10
+ @extend .govuk-button--start;
10
11
  }
11
12
  }
13
+ // scss-lint:enable PlaceholderInExtend
@@ -1,6 +1,7 @@
1
- <a
2
- class="gem-c-back-link"
3
- href="<%= href %>"
4
- >
5
- <%= t('components.back_link.back') %>
6
- </a>
1
+ <%= link_to t('components.back_link.back'),
2
+ href,
3
+ class: %w(
4
+ gem-c-back-link
5
+ govuk-back-link
6
+ )
7
+ %>
@@ -7,8 +7,8 @@
7
7
  margin_bottom ||= false
8
8
  data_attributes ||= false
9
9
  title ||= false
10
- css_classes = %w(gem-c-button)
11
- css_classes << "gem-c-button--start" if start
10
+ css_classes = %w(gem-c-button govuk-button)
11
+ css_classes << "govuk-button--start" if start
12
12
  css_classes << "gem-c-button--bottom-margin" if margin_bottom
13
13
  css_classes = css_classes.join(" ")
14
14
  html_options = { class: css_classes }
@@ -1,35 +1,42 @@
1
1
  <%
2
2
  id ||= "input-#{SecureRandom.hex(4)}"
3
3
  hint_id ||= "hint-#{SecureRandom.hex(4)}"
4
- value ||= false
4
+ value ||= nil
5
5
  error_message ||= false
6
6
  label ||= {}
7
7
  type ||= "text"
8
8
  describedby ||= false
9
- %>
10
-
11
- <%= render "govuk_publishing_components/components/label", {
12
- text: label[:text],
13
- html_for: id,
14
- hint_text: error_message,
15
- hint_text_classes: "gem-c-label__error",
16
- hint_id: hint_id,
17
- bold: error_message ? true : false,
18
- } %>
9
+ ariadescribedby ||= nil
10
+ css_classes = %w(gem-c-input govuk-input)
11
+ css_classes << "govuk-input--error" if error_message
12
+ hint_text_css_classes = "govuk-error-message" if error_message
19
13
 
20
- <input
21
- class="gem-c-input <%= "gem-c-input--error" if error_message %>"
22
- id="<%= id %>"
23
- name="<%= name %>"
24
- type="<%= type %>"
14
+ if error_message
15
+ ariadescribedby = hint_id
16
+ elsif describedby
17
+ ariadescribedby = describedby
18
+ end
19
+ %>
25
20
 
26
- <% if error_message %>
27
- aria-describedby="<%= hint_id %>"
28
- <% elsif describedby %>
29
- aria-describedby="<%= describedby %>"
30
- <% end %>
21
+ <%= content_tag :div, class: "govuk-form-group" do %>
22
+ <%= render "govuk_publishing_components/components/label", {
23
+ text: label[:text],
24
+ html_for: id,
25
+ hint_text: error_message,
26
+ hint_text_classes: hint_text_css_classes,
27
+ hint_id: hint_id,
28
+ bold: error_message ? true : false,
29
+ } %>
31
30
 
32
- <% if value %>
33
- value="<%= value %>"
34
- <% end %>
35
- >
31
+ <%= text_field_tag name,
32
+ value,
33
+ {
34
+ class: css_classes,
35
+ id: id,
36
+ type: type,
37
+ aria: {
38
+ describedby: ariadescribedby
39
+ }
40
+ }
41
+ %>
42
+ <% end %>