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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 53ebb0477ee3736c07b83fa9083a7a119bd2474d37ba44dc5288546a2c373ffc
4
- data.tar.gz: 68114148ca5273964235c7a9c2d184f128d4f68d0cfe6bc2ec010937124fbc35
3
+ metadata.gz: 1161517e2ec3b7c50af5bc68cba01dd6ef6be7c3569abebc3e5aca32e30720b4
4
+ data.tar.gz: b44dfb984dae5e9781c1c099ad4b53ff29fee5d066078dc74a7507e96a4d8f8a
5
5
  SHA512:
6
- metadata.gz: 9ebd18df351f2675cab4d9023e1e83cf76f90b1562b7adc02b8e59920de787304a682435517e1243e115fda3a0441d04911498b866c935e9605bea47f06ea845
7
- data.tar.gz: 9c371d4d31c681b1314785810d6b7e0b7925de4bdb492800243800d69ad4ce7f08e58431e80d69f4ead62e9f2dc2322ba247d8283d9c7984752c903e8e5b3c7f
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.capitalize,
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('Error: ', class: %(#{brand}-visually-hidden))
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
- private
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
- localise(context) || localise_html(context)
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(schema(context), default: nil)
19
+ I18n.translate(context, default: nil)
18
20
  end
19
21
 
20
22
  def localise_html(context)
21
- I18n.translate("#{schema(context)}_html", default: nil).try(:html_safe)
23
+ I18n.translate("#{context}_html", default: nil).try(:html_safe)
22
24
  end
23
25
 
24
26
  def schema(context)
@@ -1,3 +1,3 @@
1
1
  module GOVUKDesignSystemFormBuilder
2
- VERSION = '5.10.0'.freeze
2
+ VERSION = '5.10.1'.freeze
3
3
  end
@@ -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.0
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-05-02 00:00:00.000000000 Z
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: pry
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: 3.9.0
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: 3.9.0
96
+ version: '0'
117
97
  - !ruby/object:Gem::Dependency
118
98
  name: rspec-html-matchers
119
99
  requirement: !ruby/object:Gem::Requirement