govuk_elements_form_builder 0.1.1 → 1.0.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3927b7f760b5e6e30f00313e8340dd4967d6b012
4
- data.tar.gz: 4b8d9592192896e4b407e33efba591c919ed8827
3
+ metadata.gz: b43d881f552b63310176c72eaa304ed53e5b89de
4
+ data.tar.gz: 2b0086ffaabcbf31e15311ffee4eddae8ad62cb1
5
5
  SHA512:
6
- metadata.gz: 0a0fc0512b037756437895aeb25aca5b60e7265416b7a33c06fd54127f35f71918c1e0fb8d216d8bd522da40e188214ec05690bdce1d22405660ccea29100059
7
- data.tar.gz: e80d7e0157a766a60febc560ec13f571f4de2e6710ca08b8056fb87e97ca9959468659c6cae382f6020b76f0b91939e911bdd56f7a26771d49f5f490d8747734
6
+ metadata.gz: e94aa32b4bcaefa3020fe6797fcb7eb6acb2ed484bf70deec782908678c53fe21a2c4d9befac3f3d9370631f0f51ee05d883dca1c622ec5298cf9eb5253e0ce4
7
+ data.tar.gz: 7633c157a26792fdc1ae018b649b16ecf0bfc50b3d505c6afd71a9b0369c86a99d99b961ddd6d302b7ac3b223668e611bce81b88f5189a61d4ce0583adaa6282
@@ -30,7 +30,7 @@ module GovukElementsFormBuilder
30
30
  options = args.extract_options!
31
31
 
32
32
  set_label_classes! options
33
- set_field_classes! options
33
+ set_field_classes! options, attribute
34
34
 
35
35
  label = label(attribute, options[:label_options])
36
36
 
@@ -47,7 +47,7 @@ module GovukElementsFormBuilder
47
47
  id: form_group_id(attribute) do
48
48
  content_tag :fieldset, fieldset_options(attribute, options) do
49
49
  safe_join([
50
- fieldset_legend(attribute, options),
50
+ fieldset_legend(attribute),
51
51
  radio_inputs(attribute, options)
52
52
  ], "\n")
53
53
  end
@@ -60,7 +60,7 @@ module GovukElementsFormBuilder
60
60
  id: form_group_id(attributes) do
61
61
  content_tag :fieldset, fieldset_options(attributes, options) do
62
62
  safe_join([
63
- fieldset_legend(legend_key, options),
63
+ fieldset_legend(legend_key),
64
64
  check_box_inputs(attributes)
65
65
  ], "\n")
66
66
  end
@@ -72,7 +72,7 @@ module GovukElementsFormBuilder
72
72
  content_tag :div, class: form_group_classes(method), id: form_group_id(method) do
73
73
 
74
74
  html_options = args.extract_options!
75
- set_field_classes! html_options
75
+ set_field_classes! html_options, method
76
76
 
77
77
  label = label(method, class: "form-label")
78
78
  add_hint :label, label, method
@@ -84,36 +84,47 @@ module GovukElementsFormBuilder
84
84
 
85
85
  private
86
86
 
87
- # Given an attributes hash that could include any number of arbitrary keys, this method
88
- # ensure we merge one or more 'default' attributes into the hash, creating the keys if
89
- # don't exist, or merging the defaults if the keys already exists.
90
- # It supports strings or arrays as values.
91
- #
92
- def merge_attributes attributes, default:
93
- hash = attributes || {}
94
- hash.merge(default) { |_key, oldval, newval| Array(newval) + Array(oldval) }
95
- end
96
-
97
- def set_field_classes! options
98
- options ||= {}
99
- options.merge!(
100
- merge_attributes(options, default: {class: 'form-control'})
101
- )
87
+ def set_field_classes! options, attribute
88
+ text_field_class = "form-control"
89
+ text_field_class = [text_field_class, 'form-control-error'] if error_for? attribute
90
+ options[:class] = case options[:class]
91
+ when String
92
+ [text_field_class, options[:class]]
93
+ when Array
94
+ options[:class].unshift text_field_class
95
+ else
96
+ options[:class] = text_field_class
97
+ end
102
98
  end
103
99
 
104
100
  def set_label_classes! options
105
- options ||= {}
106
- options[:label_options] ||= {}
107
- options[:label_options].merge!(
108
- merge_attributes(options[:label_options], default: {class: 'form-label'})
109
- )
101
+ text_field_class = "form-label"
102
+
103
+ if options.present? && options[:label_options].present?
104
+ options[:label_options][:class] = case options[:label_options][:class]
105
+ when String
106
+ [text_field_class, options[:label_options][:class]]
107
+ when Array
108
+ options[:label_options][:class].unshift text_field_class
109
+ else
110
+ options[:label_options][:class] = text_field_class
111
+ end
112
+ else
113
+ options ||= {}
114
+ options[:label_options] ||= {}
115
+ options[:label_options][:class] = text_field_class
116
+ end
117
+
110
118
  end
111
119
 
112
120
  def check_box_inputs attributes
113
121
  attributes.map do |attribute|
114
- label(attribute, class: 'block-label selection-button-checkbox') do |tag|
115
- input = check_box(attribute)
116
- input + localized_label("#{attribute}")
122
+ input = check_box(attribute)
123
+ label = label(attribute) do |tag|
124
+ localized_label("#{attribute}")
125
+ end
126
+ content_tag :div, class: "multiple-choice" do
127
+ input + label
117
128
  end
118
129
  end
119
130
  end
@@ -122,26 +133,27 @@ module GovukElementsFormBuilder
122
133
  choices = options[:choices] || [ :yes, :no ]
123
134
  choices.map do |choice|
124
135
  value = choice.send(options[:value_method] || :to_s)
125
- label attribute,
126
- class: 'block-label selection-button-radio',
127
- value: value do |tag|
128
- input = radio_button(attribute, value)
129
- text = if options.has_key? :text_method
130
- choice.send(options[:text_method])
131
- else
132
- localized_label("#{attribute}.#{choice}")
133
- end
134
- input + text
136
+ input = radio_button(attribute, value)
137
+ label = label(attribute, value: value) do |tag|
138
+ text = if options.has_key? :text_method
139
+ choice.send(options[:text_method])
140
+ else
141
+ localized_label("#{attribute}.#{choice}")
142
+ end
143
+ text
144
+ end
145
+ content_tag :div, class: "multiple-choice" do
146
+ input + label
135
147
  end
136
148
  end
137
149
  end
138
150
 
139
- def fieldset_legend attribute, options
151
+ def fieldset_legend attribute
140
152
  legend = content_tag(:legend) do
141
153
  tags = [content_tag(
142
154
  :span,
143
155
  fieldset_text(attribute),
144
- merge_attributes(options[:legend_options], default: {class: 'form-label-bold'})
156
+ class: 'form-label-bold'
145
157
  )]
146
158
 
147
159
  if error_for? attribute
@@ -219,7 +231,7 @@ module GovukElementsFormBuilder
219
231
  def form_group_classes attributes
220
232
  attributes = [attributes] if !attributes.respond_to? :count
221
233
  classes = 'form-group'
222
- classes += ' error' if attributes.find { |a| error_for? a }
234
+ classes += ' form-group-error' if attributes.find { |a| error_for? a }
223
235
  classes
224
236
  end
225
237
 
@@ -1,3 +1,3 @@
1
1
  module GovukElementsFormBuilder
2
- VERSION = "0.1.1"
2
+ VERSION = "1.0.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: govuk_elements_form_builder
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alistair Laing
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2018-01-17 00:00:00.000000000 Z
12
+ date: 2017-05-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -25,6 +25,34 @@ dependencies:
25
25
  - - ">="
26
26
  - !ruby/object:Gem::Version
27
27
  version: '4.2'
28
+ - !ruby/object:Gem::Dependency
29
+ name: govuk_frontend_toolkit
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: 6.0.0
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ version: 6.0.0
42
+ - !ruby/object:Gem::Dependency
43
+ name: govuk_elements_rails
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: 3.0.0
49
+ type: :runtime
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: 3.0.0
28
56
  - !ruby/object:Gem::Dependency
29
57
  name: sqlite3
30
58
  requirement: !ruby/object:Gem::Requirement