express_templates 0.11.1 → 0.11.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/lib/express_templates/components/all.rb +17 -15
- data/lib/express_templates/components/forms.rb +1 -0
- data/lib/express_templates/components/forms/country_select.rb +23 -0
- data/lib/express_templates/components/tree_for.rb +72 -70
- data/lib/express_templates/template/handler.rb +3 -2
- data/lib/express_templates/version.rb +1 -1
- data/test/components/forms/country_select_test.rb +34 -0
- data/test/test_helper.rb +1 -1
- metadata +19 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e8864575cad4427903f6f29d98dd7c4b6853033a
|
4
|
+
data.tar.gz: e75fa4c6ca726c66a7cc18797a9c00c54bfd40b4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 927d0c3eb74ccdb049b95ed85ed783243b6ad5c0ce5beb379f07a33ddf8e91c297af95fdb5c7c7c075d0b0e134a05e24f9b58c83d999e1f2a6a9d7a146776900
|
7
|
+
data.tar.gz: b21f56f1b31bda2a10b761674d534f5651cedf992765a369f3fee533244ccd7a70a0a9d7ded2541eb550a3de815146338bb05ce63f899a26454a87451195d546
|
@@ -1,26 +1,28 @@
|
|
1
1
|
module ExpressTemplates
|
2
2
|
module Components
|
3
|
-
|
3
|
+
module Presenters
|
4
|
+
class All < Container
|
4
5
|
|
5
|
-
|
6
|
+
has_argument :id, "Name of the collection", as: :collection_name, type: :symbol
|
6
7
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
8
|
+
contains -> (&block) {
|
9
|
+
prepended
|
10
|
+
collection.each do |item|
|
11
|
+
assigns[member_name.to_sym] = item
|
12
|
+
block.call(self) if block
|
13
|
+
end
|
14
|
+
appended
|
15
|
+
}
|
16
|
+
|
17
|
+
def member_name
|
18
|
+
config[:collection_name].to_s.singularize.to_sym
|
12
19
|
end
|
13
|
-
appended
|
14
|
-
}
|
15
20
|
|
16
|
-
|
17
|
-
|
18
|
-
|
21
|
+
def collection
|
22
|
+
self.send(config[:collection_name])
|
23
|
+
end
|
19
24
|
|
20
|
-
def collection
|
21
|
-
self.send(config[:collection_name])
|
22
25
|
end
|
23
|
-
|
24
26
|
end
|
25
27
|
end
|
26
28
|
end
|
@@ -10,6 +10,7 @@ require 'express_templates/components/forms/form_component'
|
|
10
10
|
require 'express_templates/components/forms/option_support'
|
11
11
|
require 'express_templates/components/forms/submit'
|
12
12
|
require 'express_templates/components/forms/select'
|
13
|
+
require 'express_templates/components/forms/country_select'
|
13
14
|
require 'express_templates/components/forms/select_collection'
|
14
15
|
require 'express_templates/components/forms/radio'
|
15
16
|
require 'express_templates/components/forms/checkbox'
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'countries'
|
2
|
+
require_relative 'select'
|
3
|
+
|
4
|
+
module ExpressTemplates
|
5
|
+
module Components
|
6
|
+
module Forms
|
7
|
+
class CountrySelect < Select
|
8
|
+
|
9
|
+
def select_options
|
10
|
+
country_options = ISO3166::Country.all.map {|country| [country.name.titleize, country.alpha2]}
|
11
|
+
us = country_options.delete(['United States', 'US'])
|
12
|
+
country_options.unshift us
|
13
|
+
helpers.options_for_select(country_options, selected_value)
|
14
|
+
end
|
15
|
+
|
16
|
+
def select_helper_options
|
17
|
+
add_select2_class( input_attributes.merge(include_blank: false, prompt: "-- Please Select --" ) )
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -1,85 +1,87 @@
|
|
1
1
|
module ExpressTemplates
|
2
2
|
module Components
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
3
|
+
module Presenters
|
4
|
+
#
|
5
|
+
# Create an html <tt>table</tt> or <tt>ol</tt> (ordered list) for
|
6
|
+
# a model object representing a tree of similar objects.
|
7
|
+
#
|
8
|
+
# The objects must respond to <tt>:children</tt>.
|
9
|
+
#
|
10
|
+
# The block is passed a NodeBuilder which may accept field names.
|
11
|
+
#
|
12
|
+
# Example:
|
13
|
+
#
|
14
|
+
# ```ruby
|
15
|
+
# tree_for(:roles) { |role|
|
16
|
+
# role.name
|
17
|
+
# }
|
18
|
+
# ```
|
19
|
+
#
|
20
|
+
# If the view has an @roles variable with a Role having children,
|
21
|
+
# this will turn into markup such as the following:
|
22
|
+
#
|
23
|
+
# <ul id="roles" class="roles tree">
|
24
|
+
# <li>SuperAdmin
|
25
|
+
# <ul>
|
26
|
+
# <li>Admin
|
27
|
+
# <ul>
|
28
|
+
# <li>Publisher
|
29
|
+
# <ul>
|
30
|
+
# <li>Author</li>
|
31
|
+
# </ul>
|
32
|
+
# </li>
|
33
|
+
# <li>Auditor</li>
|
34
|
+
# </ul>
|
35
|
+
# </li>
|
36
|
+
# </ul>
|
37
|
+
# </li>
|
38
|
+
# </ul>
|
39
|
+
#
|
39
40
|
|
40
|
-
|
41
|
+
class TreeFor < Configurable
|
41
42
|
|
42
|
-
|
43
|
+
tag :ul
|
43
44
|
|
44
|
-
|
45
|
-
|
45
|
+
has_attributes :class => 'tree'
|
46
|
+
has_option :root, "Root of the tree. Defaults to collection with the same as the id.", type: :proc
|
46
47
|
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
48
|
+
contains -> (&customize_block) {
|
49
|
+
@customize_block = customize_block
|
50
|
+
list_items(root_node)
|
51
|
+
}
|
51
52
|
|
52
|
-
|
53
|
-
|
54
|
-
|
53
|
+
before_build -> {
|
54
|
+
add_class config[:id]
|
55
|
+
}
|
55
56
|
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
57
|
+
def root_node
|
58
|
+
if config[:root] && config[:root].respond_to?(:call)
|
59
|
+
config[:root].call
|
60
|
+
else
|
61
|
+
send(config[:id])
|
62
|
+
end
|
61
63
|
end
|
62
|
-
end
|
63
64
|
|
64
|
-
|
65
|
-
|
66
|
-
|
65
|
+
def list_items(nodes)
|
66
|
+
nodes.each do |node|
|
67
|
+
list_item(node)
|
68
|
+
end
|
67
69
|
end
|
68
|
-
end
|
69
70
|
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
71
|
+
def list_item(node)
|
72
|
+
li {
|
73
|
+
if @customize_block
|
74
|
+
@customize_block.call(node)
|
75
|
+
else
|
76
|
+
text_node "#{node.name}#{"\n" if node.children.any?}"
|
77
|
+
end
|
78
|
+
if node.children.any?
|
79
|
+
ul {
|
80
|
+
list_items(node.children)
|
81
|
+
}
|
82
|
+
end
|
83
|
+
}
|
84
|
+
end
|
83
85
|
end
|
84
86
|
end
|
85
87
|
end
|
@@ -10,9 +10,10 @@ module ExpressTemplates
|
|
10
10
|
def call(template)
|
11
11
|
# call ripper stuff method
|
12
12
|
|
13
|
-
warn_contains_logic("(#{ExpressTemplates.compile(template)}).html_safe") # pass the source code
|
14
13
|
# returns a string to be eval'd
|
15
|
-
"(#{ExpressTemplates.compile(template)}).html_safe"
|
14
|
+
source = "(#{ExpressTemplates.compile(template)}).html_safe"
|
15
|
+
warn_contains_logic(source) # pass the source code
|
16
|
+
source
|
16
17
|
end
|
17
18
|
|
18
19
|
def warn_contains_logic(compiled_template)
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
require 'ostruct'
|
3
|
+
class CountrySelectTest < ActiveSupport::TestCase
|
4
|
+
|
5
|
+
def assigns
|
6
|
+
{person: ::Person.new}
|
7
|
+
end
|
8
|
+
|
9
|
+
def helpers
|
10
|
+
mock_action_view do
|
11
|
+
def people_path
|
12
|
+
'/people'
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
|
18
|
+
test "country_select renders without an error" do
|
19
|
+
assert arbre {
|
20
|
+
express_form(:person) {
|
21
|
+
country_select :country_code
|
22
|
+
}
|
23
|
+
}
|
24
|
+
end
|
25
|
+
|
26
|
+
test "can change label for country_select" do
|
27
|
+
html = arbre {
|
28
|
+
express_form(:person) {
|
29
|
+
country_select :country_code, label: "Country"
|
30
|
+
}
|
31
|
+
}
|
32
|
+
assert_match(/<label.*Country<\/label>/, html)
|
33
|
+
end
|
34
|
+
end
|
data/test/test_helper.rb
CHANGED
@@ -126,7 +126,7 @@ end
|
|
126
126
|
end
|
127
127
|
end
|
128
128
|
class ::Person
|
129
|
-
attr :id, :city, :subscribed, :preferred_email_format
|
129
|
+
attr :id, :city, :subscribed, :preferred_email_format, :country_code
|
130
130
|
def initialize(id = 1, city = 'San Francisco')
|
131
131
|
@id, @city = id, city
|
132
132
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: express_templates
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.11.
|
4
|
+
version: 0.11.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Steven Talcott Smith
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-09-
|
12
|
+
date: 2015-09-10 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
@@ -53,6 +53,20 @@ dependencies:
|
|
53
53
|
- - "~>"
|
54
54
|
- !ruby/object:Gem::Version
|
55
55
|
version: '1.0'
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: countries
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - ">="
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0'
|
63
|
+
type: :runtime
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - ">="
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
56
70
|
- !ruby/object:Gem::Dependency
|
57
71
|
name: rails
|
58
72
|
requirement: !ruby/object:Gem::Requirement
|
@@ -192,6 +206,7 @@ files:
|
|
192
206
|
- lib/express_templates/components/forms.rb
|
193
207
|
- lib/express_templates/components/forms/basic_fields.rb
|
194
208
|
- lib/express_templates/components/forms/checkbox.rb
|
209
|
+
- lib/express_templates/components/forms/country_select.rb
|
195
210
|
- lib/express_templates/components/forms/express_form.rb
|
196
211
|
- lib/express_templates/components/forms/form_component.rb
|
197
212
|
- lib/express_templates/components/forms/option_support.rb
|
@@ -212,6 +227,7 @@ files:
|
|
212
227
|
- test/components/configurable_test.rb
|
213
228
|
- test/components/forms/basic_fields_test.rb
|
214
229
|
- test/components/forms/checkbox_test.rb
|
230
|
+
- test/components/forms/country_select_test.rb
|
215
231
|
- test/components/forms/express_form_test.rb
|
216
232
|
- test/components/forms/radio_test.rb
|
217
233
|
- test/components/forms/select_test.rb
|
@@ -291,6 +307,7 @@ test_files:
|
|
291
307
|
- test/components/configurable_test.rb
|
292
308
|
- test/components/forms/basic_fields_test.rb
|
293
309
|
- test/components/forms/checkbox_test.rb
|
310
|
+
- test/components/forms/country_select_test.rb
|
294
311
|
- test/components/forms/express_form_test.rb
|
295
312
|
- test/components/forms/radio_test.rb
|
296
313
|
- test/components/forms/select_test.rb
|