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 +4 -4
- data/lib/govuk_design_system_formbuilder.rb +7 -1
- data/lib/govuk_design_system_formbuilder/builder.rb +5 -5
- data/lib/govuk_design_system_formbuilder/elements/check_boxes/collection_check_box.rb +1 -1
- data/lib/govuk_design_system_formbuilder/elements/check_boxes/label.rb +6 -3
- data/lib/govuk_design_system_formbuilder/elements/inputs/base.rb +79 -0
- data/lib/govuk_design_system_formbuilder/elements/inputs/email.rb +11 -0
- data/lib/govuk_design_system_formbuilder/elements/inputs/number.rb +11 -0
- data/lib/govuk_design_system_formbuilder/elements/inputs/phone.rb +11 -0
- data/lib/govuk_design_system_formbuilder/elements/inputs/text.rb +11 -0
- data/lib/govuk_design_system_formbuilder/elements/inputs/url.rb +11 -0
- data/lib/govuk_design_system_formbuilder/elements/label.rb +3 -2
- data/lib/govuk_design_system_formbuilder/elements/radios/collection_radio_button.rb +1 -1
- data/lib/govuk_design_system_formbuilder/elements/select.rb +3 -1
- data/lib/govuk_design_system_formbuilder/version.rb +1 -1
- metadata +39 -20
- data/lib/govuk_design_system_formbuilder/elements/input.rb +0 -78
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3ebd25c1817c070b758b43169675f06a6289f3ec74a5bacee308cc9ec5a92249
|
4
|
+
data.tar.gz: 8dd04473e33667cce31788b3fed030bea158f89de34f03ff09a57198159db116
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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::
|
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::
|
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::
|
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::
|
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::
|
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(@
|
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
|
-
|
7
|
+
|
8
|
+
@checkbox = checkbox
|
9
|
+
@value = value
|
10
|
+
@link_errors = link_errors
|
8
11
|
end
|
9
12
|
|
10
13
|
def html
|
11
|
-
@
|
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
|
@@ -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:
|
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
|
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
|
+
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-
|
11
|
+
date: 2019-09-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: actionview
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
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:
|
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/
|
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
|