govuk_design_system_formbuilder 3.0.2 → 3.1.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 +4 -4
- data/README.md +5 -5
- data/lib/govuk_design_system_formbuilder/builder.rb +2 -3
- data/lib/govuk_design_system_formbuilder/elements/date.rb +1 -9
- data/lib/govuk_design_system_formbuilder/elements/text_area.rb +1 -1
- data/lib/govuk_design_system_formbuilder/traits/html_attributes.rb +4 -60
- data/lib/govuk_design_system_formbuilder/version.rb +1 -1
- data/lib/govuk_design_system_formbuilder.rb +1 -1
- metadata +18 -12
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: ef71979d3dc464b8b7bb35004494a1f9bae9af7ac392bc9267acab8c38373964
|
|
4
|
+
data.tar.gz: fec2b0c0cc99f2ebcfb20c38c03db5f13a8b70e3f6d26e5c21b7b86735598541
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: d7e0b380e26ee9b408adc81ff58cf655d3c8e4d133dcf30414da2f0c17dc69b26bdfcd452aee69a2f9f9efb9295c44bb2f77e903e6e830c9adae6781e054b656
|
|
7
|
+
data.tar.gz: f3ada2fd3c9489b74c608b1f647a92e1e6438e84cb6c14dd4086c69ae62e227e230ee8033c6e732da11bab9be46bcc8a9b0e96b86a01e2b76a9c967f0be4e154
|
data/README.md
CHANGED
|
@@ -6,9 +6,9 @@
|
|
|
6
6
|
[](https://rubygems.org/gems/govuk_design_system_formbuilder)
|
|
7
7
|
[](https://codeclimate.com/github/DFE-Digital/govuk-formbuilder/test_coverage)
|
|
8
8
|
[](https://github.com/DFE-Digital/govuk-formbuilder/blob/main/LICENSE)
|
|
9
|
-
[](https://design-system.service.gov.uk)
|
|
10
|
+
[](https://weblog.rubyonrails.org/releases/)
|
|
11
|
+
[](https://www.ruby-lang.org/en/downloads/)
|
|
12
12
|
|
|
13
13
|
This library provides an easy-to-use form builder for the [GOV.UK Design System](https://design-system.service.gov.uk/).
|
|
14
14
|
|
|
@@ -55,7 +55,7 @@ configured.
|
|
|
55
55
|
To get up and running quickly and easily try kickstarting your project with a
|
|
56
56
|
pre-configured template:
|
|
57
57
|
|
|
58
|
-
* [DfE
|
|
58
|
+
* [DfE Rails Template](https://github.com/DFE-Digital/rails-template)
|
|
59
59
|
* [DEFRA Ruby Template](https://github.com/DEFRA/defra-ruby-template)
|
|
60
60
|
|
|
61
61
|
## Setup 🔧
|
|
@@ -130,7 +130,7 @@ git config --global user.name "Julius Hibbert"
|
|
|
130
130
|
|
|
131
131
|
## Services using this library
|
|
132
132
|
|
|
133
|
-
Approximately [
|
|
133
|
+
Approximately [70 services use this library](https://github.com/DFE-Digital/govuk-formbuilder/network/dependents),
|
|
134
134
|
here are a few from the <abbr title="Department for Education">DfE</abbr>, <abbr title="Ministry of Justice">MoJ</abbr>, and
|
|
135
135
|
<abbr title="Department for Business, Energy & Industrial Strategy">BEIS</abbr>.
|
|
136
136
|
|
|
@@ -913,7 +913,6 @@ module GOVUKDesignSystemFormBuilder
|
|
|
913
913
|
# @option caption kwargs [Hash] additional arguments are applied as attributes on the caption +span+ element
|
|
914
914
|
# @param omit_day [Boolean] do not render a day input, only capture month and year
|
|
915
915
|
# @param maxlength_enabled [Boolean] adds maxlength attribute to day, month and year inputs (2, 2, and 4, respectively)
|
|
916
|
-
# @param wildcards [Boolean] add an 'X' to the day and month patterns so users can add approximate dates
|
|
917
916
|
# @param form_group [Hash] configures the form group
|
|
918
917
|
# @option form_group classes [Array,String] sets the form group's classes
|
|
919
918
|
# @option form_group kwargs [Hash] additional attributes added to the form group
|
|
@@ -937,8 +936,8 @@ module GOVUKDesignSystemFormBuilder
|
|
|
937
936
|
# @example A date input with legend supplied as a proc
|
|
938
937
|
# = f.govuk_date_field :finishes_on,
|
|
939
938
|
# legend: -> { tag.h3('Which category do you belong to?') }
|
|
940
|
-
def govuk_date_field(attribute_name, hint: {}, legend: {}, caption: {}, date_of_birth: false, omit_day: false, maxlength_enabled: false, form_group: {},
|
|
941
|
-
Elements::Date.new(self, object_name, attribute_name, hint: hint, legend: legend, caption: caption, date_of_birth: date_of_birth, omit_day: omit_day, maxlength_enabled: maxlength_enabled, form_group: form_group,
|
|
939
|
+
def govuk_date_field(attribute_name, hint: {}, legend: {}, caption: {}, date_of_birth: false, omit_day: false, maxlength_enabled: false, form_group: {}, **kwargs, &block)
|
|
940
|
+
Elements::Date.new(self, object_name, attribute_name, hint: hint, legend: legend, caption: caption, date_of_birth: date_of_birth, omit_day: omit_day, maxlength_enabled: maxlength_enabled, form_group: form_group, **kwargs, &block).html
|
|
942
941
|
end
|
|
943
942
|
|
|
944
943
|
# Generates a summary of errors in the form, each linking to the corresponding
|
|
@@ -11,7 +11,7 @@ module GOVUKDesignSystemFormBuilder
|
|
|
11
11
|
SEGMENTS = { day: '3i', month: '2i', year: '1i' }.freeze
|
|
12
12
|
MULTIPARAMETER_KEY = { day: 3, month: 2, year: 1 }.freeze
|
|
13
13
|
|
|
14
|
-
def initialize(builder, object_name, attribute_name, legend:, caption:, hint:, omit_day:, maxlength_enabled:, form_group:,
|
|
14
|
+
def initialize(builder, object_name, attribute_name, legend:, caption:, hint:, omit_day:, maxlength_enabled:, form_group:, date_of_birth: false, **kwargs, &block)
|
|
15
15
|
super(builder, object_name, attribute_name, &block)
|
|
16
16
|
|
|
17
17
|
@legend = legend
|
|
@@ -21,7 +21,6 @@ module GOVUKDesignSystemFormBuilder
|
|
|
21
21
|
@omit_day = omit_day
|
|
22
22
|
@maxlength_enabled = maxlength_enabled
|
|
23
23
|
@form_group = form_group
|
|
24
|
-
@wildcards = wildcards
|
|
25
24
|
@html_attributes = kwargs
|
|
26
25
|
end
|
|
27
26
|
|
|
@@ -107,7 +106,6 @@ module GOVUKDesignSystemFormBuilder
|
|
|
107
106
|
class: classes(width),
|
|
108
107
|
name: name(segment),
|
|
109
108
|
type: 'text',
|
|
110
|
-
pattern: pattern(segment),
|
|
111
109
|
inputmode: 'numeric',
|
|
112
110
|
value: value,
|
|
113
111
|
autocomplete: date_of_birth_autocomplete_value(segment),
|
|
@@ -115,12 +113,6 @@ module GOVUKDesignSystemFormBuilder
|
|
|
115
113
|
)
|
|
116
114
|
end
|
|
117
115
|
|
|
118
|
-
def pattern(segment)
|
|
119
|
-
return '[0-9X]*' if @wildcards && segment.in?(%i(day month))
|
|
120
|
-
|
|
121
|
-
'[0-9]*'
|
|
122
|
-
end
|
|
123
|
-
|
|
124
116
|
def classes(width)
|
|
125
117
|
build_classes(
|
|
126
118
|
%(input),
|
|
@@ -78,7 +78,7 @@ module GOVUKDesignSystemFormBuilder
|
|
|
78
78
|
def limit_description
|
|
79
79
|
return unless limit?
|
|
80
80
|
|
|
81
|
-
tag.span(id: limit_id, class: limit_description_classes
|
|
81
|
+
tag.span(id: limit_id, class: limit_description_classes) do
|
|
82
82
|
"You can enter up to #{limit_quantity} #{limit_type}"
|
|
83
83
|
end
|
|
84
84
|
end
|
|
@@ -1,68 +1,12 @@
|
|
|
1
1
|
module GOVUKDesignSystemFormBuilder
|
|
2
2
|
module Traits
|
|
3
3
|
module HTMLAttributes
|
|
4
|
-
|
|
5
|
-
# * deeply merging them so both the default (required) attributes are
|
|
6
|
-
# present
|
|
7
|
-
# * joins the arrays into strings to maintain Rails 6.0.* compatibility
|
|
8
|
-
class Attributes
|
|
9
|
-
# Only try to combine and merge these attributes that contain a list of
|
|
10
|
-
# values separated by a space. All other values should be merged in a
|
|
11
|
-
# regular fashion (where the custom value overrides the default)
|
|
12
|
-
MERGEABLE = [
|
|
13
|
-
%i(class),
|
|
14
|
-
%i(aria controls),
|
|
15
|
-
%i(aria describedby),
|
|
16
|
-
%i(aria flowto),
|
|
17
|
-
%i(aria labelledby),
|
|
18
|
-
%i(aria owns),
|
|
19
|
-
].freeze
|
|
20
|
-
|
|
21
|
-
def initialize(defaults, custom)
|
|
22
|
-
@merged = defaults.deeper_merge(deep_split_values(custom))
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
def to_h
|
|
26
|
-
deep_join_values(@merged)
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
private
|
|
30
|
-
|
|
31
|
-
def deep_split_values(hash, parent = nil)
|
|
32
|
-
hash.each.with_object({}) do |(key, value), result|
|
|
33
|
-
result[key] = case value
|
|
34
|
-
when Hash
|
|
35
|
-
deep_split_values(value, key)
|
|
36
|
-
when String
|
|
37
|
-
split_mergeable(key, value, parent)
|
|
38
|
-
else
|
|
39
|
-
value
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
def split_mergeable(key, value, parent = nil)
|
|
45
|
-
return value.presence unless [parent, key].compact.in?(MERGEABLE)
|
|
46
|
-
|
|
47
|
-
value.split
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
def deep_join_values(hash)
|
|
51
|
-
hash.each.with_object({}) do |(key, value), result|
|
|
52
|
-
result[key] = case value
|
|
53
|
-
when Hash
|
|
54
|
-
deep_join_values(value)
|
|
55
|
-
when Array
|
|
56
|
-
value.uniq.join(' ').presence
|
|
57
|
-
else
|
|
58
|
-
value
|
|
59
|
-
end
|
|
60
|
-
end
|
|
61
|
-
end
|
|
62
|
-
end
|
|
4
|
+
using HTMLAttributesUtils
|
|
63
5
|
|
|
64
6
|
def attributes(html_attributes = {})
|
|
65
|
-
|
|
7
|
+
options
|
|
8
|
+
.deep_merge_html_attributes(html_attributes)
|
|
9
|
+
.deep_tidy_html_attributes
|
|
66
10
|
end
|
|
67
11
|
end
|
|
68
12
|
end
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
require 'deep_merge/rails_compat'
|
|
2
1
|
require 'active_support/configurable'
|
|
2
|
+
require 'html_attributes_utils'
|
|
3
3
|
|
|
4
4
|
[%w(presenters *.rb), %w(refinements *.rb), %w(traits *.rb), %w(*.rb), %w(elements ** *.rb), %w(containers ** *.rb)]
|
|
5
5
|
.flat_map { |matcher| Dir.glob(File.join(__dir__, 'govuk_design_system_formbuilder', *matcher)) }
|
metadata
CHANGED
|
@@ -1,29 +1,35 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: govuk_design_system_formbuilder
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.0
|
|
4
|
+
version: 3.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Peter Yates
|
|
8
|
-
autorequire:
|
|
8
|
+
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2022-
|
|
11
|
+
date: 2022-06-27 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
|
-
name:
|
|
14
|
+
name: html-attributes-utils
|
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
|
16
16
|
requirements:
|
|
17
17
|
- - "~>"
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version:
|
|
19
|
+
version: '0.9'
|
|
20
|
+
- - ">="
|
|
21
|
+
- !ruby/object:Gem::Version
|
|
22
|
+
version: 0.9.2
|
|
20
23
|
type: :runtime
|
|
21
24
|
prerelease: false
|
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
26
|
requirements:
|
|
24
27
|
- - "~>"
|
|
25
28
|
- !ruby/object:Gem::Version
|
|
26
|
-
version:
|
|
29
|
+
version: '0.9'
|
|
30
|
+
- - ">="
|
|
31
|
+
- !ruby/object:Gem::Version
|
|
32
|
+
version: 0.9.2
|
|
27
33
|
- !ruby/object:Gem::Dependency
|
|
28
34
|
name: actionview
|
|
29
35
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -134,14 +140,14 @@ dependencies:
|
|
|
134
140
|
requirements:
|
|
135
141
|
- - "~>"
|
|
136
142
|
- !ruby/object:Gem::Version
|
|
137
|
-
version: 4.
|
|
143
|
+
version: 4.4.0
|
|
138
144
|
type: :development
|
|
139
145
|
prerelease: false
|
|
140
146
|
version_requirements: !ruby/object:Gem::Requirement
|
|
141
147
|
requirements:
|
|
142
148
|
- - "~>"
|
|
143
149
|
- !ruby/object:Gem::Version
|
|
144
|
-
version: 4.
|
|
150
|
+
version: 4.4.0
|
|
145
151
|
- !ruby/object:Gem::Dependency
|
|
146
152
|
name: simplecov
|
|
147
153
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -190,14 +196,14 @@ dependencies:
|
|
|
190
196
|
requirements:
|
|
191
197
|
- - "~>"
|
|
192
198
|
- !ruby/object:Gem::Version
|
|
193
|
-
version: 3.
|
|
199
|
+
version: 3.29.0
|
|
194
200
|
type: :development
|
|
195
201
|
prerelease: false
|
|
196
202
|
version_requirements: !ruby/object:Gem::Requirement
|
|
197
203
|
requirements:
|
|
198
204
|
- - "~>"
|
|
199
205
|
- !ruby/object:Gem::Version
|
|
200
|
-
version: 3.
|
|
206
|
+
version: 3.29.0
|
|
201
207
|
- !ruby/object:Gem::Dependency
|
|
202
208
|
name: rubypants
|
|
203
209
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -357,7 +363,7 @@ metadata:
|
|
|
357
363
|
homepage_uri: https://govuk-form-builder.netlify.app
|
|
358
364
|
source_code_uri: https://github.com/DFE-Digital/govuk-formbuilder
|
|
359
365
|
github_repo: https://github.com/DFE-Digital/govuk-formbuilder
|
|
360
|
-
post_install_message:
|
|
366
|
+
post_install_message:
|
|
361
367
|
rdoc_options: []
|
|
362
368
|
require_paths:
|
|
363
369
|
- lib
|
|
@@ -373,7 +379,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
373
379
|
version: '0'
|
|
374
380
|
requirements: []
|
|
375
381
|
rubygems_version: 3.1.6
|
|
376
|
-
signing_key:
|
|
382
|
+
signing_key:
|
|
377
383
|
specification_version: 4
|
|
378
384
|
summary: GOV.UK-compliant Rails form builder
|
|
379
385
|
test_files: []
|