govuk_design_system_formbuilder 0.9.4 → 0.9.5

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: 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