govuk_design_system_formbuilder 3.0.1 → 3.0.3
Sign up to get free protection for your applications and to get access to all the features.
- 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/error_summary.rb +0 -1
- 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 +9 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7ff442cbd7ee104a7438e56fdb7b3730b3e2d7ee671d6ad324f338b5dcad5f68
|
4
|
+
data.tar.gz: 94a9bfbef680abadc21a5f3109265051e77d74f9b0ee8ac3dc850912160cae1b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b0a1fa2e14207c3210a2c42a00e78b59548cf60c6e443a93d4908973ddee95d7c0e66c988b3475a36ccaf521c846cebed8332e94839d256e3c5070032b43aac9
|
7
|
+
data.tar.gz: 415811c062dcb4965964e6cbbbb5412f57e4d14baba0d4b277b39294f632aad8642573b9f0f1298a6721c9ddb450b28230ff1778d8e68de3266b2ac585c49370
|
data/README.md
CHANGED
@@ -6,9 +6,9 @@
|
|
6
6
|
[![Gem](https://img.shields.io/gem/dt/govuk_design_system_formbuilder?logo=rubygems)](https://rubygems.org/gems/govuk_design_system_formbuilder)
|
7
7
|
[![Test Coverage](https://api.codeclimate.com/v1/badges/110136fb22341d3ba646/test_coverage)](https://codeclimate.com/github/DFE-Digital/govuk-formbuilder/test_coverage)
|
8
8
|
[![GitHub license](https://img.shields.io/github/license/DFE-Digital/govuk_design_system_formbuilder)](https://github.com/DFE-Digital/govuk-formbuilder/blob/main/LICENSE)
|
9
|
-
[![GOV.UK Design System Version](https://img.shields.io/badge/GOV.UK%20Design%20System-
|
10
|
-
[![Rails](https://img.shields.io/badge/Rails-6.1.
|
11
|
-
[![Ruby](https://img.shields.io/badge/Ruby-2.7.
|
9
|
+
[![GOV.UK Design System Version](https://img.shields.io/badge/GOV.UK%20Design%20System-4.1.0-brightgreen)](https://design-system.service.gov.uk)
|
10
|
+
[![Rails](https://img.shields.io/badge/Rails-6.1.5%20%E2%95%B1%207.0.3-E16D6D)](https://weblog.rubyonrails.org/releases/)
|
11
|
+
[![Ruby](https://img.shields.io/badge/Ruby-2.7.6%20%20%E2%95%B1%203.0.4%20%20%E2%95%B1%203.1.2-E16D6D)](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,29 @@
|
|
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.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Peter Yates
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-05-19 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.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 0.9.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: actionview
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -134,14 +134,14 @@ dependencies:
|
|
134
134
|
requirements:
|
135
135
|
- - "~>"
|
136
136
|
- !ruby/object:Gem::Version
|
137
|
-
version: 4.
|
137
|
+
version: 4.4.0
|
138
138
|
type: :development
|
139
139
|
prerelease: false
|
140
140
|
version_requirements: !ruby/object:Gem::Requirement
|
141
141
|
requirements:
|
142
142
|
- - "~>"
|
143
143
|
- !ruby/object:Gem::Version
|
144
|
-
version: 4.
|
144
|
+
version: 4.4.0
|
145
145
|
- !ruby/object:Gem::Dependency
|
146
146
|
name: simplecov
|
147
147
|
requirement: !ruby/object:Gem::Requirement
|
@@ -190,14 +190,14 @@ dependencies:
|
|
190
190
|
requirements:
|
191
191
|
- - "~>"
|
192
192
|
- !ruby/object:Gem::Version
|
193
|
-
version: 3.
|
193
|
+
version: 3.28.0
|
194
194
|
type: :development
|
195
195
|
prerelease: false
|
196
196
|
version_requirements: !ruby/object:Gem::Requirement
|
197
197
|
requirements:
|
198
198
|
- - "~>"
|
199
199
|
- !ruby/object:Gem::Version
|
200
|
-
version: 3.
|
200
|
+
version: 3.28.0
|
201
201
|
- !ruby/object:Gem::Dependency
|
202
202
|
name: rubypants
|
203
203
|
requirement: !ruby/object:Gem::Requirement
|