katalyst-govuk-formbuilder 1.10.1 → 1.11.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/builds/katalyst/govuk/formbuilder.css +20 -20
  3. data/lib/katalyst/govuk/formbuilder/engine.rb +1 -0
  4. data/lib/katalyst/govuk/formbuilder.rb +3 -0
  5. data/node_modules/govuk-frontend/dist/govuk/components/_index.scss +1 -0
  6. data/node_modules/govuk-frontend/dist/govuk/components/accordion/_index.scss +35 -31
  7. data/node_modules/govuk-frontend/dist/govuk/components/character-count/_index.scss +4 -4
  8. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/_index.scss +6 -1
  9. data/node_modules/govuk-frontend/dist/govuk/components/cookie-banner/_index.scss +16 -13
  10. data/node_modules/govuk-frontend/dist/govuk/components/date-input/_index.scss +1 -2
  11. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/_index.scss +4 -0
  12. data/node_modules/govuk-frontend/dist/govuk/components/fieldset/_index.scss +3 -5
  13. data/node_modules/govuk-frontend/dist/govuk/components/file-upload/_index.scss +8 -9
  14. data/node_modules/govuk-frontend/dist/govuk/components/header/_index.scss +8 -0
  15. data/node_modules/govuk-frontend/dist/govuk/components/input/_index.scss +7 -4
  16. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/_index.scss +3 -2
  17. data/node_modules/govuk-frontend/dist/govuk/components/pagination/_index.scss +24 -37
  18. data/node_modules/govuk-frontend/dist/govuk/components/panel/_index.scss +13 -9
  19. data/node_modules/govuk-frontend/dist/govuk/components/password-input/_index.scss +12 -9
  20. data/node_modules/govuk-frontend/dist/govuk/components/phase-banner/_index.scss +0 -8
  21. data/node_modules/govuk-frontend/dist/govuk/components/radios/_index.scss +7 -5
  22. data/node_modules/govuk-frontend/dist/govuk/components/select/_index.scss +5 -5
  23. data/node_modules/govuk-frontend/dist/govuk/components/service-navigation/_index.scss +162 -0
  24. data/node_modules/govuk-frontend/dist/govuk/components/service-navigation/_service-navigation.scss +4 -0
  25. data/node_modules/govuk-frontend/dist/govuk/components/skip-link/_index.scss +6 -4
  26. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/_index.scss +2 -1
  27. data/node_modules/govuk-frontend/dist/govuk/components/tag/_index.scss +11 -8
  28. data/node_modules/govuk-frontend/dist/govuk/components/task-list/_index.scss +12 -10
  29. data/node_modules/govuk-frontend/dist/govuk/components/textarea/_index.scss +3 -3
  30. data/node_modules/govuk-frontend/dist/govuk/components/warning-text/_index.scss +2 -2
  31. data/node_modules/govuk-frontend/dist/govuk/core/_govuk-frontend-properties.scss +1 -1
  32. data/node_modules/govuk-frontend/dist/govuk/helpers/_colour.scss +44 -8
  33. data/node_modules/govuk-frontend/dist/govuk/helpers/_grid.scss +1 -1
  34. data/node_modules/govuk-frontend/dist/govuk/helpers/_links.scss +2 -2
  35. data/node_modules/govuk-frontend/dist/govuk/helpers/_shape-arrow.scss +1 -1
  36. data/node_modules/govuk-frontend/dist/govuk/helpers/_typography.scss +17 -0
  37. data/node_modules/govuk-frontend/dist/govuk/helpers/_visually-hidden.scss +30 -62
  38. data/node_modules/govuk-frontend/dist/govuk/overrides/_typography.scss +5 -1
  39. data/node_modules/govuk-frontend/dist/govuk/settings/_colours-organisations.scss +235 -9
  40. metadata +5 -3
@@ -14,17 +14,21 @@
14
14
  @include govuk-media-query($until: tablet) {
15
15
  padding: govuk-spacing(if($govuk-new-typography-scale, 4, 3)) - $govuk-border-width;
16
16
 
17
- // This is an if-all-else-fails attempt to stop long words from overflowing the container
18
- // on very narrow viewports by forcing them to break and wrap instead. This
19
- // overflowing is more likely to happen when user increases text size on a mobile eg. using
20
- // iOS Safari text resize controls.
17
+ // This is an if-all-else-fails attempt to stop long words from
18
+ // overflowing the container on very narrow viewports by forcing them to
19
+ // break and wrap instead. This overflowing is more likely to happen when
20
+ // user increases text size on a mobile eg. using iOS Safari text resize
21
+ // controls.
21
22
  //
22
- // The overflowing is a particular problem with the panel component since it uses white
23
- // text: when the text overflows the container, it is invisible on the white (page)
24
- // background. When the text in our other components overflow, the user might have to scroll
25
- // horizontally to view it but the the text remains legible.
23
+ // The overflowing is a particular problem with the panel component since
24
+ // it uses white text: when the text overflows the container, it is
25
+ // invisible on the white (page) background. When the text in our other
26
+ // components overflow, the user might have to scroll horizontally to view
27
+ // it but the the text remains legible.
26
28
  overflow-wrap: break-word;
27
- word-wrap: break-word; // Support IE (autoprefixer doesn't add this as it's not a prefix)
29
+
30
+ // Support IE (autoprefixer doesn't add this as it's not a prefix)
31
+ word-wrap: break-word;
28
32
  }
29
33
  }
30
34
 
@@ -4,30 +4,33 @@
4
4
  @include govuk-exports("govuk/component/password-input") {
5
5
  .govuk-password-input__wrapper {
6
6
  // This element inherits styles from .govuk-input__wrapper, including:
7
- // - being display: block with contents in a stacked column below the mobile breakpoint
7
+ // - being display: block with contents in a stacked column below the mobile
8
+ // breakpoint
8
9
  // - being display: flex above the mobile breakpoint
9
10
 
10
11
  @include govuk-media-query($from: mobile) {
11
12
  flex-direction: row;
12
13
 
13
- // The default of `stretch` makes the toggle button appear taller than the input, due to using
14
- // box-shadow, which we don't particularly want in this situation
14
+ // The default of `stretch` makes the toggle button appear taller than the
15
+ // input, due to using box-shadow, which we don't particularly want in
16
+ // this situation
15
17
  align-items: flex-start;
16
18
  }
17
19
  }
18
20
 
19
21
  .govuk-password-input__input {
20
- // IE 11 and Microsoft Edge comes with its own password reveal function. We want to hide it,
21
- // so that there aren't two controls presented to the user that do the same thing but aren't in
22
- // sync with one another. This doesn't affect the function that allows Edge users to toggle
23
- // password visibility by pressing Alt+F8, which cannot be programmatically disabled.
22
+ // IE 11 and Microsoft Edge comes with its own password reveal function. We
23
+ // want to hide it, so that there aren't two controls presented to the user
24
+ // that do the same thing but aren't in sync with one another. This doesn't
25
+ // affect the function that allows Edge users to toggle password visibility
26
+ // by pressing Alt+F8, which cannot be programmatically disabled.
24
27
  &::-ms-reveal {
25
28
  display: none;
26
29
  }
27
30
  }
28
31
 
29
32
  .govuk-password-input__toggle {
30
- // Add margin to the top so that the button doesn't obscure the input's focus style
33
+ // Add top margin so the button doesn't obscure the input's focus style
31
34
  margin-top: govuk-spacing(1);
32
35
 
33
36
  // Remove default margin-bottom from button
@@ -39,7 +42,7 @@
39
42
  }
40
43
 
41
44
  @include govuk-media-query($from: mobile) {
42
- // Buttons are normally 100% width on this breakpoint, but we don't want that in this case
45
+ // Buttons are normally 100% wide on mobile, but we don't want that here
43
46
  width: auto;
44
47
  flex-shrink: 0;
45
48
  flex-basis: 5em;
@@ -25,14 +25,6 @@
25
25
  margin-right: govuk-spacing(2);
26
26
  }
27
27
  }
28
-
29
- // When forced colour mode is active, for example to provide high contrast,
30
- // the background colour of the tag is the same as the rest of the page. To ensure
31
- // that the tag is perceived as separate to the rest of the text in the phase banner,
32
- // it is made bold.
33
- @media screen and (forced-colors: active) {
34
- font-weight: bold;
35
- }
36
28
  }
37
29
 
38
30
  .govuk-phase-banner__text {
@@ -9,8 +9,9 @@
9
9
  $govuk-touch-target-size: ($govuk-radios-size + $govuk-touch-target-gutter);
10
10
  $govuk-small-radios-size: 24px;
11
11
  $govuk-radios-label-padding-left-right: govuk-spacing(3);
12
- // When the default focus width is used on a curved edge it looks visually smaller.
13
- // So for the circular radios we bump the default to make it look visually consistent.
12
+ // When the default focus width is used on a curved edge it looks visually
13
+ // smaller. So for the circular radios we bump the default to make it look
14
+ // visually consistent.
14
15
  $govuk-radios-focus-width: $govuk-focus-width + 1px;
15
16
 
16
17
  .govuk-radios__item {
@@ -173,10 +174,11 @@
173
174
  // =========================================================
174
175
 
175
176
  // The narrow border is used in the conditional reveals because the border has
176
- // to be an even number in order to be centred under the 40px checkbox or radio.
177
+ // to be an even number in order to be centred under the 40px checkbox radio.
177
178
  $conditional-border-width: $govuk-border-width-narrow;
178
- // Calculate the amount of padding needed to keep the border centered against the radios.
179
- $conditional-border-padding: ($govuk-radios-size / 2) - ($conditional-border-width / 2);
179
+ // Calculate the amount of padding needed to keep the border centered against
180
+ // the radios.
181
+ $conditional-border-padding: ($govuk-touch-target-size / 2) - ($conditional-border-width / 2);
180
182
  // Move the border centered with the radios
181
183
  $conditional-margin-left: $conditional-border-padding;
182
184
  // Move the contents of the conditional inline with the label
@@ -6,16 +6,16 @@
6
6
  .govuk-select {
7
7
  @include govuk-font($size: 19, $line-height: 1.25);
8
8
 
9
- box-sizing: border-box; // should this be global?
9
+ box-sizing: border-box;
10
10
 
11
11
  // This min-width was chosen because:
12
- // - it makes the Select noticeably wider than it is taller (which is what users expect)
12
+ // - it makes the Select wider than it is tall (which is what users expect)
13
13
  // - 11.5em matches the 'length-10' variant of the input component
14
14
  // - it fits comfortably on screens as narrow as 240px wide
15
15
  min-width: 11.5em;
16
16
  max-width: 100%;
17
17
  height: govuk-px-to-rem(40px);
18
- padding: govuk-spacing(1); // was 5px 4px 4px - size of it should be adjusted to match other form elements
18
+ padding: govuk-spacing(1);
19
19
  border: $govuk-border-width-form-element solid $govuk-input-border-colour;
20
20
 
21
21
  // Default user agent colours for selects can have low contrast,
@@ -28,8 +28,8 @@
28
28
  // Ensure outline appears outside of the element
29
29
  outline-offset: 0;
30
30
  // Double the border by adding its width again. Use `box-shadow` to do
31
- // this instead of changing `border-width` (which changes element size) and
32
- // since `outline` is already used for the yellow focus state.
31
+ // this instead of changing `border-width` (which changes element size)
32
+ // and since `outline` is already used for the yellow focus state.
33
33
  box-shadow: inset 0 0 0 $govuk-border-width-form-element;
34
34
  }
35
35
 
@@ -0,0 +1,162 @@
1
+ @include govuk-exports("govuk/component/service-navigation") {
2
+ $govuk-service-navigation-active-link-border-width: govuk-spacing(1);
3
+ $govuk-service-navigation-background: $govuk-canvas-background-colour;
4
+ $govuk-service-navigation-border-colour: $govuk-border-colour;
5
+
6
+ // We make the link colour a little darker than normal here so that it has
7
+ // better perceptual contrast with the navigation background.
8
+ $govuk-service-navigation-link-colour: govuk-shade($govuk-link-colour, 10%);
9
+
10
+ .govuk-service-navigation {
11
+ border-bottom: 1px solid $govuk-service-navigation-border-colour;
12
+ background-color: $govuk-service-navigation-background;
13
+ }
14
+
15
+ .govuk-service-navigation__container {
16
+ display: flex;
17
+ flex-direction: column;
18
+ align-items: start;
19
+
20
+ @include govuk-media-query($from: tablet) {
21
+ flex-direction: row;
22
+ flex-wrap: wrap;
23
+ }
24
+ }
25
+
26
+ // These styles are shared between nav items and the service name, they
27
+ // ensure that both of them remain vertically aligned with one another
28
+ .govuk-service-navigation__item,
29
+ .govuk-service-navigation__service-name {
30
+ position: relative;
31
+ margin: govuk-spacing(2) 0;
32
+ border: 0 solid $govuk-service-navigation-link-colour;
33
+
34
+ @include govuk-media-query($from: tablet) {
35
+ margin-top: 0;
36
+ margin-bottom: 0;
37
+ padding: govuk-spacing(4) 0;
38
+
39
+ &:not(:last-child) {
40
+ @include govuk-responsive-margin(6, $direction: right);
41
+ }
42
+ }
43
+ }
44
+
45
+ .govuk-service-navigation__item--active {
46
+ @include govuk-media-query($until: tablet) {
47
+ // Negative offset the left margin so we can place a current page indicator
48
+ // to the left without misaligning the list item text.
49
+ margin-left: ((govuk-spacing(2) + $govuk-service-navigation-active-link-border-width) * -1);
50
+ padding-left: govuk-spacing(2);
51
+ border-left-width: $govuk-service-navigation-active-link-border-width;
52
+ }
53
+
54
+ @include govuk-media-query($from: tablet) {
55
+ padding-bottom: govuk-spacing(4) - $govuk-service-navigation-active-link-border-width;
56
+ border-bottom-width: $govuk-service-navigation-active-link-border-width;
57
+ }
58
+ }
59
+
60
+ .govuk-service-navigation__link {
61
+ @include govuk-link-common;
62
+ @include govuk-link-style-no-underline;
63
+ @include govuk-link-style-no-visited-state;
64
+
65
+ &:not(:hover):not(:focus) {
66
+ // We set the colour here as we don't want to override the hover or
67
+ // focus colours
68
+ color: $govuk-service-navigation-link-colour;
69
+ }
70
+ }
71
+
72
+ //
73
+ // Service name specific code
74
+ //
75
+
76
+ .govuk-service-navigation__service-name {
77
+ @include govuk-font($size: 19, $weight: bold);
78
+ }
79
+
80
+ // Annoyingly this requires a compound selector in order to overcome the
81
+ // specificity of the other link colour override we're doing
82
+ .govuk-service-navigation__service-name .govuk-service-navigation__link {
83
+ @include govuk-link-style-text;
84
+ }
85
+
86
+ //
87
+ // Navigation list specific code
88
+ //
89
+
90
+ .govuk-service-navigation__toggle {
91
+ @include govuk-font($size: 19, $weight: bold);
92
+ display: inline-flex;
93
+ margin: 0 0 govuk-spacing(2);
94
+ padding: 0;
95
+ border: 0;
96
+ color: $govuk-service-navigation-link-colour;
97
+ background: none;
98
+ word-break: break-all;
99
+ cursor: pointer;
100
+ align-items: center;
101
+
102
+ &:focus {
103
+ @include govuk-focused-text;
104
+ }
105
+
106
+ &::after {
107
+ @include govuk-shape-arrow($direction: down, $base: 10px, $display: inline-block);
108
+ content: "";
109
+ margin-left: govuk-spacing(1);
110
+ }
111
+
112
+ &[aria-expanded="true"]::after {
113
+ @include govuk-shape-arrow($direction: up, $base: 10px, $display: inline-block);
114
+ }
115
+
116
+ // Ensure the button stays hidden if the hidden attribute is present
117
+ &[hidden] {
118
+ display: none;
119
+ }
120
+ }
121
+
122
+ .govuk-service-navigation__list {
123
+ @include govuk-font($size: 19);
124
+ margin: 0;
125
+ margin-bottom: govuk-spacing(3);
126
+ padding: 0;
127
+ list-style: none;
128
+
129
+ // Make the navigation list a flexbox. Doing so resolves a couple of
130
+ // accessibility problems caused by the list items being inline-blocks:
131
+ // - Removes the extra whitespace from between each list item that screen
132
+ // readers would pointlessly announce.
133
+ // - Fixes an NVDA issue in Firefox and Chrome <= 124 where it would read
134
+ // all of the links as a run-on sentence.
135
+ @include govuk-media-query($from: tablet) {
136
+ display: flex;
137
+ flex-wrap: wrap;
138
+ margin-bottom: 0;
139
+
140
+ // However... IE11 totally trips over flexbox and doesn't wrap anything,
141
+ // making all of the items into a single, horizontally scrolling row,
142
+ // which is no good. This CSS hack removes the flexbox definition for
143
+ // IE 10 & 11, reverting it to the flawed, but OK, non-flexbox version.
144
+ //
145
+ // CSS hack taken from https://stackoverflow.com/questions/11173106/apply-style-only-on-ie#answer-36448860
146
+ // which also includes an explanation of why this works
147
+ @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {
148
+ display: block;
149
+ }
150
+ }
151
+ }
152
+
153
+ // This is a <strong> element that is used as a fallback mechanism for
154
+ // visually indicating the current page in scenarios where CSS isn't
155
+ // available. We don't actually want it to be bold normally, so set it to
156
+ // inherit the parent font-weight.
157
+ .govuk-service-navigation__active-fallback {
158
+ font-weight: inherit;
159
+ }
160
+ }
161
+
162
+ /*# sourceMappingURL=_index.scss.map */
@@ -0,0 +1,4 @@
1
+ @import "../../base";
2
+ @import "./index";
3
+
4
+ /*# sourceMappingURL=_service-navigation.scss.map */
@@ -35,11 +35,13 @@
35
35
 
36
36
  .govuk-skip-link-focused-element {
37
37
  &:focus {
38
- // Remove the native visible focus indicator when the element is programmatically focused.
38
+ // Remove the native visible focus indicator when the element is
39
+ // programmatically focused.
39
40
  //
40
- // We set the focus on the linked element (this is usually the <main> element) when the skip
41
- // link is activated to improve screen reader announcements. However, we remove the visible
42
- // focus indicator from the linked element because the user cannot interact with it.
41
+ // We set the focus on the linked element (this is usually the <main>
42
+ // element) when the skip link is activated to improve screen reader
43
+ // announcements. However, we remove the visible focus indicator from the
44
+ // linked element because the user cannot interact with it.
43
45
  //
44
46
  // A related discussion: https://github.com/w3c/wcag/issues/1001
45
47
  outline: none;
@@ -179,7 +179,8 @@
179
179
  .govuk-summary-card__title-wrapper {
180
180
  padding: govuk-spacing(3);
181
181
 
182
- // Ensures the card header appears separate to the summary list in forced colours mode
182
+ // Ensures the card header appears separate to the summary list in forced
183
+ // colours mode
183
184
  border-bottom: 1px solid transparent;
184
185
  background-color: govuk-colour("light-grey");
185
186
 
@@ -12,11 +12,12 @@
12
12
  // where to break off of.
13
13
  max-width: $govuk-tag-max-width;
14
14
 
15
- // These negative margins make sure that the tag component doesn’t increase the
16
- // size of its container. Otherwise, for example, a table row containing a tag
17
- // will be taller than one containing plain text.
15
+ // These negative margins make sure that the tag component doesn’t increase
16
+ // the size of its container. Otherwise, for example, a table row containing
17
+ // a tag will be taller than one containing plain text.
18
18
  //
19
- // The negative margin added to the top and bottom matches the extra padding added.
19
+ // The negative margin added to the top and bottom matches the extra padding
20
+ // added.
20
21
  margin-top: -2px;
21
22
  margin-bottom: -3px;
22
23
 
@@ -30,11 +31,13 @@
30
31
  overflow-wrap: break-word;
31
32
 
32
33
  // When forced colour mode is active, for example to provide high contrast,
33
- // the background colour of the tag is the same as the rest of the page. To ensure
34
- // that the tag is perceived as separate from any surround text, it is made bold.
34
+ // the background colour of the tag is the same as the rest of the page. To
35
+ // ensure that the tag is perceived as separate from any surround text, it
36
+ // is made bold.
35
37
  //
36
- // Transparent outlines are no longer added, as they make the Tag look indistinguishable
37
- // from a button – but the tag is not interactive in the same way.
38
+ // Transparent outlines are no longer added, as they make the Tag look
39
+ // indistinguishable from a button – but the tag is not interactive in the
40
+ // same way.
38
41
  @media screen and (forced-colors: active) {
39
42
  font-weight: bold;
40
43
  }
@@ -11,11 +11,13 @@
11
11
  list-style-type: none;
12
12
  }
13
13
 
14
- // This uses table layout so that the task name and status always appear side-by-side, with the width of
15
- // each 'column' being flexible depending upon the length of the task names and statuses.
14
+ // This uses table layout so that the task name and status always appear
15
+ // side-by-side, with the width of each 'column' being flexible depending upon
16
+ // the length of the task names and statuses.
16
17
  //
17
- // The position is set to 'relative' so than an absolutely-positioned transparent element box
18
- // can be added within the link so that the whole row can be clickable.
18
+ // The position is set to 'relative' so than an absolutely-positioned
19
+ // transparent element box can be added within the link so that the whole row
20
+ // can be clickable.
19
21
  .govuk-task-list__item {
20
22
  display: table;
21
23
  position: relative;
@@ -30,9 +32,9 @@
30
32
  border-top: 1px solid $govuk-border-colour;
31
33
  }
32
34
 
33
- // This class is added to the <li> elements where the task name is a link.
34
- // The background hover colour is added to help indicate that the whole row is clickable, rather
35
- // than just the visible link text.
35
+ // This class is added to the <li> elements where the task name is a link. The
36
+ // background hover colour is added to help indicate that the whole row is
37
+ // clickable, rather than just the visible link text.
36
38
  .govuk-task-list__item--with-link:hover {
37
39
  background: $govuk-task-list-hover-colour;
38
40
  }
@@ -55,9 +57,9 @@
55
57
  color: $govuk-secondary-text-colour;
56
58
  }
57
59
 
58
- // This adds an empty transparent box covering the whole row, including the task status and
59
- // any hint text. Because this is generated within the link element, this allows the whole area
60
- // to be clickable.
60
+ // This adds an empty transparent box covering the whole row, including the
61
+ // task status and any hint text. Because this is generated within the link
62
+ // element, this allows the whole area to be clickable.
61
63
  .govuk-task-list__link::after {
62
64
  content: "";
63
65
  display: block;
@@ -6,7 +6,7 @@
6
6
  .govuk-textarea {
7
7
  @include govuk-font($size: 19, $line-height: 1.25);
8
8
 
9
- box-sizing: border-box; // should this be global?
9
+ box-sizing: border-box;
10
10
  display: block;
11
11
  width: 100%;
12
12
  min-height: 40px;
@@ -25,8 +25,8 @@
25
25
  // Ensure outline appears outside of the element
26
26
  outline-offset: 0;
27
27
  // Double the border by adding its width again. Use `box-shadow` to do
28
- // this instead of changing `border-width` (which changes element size) and
29
- // since `outline` is already used for the yellow focus state.
28
+ // this instead of changing `border-width` (which changes element size)
29
+ // and since `outline` is already used for the yellow focus state.
30
30
  box-shadow: inset 0 0 0 $govuk-border-width-form-element;
31
31
  }
32
32
 
@@ -25,8 +25,8 @@
25
25
  margin-top: -5px;
26
26
  }
27
27
 
28
- // When a user customises their colours the background colour will often be removed.
29
- // Adding a border to the component keeps it's shape as a circle.
28
+ // When a user customises their colours the background colour will often be
29
+ // removed. Adding a border to the component keeps it's shape as a circle.
30
30
  border: 3px solid $govuk-text-colour;
31
31
  border-radius: 50%;
32
32
 
@@ -1,7 +1,7 @@
1
1
  :root {
2
2
  // This variable is automatically overwritten during builds and releases.
3
3
  // It doesn't need to be updated manually.
4
- --govuk-frontend-version: "5.4.0";
4
+ --govuk-frontend-version: "5.6.0";
5
5
 
6
6
  // CSS custom property for each breakpoint
7
7
  @each $name, $value in $govuk-breakpoints {
@@ -42,25 +42,61 @@
42
42
  /// Get the colour for a government organisation
43
43
  ///
44
44
  /// @param {String} $organisation - Organisation name, lowercase, hyphenated
45
- /// @param {Boolean} $websafe [true] - By default a 'websafe' version of the
46
- /// colour will be returned which meets contrast requirements . If you want to
47
- /// use the non-websafe version you can set this to `false` but your should
48
- /// ensure that you still meets contrast requirements for accessibility - for
49
- /// example, do not use the non-websafe version for text.
45
+ /// @param {Boolean} $websafe - Deprecated. Use $contrast-safe instead.
46
+ /// @param {Boolean} $contrast-safe [true] - By default a version of the colour
47
+ /// will be returned which has a minimum 4.5:1 contrast ratio when used with
48
+ /// white, as per the WCAG 2.1 Level AA guidelines. If you want to use the
49
+ /// non-contrast safe version you can set this to `false` but your should
50
+ /// ensure that you still meets contrast requirements for accessibility -
51
+ /// for example, do not use the non-contrast safe version for text.
50
52
  ///
51
53
  /// @return {Colour} Representation of colour for organisation
52
54
  /// @throw if `$organisation` is not a known organisation
53
55
  /// @access public
54
56
 
55
- @function govuk-organisation-colour($organisation, $websafe: true) {
57
+ @function govuk-organisation-colour($organisation, $websafe: null, $contrast-safe: true) {
58
+ // Check if the $organisation exists in the aliases map. If so, change the
59
+ // value of $organisation to the aliased value.
60
+ @if map-has-key($_govuk_colours-organisations-aliases, $organisation) {
61
+ $organisation: map-get($_govuk_colours-organisations-aliases, $organisation);
62
+ }
63
+
64
+ // Check to see if the organisation exists
56
65
  @if not map-has-key($govuk-colours-organisations, $organisation) {
57
66
  @error "Unknown organisation `#{$organisation}`";
58
67
  }
59
68
 
69
+ // Output a warning if $websafe is set.
70
+ @if $websafe and not index($govuk-suppressed-warnings, "organisation-colour-websafe-param") {
71
+ @warn _warning-text("organisation-colour-websafe-param",
72
+ "The `$websafe` parameter of `govuk-organisation-colour` has been " +
73
+ "renamed to `$contrast-safe`. The old parameter name will be removed in " +
74
+ "the next major version."
75
+ );
76
+ }
77
+
60
78
  $org-colour: map-get($govuk-colours-organisations, $organisation);
61
79
 
62
- @if $websafe and map-has-key($org-colour, colour-websafe) {
63
- @return map-get($org-colour, colour-websafe);
80
+ @if map-has-key($org-colour, deprecation-message) and not index($govuk-suppressed-warnings, "organisation-colours") {
81
+ @warn _warning-text(
82
+ "organisation-colours",
83
+ map-get($org-colour, deprecation-message)
84
+ );
85
+ }
86
+
87
+ // If the $websafe parameter is being used (it has been explicitly set as true
88
+ // or false), assume the user hasn't updated to use $contrast-safe yet and map
89
+ // the old parameter's value onto the new parameter.
90
+ @if type-of($websafe) != "null" {
91
+ $contrast-safe: $websafe;
92
+ }
93
+
94
+ // Determine the contrast-safe key to use depending on whether it's the new
95
+ // palette or the legacy palette
96
+ $safe-key: if($govuk-new-organisation-colours, "contrast-safe", "colour-websafe");
97
+
98
+ @if $contrast-safe and map-has-key($org-colour, $safe-key) {
99
+ @return map-get($org-colour, $safe-key);
64
100
  } @else {
65
101
  @return map-get($org-colour, colour);
66
102
  }
@@ -37,7 +37,7 @@
37
37
  /// }
38
38
  ///
39
39
  /// @example scss - Customising the breakpoint where width percentage is applied
40
- /// .govuk-grid-column-one-half-at-desktop {
40
+ /// .govuk-grid-column-one-half-from-desktop {
41
41
  /// @include govuk-grid-column(one-half, $at: desktop);
42
42
  /// }
43
43
  ///
@@ -229,7 +229,7 @@
229
229
  }
230
230
 
231
231
  // Force a colour change on hover to work around a bug in Safari
232
- // https://bugs.webkit.org/show_bug.cgi?id=224483
232
+ // https://webkit.org/b/224483
233
233
  &:hover {
234
234
  @if type-of($govuk-text-colour) == color {
235
235
  color: rgba($govuk-text-colour, 0.99);
@@ -265,7 +265,7 @@
265
265
  }
266
266
 
267
267
  // Force a colour change on hover to work around a bug in Safari
268
- // https://bugs.webkit.org/show_bug.cgi?id=224483
268
+ // https://webkit.org/b/224483
269
269
  &:hover,
270
270
  &:active {
271
271
  color: rgba(govuk-colour("white"), 0.99);
@@ -54,7 +54,7 @@
54
54
  -webkit-clip-path: polygon(50% 0%, 0% 100%, 100% 100%);
55
55
  clip-path: polygon(50% 0%, 0% 100%, 100% 100%); // 3
56
56
 
57
- border-width: 0 $perpendicular $height $perpendicular;
57
+ border-width: 0 $perpendicular $height;
58
58
  border-bottom-color: inherit; // 2
59
59
  } @else if $direction == "right" {
60
60
  -webkit-clip-path: polygon(0% 0%, 100% 50%, 0% 100%);
@@ -79,6 +79,23 @@
79
79
  font-variant-numeric: tabular-nums if($important, !important, null);
80
80
  }
81
81
 
82
+ /// Word break helper
83
+ ///
84
+ /// Forcibly breaks long words that lack spaces, such as email addresses,
85
+ /// across multiple lines when they wouldn't otherwise fit.
86
+ ///
87
+ /// @param {Boolean} $important [false] - Whether to mark declarations as
88
+ /// `!important`. Generally used to create override classes.
89
+ /// @access public
90
+
91
+ @mixin govuk-text-break-word($important: false) {
92
+ // IE 11 and Edge 16–17 only support the non-standard `word-wrap` property
93
+ word-wrap: break-word if($important, !important, null);
94
+
95
+ // All other browsers support `overflow-wrap`
96
+ overflow-wrap: break-word if($important, !important, null);
97
+ }
98
+
82
99
  /// Convert line-heights specified in pixels into a relative value, unless
83
100
  /// they are already unit-less (and thus already treated as relative values)
84
101
  /// or the units do not match the units used for the font size.