hanami-helpers 1.1.1 → 1.1.2
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/CHANGELOG.md +5 -1
- data/lib/hanami/helpers/form_helper.rb +3 -3
- data/lib/hanami/helpers/form_helper/form_builder.rb +35 -18
- data/lib/hanami/helpers/html_helper/html_builder.rb +3 -3
- data/lib/hanami/helpers/routing_helper.rb +1 -1
- data/lib/hanami/helpers/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2240795ff1bddb8305850e8473c60580701e7175528edcc25f83bad073a49fc9
|
4
|
+
data.tar.gz: 704af3c5d22e74509806c87c17bb368b0935dafe6ff276d2532bbc010c59eba2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 94778d91a095e8e7e41d58c0fa9477de162960fab463f2c8eb593b03f27ba2ac3dc7041d6fdab42b7f46783838510f0532191d678c4d5cd2225b454251b0c499
|
7
|
+
data.tar.gz: 6a5c35fd9efdc2c5db4d763398e10bc51de1cf2b429e28bfcfc5b2694e2dc3a68d24d6b22658965e85e5b85202a3c1f206d920badc5bf6e70ae75335dd4d8410
|
data/CHANGELOG.md
CHANGED
@@ -1,7 +1,11 @@
|
|
1
1
|
# Hanami::Helpers
|
2
2
|
View helpers for Ruby web applications
|
3
3
|
|
4
|
-
## v1.1.
|
4
|
+
## v1.1.2 - 2018-04-05
|
5
|
+
### Fixed
|
6
|
+
- [Luca Guidi] Ensure correct arity of `#form_for`, to be used in conjuction with `Hanami::Helpers::FormHelper::Form` (eg. `<%= form_for(form) { ... } %>`)
|
7
|
+
|
8
|
+
## v1.1.1 - 2018-02-27
|
5
9
|
### Fixed
|
6
10
|
- [Alfonso Uceda] Ensure `#select` form helper to not select options with `nil` value
|
7
11
|
- [Alfonso Uceda] Ensure `#fields_for_collection` form helper to produce input fields with correct `name` attribute
|
@@ -229,7 +229,7 @@ module Hanami
|
|
229
229
|
# @option options [Hash] :values An optional payload of objects to pass
|
230
230
|
# @param blk [Proc] A block that describes the contents of the form
|
231
231
|
#
|
232
|
-
# @overload form_for(form, attributes, &blk)
|
232
|
+
# @overload form_for(form, attributes = {}, &blk)
|
233
233
|
# Use Form
|
234
234
|
# @param form [Hanami::Helpers::FormHelper::Form] a form object
|
235
235
|
# @param attributes [Hash] HTML attributes to pass to the form tag and form values
|
@@ -406,9 +406,9 @@ module Hanami
|
|
406
406
|
#
|
407
407
|
# <button type="submit">Create</button>
|
408
408
|
# </form>
|
409
|
-
def form_for(name, url, options = {}, &blk)
|
409
|
+
def form_for(name, url = nil, options = {}, &blk)
|
410
410
|
form = if name.is_a?(Form)
|
411
|
-
options = url
|
411
|
+
options = url || {}
|
412
412
|
name
|
413
413
|
else
|
414
414
|
Form.new(name, url, options.delete(:values))
|
@@ -81,11 +81,11 @@ module Hanami
|
|
81
81
|
|
82
82
|
# Instantiate a form builder
|
83
83
|
#
|
84
|
-
# @overload initialize(form, attributes,
|
84
|
+
# @overload initialize(form, attributes, context, &blk)
|
85
85
|
# Top level form
|
86
86
|
# @param form [Hanami::Helpers:FormHelper::Form] the form
|
87
87
|
# @param attributes [::Hash] a set of HTML attributes
|
88
|
-
# @param
|
88
|
+
# @param context [Hanami::Helpers::FormHelper]
|
89
89
|
# @param blk [Proc] a block that describes the contents of the form
|
90
90
|
#
|
91
91
|
# @overload initialize(form, attributes, params, &blk)
|
@@ -1225,17 +1225,19 @@ module Hanami
|
|
1225
1225
|
# <option value="zw">Zimbabwe</option>
|
1226
1226
|
# </select>
|
1227
1227
|
def select(name, values, attributes = {}) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
|
1228
|
-
options
|
1229
|
-
|
1230
|
-
|
1231
|
-
|
1228
|
+
options = attributes.delete(:options) { {} }
|
1229
|
+
multiple = attributes[:multiple]
|
1230
|
+
attributes = { name: _select_input_name(name, multiple), id: _input_id(name) }.merge(attributes)
|
1231
|
+
prompt = options.delete(:prompt)
|
1232
|
+
selected = options.delete(:selected)
|
1233
|
+
input_value = _value(name)
|
1232
1234
|
|
1233
1235
|
super(attributes) do
|
1234
1236
|
option(prompt) unless prompt.nil?
|
1235
1237
|
|
1236
1238
|
already_selected = nil
|
1237
1239
|
values.each do |content, value|
|
1238
|
-
if (
|
1240
|
+
if (multiple || !already_selected) && (already_selected = _select_option_selected?(value, selected, input_value, multiple))
|
1239
1241
|
option(content, { value: value, selected: SELECTED }.merge(options))
|
1240
1242
|
else
|
1241
1243
|
option(content, { value: value }.merge(options))
|
@@ -1568,20 +1570,35 @@ module Hanami
|
|
1568
1570
|
select_name
|
1569
1571
|
end
|
1570
1572
|
|
1571
|
-
# TODO: this has to be refactored
|
1572
|
-
#
|
1573
1573
|
# @api private
|
1574
|
-
#
|
1575
|
-
# rubocop:disable Metrics/CyclomaticComplexity
|
1576
|
-
# rubocop:disable Metrics/PerceivedComplexity
|
1577
1574
|
def _select_option_selected?(value, selected, input_value, multiple)
|
1578
|
-
|
1579
|
-
|
1580
|
-
|
1581
|
-
(
|
1575
|
+
if input_value && selected.nil?
|
1576
|
+
value.to_s == input_value
|
1577
|
+
else
|
1578
|
+
(value == selected) ||
|
1579
|
+
_is_in_selected_values?(multiple, selected, value) ||
|
1580
|
+
_is_current_value?(input_value, value) ||
|
1581
|
+
_is_in_input_values?(multiple, input_value, value)
|
1582
|
+
end
|
1583
|
+
end
|
1584
|
+
|
1585
|
+
# @api private
|
1586
|
+
def _is_current_value?(input_value, value)
|
1587
|
+
return unless input_value
|
1588
|
+
value.to_s == input_value.to_s
|
1589
|
+
end
|
1590
|
+
|
1591
|
+
# @api private
|
1592
|
+
def _is_in_selected_values?(multiple, selected, value)
|
1593
|
+
return unless multiple && selected.is_a?(Array)
|
1594
|
+
selected.include?(value)
|
1595
|
+
end
|
1596
|
+
|
1597
|
+
# @api private
|
1598
|
+
def _is_in_input_values?(multiple, input_value, value)
|
1599
|
+
return unless multiple && input_value.is_a?(Array)
|
1600
|
+
input_value.include?(value)
|
1582
1601
|
end
|
1583
|
-
# rubocop:enable Metrics/PerceivedComplexity
|
1584
|
-
# rubocop:enable Metrics/CyclomaticComplexity
|
1585
1602
|
|
1586
1603
|
# @api private
|
1587
1604
|
def _check_box_checked?(value, input_value)
|
@@ -160,7 +160,7 @@ module Hanami
|
|
160
160
|
@nodes << self.class.html_node.new(:#{tag}, blk || content, attributes || content, options)
|
161
161
|
self
|
162
162
|
end
|
163
|
-
}
|
163
|
+
}, __FILE__, __LINE__ - 5
|
164
164
|
end
|
165
165
|
|
166
166
|
EMPTY_TAGS.each do |tag|
|
@@ -169,7 +169,7 @@ module Hanami
|
|
169
169
|
@nodes << EmptyHtmlNode.new(:#{tag}, attributes)
|
170
170
|
self
|
171
171
|
end
|
172
|
-
}
|
172
|
+
}, __FILE__, __LINE__ - 5
|
173
173
|
end
|
174
174
|
|
175
175
|
include Utils::ClassAttribute
|
@@ -369,7 +369,7 @@ module Hanami
|
|
369
369
|
# @since 0.1.0
|
370
370
|
# @api private
|
371
371
|
def resolve(&blk)
|
372
|
-
@context = eval
|
372
|
+
@context = eval('self', blk.binding, __FILE__, __LINE__)
|
373
373
|
instance_exec(&blk)
|
374
374
|
end
|
375
375
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hanami-helpers
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Luca Guidi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-04-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: hanami-utils
|
@@ -128,7 +128,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
128
128
|
version: '0'
|
129
129
|
requirements: []
|
130
130
|
rubyforge_project:
|
131
|
-
rubygems_version: 2.7.
|
131
|
+
rubygems_version: 2.7.5
|
132
132
|
signing_key:
|
133
133
|
specification_version: 4
|
134
134
|
summary: Hanami helpers
|