govuk_design_system_formbuilder 0.9.4 → 0.9.5

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: 20e6f4eee756b2a59954309af86bb0468a16cf9cf1d3b01c35c0f9f62c1199b4
4
- data.tar.gz: ba834c6795f6e5c49e5f26628b5260eb2d51da1014af12a5f7b1f670d8b6c2d3
3
+ metadata.gz: 3ebd25c1817c070b758b43169675f06a6289f3ec74a5bacee308cc9ec5a92249
4
+ data.tar.gz: 8dd04473e33667cce31788b3fed030bea158f89de34f03ff09a57198159db116
5
5
  SHA512:
6
- metadata.gz: dc4c66869d8500766c9a950fb58d94a8ff2c9418ccb665f7d0c6cf3899b5644a0cb4299396c8bc1c638e3a431726a0e9a73d6e32dab1eeac8699687f5ecc5e24
7
- data.tar.gz: 05d41b7aca00b52c0b3d33164b9037ff8e6e5bba01564d897f33bb2554e7aa3201a813ed704623969d393e1d5e17f403f61c1e46650c3fd020a205a345078a17
6
+ metadata.gz: fb2a8f5fc36788c691e732ae5caf56ae0a7483f77ddd1ae668c8fcc35d96fcaeefa9e310eb682d815068546aa2250330e5ba54cf3e573dc3a55d6d47b3885deb
7
+ data.tar.gz: 8b69dc4d31cb8104458c2b14a241458c4f290a38b17000ea280f5a40e86531fbb08b2653d11da040ab639e013a3aef59637a26d730579c96094498eadfc95f2c
@@ -4,13 +4,19 @@ require 'govuk_design_system_formbuilder/base'
4
4
 
5
5
  require 'govuk_design_system_formbuilder/elements/hint'
6
6
  require 'govuk_design_system_formbuilder/elements/label'
7
- require 'govuk_design_system_formbuilder/elements/input'
8
7
  require 'govuk_design_system_formbuilder/elements/date'
9
8
  require 'govuk_design_system_formbuilder/elements/select'
10
9
  require 'govuk_design_system_formbuilder/elements/submit'
11
10
  require 'govuk_design_system_formbuilder/elements/text_area'
12
11
  require 'govuk_design_system_formbuilder/elements/file'
13
12
 
13
+ require 'govuk_design_system_formbuilder/elements/inputs/base'
14
+ require 'govuk_design_system_formbuilder/elements/inputs/email'
15
+ require 'govuk_design_system_formbuilder/elements/inputs/number'
16
+ require 'govuk_design_system_formbuilder/elements/inputs/phone'
17
+ require 'govuk_design_system_formbuilder/elements/inputs/text'
18
+ require 'govuk_design_system_formbuilder/elements/inputs/url'
19
+
14
20
  require 'govuk_design_system_formbuilder/elements/radios/collection'
15
21
  require 'govuk_design_system_formbuilder/elements/radios/collection_radio_button'
16
22
  require 'govuk_design_system_formbuilder/elements/radios/fieldset_radio_button'
@@ -23,7 +23,7 @@ module GOVUKDesignSystemFormBuilder
23
23
  # required: true,
24
24
  # placeholder: 'Ralph Wiggum'
25
25
  def govuk_text_field(attribute_name, hint_text: nil, label: {}, width: nil, **args, &block)
26
- Elements::Input.new(self, object_name, attribute_name, attribute_type: :text, hint_text: hint_text, label: label, width: width, **args, &block).html
26
+ Elements::Inputs::Text.new(self, object_name, attribute_name, hint_text: hint_text, label: label, width: width, **args, &block).html
27
27
  end
28
28
 
29
29
  # Generates a input of type +tel+
@@ -50,7 +50,7 @@ module GOVUKDesignSystemFormBuilder
50
50
  # required: true,
51
51
  # placeholder: '0123 456 789'
52
52
  def govuk_phone_field(attribute_name, hint_text: nil, label: {}, width: nil, **args, &block)
53
- Elements::Input.new(self, object_name, attribute_name, attribute_type: :phone, hint_text: hint_text, label: label, width: width, **args, &block).html
53
+ Elements::Inputs::Phone.new(self, object_name, attribute_name, hint_text: hint_text, label: label, width: width, **args, &block).html
54
54
  end
55
55
 
56
56
  # Generates a input of type +email+
@@ -75,7 +75,7 @@ module GOVUKDesignSystemFormBuilder
75
75
  # label: { text: 'Enter your email address' },
76
76
  # placeholder: 'ralph.wiggum@springfield.edu'
77
77
  def govuk_email_field(attribute_name, hint_text: nil, label: {}, width: nil, **args, &block)
78
- Elements::Input.new(self, object_name, attribute_name, attribute_type: :email, hint_text: hint_text, label: label, width: width, **args, &block).html
78
+ Elements::Inputs::Email.new(self, object_name, attribute_name, hint_text: hint_text, label: label, width: width, **args, &block).html
79
79
  end
80
80
 
81
81
  # Generates a input of type +url+
@@ -100,7 +100,7 @@ module GOVUKDesignSystemFormBuilder
100
100
  # placeholder: 'https://www.gov.uk',
101
101
  # autocomplete: 'url'
102
102
  def govuk_url_field(attribute_name, hint_text: nil, label: {}, width: nil, **args, &block)
103
- Elements::Input.new(self, object_name, attribute_name, attribute_type: :url, hint_text: hint_text, label: label, width: width, **args, &block).html
103
+ Elements::Inputs::URL.new(self, object_name, attribute_name, hint_text: hint_text, label: label, width: width, **args, &block).html
104
104
  end
105
105
 
106
106
  # Generates a input of type +number+
@@ -127,7 +127,7 @@ module GOVUKDesignSystemFormBuilder
127
127
  # max: 150,
128
128
  # step: 5
129
129
  def govuk_number_field(attribute_name, hint_text: nil, label: {}, width: nil, **args, &block)
130
- Elements::Input.new(self, object_name, attribute_name, attribute_type: :number, hint_text: hint_text, label: label, width: width, **args, &block).html
130
+ Elements::Inputs::Number.new(self, object_name, attribute_name, hint_text: hint_text, label: label, width: width, **args, &block).html
131
131
  end
132
132
 
133
133
  # Generates a +textarea+ element with a label, optional hint. Also offers
@@ -30,7 +30,7 @@ module GOVUKDesignSystemFormBuilder
30
30
  private
31
31
 
32
32
  def label_element
33
- @label_element ||= Label.new(@checkbox, @object_name, @attribute_name, value: @value)
33
+ @label_element ||= Label.new(@builder, @object_name, @attribute_name, @checkbox, value: @value, link_errors: @link_errors)
34
34
  end
35
35
 
36
36
  def hint_element
@@ -2,13 +2,16 @@ module GOVUKDesignSystemFormBuilder
2
2
  module Elements
3
3
  module CheckBoxes
4
4
  class Label < GOVUKDesignSystemFormBuilder::Base
5
- def initialize(builder, object_name, attribute_name, value:)
5
+ def initialize(builder, object_name, attribute_name, checkbox, value:, link_errors: true)
6
6
  super(builder, object_name, attribute_name)
7
- @value = value
7
+
8
+ @checkbox = checkbox
9
+ @value = value
10
+ @link_errors = link_errors
8
11
  end
9
12
 
10
13
  def html
11
- @builder.label(for: field_id, class: label_classes)
14
+ @checkbox.label(for: field_id(link_errors: @link_errors), class: label_classes)
12
15
  end
13
16
 
14
17
  private
@@ -0,0 +1,79 @@
1
+ module GOVUKDesignSystemFormBuilder
2
+ module Elements
3
+ module Inputs
4
+ class Base < GOVUKDesignSystemFormBuilder::Base
5
+ def initialize(builder, object_name, attribute_name, hint_text:, label:, width:, **extra_args, &block)
6
+ super(builder, object_name, attribute_name, &block)
7
+
8
+ @width = width
9
+ @extra_args = extra_args
10
+ @label = label
11
+ @hint_text = hint_text
12
+ end
13
+
14
+ def html
15
+ Containers::FormGroup.new(@builder, @object_name, @attribute_name).html do
16
+ @builder.safe_join(
17
+ [
18
+ label_element.html,
19
+ hint_element.html,
20
+ supplemental_content.html,
21
+ error_element.html,
22
+ @builder.send(
23
+ builder_method,
24
+ @attribute_name,
25
+ id: field_id(link_errors: true),
26
+ class: input_classes,
27
+ aria: {
28
+ describedby: described_by(
29
+ hint_id,
30
+ error_id,
31
+ supplemental_id
32
+ )
33
+ },
34
+ **@extra_args
35
+ )
36
+ ]
37
+ )
38
+ end
39
+ end
40
+
41
+ private
42
+
43
+ def input_classes
44
+ %w(govuk-input).push(width_classes, error_classes).compact
45
+ end
46
+
47
+ def error_classes
48
+ ('govuk-input--error') if has_errors?
49
+ end
50
+
51
+ def width_classes
52
+ return if @width.blank?
53
+
54
+ case @width
55
+ when nil then nil
56
+
57
+ # fixed (character) widths
58
+ when 20 then 'govuk-input--width-20'
59
+ when 10 then 'govuk-input--width-10'
60
+ when 5 then 'govuk-input--width-5'
61
+ when 4 then 'govuk-input--width-4'
62
+ when 3 then 'govuk-input--width-3'
63
+ when 2 then 'govuk-input--width-2'
64
+
65
+ # fluid widths
66
+ when 'full' then 'govuk-!-width-full'
67
+ when 'three-quarters' then 'govuk-!-width-three-quarters'
68
+ when 'two-thirds' then 'govuk-!-width-two-thirds'
69
+ when 'one-half' then 'govuk-!-width-one-half'
70
+ when 'one-third' then 'govuk-!-width-one-third'
71
+ when 'one-quarter' then 'govuk-!-width-one-quarter'
72
+
73
+ else fail(ArgumentError, "invalid width '#{@width}'")
74
+ end
75
+ end
76
+ end
77
+ end
78
+ end
79
+ end
@@ -0,0 +1,11 @@
1
+ module GOVUKDesignSystemFormBuilder
2
+ module Elements
3
+ module Inputs
4
+ class Email < Base
5
+ def builder_method
6
+ :email_field
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module GOVUKDesignSystemFormBuilder
2
+ module Elements
3
+ module Inputs
4
+ class Number < Base
5
+ def builder_method
6
+ :number_field
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module GOVUKDesignSystemFormBuilder
2
+ module Elements
3
+ module Inputs
4
+ class Phone < Base
5
+ def builder_method
6
+ :phone_field
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module GOVUKDesignSystemFormBuilder
2
+ module Elements
3
+ module Inputs
4
+ class Text < Base
5
+ def builder_method
6
+ :text_field
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module GOVUKDesignSystemFormBuilder
2
+ module Elements
3
+ module Inputs
4
+ class URL < Base
5
+ def builder_method
6
+ :url_field
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -1,7 +1,7 @@
1
1
  module GOVUKDesignSystemFormBuilder
2
2
  module Elements
3
3
  class Label < GOVUKDesignSystemFormBuilder::Base
4
- def initialize(builder, object_name, attribute_name, text: nil, value: nil, size: nil, hidden: false, radio: false, checkbox: false, tag: nil)
4
+ def initialize(builder, object_name, attribute_name, text: nil, value: nil, size: nil, hidden: false, radio: false, checkbox: false, tag: nil, link_errors: true)
5
5
  super(builder, object_name, attribute_name)
6
6
 
7
7
  @text = label_text(text, hidden)
@@ -10,6 +10,7 @@ module GOVUKDesignSystemFormBuilder
10
10
  @radio_class = radio_class(radio)
11
11
  @checkbox_class = checkbox_class(checkbox)
12
12
  @tag = tag
13
+ @link_errors = link_errors
13
14
  end
14
15
 
15
16
  def html
@@ -28,7 +29,7 @@ module GOVUKDesignSystemFormBuilder
28
29
  @builder.label(
29
30
  @attribute_name,
30
31
  value: @value,
31
- for: field_id(link_errors: true),
32
+ for: field_id(link_errors: @link_errors),
32
33
  class: %w(govuk-label).push(@size_class, @weight_class, @radio_class, @checkbox_class).compact
33
34
  ) do
34
35
  @text
@@ -41,7 +41,7 @@ module GOVUKDesignSystemFormBuilder
41
41
  end
42
42
 
43
43
  def label_element
44
- @label_element ||= Elements::Label.new(@builder, @object_name, @attribute_name, text: @text, value: @value, radio: true, size: label_size)
44
+ @label_element ||= Elements::Label.new(@builder, @object_name, @attribute_name, text: @text, value: @value, radio: true, size: label_size, link_errors: @link_errors)
45
45
  end
46
46
 
47
47
  def label_size
@@ -45,7 +45,9 @@ module GOVUKDesignSystemFormBuilder
45
45
  end
46
46
 
47
47
  def select_classes
48
- %w(govuk-select)
48
+ %w(govuk-select).tap do |classes|
49
+ classes.push('govuk-select--error') if has_errors?
50
+ end
49
51
  end
50
52
  end
51
53
  end
@@ -1,3 +1,3 @@
1
1
  module GOVUKDesignSystemFormBuilder
2
- VERSION = '0.9.4'.freeze
2
+ VERSION = '0.9.5'.freeze
3
3
  end
metadata CHANGED
@@ -1,29 +1,57 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: govuk_design_system_formbuilder
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.4
4
+ version: 0.9.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Yates
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-09-18 00:00:00.000000000 Z
11
+ date: 2019-09-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: rails
14
+ name: actionview
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 5.2.3
19
+ version: '6.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: 5.2.3
26
+ version: '6.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: activemodel
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '6.0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '6.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: activesupport
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '6.0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '6.0'
27
55
  - !ruby/object:Gem::Dependency
28
56
  name: govuk-lint
29
57
  requirement: !ruby/object:Gem::Requirement
@@ -114,20 +142,6 @@ dependencies:
114
142
  - - "~>"
115
143
  - !ruby/object:Gem::Version
116
144
  version: '0'
117
- - !ruby/object:Gem::Dependency
118
- name: sqlite3
119
- requirement: !ruby/object:Gem::Requirement
120
- requirements:
121
- - - "~>"
122
- - !ruby/object:Gem::Version
123
- version: '0'
124
- type: :development
125
- prerelease: false
126
- version_requirements: !ruby/object:Gem::Requirement
127
- requirements:
128
- - - "~>"
129
- - !ruby/object:Gem::Version
130
- version: '0'
131
145
  - !ruby/object:Gem::Dependency
132
146
  name: nanoc
133
147
  requirement: !ruby/object:Gem::Requirement
@@ -256,7 +270,12 @@ files:
256
270
  - lib/govuk_design_system_formbuilder/elements/error_summary.rb
257
271
  - lib/govuk_design_system_formbuilder/elements/file.rb
258
272
  - lib/govuk_design_system_formbuilder/elements/hint.rb
259
- - lib/govuk_design_system_formbuilder/elements/input.rb
273
+ - lib/govuk_design_system_formbuilder/elements/inputs/base.rb
274
+ - lib/govuk_design_system_formbuilder/elements/inputs/email.rb
275
+ - lib/govuk_design_system_formbuilder/elements/inputs/number.rb
276
+ - lib/govuk_design_system_formbuilder/elements/inputs/phone.rb
277
+ - lib/govuk_design_system_formbuilder/elements/inputs/text.rb
278
+ - lib/govuk_design_system_formbuilder/elements/inputs/url.rb
260
279
  - lib/govuk_design_system_formbuilder/elements/label.rb
261
280
  - lib/govuk_design_system_formbuilder/elements/radios/collection.rb
262
281
  - lib/govuk_design_system_formbuilder/elements/radios/collection_radio_button.rb
@@ -1,78 +0,0 @@
1
- module GOVUKDesignSystemFormBuilder
2
- module Elements
3
- class Input < GOVUKDesignSystemFormBuilder::Base
4
- def initialize(builder, object_name, attribute_name, attribute_type:, hint_text:, label:, width:, **extra_args, &block)
5
- super(builder, object_name, attribute_name, &block)
6
-
7
- @width = width
8
- @extra_args = extra_args
9
- @builder_method = [attribute_type, 'field'].join('_')
10
- @label = label
11
- @hint_text = hint_text
12
- end
13
-
14
- def html
15
- Containers::FormGroup.new(@builder, @object_name, @attribute_name).html do
16
- @builder.safe_join(
17
- [
18
- label_element.html,
19
- hint_element.html,
20
- supplemental_content.html,
21
- error_element.html,
22
- @builder.send(
23
- @builder_method,
24
- @attribute_name,
25
- id: field_id(link_errors: true),
26
- class: input_classes,
27
- aria: {
28
- describedby: described_by(
29
- hint_id,
30
- error_id,
31
- supplemental_id
32
- )
33
- },
34
- **@extra_args
35
- )
36
- ]
37
- )
38
- end
39
- end
40
-
41
- private
42
-
43
- def input_classes
44
- %w(govuk-input).push(width_classes, error_classes).compact
45
- end
46
-
47
- def error_classes
48
- ('govuk-input--error') if has_errors?
49
- end
50
-
51
- def width_classes
52
- return if @width.blank?
53
-
54
- case @width
55
- when nil then nil
56
-
57
- # fixed (character) widths
58
- when 20 then 'govuk-input--width-20'
59
- when 10 then 'govuk-input--width-10'
60
- when 5 then 'govuk-input--width-5'
61
- when 4 then 'govuk-input--width-4'
62
- when 3 then 'govuk-input--width-3'
63
- when 2 then 'govuk-input--width-2'
64
-
65
- # fluid widths
66
- when 'full' then 'govuk-!-width-full'
67
- when 'three-quarters' then 'govuk-!-width-three-quarters'
68
- when 'two-thirds' then 'govuk-!-width-two-thirds'
69
- when 'one-half' then 'govuk-!-width-one-half'
70
- when 'one-third' then 'govuk-!-width-one-third'
71
- when 'one-quarter' then 'govuk-!-width-one-quarter'
72
-
73
- else fail(ArgumentError, "invalid width '#{@width}'")
74
- end
75
- end
76
- end
77
- end
78
- end