govuk_design_system_formbuilder 2.5.3 → 2.6.0b1
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 +1 -1
- data/lib/govuk_design_system_formbuilder.rb +2 -0
- data/lib/govuk_design_system_formbuilder/base.rb +15 -15
- data/lib/govuk_design_system_formbuilder/builder_helper.rb +65 -0
- data/lib/govuk_design_system_formbuilder/proxy.rb +13 -0
- data/lib/govuk_design_system_formbuilder/version.rb +1 -1
- metadata +12 -28
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 434236656800572e0d71e47fe88ae20e5f50c6822f3cf344204f08a934032cb9
|
|
4
|
+
data.tar.gz: 4746012c475f169cf556fed6512ef89aa0187e95f351addc38b14da835db6137
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 6dae8d1bc5dec93e9088aa68f78df41fd06bd9a9815ee65919b14c7fcb96aeb27400390f83e122e540392b2254378c03d2e7455316f9e09d3c4694652e801ce1
|
|
7
|
+
data.tar.gz: 3f3a3a53125291c4822e2b557c3c6f0ed053e4127bf0b7561b5bc82ca5a1a14b601d01b591bf4dd6901979f3b0b55a018c52ecf74e769ef602ddaef05ea454d4
|
data/README.md
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
[](https://github.com/DFE-Digital/govuk_design_system_formbuilder/blob/master/LICENSE)
|
|
10
10
|
[](https://design-system.service.gov.uk)
|
|
11
11
|
[](https://www.ruby-lang.org/en/downloads/)
|
|
12
|
-
[](https://weblog.rubyonrails.org/releases/)
|
|
13
13
|
|
|
14
14
|
This library provides an easy-to-use form builder for the [GOV.UK Design System](https://design-system.service.gov.uk/).
|
|
15
15
|
|
|
@@ -108,6 +108,8 @@ module GOVUKDesignSystemFormBuilder
|
|
|
108
108
|
include GOVUKDesignSystemFormBuilder::Builder
|
|
109
109
|
end
|
|
110
110
|
|
|
111
|
+
class FormBuilderProxy < FormBuilder; end
|
|
112
|
+
|
|
111
113
|
# Disable Rails' div.field_with_error wrapper
|
|
112
114
|
ActionView::Base.field_error_proc = ->(html_tag, _instance) { html_tag }
|
|
113
115
|
end
|
|
@@ -15,21 +15,6 @@ module GOVUKDesignSystemFormBuilder
|
|
|
15
15
|
html || ''
|
|
16
16
|
end
|
|
17
17
|
|
|
18
|
-
private
|
|
19
|
-
|
|
20
|
-
# returns the attributes bound to the object that are
|
|
21
|
-
# required to build all contained elements
|
|
22
|
-
#
|
|
23
|
-
# @return [GOVUKDesignSystemFormBuilder::FormBuilder, Symbol, Symbol] an array containing the
|
|
24
|
-
# builder, object name and attribute name
|
|
25
|
-
def bound
|
|
26
|
-
[@builder, @object_name, @attribute_name]
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
def brand(override = nil)
|
|
30
|
-
override || config.brand
|
|
31
|
-
end
|
|
32
|
-
|
|
33
18
|
# returns the id value used for the input
|
|
34
19
|
#
|
|
35
20
|
# @note field_id is overridden so that the error summary can link to the
|
|
@@ -51,6 +36,21 @@ module GOVUKDesignSystemFormBuilder
|
|
|
51
36
|
end
|
|
52
37
|
end
|
|
53
38
|
|
|
39
|
+
private
|
|
40
|
+
|
|
41
|
+
# returns the attributes bound to the object that are
|
|
42
|
+
# required to build all contained elements
|
|
43
|
+
#
|
|
44
|
+
# @return [GOVUKDesignSystemFormBuilder::FormBuilder, Symbol, Symbol] an array containing the
|
|
45
|
+
# builder, object name and attribute name
|
|
46
|
+
def bound
|
|
47
|
+
[@builder, @object_name, @attribute_name]
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def brand(override = nil)
|
|
51
|
+
override || config.brand
|
|
52
|
+
end
|
|
53
|
+
|
|
54
54
|
def has_errors?
|
|
55
55
|
@builder.object.respond_to?(:errors) &&
|
|
56
56
|
@builder.object.errors.any? &&
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
module GOVUKDesignSystemFormBuilder
|
|
2
|
+
# NOTE: this is currently considered experimental, it's likely to change based on feedback.
|
|
3
|
+
#
|
|
4
|
+
# BuilderHelper contains methods that expose the form builder's functionality
|
|
5
|
+
# externally. The objectives are to allow:
|
|
6
|
+
#
|
|
7
|
+
# * rendering the error summary outside of the form
|
|
8
|
+
#
|
|
9
|
+
# * setting the id of custom form elements (rich text editors, date pickers,
|
|
10
|
+
# sliders, etc) using the formbuilder's internal logic, allowing them to be
|
|
11
|
+
# linked from the error summary
|
|
12
|
+
module BuilderHelper
|
|
13
|
+
# Returns the form builder generated id for an object's attribute, allowing
|
|
14
|
+
# users to force their custom element ids to match those that'll be generated
|
|
15
|
+
# by the error summary.
|
|
16
|
+
# @param object [ActiveRecord::Base,ActiveModel::Model,Object] the object that we want to
|
|
17
|
+
# generate an id for
|
|
18
|
+
# @param object_name [Symbol] the object's name, the singular version of the object's class
|
|
19
|
+
# name, e.g., +Person+ is +:person+.
|
|
20
|
+
# @param attribute_name [Symbol] the attribute we're generating an id for
|
|
21
|
+
# @param value [Object] the value of the attribute. Only necessary for fields with
|
|
22
|
+
# multiple form elements like radio buttons and checkboxes
|
|
23
|
+
# @param link_errors [Boolean] toggles whether or not to override the field id with the
|
|
24
|
+
# error id when there are errors on the +object+. Only relevant for radio buttons
|
|
25
|
+
# and check boxes.
|
|
26
|
+
def govuk_field_id(object, attribute_name, object_name = nil, value: nil, link_errors: true)
|
|
27
|
+
(object_name = retrieve_object_name(object)) if object_name.nil?
|
|
28
|
+
|
|
29
|
+
proxy_base(object, object_name, attribute_name, value: value).field_id(link_errors: link_errors)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# Renders an error summary
|
|
33
|
+
# @param object [ActiveRecord::Base,ActiveModel::Model,Object] the object we'll be rendering
|
|
34
|
+
# the errors for
|
|
35
|
+
# @param object_name [Symbol] the object's name, the singular version of the object's class
|
|
36
|
+
# name, e.g., +Person+ is +:person+. If none is supplied we'll try to infer it from
|
|
37
|
+
# the object, so it'll probably be necessary for regular Ruby objects
|
|
38
|
+
# @option args [Array] options passed through to the builder's +#govuk_error_summary+
|
|
39
|
+
# @option kwargs [Hash] keyword options passed through to the builder's +#govuk_error_summary+
|
|
40
|
+
#
|
|
41
|
+
# @example
|
|
42
|
+
# = govuk_error_summary(@registration)
|
|
43
|
+
#
|
|
44
|
+
# @see https://design-system.service.gov.uk/components/error-summary/ GOV.UK error summary
|
|
45
|
+
def govuk_error_summary(object, object_name = nil, *args, **kwargs)
|
|
46
|
+
(object_name = retrieve_object_name(object)) if object_name.nil?
|
|
47
|
+
|
|
48
|
+
proxy_builder(object, object_name, self, {}).govuk_error_summary(*args, **kwargs)
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
private
|
|
52
|
+
|
|
53
|
+
def proxy_base(object, object_name, attribute_name, value: nil)
|
|
54
|
+
GOVUKDesignSystemFormBuilder::Proxy.new(object, object_name, attribute_name, value: value)
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def proxy_builder(object, object_name, template, options)
|
|
58
|
+
GOVUKDesignSystemFormBuilder::FormBuilderProxy.new(object_name, object, template, options)
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def retrieve_object_name(object)
|
|
62
|
+
object.to_model.model_name.singular
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
require_relative 'base'
|
|
2
|
+
|
|
3
|
+
module GOVUKDesignSystemFormBuilder
|
|
4
|
+
class Proxy < GOVUKDesignSystemFormBuilder::Base
|
|
5
|
+
NullBuilder = Struct.new(:object)
|
|
6
|
+
|
|
7
|
+
def initialize(object, object_name, attribute_name, value: nil)
|
|
8
|
+
super(NullBuilder.new(object), object_name, attribute_name)
|
|
9
|
+
|
|
10
|
+
@value = value
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
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: 2.
|
|
4
|
+
version: 2.6.0b1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Peter Yates
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2021-06-
|
|
11
|
+
date: 2021-06-09 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: deep_merge
|
|
@@ -28,62 +28,44 @@ dependencies:
|
|
|
28
28
|
name: actionview
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
30
30
|
requirements:
|
|
31
|
-
- - "~>"
|
|
32
|
-
- !ruby/object:Gem::Version
|
|
33
|
-
version: 6.1.3.1
|
|
34
31
|
- - ">="
|
|
35
32
|
- !ruby/object:Gem::Version
|
|
36
|
-
version: '6.
|
|
33
|
+
version: '6.0'
|
|
37
34
|
type: :runtime
|
|
38
35
|
prerelease: false
|
|
39
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
40
37
|
requirements:
|
|
41
|
-
- - "~>"
|
|
42
|
-
- !ruby/object:Gem::Version
|
|
43
|
-
version: 6.1.3.1
|
|
44
38
|
- - ">="
|
|
45
39
|
- !ruby/object:Gem::Version
|
|
46
|
-
version: '6.
|
|
40
|
+
version: '6.0'
|
|
47
41
|
- !ruby/object:Gem::Dependency
|
|
48
42
|
name: activemodel
|
|
49
43
|
requirement: !ruby/object:Gem::Requirement
|
|
50
44
|
requirements:
|
|
51
|
-
- - "~>"
|
|
52
|
-
- !ruby/object:Gem::Version
|
|
53
|
-
version: 6.1.3.1
|
|
54
45
|
- - ">="
|
|
55
46
|
- !ruby/object:Gem::Version
|
|
56
|
-
version: '6.
|
|
47
|
+
version: '6.0'
|
|
57
48
|
type: :runtime
|
|
58
49
|
prerelease: false
|
|
59
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
60
51
|
requirements:
|
|
61
|
-
- - "~>"
|
|
62
|
-
- !ruby/object:Gem::Version
|
|
63
|
-
version: 6.1.3.1
|
|
64
52
|
- - ">="
|
|
65
53
|
- !ruby/object:Gem::Version
|
|
66
|
-
version: '6.
|
|
54
|
+
version: '6.0'
|
|
67
55
|
- !ruby/object:Gem::Dependency
|
|
68
56
|
name: activesupport
|
|
69
57
|
requirement: !ruby/object:Gem::Requirement
|
|
70
58
|
requirements:
|
|
71
|
-
- - "~>"
|
|
72
|
-
- !ruby/object:Gem::Version
|
|
73
|
-
version: 6.1.3.1
|
|
74
59
|
- - ">="
|
|
75
60
|
- !ruby/object:Gem::Version
|
|
76
|
-
version: '6.
|
|
61
|
+
version: '6.0'
|
|
77
62
|
type: :runtime
|
|
78
63
|
prerelease: false
|
|
79
64
|
version_requirements: !ruby/object:Gem::Requirement
|
|
80
65
|
requirements:
|
|
81
|
-
- - "~>"
|
|
82
|
-
- !ruby/object:Gem::Version
|
|
83
|
-
version: 6.1.3.1
|
|
84
66
|
- - ">="
|
|
85
67
|
- !ruby/object:Gem::Version
|
|
86
|
-
version: '6.
|
|
68
|
+
version: '6.0'
|
|
87
69
|
- !ruby/object:Gem::Dependency
|
|
88
70
|
name: rubocop-govuk
|
|
89
71
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -313,6 +295,7 @@ files:
|
|
|
313
295
|
- lib/govuk_design_system_formbuilder.rb
|
|
314
296
|
- lib/govuk_design_system_formbuilder/base.rb
|
|
315
297
|
- lib/govuk_design_system_formbuilder/builder.rb
|
|
298
|
+
- lib/govuk_design_system_formbuilder/builder_helper.rb
|
|
316
299
|
- lib/govuk_design_system_formbuilder/containers/button_group.rb
|
|
317
300
|
- lib/govuk_design_system_formbuilder/containers/character_count.rb
|
|
318
301
|
- lib/govuk_design_system_formbuilder/containers/check_boxes.rb
|
|
@@ -348,6 +331,7 @@ files:
|
|
|
348
331
|
- lib/govuk_design_system_formbuilder/elements/select.rb
|
|
349
332
|
- lib/govuk_design_system_formbuilder/elements/submit.rb
|
|
350
333
|
- lib/govuk_design_system_formbuilder/elements/text_area.rb
|
|
334
|
+
- lib/govuk_design_system_formbuilder/proxy.rb
|
|
351
335
|
- lib/govuk_design_system_formbuilder/refinements/prefixable_array.rb
|
|
352
336
|
- lib/govuk_design_system_formbuilder/traits/caption.rb
|
|
353
337
|
- lib/govuk_design_system_formbuilder/traits/collection_item.rb
|
|
@@ -381,9 +365,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
381
365
|
version: '0'
|
|
382
366
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
383
367
|
requirements:
|
|
384
|
-
- - "
|
|
368
|
+
- - ">"
|
|
385
369
|
- !ruby/object:Gem::Version
|
|
386
|
-
version:
|
|
370
|
+
version: 1.3.1
|
|
387
371
|
requirements: []
|
|
388
372
|
rubygems_version: 3.1.6
|
|
389
373
|
signing_key:
|