katalyst-govuk-formbuilder 1.10.2 → 1.11.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 (38) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/builds/katalyst/govuk/formbuilder.css +20 -20
  3. data/node_modules/govuk-frontend/dist/govuk/components/_index.scss +1 -0
  4. data/node_modules/govuk-frontend/dist/govuk/components/accordion/_index.scss +35 -31
  5. data/node_modules/govuk-frontend/dist/govuk/components/character-count/_index.scss +4 -4
  6. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/_index.scss +6 -1
  7. data/node_modules/govuk-frontend/dist/govuk/components/cookie-banner/_index.scss +16 -13
  8. data/node_modules/govuk-frontend/dist/govuk/components/date-input/_index.scss +1 -2
  9. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/_index.scss +4 -0
  10. data/node_modules/govuk-frontend/dist/govuk/components/fieldset/_index.scss +3 -5
  11. data/node_modules/govuk-frontend/dist/govuk/components/file-upload/_index.scss +8 -9
  12. data/node_modules/govuk-frontend/dist/govuk/components/header/_index.scss +8 -0
  13. data/node_modules/govuk-frontend/dist/govuk/components/input/_index.scss +7 -4
  14. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/_index.scss +3 -2
  15. data/node_modules/govuk-frontend/dist/govuk/components/pagination/_index.scss +24 -37
  16. data/node_modules/govuk-frontend/dist/govuk/components/panel/_index.scss +13 -9
  17. data/node_modules/govuk-frontend/dist/govuk/components/password-input/_index.scss +12 -9
  18. data/node_modules/govuk-frontend/dist/govuk/components/phase-banner/_index.scss +0 -8
  19. data/node_modules/govuk-frontend/dist/govuk/components/radios/_index.scss +7 -5
  20. data/node_modules/govuk-frontend/dist/govuk/components/select/_index.scss +5 -5
  21. data/node_modules/govuk-frontend/dist/govuk/components/service-navigation/_index.scss +162 -0
  22. data/node_modules/govuk-frontend/dist/govuk/components/service-navigation/_service-navigation.scss +4 -0
  23. data/node_modules/govuk-frontend/dist/govuk/components/skip-link/_index.scss +6 -4
  24. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/_index.scss +2 -1
  25. data/node_modules/govuk-frontend/dist/govuk/components/tag/_index.scss +11 -8
  26. data/node_modules/govuk-frontend/dist/govuk/components/task-list/_index.scss +12 -10
  27. data/node_modules/govuk-frontend/dist/govuk/components/textarea/_index.scss +3 -3
  28. data/node_modules/govuk-frontend/dist/govuk/components/warning-text/_index.scss +2 -2
  29. data/node_modules/govuk-frontend/dist/govuk/core/_govuk-frontend-properties.scss +1 -1
  30. data/node_modules/govuk-frontend/dist/govuk/helpers/_colour.scss +44 -8
  31. data/node_modules/govuk-frontend/dist/govuk/helpers/_grid.scss +1 -1
  32. data/node_modules/govuk-frontend/dist/govuk/helpers/_links.scss +2 -2
  33. data/node_modules/govuk-frontend/dist/govuk/helpers/_shape-arrow.scss +1 -1
  34. data/node_modules/govuk-frontend/dist/govuk/helpers/_typography.scss +17 -0
  35. data/node_modules/govuk-frontend/dist/govuk/helpers/_visually-hidden.scss +30 -62
  36. data/node_modules/govuk-frontend/dist/govuk/overrides/_typography.scss +5 -1
  37. data/node_modules/govuk-frontend/dist/govuk/settings/_colours-organisations.scss +235 -9
  38. metadata +5 -3
@@ -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.