govuk_design_system_formbuilder 2.5.3 → 2.6.0b1

Sign up to get free protection for your applications and to get access to all the features.
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: