govuk_publishing_components 9.6.0 → 9.7.0

Sign up to get free protection for your applications and to get access to all the features.
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 %>