govuk_design_system_formbuilder 6.5.0 → 6.6.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3d65782d02195b494243412c748b5a29b0564a2c7e807911510657b1a5f4afb0
4
- data.tar.gz: 519d74cd679fdb9ead38cd6b7622100ef2ce6376b016a305675f50ce9a707f6c
3
+ metadata.gz: 29036297bb5e5295a95e24f83df755b524f49200fd0d57761a42f5852f4f3fbe
4
+ data.tar.gz: 4264b4e448571d9353104bfceace861527cb1a5b454cbfd319ad569343c274b7
5
5
  SHA512:
6
- metadata.gz: 38ea6cb26a9063de1b872e15820a6f6191bb77dab75cac2da7a25fec8ae17648e2767816b231e5555e3ede2f21a3b702b1b135827edfbcb752cd213ff6b8362b
7
- data.tar.gz: 8dfdc1c8e12248b1720563594b85e8187e6e65fc9fb196fb87f85afbdb13efc10ed3f584fbff42d2ab51cfcbd1b18971898f868624e8248a3279b59f44051cea
6
+ metadata.gz: d3b8f99daf733c5f9f2b7d4cb053818b2c1b6ecf223ce5f756ce7627aa181a68e0d1aaf9a615645e361a810e82230cb28ecc3158090e2e36cbaa7c6684541061
7
+ data.tar.gz: b8f20bf97d58571571e8f541be72214971fc78242dd3cb3b29600173a3e5b85a0cb404a74037c698ebcd9a125cfd78a35058307176c39dd7db907b1be78b895c
data/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
  [![Gem version](https://badge.fury.io/rb/govuk_design_system_formbuilder.svg)](https://badge.fury.io/rb/govuk_design_system_formbuilder)
5
5
  [![Gem](https://img.shields.io/gem/dt/govuk_design_system_formbuilder?logo=rubygems)](https://rubygems.org/gems/govuk_design_system_formbuilder)
6
6
  ![GitHub license](https://img.shields.io/github/license/x-govuk/govuk-form-builder)
7
- [![GOV.UK Design System version](https://img.shields.io/badge/GOV.UK%20Design%20System-6.5.0-brightgreen)](https://design-system.service.gov.uk)
7
+ [![GOV.UK Design System version](https://img.shields.io/badge/GOV.UK%20Design%20System-6.6.0-brightgreen)](https://design-system.service.gov.uk)
8
8
  [![Rails](https://img.shields.io/badge/Rails-7.2.3%20%E2%95%B1%208.0.1%20%E2%95%B1%208.1.2-E16D6D)](https://weblog.rubyonrails.org/releases/)
9
9
  [![Ruby](https://img.shields.io/badge/Ruby-3.2.10%20%20%E2%95%B1%203.4.8%20%20%E2%95%B1%204.0.1-E16D6D)](https://www.ruby-lang.org/en/downloads/)
10
10
 
@@ -421,6 +421,8 @@ module GOVUKDesignSystemFormBuilder
421
421
  caption: {},
422
422
  max_words: nil,
423
423
  max_chars: nil,
424
+ max_length: nil,
425
+ count_type: :length,
424
426
  rows: 5,
425
427
  threshold: nil,
426
428
  form_group: {},
@@ -442,8 +444,10 @@ module GOVUKDesignSystemFormBuilder
442
444
  caption:,
443
445
  max_words:,
444
446
  max_chars:,
445
- rows:,
447
+ max_length:,
448
+ count_type:,
446
449
  threshold:,
450
+ rows:,
447
451
  form_group:,
448
452
  description_other_text:,
449
453
  under_limit_other_text:,
@@ -21,6 +21,8 @@ module GOVUKDesignSystemFormBuilder
21
21
  rows:,
22
22
  max_words:,
23
23
  max_chars:,
24
+ max_length:,
25
+ count_type:,
24
26
  threshold:,
25
27
  form_group:,
26
28
  description_other_text:,
@@ -39,13 +41,31 @@ module GOVUKDesignSystemFormBuilder
39
41
  @label = label
40
42
  @caption = caption
41
43
  @hint = hint
42
- @max_words = max_words
43
- @max_chars = max_chars
44
44
  @threshold = threshold
45
45
  @rows = rows
46
46
  @form_group = form_group
47
47
  @html_attributes = kwargs
48
48
 
49
+ case
50
+ when max_length
51
+ @max_length = max_length
52
+ @count_type = count_type.to_sym
53
+ when max_words
54
+ @max_length = max_words
55
+ @count_type = :words
56
+
57
+ warn("max_words is deprecated, use { max_length: #{@max_length}, count_type: :#{@count_type} }")
58
+ when max_chars
59
+ @max_length = max_chars
60
+ @count_type = :length
61
+
62
+ warn("max_chars is deprecated, use { max_length: #{@max_length} }")
63
+ end
64
+
65
+ if @count_type && !@count_type.in?(%i(length words))
66
+ fail(ArgumentError, "count_type (#{@count_type}) must be :length or :words if present")
67
+ end
68
+
49
69
  @description_other_text = description_other_text
50
70
  @under_limit_other_text = under_limit_other_text
51
71
  @under_limit_one_text = under_limit_one_text
@@ -88,22 +108,18 @@ module GOVUKDesignSystemFormBuilder
88
108
  end
89
109
 
90
110
  def limit?
91
- limit_quantity.present?
92
- end
93
-
94
- def limit_quantity
95
- @max_words || @max_chars
111
+ @max_length.present?
96
112
  end
97
113
 
98
114
  def limit_type
99
- @max_words.present? ? 'words' : 'characters'
115
+ @count_type == :words ? 'words' : 'characters'
100
116
  end
101
117
 
102
118
  def limit_description
103
119
  return unless limit?
104
120
 
105
121
  tag.span(id: limit_id, class: limit_description_classes) do
106
- "You can enter up to #{limit_quantity} #{limit_type}"
122
+ "You can enter up to #{@max_length} #{limit_type}"
107
123
  end
108
124
  end
109
125
 
@@ -127,11 +143,9 @@ module GOVUKDesignSystemFormBuilder
127
143
  end
128
144
 
129
145
  def limit_max_options
130
- if @max_words
131
- { maxwords: @max_words }
132
- elsif @max_chars
133
- { maxlength: @max_chars }
134
- end
146
+ return { maxlength: @max_length, 'count-type' => 'words' } if @count_type == :words
147
+
148
+ { maxlength: @max_length }
135
149
  end
136
150
 
137
151
  def limit_threshold_options
@@ -139,10 +153,10 @@ module GOVUKDesignSystemFormBuilder
139
153
  end
140
154
 
141
155
  def i18n_data
142
- return {} unless limit_quantity
156
+ return {} unless @max_length
143
157
 
144
- attrs = case limit_type
145
- when 'characters'
158
+ attrs = case @count_type
159
+ when :length
146
160
  [
147
161
  I18nAttr.new('data-i18n.characters-under-limit.other', @under_limit_other_text, :default_text_area_characters_under_limit_other_text),
148
162
  I18nAttr.new('data-i18n.characters-under-limit.one', @under_limit_one_text, :default_text_area_characters_under_limit_one_text),
@@ -150,7 +164,7 @@ module GOVUKDesignSystemFormBuilder
150
164
  I18nAttr.new('data-i18n.characters-over-limit.other', @over_limit_other_text, :default_text_area_characters_over_limit_other_text),
151
165
  I18nAttr.new('data-i18n.characters-over-limit.one', @over_limit_one_text, :default_text_area_characters_over_limit_one_text),
152
166
  ]
153
- when 'words'
167
+ when :words
154
168
  [
155
169
  I18nAttr.new('data-i18n.words-under-limit.other', @under_limit_other_text, :default_text_area_words_under_limit_other_text),
156
170
  I18nAttr.new('data-i18n.words-under-limit.one', @under_limit_one_text, :default_text_area_words_under_limit_one_text),
@@ -1,3 +1,3 @@
1
1
  module GOVUKDesignSystemFormBuilder
2
- VERSION = '6.5.0'.freeze
2
+ VERSION = '6.6.0'.freeze
3
3
  end
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: 6.5.0
4
+ version: 6.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Yates
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-09-03 00:00:00.000000000 Z
11
+ date: 2026-10-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: html-attributes-utils