trestle 0.9.6 → 0.9.7
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/.github/workflows/rspec.yml +28 -0
- data/CONTRIBUTING.md +1 -1
- data/README.md +1 -1
- data/app/assets/bundle/trestle/bundle.css +5 -5
- data/app/assets/bundle/trestle/bundle.js +12 -12
- data/lib/generators/trestle/install/templates/trestle.rb.erb +2 -1
- data/lib/trestle/configurable.rb +6 -0
- data/lib/trestle/configuration.rb +4 -5
- data/lib/trestle/form/builder.rb +4 -4
- data/lib/trestle/lazy.rb +56 -0
- data/lib/trestle/navigation/item.rb +1 -1
- data/lib/trestle/table/column.rb +5 -1
- data/lib/trestle/version.rb +1 -1
- data/lib/trestle.rb +1 -0
- data/package.json +1 -1
- data/yarn.lock +1298 -1395
- metadata +5 -4
- data/.travis.yml +0 -39
@@ -70,6 +70,7 @@ Trestle.configure do |config|
|
|
70
70
|
# Specify helper modules to expose to the admin.
|
71
71
|
#
|
72
72
|
# config.helper :all
|
73
|
+
# config.helper -> { CustomHelper }
|
73
74
|
|
74
75
|
# Register callbacks to run before, after or around all Trestle actions.
|
75
76
|
#
|
@@ -123,7 +124,7 @@ Trestle.configure do |config|
|
|
123
124
|
# def render; end
|
124
125
|
# end
|
125
126
|
#
|
126
|
-
# config.form_field :custom, CustomFormField
|
127
|
+
# config.form_field :custom, -> { CustomFormField }
|
127
128
|
|
128
129
|
# == Debugging Options
|
129
130
|
#
|
data/lib/trestle/configurable.rb
CHANGED
@@ -15,6 +15,12 @@ module Trestle
|
|
15
15
|
options.fetch(name) {
|
16
16
|
if defaults.key?(name)
|
17
17
|
value = defaults[name]
|
18
|
+
|
19
|
+
# Avoid references to the same instance of a default value
|
20
|
+
if value.respond_to?(:dup) && !value.is_a?(Proc)
|
21
|
+
value = value.dup
|
22
|
+
end
|
23
|
+
|
18
24
|
assign(name, value)
|
19
25
|
end
|
20
26
|
}
|
@@ -54,18 +54,17 @@ module Trestle
|
|
54
54
|
menus << Navigation::Block.new(&block)
|
55
55
|
end
|
56
56
|
|
57
|
-
|
58
57
|
## Extension Options
|
59
58
|
|
60
59
|
# [Internal] List of helper modules to include in all Trestle controllers
|
61
|
-
option :helpers,
|
60
|
+
option :helpers, Lazy::List.new
|
62
61
|
|
63
62
|
# [Internal] Container module for block-defined helpers
|
64
63
|
option :helper_module, Module.new
|
65
64
|
|
66
65
|
# Register global helpers available to all Trestle admins
|
67
66
|
def helper(*helpers, &block)
|
68
|
-
self.helpers
|
67
|
+
self.helpers << helpers
|
69
68
|
self.helper_module.module_eval(&block) if block_given?
|
70
69
|
end
|
71
70
|
|
@@ -82,8 +81,8 @@ module Trestle
|
|
82
81
|
option :default_adapter, Adapters.compose(Adapters::ActiveRecordAdapter, Adapters::DraperAdapter)
|
83
82
|
|
84
83
|
# Register a custom form field class
|
85
|
-
def form_field(name,
|
86
|
-
Form::Builder.register(name,
|
84
|
+
def form_field(name, field)
|
85
|
+
Form::Builder.register(name, field)
|
87
86
|
end
|
88
87
|
|
89
88
|
# [Internal] List of registered hooks
|
data/lib/trestle/form/builder.rb
CHANGED
@@ -9,7 +9,7 @@ module Trestle
|
|
9
9
|
undef_method :display
|
10
10
|
|
11
11
|
cattr_accessor :fields
|
12
|
-
self.fields =
|
12
|
+
self.fields = Lazy::Hash.new
|
13
13
|
|
14
14
|
def errors(name)
|
15
15
|
if object.respond_to?(:errors) && object.errors.respond_to?(:[])
|
@@ -19,14 +19,14 @@ module Trestle
|
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
22
|
-
def self.register(name,
|
22
|
+
def self.register(name, field)
|
23
23
|
rename_existing_helper_method(name)
|
24
|
-
self.fields[name] =
|
24
|
+
self.fields[name] = field
|
25
25
|
end
|
26
26
|
|
27
27
|
protected
|
28
28
|
def respond_to_missing?(name, include_all=false)
|
29
|
-
self.class.fields.
|
29
|
+
self.class.fields.key?(name) || super
|
30
30
|
end
|
31
31
|
|
32
32
|
def method_missing(name, *args, &block)
|
data/lib/trestle/lazy.rb
ADDED
@@ -0,0 +1,56 @@
|
|
1
|
+
module Trestle
|
2
|
+
module Lazy
|
3
|
+
module Constantize
|
4
|
+
def constantize(value)
|
5
|
+
case value
|
6
|
+
when String
|
7
|
+
value.safe_constantize
|
8
|
+
when Proc
|
9
|
+
value.call
|
10
|
+
else
|
11
|
+
value
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
class List
|
17
|
+
include Enumerable
|
18
|
+
include Constantize
|
19
|
+
|
20
|
+
def initialize(*items)
|
21
|
+
@list = items
|
22
|
+
end
|
23
|
+
|
24
|
+
def each(&block)
|
25
|
+
@list.each do |item|
|
26
|
+
yield constantize(item)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def <<(items)
|
31
|
+
@list += Array(items)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
class Hash
|
36
|
+
include Enumerable
|
37
|
+
include Constantize
|
38
|
+
|
39
|
+
delegate :[]=, :key?, to: :@hash
|
40
|
+
|
41
|
+
def initialize
|
42
|
+
@hash = {}
|
43
|
+
end
|
44
|
+
|
45
|
+
def each(&block)
|
46
|
+
@hash.each do |key, value|
|
47
|
+
yield key, constantize(value)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def [](key)
|
52
|
+
constantize(@hash[key])
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
data/lib/trestle/table/column.rb
CHANGED
@@ -108,7 +108,7 @@ module Trestle
|
|
108
108
|
|
109
109
|
def column_value(instance)
|
110
110
|
if @column.block
|
111
|
-
if
|
111
|
+
if block_is_legacy_haml?
|
112
112
|
# In order for table column blocks to work properly within Haml templates,
|
113
113
|
# the _hamlout local variable needs to be defined in the scope of the block,
|
114
114
|
# so that the Haml version of the capture method is used. Because we
|
@@ -131,6 +131,10 @@ module Trestle
|
|
131
131
|
instance.send(@column.field)
|
132
132
|
end
|
133
133
|
end
|
134
|
+
|
135
|
+
def block_is_legacy_haml?
|
136
|
+
defined?(Haml) && Haml::Helpers.respond_to?(:block_is_haml?) && Haml::Helpers.block_is_haml?(@column.block)
|
137
|
+
end
|
134
138
|
end
|
135
139
|
end
|
136
140
|
end
|
data/lib/trestle/version.rb
CHANGED
data/lib/trestle.rb
CHANGED
@@ -11,6 +11,7 @@ module Trestle
|
|
11
11
|
require_relative "trestle/adapters"
|
12
12
|
require_relative "trestle/attribute"
|
13
13
|
require_relative "trestle/breadcrumb"
|
14
|
+
require_relative "trestle/lazy"
|
14
15
|
require_relative "trestle/configurable"
|
15
16
|
require_relative "trestle/configuration"
|
16
17
|
require_relative "trestle/display"
|