govuk_design_system_formbuilder 1.0.0 → 1.1.0
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 +4 -4
- data/lib/govuk_design_system_formbuilder/base.rb +5 -48
- data/lib/govuk_design_system_formbuilder/builder.rb +16 -10
- data/lib/govuk_design_system_formbuilder/containers/check_boxes_fieldset.rb +5 -2
- data/lib/govuk_design_system_formbuilder/containers/fieldset.rb +23 -8
- data/lib/govuk_design_system_formbuilder/containers/form_group.rb +1 -1
- data/lib/govuk_design_system_formbuilder/containers/radio_buttons_fieldset.rb +5 -2
- data/lib/govuk_design_system_formbuilder/containers/radios.rb +3 -1
- data/lib/govuk_design_system_formbuilder/containers/supplemental.rb +5 -6
- data/lib/govuk_design_system_formbuilder/elements/check_boxes/collection.rb +6 -2
- data/lib/govuk_design_system_formbuilder/elements/check_boxes/collection_check_box.rb +6 -2
- data/lib/govuk_design_system_formbuilder/elements/check_boxes/fieldset_check_box.rb +4 -1
- data/lib/govuk_design_system_formbuilder/elements/check_boxes/hint.rb +3 -1
- data/lib/govuk_design_system_formbuilder/elements/check_boxes/label.rb +1 -1
- data/lib/govuk_design_system_formbuilder/elements/date.rb +6 -2
- data/lib/govuk_design_system_formbuilder/elements/error_message.rb +3 -1
- data/lib/govuk_design_system_formbuilder/elements/error_summary.rb +3 -1
- data/lib/govuk_design_system_formbuilder/elements/file.rb +6 -1
- data/lib/govuk_design_system_formbuilder/elements/hint.rb +12 -2
- data/lib/govuk_design_system_formbuilder/elements/inputs/email.rb +6 -0
- data/lib/govuk_design_system_formbuilder/elements/inputs/number.rb +6 -0
- data/lib/govuk_design_system_formbuilder/elements/inputs/phone.rb +6 -0
- data/lib/govuk_design_system_formbuilder/elements/inputs/text.rb +6 -0
- data/lib/govuk_design_system_formbuilder/elements/inputs/url.rb +6 -0
- data/lib/govuk_design_system_formbuilder/elements/label.rb +5 -3
- data/lib/govuk_design_system_formbuilder/elements/radios/collection.rb +6 -2
- data/lib/govuk_design_system_formbuilder/elements/radios/collection_radio_button.rb +8 -4
- data/lib/govuk_design_system_formbuilder/elements/radios/fieldset_radio_button.rb +3 -0
- data/lib/govuk_design_system_formbuilder/elements/select.rb +6 -1
- data/lib/govuk_design_system_formbuilder/elements/submit.rb +1 -1
- data/lib/govuk_design_system_formbuilder/elements/text_area.rb +39 -6
- data/lib/govuk_design_system_formbuilder/traits/collection_item.rb +16 -0
- data/lib/govuk_design_system_formbuilder/traits/conditional.rb +17 -0
- data/lib/govuk_design_system_formbuilder/traits/error.rb +17 -0
- data/lib/govuk_design_system_formbuilder/traits/hint.rb +17 -0
- data/lib/govuk_design_system_formbuilder/traits/input.rb +77 -0
- data/lib/govuk_design_system_formbuilder/traits/label.rb +11 -0
- data/lib/govuk_design_system_formbuilder/traits/localisation.rb +41 -0
- data/lib/govuk_design_system_formbuilder/traits/supplemental.rb +17 -0
- data/lib/govuk_design_system_formbuilder/version.rb +1 -1
- data/lib/govuk_design_system_formbuilder.rb +78 -43
- metadata +43 -8
- data/lib/govuk_design_system_formbuilder/elements/inputs/base.rb +0 -79
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
module GOVUKDesignSystemFormBuilder
|
|
2
2
|
module Elements
|
|
3
|
-
class Submit <
|
|
3
|
+
class Submit < Base
|
|
4
4
|
def initialize(builder, text, warning:, secondary:, prevent_double_click:, validate:, &block)
|
|
5
5
|
fail ArgumentError, 'buttons can be warning or secondary' if warning && secondary
|
|
6
6
|
|
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
module GOVUKDesignSystemFormBuilder
|
|
2
2
|
module Elements
|
|
3
3
|
class TextArea < Base
|
|
4
|
+
include Traits::Error
|
|
5
|
+
include Traits::Hint
|
|
6
|
+
include Traits::Label
|
|
7
|
+
include Traits::Supplemental
|
|
8
|
+
|
|
4
9
|
def initialize(builder, object_name, attribute_name, hint_text:, label:, rows:, max_words:, max_chars:, threshold:, **extra_args, &block)
|
|
5
10
|
super(builder, object_name, attribute_name, &block)
|
|
11
|
+
|
|
6
12
|
@label = label
|
|
7
13
|
@hint_text = hint_text
|
|
8
14
|
@extra_args = extra_args
|
|
@@ -23,14 +29,11 @@ module GOVUKDesignSystemFormBuilder
|
|
|
23
29
|
id: field_id(link_errors: true),
|
|
24
30
|
class: govuk_textarea_classes,
|
|
25
31
|
aria: {
|
|
26
|
-
describedby: described_by(
|
|
27
|
-
hint_id,
|
|
28
|
-
error_id,
|
|
29
|
-
supplemental_id
|
|
30
|
-
)
|
|
32
|
+
describedby: described_by(hint_id, error_id, supplemental_id, limit_description_id)
|
|
31
33
|
},
|
|
32
34
|
**@extra_args.merge(rows: @rows)
|
|
33
|
-
)
|
|
35
|
+
),
|
|
36
|
+
limit_description
|
|
34
37
|
].flatten.compact
|
|
35
38
|
)
|
|
36
39
|
end
|
|
@@ -46,9 +49,39 @@ module GOVUKDesignSystemFormBuilder
|
|
|
46
49
|
end
|
|
47
50
|
end
|
|
48
51
|
|
|
52
|
+
# Provides an id for use by the textual description of character and word limits.
|
|
53
|
+
#
|
|
54
|
+
# @note In order for the GOV.UK Frontend JavaScript to pick up this associated field
|
|
55
|
+
# it has to have the same id as the text area with the additional suffix of '-info'
|
|
56
|
+
def limit_id
|
|
57
|
+
[field_id(link_errors: true), 'info'].join('-')
|
|
58
|
+
end
|
|
59
|
+
|
|
49
60
|
def limit?
|
|
50
61
|
@max_words || @max_chars
|
|
51
62
|
end
|
|
63
|
+
|
|
64
|
+
def limit_description
|
|
65
|
+
return nil unless limit?
|
|
66
|
+
|
|
67
|
+
content_tag('span', id: limit_id, class: %w(govuk-hint govuk-character-count__message), aria: { live: 'polite' }) do
|
|
68
|
+
"You can enter up to #{limit_quantity} #{limit_type}"
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def limit_quantity
|
|
73
|
+
@max_words || @max_chars
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def limit_type
|
|
77
|
+
@max_words.present? ? 'words' : 'characters'
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
def limit_description_id
|
|
81
|
+
return nil unless limit?
|
|
82
|
+
|
|
83
|
+
limit_id
|
|
84
|
+
end
|
|
52
85
|
end
|
|
53
86
|
end
|
|
54
87
|
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
module GOVUKDesignSystemFormBuilder
|
|
2
|
+
module Traits
|
|
3
|
+
module Conditional
|
|
4
|
+
private
|
|
5
|
+
|
|
6
|
+
def conditional_id
|
|
7
|
+
build_id('conditional')
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def wrap_conditional(block)
|
|
11
|
+
content_tag('div', class: conditional_classes, id: conditional_id) do
|
|
12
|
+
capture { block.call }
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
module GOVUKDesignSystemFormBuilder
|
|
2
|
+
module Traits
|
|
3
|
+
module Error
|
|
4
|
+
def error_id
|
|
5
|
+
return nil unless has_errors?
|
|
6
|
+
|
|
7
|
+
build_id('error')
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
private
|
|
11
|
+
|
|
12
|
+
def error_element
|
|
13
|
+
@error_element ||= Elements::ErrorMessage.new(@builder, @object_name, @attribute_name)
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
module GOVUKDesignSystemFormBuilder
|
|
2
|
+
module Traits
|
|
3
|
+
module Hint
|
|
4
|
+
def hint_id
|
|
5
|
+
return nil if @hint_text.blank?
|
|
6
|
+
|
|
7
|
+
build_id('hint')
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
private
|
|
11
|
+
|
|
12
|
+
def hint_element
|
|
13
|
+
@hint_element ||= Elements::Hint.new(@builder, @object_name, @attribute_name, @hint_text)
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
module GOVUKDesignSystemFormBuilder
|
|
2
|
+
module Traits
|
|
3
|
+
module Input
|
|
4
|
+
def initialize(builder, object_name, attribute_name, 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
|
+
@label = label
|
|
10
|
+
@hint_text = hint_text
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def html
|
|
14
|
+
Containers::FormGroup.new(@builder, @object_name, @attribute_name).html do
|
|
15
|
+
safe_join(
|
|
16
|
+
[
|
|
17
|
+
label_element.html,
|
|
18
|
+
hint_element.html,
|
|
19
|
+
supplemental_content.html,
|
|
20
|
+
error_element.html,
|
|
21
|
+
@builder.send(
|
|
22
|
+
builder_method,
|
|
23
|
+
@attribute_name,
|
|
24
|
+
id: field_id(link_errors: true),
|
|
25
|
+
class: input_classes,
|
|
26
|
+
aria: {
|
|
27
|
+
describedby: described_by(
|
|
28
|
+
hint_id,
|
|
29
|
+
error_id,
|
|
30
|
+
supplemental_id
|
|
31
|
+
)
|
|
32
|
+
},
|
|
33
|
+
**@extra_args
|
|
34
|
+
)
|
|
35
|
+
]
|
|
36
|
+
)
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
private
|
|
41
|
+
|
|
42
|
+
def input_classes
|
|
43
|
+
%w(govuk-input).push(width_classes, error_classes).compact
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def error_classes
|
|
47
|
+
'govuk-input--error' if has_errors?
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def width_classes
|
|
51
|
+
return if @width.blank?
|
|
52
|
+
|
|
53
|
+
case @width
|
|
54
|
+
when nil then nil
|
|
55
|
+
|
|
56
|
+
# fixed (character) widths
|
|
57
|
+
when 20 then 'govuk-input--width-20'
|
|
58
|
+
when 10 then 'govuk-input--width-10'
|
|
59
|
+
when 5 then 'govuk-input--width-5'
|
|
60
|
+
when 4 then 'govuk-input--width-4'
|
|
61
|
+
when 3 then 'govuk-input--width-3'
|
|
62
|
+
when 2 then 'govuk-input--width-2'
|
|
63
|
+
|
|
64
|
+
# fluid widths
|
|
65
|
+
when 'full' then 'govuk-!-width-full'
|
|
66
|
+
when 'three-quarters' then 'govuk-!-width-three-quarters'
|
|
67
|
+
when 'two-thirds' then 'govuk-!-width-two-thirds'
|
|
68
|
+
when 'one-half' then 'govuk-!-width-one-half'
|
|
69
|
+
when 'one-third' then 'govuk-!-width-one-third'
|
|
70
|
+
when 'one-quarter' then 'govuk-!-width-one-quarter'
|
|
71
|
+
|
|
72
|
+
else fail(ArgumentError, "invalid width '#{@width}'")
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
end
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
module GOVUKDesignSystemFormBuilder
|
|
2
|
+
module Traits
|
|
3
|
+
module Localisation
|
|
4
|
+
private
|
|
5
|
+
|
|
6
|
+
def localised_text(context)
|
|
7
|
+
key = localisation_key(context)
|
|
8
|
+
|
|
9
|
+
return nil unless I18n.exists?(key)
|
|
10
|
+
|
|
11
|
+
I18n.translate(key)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def localisation_key(context)
|
|
15
|
+
return nil unless @object_name.present? && @attribute_name.present?
|
|
16
|
+
|
|
17
|
+
schema(context)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def schema(context)
|
|
21
|
+
schema_root(context)
|
|
22
|
+
.push(@object_name, @attribute_name)
|
|
23
|
+
.map { |e| e == :__context__ ? context : e }
|
|
24
|
+
.join('.')
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def schema_root(context)
|
|
28
|
+
contextual_schema = case context
|
|
29
|
+
when :legend
|
|
30
|
+
config.localisation_schema_legend
|
|
31
|
+
when :hint
|
|
32
|
+
config.localisation_schema_hint
|
|
33
|
+
when :label
|
|
34
|
+
config.localisation_schema_label
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
(contextual_schema || config.localisation_schema_fallback).dup
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
module GOVUKDesignSystemFormBuilder
|
|
2
|
+
module Traits
|
|
3
|
+
module Supplemental
|
|
4
|
+
def supplemental_id
|
|
5
|
+
return nil if @block_content.blank?
|
|
6
|
+
|
|
7
|
+
build_id('supplemental')
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
private
|
|
11
|
+
|
|
12
|
+
def supplemental_content
|
|
13
|
+
@supplemental_content ||= Containers::Supplemental.new(@builder, @object_name, @attribute_name, @block_content)
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -1,45 +1,82 @@
|
|
|
1
|
-
require '
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
require
|
|
6
|
-
require 'govuk_design_system_formbuilder/elements/label'
|
|
7
|
-
require 'govuk_design_system_formbuilder/elements/date'
|
|
8
|
-
require 'govuk_design_system_formbuilder/elements/select'
|
|
9
|
-
require 'govuk_design_system_formbuilder/elements/submit'
|
|
10
|
-
require 'govuk_design_system_formbuilder/elements/text_area'
|
|
11
|
-
require 'govuk_design_system_formbuilder/elements/file'
|
|
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
|
-
|
|
20
|
-
require 'govuk_design_system_formbuilder/elements/radios/collection'
|
|
21
|
-
require 'govuk_design_system_formbuilder/elements/radios/collection_radio_button'
|
|
22
|
-
require 'govuk_design_system_formbuilder/elements/radios/fieldset_radio_button'
|
|
23
|
-
|
|
24
|
-
require 'govuk_design_system_formbuilder/elements/check_boxes/collection'
|
|
25
|
-
require 'govuk_design_system_formbuilder/elements/check_boxes/collection_check_box'
|
|
26
|
-
require 'govuk_design_system_formbuilder/elements/check_boxes/fieldset_check_box'
|
|
27
|
-
require 'govuk_design_system_formbuilder/elements/check_boxes/label'
|
|
28
|
-
require 'govuk_design_system_formbuilder/elements/check_boxes/hint'
|
|
29
|
-
|
|
30
|
-
require 'govuk_design_system_formbuilder/elements/error_message'
|
|
31
|
-
require 'govuk_design_system_formbuilder/elements/error_summary'
|
|
32
|
-
|
|
33
|
-
require 'govuk_design_system_formbuilder/containers/check_boxes_fieldset'
|
|
34
|
-
require 'govuk_design_system_formbuilder/containers/form_group'
|
|
35
|
-
require 'govuk_design_system_formbuilder/containers/fieldset'
|
|
36
|
-
require 'govuk_design_system_formbuilder/containers/radios'
|
|
37
|
-
require 'govuk_design_system_formbuilder/containers/radio_buttons_fieldset'
|
|
38
|
-
require 'govuk_design_system_formbuilder/containers/check_boxes'
|
|
39
|
-
require 'govuk_design_system_formbuilder/containers/character_count'
|
|
40
|
-
require 'govuk_design_system_formbuilder/containers/supplemental'
|
|
1
|
+
require 'active_support/configurable'
|
|
2
|
+
|
|
3
|
+
[%w(traits *.rb), %w(*.rb), %w(elements ** *.rb), %w(containers ** *.rb)]
|
|
4
|
+
.flat_map { |matcher| Dir.glob(File.join(__dir__, 'govuk_design_system_formbuilder', *matcher)) }
|
|
5
|
+
.each { |file| require file }
|
|
41
6
|
|
|
42
7
|
module GOVUKDesignSystemFormBuilder
|
|
8
|
+
include ActiveSupport::Configurable
|
|
9
|
+
|
|
10
|
+
# @!group Defaults
|
|
11
|
+
|
|
12
|
+
# Default form builder configuration
|
|
13
|
+
#
|
|
14
|
+
# * +:default_legend_size+ controls the default size of legend text.
|
|
15
|
+
# Can be either +xl+, +l+, +m+ or +s+.
|
|
16
|
+
#
|
|
17
|
+
# * +:default_legend_tag+ controls the default tag that legends are
|
|
18
|
+
# wrapped in. Defaults to +h1+.
|
|
19
|
+
#
|
|
20
|
+
# * +:default_submit_button_text+ sets the value assigned to +govuk_submit+,
|
|
21
|
+
# defaults to 'Continue'.
|
|
22
|
+
#
|
|
23
|
+
# * +:default_submit_button_text+ sets the text used to divide the last radio
|
|
24
|
+
# button in radio button fieldsets. As per the GOV.UK Design System spec,
|
|
25
|
+
# it defaults to 'or'.
|
|
26
|
+
#
|
|
27
|
+
# * +:default_error_summary_title+ sets the text used in error summary
|
|
28
|
+
# blocks. As per the GOV.UK Design System spec, it defaults to
|
|
29
|
+
# 'There is a problem'.
|
|
30
|
+
#
|
|
31
|
+
# * +:localisation_schema_fallback+ sets the prefix elements for the array
|
|
32
|
+
# used to build the localisation string. The final two elements are always
|
|
33
|
+
# are the object name and attribute name. The _special_ value +__context__+,
|
|
34
|
+
# is used as a placeholder for the context (label, fieldset or hint).
|
|
35
|
+
#
|
|
36
|
+
# * +:localisation_schema_legend+, +:localisation_schema_hint+ and
|
|
37
|
+
# +:localisation_schema_label+ each override the schema root for their
|
|
38
|
+
# particular context, allowing them to be independently customised.
|
|
39
|
+
# ===
|
|
40
|
+
DEFAULTS = {
|
|
41
|
+
default_legend_size: 'm',
|
|
42
|
+
default_legend_tag: 'h1',
|
|
43
|
+
default_submit_button_text: 'Continue',
|
|
44
|
+
default_radio_divider_text: 'or',
|
|
45
|
+
default_error_summary_title: 'There is a problem',
|
|
46
|
+
|
|
47
|
+
localisation_schema_fallback: %i(helpers __context__),
|
|
48
|
+
localisation_schema_label: nil,
|
|
49
|
+
localisation_schema_hint: nil,
|
|
50
|
+
localisation_schema_legend: nil
|
|
51
|
+
}.freeze
|
|
52
|
+
|
|
53
|
+
DEFAULTS.keys.each { |k| config_accessor(k) { DEFAULTS[k] } }
|
|
54
|
+
# @!endgroup
|
|
55
|
+
|
|
56
|
+
class << self
|
|
57
|
+
# Configure the form builder in the usual manner. All of the
|
|
58
|
+
# keys in {DEFAULTS} can be configured as per the example below
|
|
59
|
+
#
|
|
60
|
+
# @example
|
|
61
|
+
# GOVUKDesignSystemFormBuilder.configure do |conf|
|
|
62
|
+
# conf.default_legend_size = 'xl'
|
|
63
|
+
# conf.default_error_summary_title = 'OMG'
|
|
64
|
+
# end
|
|
65
|
+
def configure
|
|
66
|
+
yield(config)
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
# Resets each of the configurable values to its default
|
|
70
|
+
#
|
|
71
|
+
# @note This method is only really intended for use to clean up
|
|
72
|
+
# during testing
|
|
73
|
+
def reset!
|
|
74
|
+
configure do |c|
|
|
75
|
+
DEFAULTS.each { |k, v| c.send("#{k}=", v) }
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
|
|
43
80
|
class FormBuilder < ActionView::Helpers::FormBuilder
|
|
44
81
|
delegate :content_tag, :tag, :safe_join, :safe_concat, :capture, :link_to, :raw, to: :@template
|
|
45
82
|
|
|
@@ -47,7 +84,5 @@ module GOVUKDesignSystemFormBuilder
|
|
|
47
84
|
end
|
|
48
85
|
|
|
49
86
|
# Disable Rails' div.field_with_error wrapper
|
|
50
|
-
ActionView::Base.field_error_proc =
|
|
51
|
-
html_tag.html_safe
|
|
52
|
-
end
|
|
87
|
+
ActionView::Base.field_error_proc = ->(html_tag, _instance) { html_tag }
|
|
53
88
|
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: 1.
|
|
4
|
+
version: 1.1.0
|
|
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-
|
|
11
|
+
date: 2019-12-29 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: actionview
|
|
@@ -53,19 +53,19 @@ dependencies:
|
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
54
|
version: '5.2'
|
|
55
55
|
- !ruby/object:Gem::Dependency
|
|
56
|
-
name: govuk
|
|
56
|
+
name: rubocop-govuk
|
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
|
58
58
|
requirements:
|
|
59
59
|
- - "~>"
|
|
60
60
|
- !ruby/object:Gem::Version
|
|
61
|
-
version: '
|
|
61
|
+
version: '2'
|
|
62
62
|
type: :development
|
|
63
63
|
prerelease: false
|
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
|
65
65
|
requirements:
|
|
66
66
|
- - "~>"
|
|
67
67
|
- !ruby/object:Gem::Version
|
|
68
|
-
version: '
|
|
68
|
+
version: '2'
|
|
69
69
|
- !ruby/object:Gem::Dependency
|
|
70
70
|
name: pry
|
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -204,14 +204,28 @@ dependencies:
|
|
|
204
204
|
requirements:
|
|
205
205
|
- - "~>"
|
|
206
206
|
- !ruby/object:Gem::Version
|
|
207
|
-
version: 3.
|
|
207
|
+
version: 3.13.0
|
|
208
208
|
type: :development
|
|
209
209
|
prerelease: false
|
|
210
210
|
version_requirements: !ruby/object:Gem::Requirement
|
|
211
211
|
requirements:
|
|
212
212
|
- - "~>"
|
|
213
213
|
- !ruby/object:Gem::Version
|
|
214
|
-
version: 3.
|
|
214
|
+
version: 3.13.0
|
|
215
|
+
- !ruby/object:Gem::Dependency
|
|
216
|
+
name: rubypants
|
|
217
|
+
requirement: !ruby/object:Gem::Requirement
|
|
218
|
+
requirements:
|
|
219
|
+
- - "~>"
|
|
220
|
+
- !ruby/object:Gem::Version
|
|
221
|
+
version: 0.7.0
|
|
222
|
+
type: :development
|
|
223
|
+
prerelease: false
|
|
224
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
225
|
+
requirements:
|
|
226
|
+
- - "~>"
|
|
227
|
+
- !ruby/object:Gem::Version
|
|
228
|
+
version: 0.7.0
|
|
215
229
|
- !ruby/object:Gem::Dependency
|
|
216
230
|
name: sassc
|
|
217
231
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -226,6 +240,20 @@ dependencies:
|
|
|
226
240
|
- - "~>"
|
|
227
241
|
- !ruby/object:Gem::Version
|
|
228
242
|
version: 2.2.1
|
|
243
|
+
- !ruby/object:Gem::Dependency
|
|
244
|
+
name: sass
|
|
245
|
+
requirement: !ruby/object:Gem::Requirement
|
|
246
|
+
requirements:
|
|
247
|
+
- - ">="
|
|
248
|
+
- !ruby/object:Gem::Version
|
|
249
|
+
version: '0'
|
|
250
|
+
type: :development
|
|
251
|
+
prerelease: false
|
|
252
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
253
|
+
requirements:
|
|
254
|
+
- - ">="
|
|
255
|
+
- !ruby/object:Gem::Version
|
|
256
|
+
version: '0'
|
|
229
257
|
- !ruby/object:Gem::Dependency
|
|
230
258
|
name: slim
|
|
231
259
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -270,7 +298,6 @@ files:
|
|
|
270
298
|
- lib/govuk_design_system_formbuilder/elements/error_summary.rb
|
|
271
299
|
- lib/govuk_design_system_formbuilder/elements/file.rb
|
|
272
300
|
- lib/govuk_design_system_formbuilder/elements/hint.rb
|
|
273
|
-
- lib/govuk_design_system_formbuilder/elements/inputs/base.rb
|
|
274
301
|
- lib/govuk_design_system_formbuilder/elements/inputs/email.rb
|
|
275
302
|
- lib/govuk_design_system_formbuilder/elements/inputs/number.rb
|
|
276
303
|
- lib/govuk_design_system_formbuilder/elements/inputs/phone.rb
|
|
@@ -283,6 +310,14 @@ files:
|
|
|
283
310
|
- lib/govuk_design_system_formbuilder/elements/select.rb
|
|
284
311
|
- lib/govuk_design_system_formbuilder/elements/submit.rb
|
|
285
312
|
- lib/govuk_design_system_formbuilder/elements/text_area.rb
|
|
313
|
+
- lib/govuk_design_system_formbuilder/traits/collection_item.rb
|
|
314
|
+
- lib/govuk_design_system_formbuilder/traits/conditional.rb
|
|
315
|
+
- lib/govuk_design_system_formbuilder/traits/error.rb
|
|
316
|
+
- lib/govuk_design_system_formbuilder/traits/hint.rb
|
|
317
|
+
- lib/govuk_design_system_formbuilder/traits/input.rb
|
|
318
|
+
- lib/govuk_design_system_formbuilder/traits/label.rb
|
|
319
|
+
- lib/govuk_design_system_formbuilder/traits/localisation.rb
|
|
320
|
+
- lib/govuk_design_system_formbuilder/traits/supplemental.rb
|
|
286
321
|
- lib/govuk_design_system_formbuilder/version.rb
|
|
287
322
|
homepage: https://govuk-form-builder.netlify.com
|
|
288
323
|
licenses:
|
|
@@ -1,79 +0,0 @@
|
|
|
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
|
-
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
|