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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4dde3d10e811cb75c61423193a1f19acd4c3f55c9abc7cbc0a72cee8aab40fde
4
- data.tar.gz: f7e7eb253f038b1a392ee0c111c36a336649b2bfdaeb1c83a4e71018eaab2936
3
+ metadata.gz: 434236656800572e0d71e47fe88ae20e5f50c6822f3cf344204f08a934032cb9
4
+ data.tar.gz: 4746012c475f169cf556fed6512ef89aa0187e95f351addc38b14da835db6137
5
5
  SHA512:
6
- metadata.gz: 8aeed919d9f6e25e6d2b70ebc16206ba7f41e72b86fe8ea20888ac6870bc81255f9ebb8c9ee7a3d6cebe0f067e0a5c13d3fbef5a46c3cfff9432a09c6967074b
7
- data.tar.gz: 16d556b230c3241c7f28c208a11eaf8bfa11634178dc52d8aa7f19c654271304acc6d3f1f916138a1fef66f1fa8c305fe48c2c6fe4e6ac41459b1777442059f7
6
+ metadata.gz: 6dae8d1bc5dec93e9088aa68f78df41fd06bd9a9815ee65919b14c7fcb96aeb27400390f83e122e540392b2254378c03d2e7455316f9e09d3c4694652e801ce1
7
+ data.tar.gz: 3f3a3a53125291c4822e2b557c3c6f0ed053e4127bf0b7561b5bc82ca5a1a14b601d01b591bf4dd6901979f3b0b55a018c52ecf74e769ef602ddaef05ea454d4
data/README.md CHANGED
@@ -9,7 +9,7 @@
9
9
  [![GitHub license](https://img.shields.io/github/license/DFE-Digital/govuk_design_system_formbuilder)](https://github.com/DFE-Digital/govuk_design_system_formbuilder/blob/master/LICENSE)
10
10
  [![GOV.UK Design System Version](https://img.shields.io/badge/GOV.UK%20Design%20System-3.12.0-brightgreen)](https://design-system.service.gov.uk)
11
11
  [![Rails](https://img.shields.io/badge/Ruby-2.6.7%20%E2%95%B1%202.7.3%20%E2%95%B1%203.0.1-E16D6D)](https://www.ruby-lang.org/en/downloads/)
12
- [![Ruby](https://img.shields.io/badge/Rails-6.0.3.6%20%E2%95%B1%206.1.3.1-E16D6D)](https://weblog.rubyonrails.org/releases/)
12
+ [![Ruby](https://img.shields.io/badge/Rails-6.0.3.7%20%E2%95%B1%206.1.3.2-E16D6D)](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
@@ -1,3 +1,3 @@
1
1
  module GOVUKDesignSystemFormBuilder
2
- VERSION = '2.5.3'.freeze
2
+ VERSION = '2.6.0b1'.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: 2.5.3
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-04 00:00:00.000000000 Z
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.1'
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.1'
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.1'
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.1'
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.1'
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.1'
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: '0'
370
+ version: 1.3.1
387
371
  requirements: []
388
372
  rubygems_version: 3.1.6
389
373
  signing_key: