govuk_publishing_components 49.1.0 → 50.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/stylesheets/govuk_publishing_components/components/_add-another.scss +8 -6
- data/app/assets/stylesheets/govuk_publishing_components/components/_textarea.scss +5 -1
- data/app/assets/stylesheets/govuk_publishing_components/components/govspeak/_warning-callout.scss +9 -15
- data/app/models/govuk_publishing_components/component_wrapper_helper_options.rb +1 -1
- data/app/views/govuk_publishing_components/components/_button.html.erb +0 -3
- data/app/views/govuk_publishing_components/components/_character_count.html.erb +6 -5
- data/app/views/govuk_publishing_components/components/_contextual_footer.html.erb +9 -4
- data/app/views/govuk_publishing_components/components/_inset_text.html.erb +0 -6
- data/app/views/govuk_publishing_components/components/_print_link.html.erb +14 -22
- data/app/views/govuk_publishing_components/components/_search.html.erb +0 -1
- data/app/views/govuk_publishing_components/components/_single_page_notification_button.html.erb +8 -2
- data/app/views/govuk_publishing_components/components/_textarea.html.erb +11 -14
- data/app/views/govuk_publishing_components/components/docs/contextual_footer.yml +1 -0
- data/app/views/govuk_publishing_components/components/docs/inset_text.yml +0 -6
- data/app/views/govuk_publishing_components/components/docs/print_link.yml +4 -8
- data/app/views/govuk_publishing_components/components/docs/search.yml +3 -2
- data/app/views/govuk_publishing_components/components/docs/search_with_autocomplete.yml +1 -0
- data/app/views/govuk_publishing_components/components/docs/textarea.yml +3 -2
- data/config/locales/ar.yml +1 -1
- data/config/locales/ru.yml +1 -1
- data/config/locales/zh.yml +2 -2
- data/lib/govuk_publishing_components/presenters/button_helper.rb +7 -1
- data/lib/govuk_publishing_components/presenters/single_page_notification_button_helper.rb +1 -13
- data/lib/govuk_publishing_components/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: acbc54b26a0b9ba3956697b9bb7cbf49a0b70dbf237170ad7f0efd8947457966
|
4
|
+
data.tar.gz: e13dc0ed3b7545f84d2c584b8420f04b24728a7ccaadbcf05b7242f30d8bc5aa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d515d37ebca58a7f1916894985b0a1b89d604717f566a92832a4f33f0a2af2728704e9b836e32eceb0b74fa2795cbaccbc2f18fa0085a1b56b0c4ea148541ea7
|
7
|
+
data.tar.gz: d053ad367613bff67475fecb2cebbd00e2317df106a2dce032b2c266a96e3e3bd297d5fdc7c919397f3121aa761fbb75087db45be81d6803b73001fa65a259b7
|
@@ -2,11 +2,13 @@
|
|
2
2
|
@import "govuk/components/button/button";
|
3
3
|
@import "govuk/components/fieldset/fieldset";
|
4
4
|
|
5
|
-
.gem-c-add-
|
6
|
-
|
7
|
-
|
8
|
-
|
5
|
+
.gem-c-add-another {
|
6
|
+
.gem-c-add-another__remove-button {
|
7
|
+
margin-top: govuk-spacing(6);
|
8
|
+
margin-bottom: 0;
|
9
|
+
}
|
9
10
|
|
10
|
-
.js-add-another__remove-button--hidden {
|
11
|
-
|
11
|
+
.js-add-another__remove-button--hidden {
|
12
|
+
display: none;
|
13
|
+
}
|
12
14
|
}
|
data/app/assets/stylesheets/govuk_publishing_components/components/govspeak/_warning-callout.scss
CHANGED
@@ -8,29 +8,23 @@
|
|
8
8
|
|
9
9
|
.govspeak, // Legacy class name that's still used in some content items - needs to be kept until `.govspeak` is removed from the content items.
|
10
10
|
.gem-c-govspeak {
|
11
|
+
@import "govuk/components/warning-text/warning-text";
|
12
|
+
|
11
13
|
.help-notice {
|
12
14
|
$icon-size: 35px;
|
13
|
-
$
|
14
|
-
$line-height-tablet: 25px;
|
15
|
+
$icon-spacing: 10px;
|
15
16
|
|
16
17
|
margin: 2em 0;
|
18
|
+
padding-left: calc($icon-size + $icon-spacing);
|
19
|
+
position: relative;
|
17
20
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
min-height: $icon-size;
|
23
|
-
padding-left: $icon-size;
|
24
|
-
|
25
|
-
// Center the icon around the baseline
|
26
|
-
padding-top: calc(($icon-size - $line-height-mobile) / 2);
|
27
|
-
|
28
|
-
@include govuk-media-query($from: tablet) {
|
29
|
-
padding-top: calc(($icon-size - $line-height-tablet) / 2);
|
21
|
+
&::before {
|
22
|
+
content: "!";
|
23
|
+
@include govuk-typography-weight-bold($important: false);
|
24
|
+
@extend .govuk-warning-text__icon; // stylelint-disable-line scss/at-extend-no-missing-placeholder
|
30
25
|
}
|
31
26
|
|
32
27
|
p {
|
33
|
-
margin-left: 1em;
|
34
28
|
@include govuk-font($size: 19, $weight: bold);
|
35
29
|
}
|
36
30
|
}
|
@@ -8,7 +8,7 @@ This component uses the component wrapper helper. It accepts the following optio
|
|
8
8
|
- `data_attributes` - accepts a hash of data attributes
|
9
9
|
- `aria` - accepts a hash of aria attributes
|
10
10
|
- `classes` - accepts a space separated string of classes, these should not be used for styling and must be prefixed with `js-`
|
11
|
-
- `margin_bottom` - accepts a number from `0` to `9` (`0px` to `60px`) using the [GOV.UK Frontend spacing scale](https://design-system.service.gov.uk/styles/spacing/#the-responsive-spacing-scale)
|
11
|
+
- `margin_bottom` - accepts a number from `0` to `9` (`0px` to `60px`) using the [GOV.UK Frontend spacing scale](https://design-system.service.gov.uk/styles/spacing/#the-responsive-spacing-scale)
|
12
12
|
- `role` - accepts a space separated string of roles
|
13
13
|
- `lang` - accepts a language attribute value
|
14
14
|
- `open` - accepts an open attribute value (true or false)
|
@@ -3,11 +3,8 @@
|
|
3
3
|
disable_ga4 ||= false
|
4
4
|
|
5
5
|
# button_helper.css_classes generates "gem-c-button"
|
6
|
-
shared_helper = GovukPublishingComponents::Presenters::SharedHelper.new(local_assigns)
|
7
|
-
local_assigns[:classes] = shared_helper.classes
|
8
6
|
button = GovukPublishingComponents::Presenters::ButtonHelper.new(local_assigns)
|
9
7
|
%>
|
10
|
-
|
11
8
|
<% start_button_text = capture do %>
|
12
9
|
<span>
|
13
10
|
<%= button.text %>
|
@@ -1,9 +1,14 @@
|
|
1
1
|
<%
|
2
|
+
add_gem_component_stylesheet("error-message")
|
3
|
+
add_gem_component_stylesheet("character-count")
|
4
|
+
|
2
5
|
id ||= "character-count-#{SecureRandom.hex(4)}"
|
3
6
|
maxlength ||= nil
|
4
7
|
maxwords ||= nil
|
5
8
|
threshold ||= nil
|
6
9
|
textarea ||= {}
|
10
|
+
|
11
|
+
textarea[:textarea_id] = id
|
7
12
|
%>
|
8
13
|
<% if maxlength || maxwords %>
|
9
14
|
<%= content_tag :div,
|
@@ -15,14 +20,10 @@
|
|
15
20
|
threshold: threshold
|
16
21
|
} do %>
|
17
22
|
|
18
|
-
<%= render "govuk_publishing_components/components/textarea", {
|
23
|
+
<%= render "govuk_publishing_components/components/textarea", { textarea_id: id, character_count: true, margin_bottom: 1 }.merge(textarea.symbolize_keys) %>
|
19
24
|
|
20
25
|
<div id="<%= id %>-info" class="govuk-hint govuk-character-count__message">
|
21
26
|
<%= t("components.character_count.body", number: maxlength || maxwords, type: maxwords ? t("components.character_count.type.words") : t("components.character_count.type.characters")) %>
|
22
27
|
</div>
|
23
28
|
<% end %>
|
24
29
|
<% end %>
|
25
|
-
<%
|
26
|
-
add_gem_component_stylesheet("error-message")
|
27
|
-
add_gem_component_stylesheet("character-count")
|
28
|
-
%>
|
@@ -1,12 +1,17 @@
|
|
1
|
-
<%
|
2
|
-
|
1
|
+
<%
|
2
|
+
navigation = GovukPublishingComponents::Presenters::ContextualNavigation.new(content_item, request)
|
3
|
+
disable_ga4 ||= false
|
4
|
+
|
5
|
+
component_helper = GovukPublishingComponents::Presenters::ComponentWrapperHelper.new(local_assigns)
|
6
|
+
component_helper.add_class("gem-c-contextual-footer govuk-!-display-none-print")
|
7
|
+
%>
|
3
8
|
|
4
9
|
<% unless navigation.content_tagged_to_current_step_by_step? %>
|
5
|
-
|
10
|
+
<%= tag.div(**component_helper.all_attributes) do %>
|
6
11
|
<%# Rendering related navigation because no step by step list %>
|
7
12
|
<%= render 'govuk_publishing_components/components/related_navigation',
|
8
13
|
content_item: content_item,
|
9
14
|
disable_ga4: disable_ga4,
|
10
15
|
context: :footer %>
|
11
|
-
|
16
|
+
<% end %>
|
12
17
|
<% end %>
|
@@ -2,16 +2,10 @@
|
|
2
2
|
add_gem_component_stylesheet("inset-text")
|
3
3
|
|
4
4
|
id ||= "inset-text-#{SecureRandom.hex(4)}"
|
5
|
-
margin_top ||= 6
|
6
5
|
local_assigns[:margin_bottom] ||= 6
|
7
6
|
|
8
|
-
shared_helper = GovukPublishingComponents::Presenters::SharedHelper.new({
|
9
|
-
margin_top: margin_top,
|
10
|
-
})
|
11
|
-
|
12
7
|
component_helper = GovukPublishingComponents::Presenters::ComponentWrapperHelper.new(local_assigns)
|
13
8
|
component_helper.add_class("gem-c-inset-text govuk-inset-text gem-c-force-print-link-styles-within")
|
14
|
-
component_helper.add_class(shared_helper.get_margin_top)
|
15
9
|
component_helper.set_id(id)
|
16
10
|
%>
|
17
11
|
<%= tag.div(**component_helper.all_attributes) do %>
|
@@ -3,41 +3,33 @@
|
|
3
3
|
|
4
4
|
text ||= t('components.print_link.text')
|
5
5
|
href ||= nil
|
6
|
-
|
6
|
+
child_data_attributes ||= {}
|
7
7
|
require_js ||= href.nil?
|
8
|
-
|
9
|
-
margin_bottom ||= 3
|
8
|
+
local_assigns[:margin_bottom] ||= 3
|
10
9
|
|
11
|
-
((
|
10
|
+
((child_data_attributes[:module] ||= "") << " " << (require_js ? "print-link" : "button")).strip!
|
12
11
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
})
|
12
|
+
child_classes = %w[govuk-link]
|
13
|
+
child_classes << "govuk-body-s gem-c-print-link__button" if href.nil?
|
14
|
+
child_classes << "gem-c-print-link__link govuk-link--no-visited-state" if href.present?
|
17
15
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
wrapper_classes << shared_helper.get_margin_bottom
|
22
|
-
|
23
|
-
classes = %w[govuk-link]
|
24
|
-
classes << "govuk-body-s gem-c-print-link__button" if href.nil?
|
25
|
-
classes << "gem-c-print-link__link govuk-link--no-visited-state" if href.present?
|
16
|
+
component_helper = GovukPublishingComponents::Presenters::ComponentWrapperHelper.new(local_assigns)
|
17
|
+
component_helper.add_class("gem-c-print-link govuk-!-display-none-print")
|
18
|
+
component_helper.add_class("gem-c-print-link--show-without-js") unless require_js
|
26
19
|
%>
|
27
|
-
|
28
|
-
<%= tag.div class: wrapper_classes do %>
|
20
|
+
<%= tag.div(**component_helper.all_attributes) do %>
|
29
21
|
<% if require_js %>
|
30
22
|
<%= content_tag(:button, text, {
|
31
|
-
class:
|
32
|
-
data:
|
23
|
+
class: child_classes,
|
24
|
+
data: child_data_attributes
|
33
25
|
}) %>
|
34
26
|
<% else %>
|
35
27
|
<%= link_to(
|
36
28
|
text,
|
37
29
|
href,
|
38
|
-
class:
|
30
|
+
class: child_classes,
|
39
31
|
rel: "alternate",
|
40
|
-
data:
|
32
|
+
data: child_data_attributes,
|
41
33
|
role: "button"
|
42
34
|
) %>
|
43
35
|
<% end %>
|
@@ -22,7 +22,6 @@
|
|
22
22
|
component_helper = GovukPublishingComponents::Presenters::ComponentWrapperHelper.new(local_assigns)
|
23
23
|
component_helper.add_data_attribute({ module: "gem-toggle-input-class-on-focus" })
|
24
24
|
component_helper.add_class("gem-c-search govuk-!-display-none-print")
|
25
|
-
component_helper.add_class(shared_helper.get_margin_top)
|
26
25
|
component_helper.add_class("gem-c-search--large") if size == "large"
|
27
26
|
component_helper.add_class("gem-c-search--large-on-mobile") if size == "large-mobile"
|
28
27
|
component_helper.add_class("gem-c-search--homepage") if homepage
|
data/app/views/govuk_publishing_components/components/_single_page_notification_button.html.erb
CHANGED
@@ -2,10 +2,16 @@
|
|
2
2
|
add_gem_component_stylesheet("single-page-notification-button")
|
3
3
|
|
4
4
|
local_assigns[:margin_bottom] ||= 3
|
5
|
+
js_enhancement ||= false
|
5
6
|
|
6
7
|
spnb_helper = GovukPublishingComponents::Presenters::SinglePageNotificationButtonHelper.new(local_assigns)
|
7
|
-
shared_helper = GovukPublishingComponents::Presenters::SharedHelper.new(local_assigns)
|
8
8
|
component_helper = GovukPublishingComponents::Presenters::ComponentWrapperHelper.new(local_assigns)
|
9
|
+
component_helper.add_class("gem-c-single-page-notification-button")
|
10
|
+
component_helper.add_class("js-personalisation-enhancement") if local_assigns[:js_enhancement]
|
11
|
+
component_helper.add_data_attribute({ module: "single-page-notification-button" }) if js_enhancement
|
12
|
+
component_helper.add_data_attribute({ button_location: spnb_helper.button_location })
|
13
|
+
component_helper.add_data_attribute({ button_text_subscribe: spnb_helper.button_text_subscribe })
|
14
|
+
component_helper.add_data_attribute({ button_text_unsubscribe: spnb_helper.button_text_unsubscribe })
|
9
15
|
|
10
16
|
ga4_data_attributes = ga4_data_attributes ||= nil
|
11
17
|
ga4_link_data_attributes = ga4_data_attributes[:ga4_link] if ga4_data_attributes
|
@@ -18,7 +24,7 @@
|
|
18
24
|
<svg class="gem-c-single-page-notification-button__icon" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" height="18" width="18" viewBox="0 0 459.334 459.334"><path fill="currentColor" d="M177.216 404.514c-.001.12-.009.239-.009.359 0 30.078 24.383 54.461 54.461 54.461s54.461-24.383 54.461-54.461c0-.12-.008-.239-.009-.359H175.216zM403.549 336.438l-49.015-72.002v-89.83c0-60.581-43.144-111.079-100.381-122.459V24.485C254.152 10.963 243.19 0 229.667 0s-24.485 10.963-24.485 24.485v27.663c-57.237 11.381-100.381 61.879-100.381 122.459v89.83l-49.015 72.002a24.76 24.76 0 0 0 20.468 38.693H383.08a24.761 24.761 0 0 0 20.469-38.694z"/></svg><span class="gem-c-single-page-notication-button__text"><%= spnb_helper.button_text %></span>
|
19
25
|
<% end %>
|
20
26
|
<%= tag.div(**component_helper.all_attributes) do %>
|
21
|
-
<%= tag.form
|
27
|
+
<%= tag.form action: spnb_helper.form_action, method: "POST" do %>
|
22
28
|
<input type="hidden" name="base_path" value="<%= spnb_helper.base_path %>">
|
23
29
|
<% if spnb_helper.skip_the_gov_uk_account? %>
|
24
30
|
<input type="hidden" name="<%= spnb_helper.skip_account_param %>" value="true">
|
@@ -1,7 +1,7 @@
|
|
1
1
|
<%
|
2
2
|
add_gem_component_stylesheet("textarea")
|
3
3
|
|
4
|
-
|
4
|
+
textarea_id ||= "textarea-#{SecureRandom.hex(4)}"
|
5
5
|
value ||= nil
|
6
6
|
rows ||= 5
|
7
7
|
describedby ||= nil
|
@@ -11,7 +11,6 @@
|
|
11
11
|
label ||= nil
|
12
12
|
hint ||= nil
|
13
13
|
local_assigns[:margin_bottom] ||= 6
|
14
|
-
local_assigns[:margin_bottom] = 6 if local_assigns[:margin_bottom] > 9
|
15
14
|
error_message ||= nil
|
16
15
|
error_items ||= []
|
17
16
|
character_count ||= nil
|
@@ -22,14 +21,13 @@
|
|
22
21
|
right_to_left ||= false
|
23
22
|
right_to_left_help = right_to_left_help.nil? ? right_to_left : right_to_left_help
|
24
23
|
|
25
|
-
|
24
|
+
component_helper = GovukPublishingComponents::Presenters::ComponentWrapperHelper.new(local_assigns)
|
25
|
+
component_helper.add_class("gem-c-textarea govuk-form-group")
|
26
|
+
component_helper.add_class("govuk-form-group--error") if has_error
|
26
27
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
form_group_css_classes = %w(gem-c-textarea govuk-form-group)
|
31
|
-
form_group_css_classes << "govuk-form-group--error" if has_error
|
32
|
-
form_group_css_classes << shared_helper.get_margin_bottom
|
28
|
+
textarea_classes = %w(govuk-textarea)
|
29
|
+
textarea_classes << "govuk-js-character-count" if character_count
|
30
|
+
textarea_classes << "govuk-textarea--error" if has_error
|
33
31
|
|
34
32
|
aria_described_by ||= nil
|
35
33
|
if hint || has_error || describedby
|
@@ -40,11 +38,10 @@
|
|
40
38
|
aria_described_by = aria_described_by.join(" ")
|
41
39
|
end
|
42
40
|
%>
|
43
|
-
|
44
|
-
<%= content_tag :div, class: form_group_css_classes do %>
|
41
|
+
<%= tag.div(**component_helper.all_attributes) do %>
|
45
42
|
<% if label %>
|
46
43
|
<%= render "govuk_publishing_components/components/label", {
|
47
|
-
html_for:
|
44
|
+
html_for: textarea_id,
|
48
45
|
right_to_left: right_to_left_help
|
49
46
|
}.merge(label.symbolize_keys) %>
|
50
47
|
<% end %>
|
@@ -67,9 +64,9 @@
|
|
67
64
|
<% end %>
|
68
65
|
|
69
66
|
<%= tag.textarea name: name,
|
70
|
-
class:
|
67
|
+
class: textarea_classes,
|
71
68
|
dir: right_to_left ? "rtl" : nil,
|
72
|
-
id:
|
69
|
+
id: textarea_id,
|
73
70
|
rows: rows,
|
74
71
|
maxlength: maxlength,
|
75
72
|
data: data,
|
@@ -15,6 +15,7 @@ body: |
|
|
15
15
|
[contextual_breadcrumbs]: /component-guide/contextual_breadcrumbs
|
16
16
|
accessibility_criteria: |
|
17
17
|
Components called by this component must be accessible
|
18
|
+
uses_component_wrapper_helper: true
|
18
19
|
examples:
|
19
20
|
default:
|
20
21
|
description: Displays contacts, external links, statistical datasets, topical events, topics and world locations.
|
@@ -19,9 +19,3 @@ examples:
|
|
19
19
|
<h2 class="govuk-heading-m" id='heading'>To publish this step by step you need to</h2>
|
20
20
|
<a class="govuk-link" href='/foo'>Check for broken links</a>
|
21
21
|
</div>
|
22
|
-
with_custom_margins:
|
23
|
-
description: The component accepts a number for margin bottom from `0` to `9` (`0px` to `60px`) using the [GOV.UK Frontend spacing scale](https://design-system.service.gov.uk/styles/spacing/#the-responsive-spacing-scale). It defaults to having margin of `6` (`30px`) top and bottom.
|
24
|
-
data:
|
25
|
-
text: "When a failure occurs, you must submit logbook, landing and transhipment data manually to the UK Fisheries Call Centre each day and by no later than 23.59 UTC"
|
26
|
-
margin_top: 0
|
27
|
-
margin_bottom: 9
|
@@ -6,6 +6,7 @@ accessibility_criteria: |
|
|
6
6
|
- The print icon must be presentational and ignored by screen readers.
|
7
7
|
shared_accessibility_criteria:
|
8
8
|
- link
|
9
|
+
uses_component_wrapper_helper: true
|
9
10
|
examples:
|
10
11
|
default:
|
11
12
|
description: This component calls `print()` via the browser's DOM API. By default it relies on JavaScript and is not shown in environments where JavaScript is disabled. The \"link\" here is actually a button tag because this is not a navigation event.
|
@@ -16,16 +17,11 @@ examples:
|
|
16
17
|
description: You can specify a alternative `href` URL that will override the default behaviour. When a `href` is specified the print link will render as an anchor tag and be displayed even when JavaScript is disabled.
|
17
18
|
data:
|
18
19
|
href: "/print"
|
19
|
-
|
20
|
+
with_child_data_attributes:
|
20
21
|
description: |
|
21
|
-
Data attributes can be passed to the
|
22
|
+
Data attributes can be passed to the link/button as shown.
|
22
23
|
|
23
24
|
Note that the component does not include built in tracking. If this is required consider using the [GA4 link tracker](https://github.com/alphagov/govuk_publishing_components/blob/main/docs/analytics-ga4/trackers/ga4-link-tracker.md).
|
24
25
|
data:
|
25
|
-
|
26
|
+
child_data_attributes:
|
26
27
|
an_attribute: some_value
|
27
|
-
with_custom_margins:
|
28
|
-
description: The component accepts a number for margin bottom from `0` to `9` (`0px` to `60px`) using the [GOV.UK Frontend spacing scale](https://design-system.service.gov.uk/styles/spacing/#the-responsive-spacing-scale). It defaults to having margin level `3` on top and bottom.
|
29
|
-
data:
|
30
|
-
margin_top: 0
|
31
|
-
margin_bottom: 4
|
@@ -34,16 +34,17 @@ examples:
|
|
34
34
|
context:
|
35
35
|
dark_background: true
|
36
36
|
homepage:
|
37
|
-
description: For use on the homepage.
|
37
|
+
description: For use on the homepage. See the `search with autocomplete` component for reference, which wraps this component.
|
38
38
|
data:
|
39
39
|
label_text: "Search"
|
40
40
|
inline_label: false
|
41
41
|
on_govuk_blue: true
|
42
42
|
label_size: "s"
|
43
|
+
label_margin_bottom: 3
|
43
44
|
homepage: true
|
44
45
|
size: "large"
|
45
46
|
context:
|
46
|
-
dark_background: true
|
47
|
+
dark_background: true
|
47
48
|
change_label_text:
|
48
49
|
data:
|
49
50
|
label_text: "Search"
|
@@ -14,6 +14,7 @@ accessibility_criteria: |
|
|
14
14
|
- have correctly associated labels
|
15
15
|
|
16
16
|
Labels use the [label component](/component-guide/label).
|
17
|
+
uses_component_wrapper_helper: true
|
17
18
|
examples:
|
18
19
|
default:
|
19
20
|
data:
|
@@ -26,7 +27,7 @@ examples:
|
|
26
27
|
label:
|
27
28
|
text: "What is the nature of your medical emergency?"
|
28
29
|
name: "emergency-name"
|
29
|
-
|
30
|
+
textarea_id: "emergency-id"
|
30
31
|
with_margin_bottom:
|
31
32
|
description: The component accepts a number for margin bottom from `0` to `9` (`0px` to `60px`) using the [GOV.UK Frontend spacing scale](https://design-system.service.gov.uk/styles/spacing/#the-responsive-spacing-scale). It defaults to a margin bottom of 6 (30px).
|
32
33
|
data:
|
@@ -102,7 +103,7 @@ examples:
|
|
102
103
|
<%= component %>
|
103
104
|
<% end %>
|
104
105
|
data:
|
105
|
-
|
106
|
+
textarea_id: "contextual-guidance-id"
|
106
107
|
label:
|
107
108
|
text: "Title"
|
108
109
|
bold: true
|
data/config/locales/ar.yml
CHANGED
data/config/locales/ru.yml
CHANGED
data/config/locales/zh.yml
CHANGED
@@ -53,12 +53,18 @@ module GovukPublishingComponents
|
|
53
53
|
@destructive = local_assigns[:destructive]
|
54
54
|
@name = local_assigns[:name]
|
55
55
|
@value = local_assigns[:value]
|
56
|
-
@classes = local_assigns[:classes]
|
57
56
|
@aria_label = local_assigns[:aria_label]
|
58
57
|
@info_text_id = "info-text-id-#{SecureRandom.hex(4)}"
|
59
58
|
@button_id = "button-id-#{SecureRandom.hex(4)}"
|
60
59
|
@aria_controls = local_assigns[:aria_controls]
|
61
60
|
@aria_describedby = local_assigns[:aria_describedby]
|
61
|
+
|
62
|
+
if local_assigns.include?(:classes)
|
63
|
+
@classes = local_assigns[:classes].split(" ")
|
64
|
+
unless @classes.all? { |c| c.start_with?("js-") }
|
65
|
+
raise(ArgumentError, "Passed classes must be prefixed with `js-`")
|
66
|
+
end
|
67
|
+
end
|
62
68
|
end
|
63
69
|
|
64
70
|
def link?
|
@@ -1,32 +1,20 @@
|
|
1
1
|
module GovukPublishingComponents
|
2
2
|
module Presenters
|
3
3
|
class SinglePageNotificationButtonHelper
|
4
|
-
attr_reader :already_subscribed, :data_attributes, :base_path, :
|
4
|
+
attr_reader :already_subscribed, :data_attributes, :base_path, :button_type, :button_location, :skip_account, :button_text_subscribe, :button_text_unsubscribe
|
5
5
|
|
6
6
|
def initialize(local_assigns)
|
7
7
|
@local_assigns = local_assigns
|
8
8
|
@data_attributes = @local_assigns[:data_attributes] || {}
|
9
|
-
@js_enhancement = @local_assigns[:js_enhancement] || false
|
10
9
|
@already_subscribed = @local_assigns[:already_subscribed] || false
|
11
10
|
@base_path = @local_assigns[:base_path] || nil
|
12
11
|
@button_location = button_location_is_valid? ? @local_assigns[:button_location] : nil
|
13
12
|
@button_type = @local_assigns[:already_subscribed] ? "Unsubscribe" : "Subscribe"
|
14
|
-
@classes = %w[gem-c-single-page-notification-button]
|
15
|
-
@classes << "js-personalisation-enhancement" if js_enhancement
|
16
13
|
@button_text_subscribe = custom_button_text_is_valid? ? custom_subscribe_text : default_subscribe_text
|
17
14
|
@button_text_unsubscribe = custom_button_text_is_valid? ? custom_unsubscribe_text : default_unsubscribe_text
|
18
15
|
@skip_account = @local_assigns[:skip_account] || nil
|
19
16
|
end
|
20
17
|
|
21
|
-
def data
|
22
|
-
@data_attributes[:module] = "single-page-notification-button" if js_enhancement
|
23
|
-
# This attribute is passed through to the personalisation API to ensure when a new button is returned from the API, it has the same button_location
|
24
|
-
@data_attributes[:button_location] = button_location
|
25
|
-
@data_attributes[:button_text_subscribe] = @button_text_subscribe
|
26
|
-
@data_attributes[:button_text_unsubscribe] = @button_text_unsubscribe
|
27
|
-
@data_attributes
|
28
|
-
end
|
29
|
-
|
30
18
|
def button_location_is_valid?
|
31
19
|
%w[bottom top].include? @local_assigns[:button_location]
|
32
20
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: govuk_publishing_components
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 50.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- GOV.UK Dev
|
8
8
|
bindir: bin
|
9
9
|
cert_chain: []
|
10
|
-
date: 2025-01-
|
10
|
+
date: 2025-01-22 00:00:00.000000000 Z
|
11
11
|
dependencies:
|
12
12
|
- !ruby/object:Gem::Dependency
|
13
13
|
name: govuk_app_config
|