govuk_design_system_formbuilder 5.10.0 → 5.10.1
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.
- checksums.yaml +4 -4
- data/lib/govuk_design_system_formbuilder/builder.rb +4 -2
- data/lib/govuk_design_system_formbuilder/elements/date.rb +8 -2
- data/lib/govuk_design_system_formbuilder/elements/error_message.rb +5 -1
- data/lib/govuk_design_system_formbuilder/traits/localisation.rb +8 -6
- data/lib/govuk_design_system_formbuilder/version.rb +1 -1
- data/lib/govuk_design_system_formbuilder.rb +9 -0
- metadata +5 -25
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1161517e2ec3b7c50af5bc68cba01dd6ef6be7c3569abebc3e5aca32e30720b4
|
4
|
+
data.tar.gz: b44dfb984dae5e9781c1c099ad4b53ff29fee5d066078dc74a7507e96a4d8f8a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 37c8f7bedaa9e4f7df91055d5f58659cad2dc8e553eaec54a0fb0f62c1af8d1c1d79ab2db898f9aa4883f5a522864090ca520350a9ee6586f06f1d85a288dfdf
|
7
|
+
data.tar.gz: b555b98d1fc53ac32dab2952f35eba2729c350d041baae34b4e109dc224ddfc18631df3959a1402d4c6d80756ab2f9e40a87165acc53a4c4c249fb1b827d9b37
|
@@ -938,6 +938,8 @@ module GOVUKDesignSystemFormBuilder
|
|
938
938
|
# @param maxlength_enabled [Boolean] adds maxlength attribute to day, month and year inputs (2, 2, and 4, respectively)
|
939
939
|
# @param segments [Hash] allows Rails' multiparameter attributes to be overridden on a field-by-field basis. Hash must
|
940
940
|
# contain +day:+, +month:+ and +year:+ keys. Defaults to the default value set in the +default_date_segments+ setting in {GOVUKDesignSystemFormBuilder.DEFAULTS}
|
941
|
+
# @param segment_names [Hash] allows the day, month and year labels to be overridden. Hash must
|
942
|
+
# contain +day:+, +month:+ and +year:+ keys. Defaults to the default value set in the +default_date_segment_names+ setting in {GOVUKDesignSystemFormBuilder.DEFAULTS}
|
941
943
|
# @param form_group [Hash] configures the form group
|
942
944
|
# @option form_group kwargs [Hash] additional attributes added to the form group
|
943
945
|
# @option kwargs [Hash] kwargs additional arguments are applied as attributes to the +input+ element
|
@@ -960,8 +962,8 @@ module GOVUKDesignSystemFormBuilder
|
|
960
962
|
# @example A date input with legend supplied as a proc
|
961
963
|
# = f.govuk_date_field :finishes_on,
|
962
964
|
# legend: -> { tag.h3('Which category do you belong to?') }
|
963
|
-
def govuk_date_field(attribute_name, hint: {}, legend: {}, caption: {}, date_of_birth: false, omit_day: false, maxlength_enabled: false, segments: config.default_date_segments, form_group: {}, **kwargs, &block)
|
964
|
-
Elements::Date.new(self, object_name, attribute_name, hint:, legend:, caption:, date_of_birth:, omit_day:, maxlength_enabled:, segments:, form_group:, **kwargs, &block).html
|
965
|
+
def govuk_date_field(attribute_name, hint: {}, legend: {}, caption: {}, date_of_birth: false, omit_day: false, maxlength_enabled: false, segments: config.default_date_segments, segment_names: config.default_date_segment_names, form_group: {}, **kwargs, &block)
|
966
|
+
Elements::Date.new(self, object_name, attribute_name, hint:, legend:, caption:, date_of_birth:, omit_day:, maxlength_enabled:, segments:, segment_names:, form_group:, **kwargs, &block).html
|
965
967
|
end
|
966
968
|
|
967
969
|
# Generates a summary of errors in the form, each linking to the corresponding
|
@@ -7,10 +7,11 @@ module GOVUKDesignSystemFormBuilder
|
|
7
7
|
include Traits::Hint
|
8
8
|
include Traits::Supplemental
|
9
9
|
include Traits::HTMLClasses
|
10
|
+
include Traits::Localisation
|
10
11
|
|
11
12
|
MULTIPARAMETER_KEY = { day: 3, month: 2, year: 1 }.freeze
|
12
13
|
|
13
|
-
def initialize(builder, object_name, attribute_name, legend:, caption:, hint:, omit_day:, maxlength_enabled:, segments:, form_group:, date_of_birth: false, **kwargs, &block)
|
14
|
+
def initialize(builder, object_name, attribute_name, legend:, caption:, hint:, omit_day:, maxlength_enabled:, segments:, form_group:, segment_names:, date_of_birth: false, **kwargs, &block)
|
14
15
|
super(builder, object_name, attribute_name, &block)
|
15
16
|
|
16
17
|
@legend = legend
|
@@ -20,6 +21,7 @@ module GOVUKDesignSystemFormBuilder
|
|
20
21
|
@omit_day = omit_day
|
21
22
|
@maxlength_enabled = maxlength_enabled
|
22
23
|
@segments = segments
|
24
|
+
@segment_names = segment_names
|
23
25
|
@form_group = form_group
|
24
26
|
@html_attributes = kwargs
|
25
27
|
end
|
@@ -101,12 +103,16 @@ module GOVUKDesignSystemFormBuilder
|
|
101
103
|
|
102
104
|
def label(segment, link_errors)
|
103
105
|
tag.label(
|
104
|
-
segment
|
106
|
+
segment_label_text(segment),
|
105
107
|
class: label_classes,
|
106
108
|
for: id(segment, link_errors)
|
107
109
|
)
|
108
110
|
end
|
109
111
|
|
112
|
+
def segment_label_text(segment)
|
113
|
+
localised_text(:label, segment) || @segment_names.fetch(segment)
|
114
|
+
end
|
115
|
+
|
110
116
|
def input(segment, link_errors, width, value)
|
111
117
|
tag.input(
|
112
118
|
id: id(segment, link_errors),
|
@@ -16,7 +16,11 @@ module GOVUKDesignSystemFormBuilder
|
|
16
16
|
private
|
17
17
|
|
18
18
|
def hidden_prefix
|
19
|
-
tag.span(
|
19
|
+
tag.span("#{prefix_text}: ", class: %(#{brand}-visually-hidden))
|
20
|
+
end
|
21
|
+
|
22
|
+
def prefix_text
|
23
|
+
I18n.translate("helpers.error.message_prefix", default: nil) || config.default_error_message_prefix
|
20
24
|
end
|
21
25
|
|
22
26
|
def message
|
@@ -5,20 +5,22 @@ module GOVUKDesignSystemFormBuilder
|
|
5
5
|
# spaces, zero or more times
|
6
6
|
BASE_NAME_REGEXP = %r{[[:alpha:]](?:[\w\s]*)}
|
7
7
|
|
8
|
-
|
9
|
-
|
10
|
-
def localised_text(context)
|
8
|
+
def localised_text(context, segment = nil)
|
11
9
|
return unless @object_name.present? && @attribute_name.present?
|
12
10
|
|
13
|
-
|
11
|
+
full_context = [schema(context), segment].compact.join('.')
|
12
|
+
|
13
|
+
localise(full_context) || localise_html(full_context)
|
14
14
|
end
|
15
15
|
|
16
|
+
private
|
17
|
+
|
16
18
|
def localise(context)
|
17
|
-
I18n.translate(
|
19
|
+
I18n.translate(context, default: nil)
|
18
20
|
end
|
19
21
|
|
20
22
|
def localise_html(context)
|
21
|
-
I18n.translate("#{
|
23
|
+
I18n.translate("#{context}_html", default: nil).try(:html_safe)
|
22
24
|
end
|
23
25
|
|
24
26
|
def schema(context)
|
@@ -32,6 +32,10 @@ module GOVUKDesignSystemFormBuilder
|
|
32
32
|
# override the standard behaviour where Rails tries to cast the values
|
33
33
|
# into a +Date+. Defaults to +{ day: '3i', month: '2i', year: '1i' }+
|
34
34
|
#
|
35
|
+
# * +:default_date_segment_names+ allows the individual date field labels to
|
36
|
+
# have their default values set.
|
37
|
+
# Defaults to +{ day: 'Day', month: 'Month', year: 'Year' }+
|
38
|
+
#
|
35
39
|
# * +:default_radio_divider_text+ sets the text automatically added to the
|
36
40
|
# radio button divider, defaults to 'or'
|
37
41
|
#
|
@@ -49,6 +53,9 @@ module GOVUKDesignSystemFormBuilder
|
|
49
53
|
# is present. The default can be overridden using the +bold_labels:+ argument.
|
50
54
|
# The default value is 'true'.
|
51
55
|
#
|
56
|
+
# * +:default_error_message_prefix+ sets the prefix text inserted before inline
|
57
|
+
# errors added to form inputs. It defaults to 'Error'.
|
58
|
+
#
|
52
59
|
# * +:default_error_summary_title+ sets the text used in error summary
|
53
60
|
# blocks. As per the GOV.UK Design System spec, it defaults to
|
54
61
|
# 'There is a problem'.
|
@@ -94,8 +101,10 @@ module GOVUKDesignSystemFormBuilder
|
|
94
101
|
default_caption_size: 'm',
|
95
102
|
default_submit_button_text: 'Continue',
|
96
103
|
default_date_segments: { day: '3i', month: '2i', year: '1i' },
|
104
|
+
default_date_segment_names: { day: 'Day', month: 'Month', year: 'Year' },
|
97
105
|
default_radio_divider_text: 'or',
|
98
106
|
default_check_box_divider_text: 'or',
|
107
|
+
default_error_message_prefix: 'Error',
|
99
108
|
default_error_summary_title: 'There is a problem',
|
100
109
|
default_error_summary_presenter: Presenters::ErrorSummaryPresenter,
|
101
110
|
default_error_summary_error_order_method: nil,
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: govuk_design_system_formbuilder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.10.
|
4
|
+
version: 5.10.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Peter Yates
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-
|
11
|
+
date: 2025-06-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: html-attributes-utils
|
@@ -81,39 +81,19 @@ dependencies:
|
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
84
|
+
name: debug
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- - "~>"
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: 0.14.1
|
90
|
-
type: :development
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - "~>"
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: 0.14.1
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: pry-byebug
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - "~>"
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: '3.9'
|
104
87
|
- - ">="
|
105
88
|
- !ruby/object:Gem::Version
|
106
|
-
version:
|
89
|
+
version: '0'
|
107
90
|
type: :development
|
108
91
|
prerelease: false
|
109
92
|
version_requirements: !ruby/object:Gem::Requirement
|
110
93
|
requirements:
|
111
|
-
- - "~>"
|
112
|
-
- !ruby/object:Gem::Version
|
113
|
-
version: '3.9'
|
114
94
|
- - ">="
|
115
95
|
- !ruby/object:Gem::Version
|
116
|
-
version:
|
96
|
+
version: '0'
|
117
97
|
- !ruby/object:Gem::Dependency
|
118
98
|
name: rspec-html-matchers
|
119
99
|
requirement: !ruby/object:Gem::Requirement
|