trestle 0.10.0 → 0.10.1

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.
Files changed (103) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/rspec.yml +4 -0
  3. data/app/assets/bundle/trestle/admin.css +3 -3
  4. data/app/assets/bundle/trestle/admin.js +13 -13
  5. data/app/assets/bundle/trestle/photoswipe-2d522a3abaa59f8a8f73.digested.js +6 -0
  6. data/app/helpers/trestle/avatar_helper.rb +20 -14
  7. data/app/helpers/trestle/card_helper.rb +27 -9
  8. data/app/helpers/trestle/container_helper.rb +37 -6
  9. data/app/helpers/trestle/display_helper.rb +11 -0
  10. data/app/helpers/trestle/flash_helper.rb +1 -10
  11. data/app/helpers/trestle/form_helper.rb +32 -18
  12. data/app/helpers/trestle/format_helper.rb +47 -17
  13. data/app/helpers/trestle/gravatar_helper.rb +48 -0
  14. data/app/helpers/trestle/grid_helper.rb +12 -14
  15. data/app/helpers/trestle/headings_helper.rb +2 -23
  16. data/app/helpers/trestle/i18n_helper.rb +1 -0
  17. data/app/helpers/trestle/icon_helper.rb +16 -3
  18. data/app/helpers/trestle/layout_helper.rb +1 -0
  19. data/app/helpers/trestle/modal_helper.rb +21 -2
  20. data/app/helpers/trestle/navigation_helper.rb +1 -0
  21. data/app/helpers/trestle/pagination_helper.rb +1 -0
  22. data/app/helpers/trestle/params_helper.rb +32 -0
  23. data/app/helpers/trestle/sort_helper.rb +38 -7
  24. data/app/helpers/trestle/status_helper.rb +19 -3
  25. data/app/helpers/trestle/tab_helper.rb +42 -7
  26. data/app/helpers/trestle/table_helper.rb +23 -23
  27. data/app/helpers/trestle/timestamp_helper.rb +18 -25
  28. data/app/helpers/trestle/title_helper.rb +2 -0
  29. data/app/helpers/trestle/toolbars_helper.rb +2 -1
  30. data/app/helpers/trestle/turbo/frame_helper.rb +25 -14
  31. data/app/helpers/trestle/url_helper.rb +124 -54
  32. data/app/views/kaminari/trestle/_first_page.html.erb +1 -2
  33. data/app/views/kaminari/trestle/_gap.html.erb +0 -1
  34. data/app/views/kaminari/trestle/_last_page.html.erb +1 -2
  35. data/app/views/kaminari/trestle/_page.html.erb +1 -2
  36. data/app/views/kaminari/trestle/_paginator.html.erb +0 -1
  37. data/app/views/layouts/trestle/admin.html.erb +3 -3
  38. data/app/views/layouts/trestle/modal.html.erb +2 -2
  39. data/app/views/trestle/application/_layout.html.erb +22 -18
  40. data/app/views/trestle/application/_tabs.html.erb +1 -1
  41. data/app/views/trestle/flash/_alert.html.erb +3 -1
  42. data/app/views/trestle/flash/_flash.html.erb +7 -4
  43. data/app/views/trestle/resource/_scopes.html.erb +3 -3
  44. data/app/views/trestle/resource/create.turbo_stream.erb +1 -0
  45. data/app/views/trestle/resource/destroy.turbo_stream.erb +2 -0
  46. data/app/views/trestle/resource/index.html.erb +10 -12
  47. data/app/views/trestle/resource/update.turbo_stream.erb +1 -0
  48. data/app/views/trestle/shared/_sidebar.html.erb +8 -8
  49. data/app/views/trestle/table/_table.html.erb +2 -2
  50. data/config/locales/pt-BR.yml +13 -13
  51. data/frontend/css/components/_scopes.scss +6 -7
  52. data/frontend/css/core/_theme.scss +3 -3
  53. data/frontend/css/layout/_sidebar.scss +2 -0
  54. data/frontend/js/controllers/flatpickr_controller.js +2 -2
  55. data/frontend/js/controllers/lightbox_controller.js +3 -3
  56. data/frontend/js/controllers/modal_trigger_controller.js +2 -2
  57. data/frontend/js/controllers/sidebar_controller.js +13 -3
  58. data/frontend/js/controllers/tab_errors_controller.js +2 -2
  59. data/frontend/js/core/backdrop.js +30 -28
  60. data/frontend/js/core/error_modal.js +7 -9
  61. data/frontend/js/core/fetch.js +2 -0
  62. data/lib/trestle/admin.rb +9 -2
  63. data/lib/trestle/configuration.rb +3 -0
  64. data/lib/trestle/engine.rb +1 -1
  65. data/lib/trestle/evaluation_context.rb +2 -4
  66. data/lib/trestle/form/automatic.rb +1 -1
  67. data/lib/trestle/form/field.rb +1 -1
  68. data/lib/trestle/form/fields/check_box.rb +1 -1
  69. data/lib/trestle/form/fields/collection_check_boxes.rb +1 -1
  70. data/lib/trestle/form/fields/collection_radio_buttons.rb +1 -1
  71. data/lib/trestle/form/fields/date_select.rb +1 -1
  72. data/lib/trestle/form/fields/datetime_select.rb +1 -1
  73. data/lib/trestle/form/fields/form_control.rb +2 -2
  74. data/lib/trestle/form/fields/form_group.rb +4 -4
  75. data/lib/trestle/form/fields/radio_button.rb +1 -1
  76. data/lib/trestle/form/fields/static_field.rb +1 -1
  77. data/lib/trestle/form/fields/time_select.rb +1 -1
  78. data/lib/trestle/form/renderer.rb +2 -4
  79. data/lib/trestle/hook/helpers.rb +21 -0
  80. data/lib/trestle/navigation/block.rb +8 -15
  81. data/lib/trestle/navigation/group.rb +2 -2
  82. data/lib/trestle/navigation/item.rb +21 -4
  83. data/lib/trestle/registry.rb +14 -11
  84. data/lib/trestle/resource/builder.rb +9 -6
  85. data/lib/trestle/resource/toolbar.rb +4 -4
  86. data/lib/trestle/resource.rb +7 -5
  87. data/lib/trestle/scopes/block.rb +8 -12
  88. data/lib/trestle/scopes/definition.rb +6 -2
  89. data/lib/trestle/scopes/scope.rb +13 -10
  90. data/lib/trestle/tab.rb +2 -2
  91. data/lib/trestle/table/column.rb +4 -3
  92. data/lib/trestle/table/row.rb +1 -1
  93. data/lib/trestle/toolbar/builder.rb +6 -6
  94. data/lib/trestle/toolbar/context.rb +2 -4
  95. data/lib/trestle/toolbar/item.rb +10 -19
  96. data/lib/trestle/toolbar/menu.rb +9 -9
  97. data/lib/trestle/version.rb +1 -1
  98. data/lib/trestle.rb +2 -2
  99. data/package.json +7 -7
  100. data/yarn.lock +517 -564
  101. metadata +5 -5
  102. data/app/assets/bundle/trestle/photoswipe-063ce7be40e10b3e6848.digested.js +0 -6
  103. data/app/views/layouts/trestle/admin.turbo_stream.erb +0 -4
@@ -15,27 +15,24 @@ module Trestle
15
15
 
16
16
  def reset!
17
17
  @admins = {}
18
- @models = {}
18
+ @models = nil
19
19
  end
20
20
 
21
21
  def empty?
22
22
  none?
23
23
  end
24
24
 
25
- def register(admin, register_model: true)
25
+ def register(admin)
26
26
  @admins[admin.admin_name] = admin
27
-
28
- if register_model && register_admin_for_model_loookup?(admin)
29
- @models[admin.model.name] ||= admin
30
- end
31
-
32
- admin
33
27
  end
34
28
 
35
29
  def lookup_admin(admin)
36
30
  # Given object is already an admin class
37
31
  return admin if admin.is_a?(Class) && admin < Trestle::Admin
38
32
 
33
+ # Given object is already an admin instance
34
+ return admin if admin.is_a?(Trestle::Admin)
35
+
39
36
  @admins[admin.to_s]
40
37
  end
41
38
  alias lookup lookup_admin
@@ -43,7 +40,7 @@ module Trestle
43
40
  def lookup_model(model)
44
41
  # Lookup each class in the model's ancestor chain
45
42
  while model
46
- admin = @models[model.name]
43
+ admin = models[model.name]
47
44
  return admin if admin
48
45
 
49
46
  model = model.superclass
@@ -54,8 +51,14 @@ module Trestle
54
51
  end
55
52
 
56
53
  private
57
- def register_admin_for_model_loookup?(admin)
58
- admin.respond_to?(:model) && !(admin.respond_to?(:singular?) && admin.singular?)
54
+ def models
55
+ @models ||= @admins.values.inject({}) { |result, admin|
56
+ if admin.respond_to?(:register_model?) && admin.register_model?
57
+ result[admin.model.name] ||= admin
58
+ end
59
+
60
+ result
61
+ }
59
62
  end
60
63
  end
61
64
  end
@@ -43,9 +43,10 @@ module Trestle
43
43
  admin.define_adapter_method(:to_param, &block)
44
44
  end
45
45
 
46
- def params(&block)
46
+ def permitted_params(&block)
47
47
  admin.define_adapter_method(:permitted_params, &block)
48
48
  end
49
+ alias params permitted_params
49
50
 
50
51
  def decorator(decorator)
51
52
  admin.decorator = decorator
@@ -76,14 +77,16 @@ module Trestle
76
77
  admin.define_adapter_method(:count, &block)
77
78
  end
78
79
 
79
- def scopes(options={}, &block)
80
- admin.scopes.options.merge!(options)
81
- admin.scopes.append(options, &block) if block_given?
80
+ def scopes(defaults: {}, **options, &block)
81
+ defaults = defaults.merge(options.slice(:count))
82
+
83
+ admin.scopes.apply_options!(options)
84
+ admin.scopes.append(**defaults, &block) if block_given?
82
85
  end
83
86
 
84
- def scope(name, scope=nil, options={}, &block)
87
+ def scope(name, scope=nil, **options, &block)
85
88
  scopes do
86
- scope(name, scope, options, &block)
89
+ scope(name, scope, **options, &block)
87
90
  end
88
91
  end
89
92
 
@@ -9,26 +9,26 @@ module Trestle
9
9
  return unless action?(:new)
10
10
 
11
11
  defaults = { action: :new, style: :light, icon: "fa fa-plus", class: "btn-new-resource" }
12
- link(label, defaults.merge(attrs))
12
+ link(label, **defaults.merge(attrs))
13
13
  end
14
14
 
15
15
  def save(label: t("buttons.save", default: "Save %{model_name}"), **attrs)
16
16
  defaults = { style: :success }
17
- button(label, defaults.merge(attrs))
17
+ button(label, **defaults.merge(attrs))
18
18
  end
19
19
 
20
20
  def delete(label: t("buttons.delete", default: "Delete %{model_name}"), **attrs)
21
21
  return unless action?(:destroy)
22
22
 
23
23
  defaults = Trestle::Options.new(action: :destroy, style: :danger, icon: "fa fa-trash", data: { turbo_method: "delete", turbo_frame: "_top", controller: "confirm-delete", confirm_delete_placement_value: "bottom" })
24
- link(label, instance, defaults.merge(attrs))
24
+ link(label, instance, **defaults.merge(attrs))
25
25
  end
26
26
 
27
27
  def dismiss(label: t("buttons.ok", default: "OK"), **attrs)
28
28
  return unless @template.modal_request?
29
29
 
30
30
  defaults = Trestle::Options.new(type: :button, style: :light, data: { bs_dismiss: "modal" })
31
- button(label, defaults.merge(attrs))
31
+ button(label, **defaults.merge(attrs))
32
32
  end
33
33
  alias ok dismiss
34
34
 
@@ -104,6 +104,10 @@ module Trestle
104
104
  options[:singular]
105
105
  end
106
106
 
107
+ def register_model?
108
+ options[:register_model] != false && !singular?
109
+ end
110
+
107
111
  def translate(key, options={})
108
112
  super(key, options.merge({
109
113
  model_name: model_name.titleize,
@@ -113,10 +117,8 @@ module Trestle
113
117
  end
114
118
  alias t translate
115
119
 
116
- def instance_path(instance, options={})
117
- action = options.fetch(:action) { :show }
118
- options = options.merge(id: to_param(instance)) unless singular?
119
-
120
+ def instance_path(instance, action: :show, **options)
121
+ options.merge!(id: to_param(instance)) unless singular?
120
122
  path(action, options)
121
123
  end
122
124
 
@@ -133,7 +135,7 @@ module Trestle
133
135
  }
134
136
 
135
137
  Proc.new do
136
- public_send(resource_method, resource_name, resource_options) do
138
+ public_send(resource_method, resource_name, **resource_options) do
137
139
  admin.additional_routes.each do |block|
138
140
  instance_exec(&block)
139
141
  end
@@ -1,37 +1,33 @@
1
1
  module Trestle
2
2
  class Scopes
3
3
  class Block
4
- attr_reader :block, :options
4
+ attr_reader :block, :defaults
5
5
 
6
- def initialize(options={}, &block)
7
- @options, @block = options, block
6
+ def initialize(**defaults, &block)
7
+ @defaults, @block = defaults, block
8
8
  end
9
9
 
10
10
  # Evaluates the scope block within the given admin context
11
11
  # and returns an array of the scopes that were defined.
12
12
  def scopes(context)
13
- context = Evaluator.new(context, options)
13
+ context = Evaluator.new(context, **defaults)
14
14
  context.instance_exec(context, &block)
15
15
  context.scopes
16
16
  end
17
17
 
18
+ protected
18
19
  class Evaluator
19
20
  include EvaluationContext
20
21
 
21
22
  attr_reader :scopes
22
23
 
23
- def initialize(context=nil, defaults={})
24
+ def initialize(context=nil, **defaults)
24
25
  @context, @defaults = context, defaults
25
26
  @scopes = []
26
27
  end
27
28
 
28
- def scope(name, scope=nil, options={}, &block)
29
- if scope.is_a?(Hash)
30
- options = scope
31
- scope = nil
32
- end
33
-
34
- scopes << Scope.new(@context, name, @defaults.merge(options), &(scope || block))
29
+ def scope(name, scope=nil, **options, &block)
30
+ scopes << Scope.new(@context, name, **@defaults.merge(options), &(scope || block))
35
31
  end
36
32
  end
37
33
  end
@@ -8,8 +8,12 @@ module Trestle
8
8
  @options = {}
9
9
  end
10
10
 
11
- def append(options={}, &block)
12
- @blocks << Block.new(options, &block)
11
+ def append(**defaults, &block)
12
+ @blocks << Block.new(**defaults, &block)
13
+ end
14
+
15
+ def apply_options!(options)
16
+ @options.merge!(options)
13
17
  end
14
18
 
15
19
  # Evaluates each of the scope blocks within the given admin context
@@ -1,10 +1,11 @@
1
1
  module Trestle
2
2
  class Scopes
3
3
  class Scope
4
- attr_reader :name, :options, :block
4
+ attr_reader :name, :group, :block
5
5
 
6
- def initialize(admin, name, options={}, &block)
7
- @admin, @name, @options, @block = admin, name, options, block
6
+ def initialize(admin, name, label: nil, group: nil, default: false, count: true, &block)
7
+ @admin, @name, @block = admin, name, block
8
+ @label, @group, @default, @count = label, group, default, count
8
9
  end
9
10
 
10
11
  def to_param
@@ -12,19 +13,15 @@ module Trestle
12
13
  end
13
14
 
14
15
  def label
15
- @options[:label] || @admin.t("scopes.#{name}", default: name.to_s.humanize.titleize)
16
- end
17
-
18
- def group
19
- @options[:group]
16
+ @label || default_label
20
17
  end
21
18
 
22
19
  def default?
23
- @options[:default] == true
20
+ @default
24
21
  end
25
22
 
26
23
  def count?
27
- @options[:count] != false
24
+ @count
28
25
  end
29
26
 
30
27
  def apply(collection)
@@ -40,6 +37,7 @@ module Trestle
40
37
  end
41
38
 
42
39
  def count(collection)
40
+ return unless count?
43
41
  @admin.count(@admin.merge_scopes(collection, apply(collection)))
44
42
  end
45
43
 
@@ -52,6 +50,11 @@ module Trestle
52
50
  default?
53
51
  end
54
52
  end
53
+
54
+ protected
55
+ def default_label
56
+ @admin.t("scopes.#{name}", default: name.to_s.humanize.titleize)
57
+ end
55
58
  end
56
59
  end
57
60
  end
data/lib/trestle/tab.rb CHANGED
@@ -6,7 +6,7 @@ module Trestle
6
6
 
7
7
  attr_reader :name, :options
8
8
 
9
- def initialize(name, options={})
9
+ def initialize(name, **options)
10
10
  @name, @options = name, options
11
11
  end
12
12
 
@@ -19,7 +19,7 @@ module Trestle
19
19
  end
20
20
 
21
21
  def badge
22
- content_tag(:span, options[:badge], class: "badge") if options[:badge]
22
+ tag.span(options[:badge], class: "badge") if options[:badge]
23
23
  end
24
24
  end
25
25
  end
@@ -36,7 +36,7 @@ module Trestle
36
36
  end
37
37
 
38
38
  def render(instance)
39
- @template.content_tag(:td, content(instance), class: classes, data: data)
39
+ @template.tag.td(content(instance), class: classes, data: data)
40
40
  end
41
41
 
42
42
  def render?
@@ -61,7 +61,8 @@ module Trestle
61
61
  return if options.key?(:header) && options[:header].in?([nil, false])
62
62
 
63
63
  if @table.sortable? && @column.sortable?
64
- @template.sort_link(header_text, @column.sort_field, @column.sort_options)
64
+ link_options = @column.sort_options.slice(:default, :default_order)
65
+ @template.sort_link(header_text, @column.sort_field, **link_options)
65
66
  else
66
67
  header_text
67
68
  end
@@ -69,7 +70,7 @@ module Trestle
69
70
 
70
71
  def content(instance)
71
72
  value = column_value(instance)
72
- content = @template.format_value(value, options)
73
+ content = @template.format_value(value, **options)
73
74
 
74
75
  if value.respond_to?(:id) && options[:link] != false
75
76
  # Column value was a model instance (e.g. from an association).
@@ -24,7 +24,7 @@ module Trestle
24
24
  end
25
25
 
26
26
  def render(instance)
27
- @template.content_tag(:tr, options(instance)) do
27
+ @template.tag.tr(**options(instance)) do
28
28
  @template.safe_join(columns.map { |column| column.render(instance) }, "\n")
29
29
  end
30
30
  end
@@ -5,16 +5,16 @@ module Trestle
5
5
  @template = template
6
6
  end
7
7
 
8
- def button(label, options={}, &block)
9
- Button.new(@template, label, options, &block)
8
+ def button(label, **options, &block)
9
+ Button.new(@template, label, **options, &block)
10
10
  end
11
11
 
12
- def link(label, instance_or_url={}, options={}, &block)
13
- Link.new(@template, label, instance_or_url, options, &block)
12
+ def link(label, instance_or_url=nil, **options, &block)
13
+ Link.new(@template, label, instance_or_url, **options, &block)
14
14
  end
15
15
 
16
- def dropdown(label=nil, options={}, &block)
17
- Dropdown.new(@template, label, options, &block)
16
+ def dropdown(label=nil, **options, &block)
17
+ Dropdown.new(@template, label, **options, &block)
18
18
  end
19
19
 
20
20
  # Only methods explicitly tagged as builder methods will be automatically
@@ -21,10 +21,7 @@ module Trestle
21
21
  end
22
22
 
23
23
  private
24
- def self.ruby2_keywords(*)
25
- end unless respond_to?(:ruby2_keywords, true)
26
-
27
- ruby2_keywords def method_missing(name, *args, &block)
24
+ def method_missing(name, *args, &block)
28
25
  result = builder.send(name, *args, &block)
29
26
 
30
27
  if builder.builder_methods.include?(name)
@@ -33,6 +30,7 @@ module Trestle
33
30
  result
34
31
  end
35
32
  end
33
+ ruby2_keywords :method_missing if respond_to?(:ruby2_keywords, true)
36
34
 
37
35
  def respond_to_missing?(name, include_all=false)
38
36
  builder.respond_to?(name) || super
@@ -3,17 +3,16 @@ module Trestle
3
3
  class Item
4
4
  attr_reader :label, :menu
5
5
 
6
- delegate :admin_link_to, :button_tag, :content_tag, :safe_join, :icon, to: :@template
6
+ delegate :admin_link_to, :button_tag, :tag, :safe_join, :icon, to: :@template
7
7
 
8
- def initialize(template, label, options={}, &block)
8
+ def initialize(template, label, icon: nil, style: nil, **options, &block)
9
9
  @template = template
10
10
  @label, @options, @block = label, options
11
11
 
12
12
  @menu = Menu.new(template)
13
13
  @menu.build(&block) if block_given?
14
14
 
15
- @icon = options.delete(:icon)
16
- @style = options.delete(:style)
15
+ @icon, @style = icon, style
17
16
  end
18
17
 
19
18
  def ==(other)
@@ -22,7 +21,7 @@ module Trestle
22
21
 
23
22
  def to_s
24
23
  if menu.items.any?
25
- content_tag(:div, class: "btn-group", role: "group") do
24
+ tag.div(class: "btn-group", role: "group") do
26
25
  safe_join([render, render_menu], "\n")
27
26
  end
28
27
  else
@@ -54,7 +53,7 @@ module Trestle
54
53
 
55
54
  def button_label(content, options)
56
55
  icon = icon(@icon) if @icon
57
- label = content_tag(:span, content, class: "btn-label")
56
+ label = tag.span(content, class: "btn-label")
58
57
 
59
58
  safe_join([icon, label].compact, " ")
60
59
  end
@@ -77,21 +76,13 @@ module Trestle
77
76
  class Link < Item
78
77
  attr_reader :instance_or_url
79
78
 
80
- def initialize(template, label, instance_or_url={}, options={}, &block)
81
- if instance_or_url.is_a?(Hash)
82
- super(template, label, instance_or_url, &block)
83
- else
84
- super(template, label, options, &block)
85
- @instance_or_url = instance_or_url
86
- end
79
+ def initialize(template, label, instance_or_url=nil, **options, &block)
80
+ super(template, label, **options, &block)
81
+ @instance_or_url = instance_or_url
87
82
  end
88
83
 
89
84
  def render
90
- if @instance_or_url
91
- admin_link_to(button_label(label, options), instance_or_url, options)
92
- else
93
- admin_link_to(button_label(label, options), options)
94
- end
85
+ admin_link_to(button_label(label, options), instance_or_url, **options)
95
86
  end
96
87
  end
97
88
 
@@ -102,7 +93,7 @@ module Trestle
102
93
 
103
94
  def label
104
95
  safe_join([
105
- super, content_tag(:span, "", class: "caret")
96
+ super, tag.span("", class: "caret")
106
97
  ], " ")
107
98
  end
108
99
 
@@ -1,7 +1,7 @@
1
1
  module Trestle
2
2
  class Toolbar
3
3
  class Menu
4
- delegate :content_tag, :safe_join, to: :@template
4
+ delegate :tag, :safe_join, to: :@template
5
5
 
6
6
  attr_reader :items
7
7
 
@@ -18,17 +18,17 @@ module Trestle
18
18
  end
19
19
 
20
20
  def render_toggle(options={})
21
- content_tag(:button, type: "button", class: Array(options[:class]) + ["dropdown-toggle dropdown-toggle-split"], data: { bs_toggle: "dropdown" }, aria: { expanded: false }) do
22
- content_tag(:span, I18n.t("trestle.ui.toggle_dropdown", default: "Toggle dropdown"), class: "visually-hidden")
21
+ tag.button(type: "button", class: Array(options[:class]) + ["dropdown-toggle dropdown-toggle-split"], data: { bs_toggle: "dropdown" }, aria: { expanded: false }) do
22
+ tag.span(I18n.t("trestle.ui.toggle_dropdown", default: "Toggle dropdown"), class: "visually-hidden")
23
23
  end
24
24
  end
25
25
 
26
26
  def render_items
27
- content_tag(:ul, safe_join(items, "\n"), class: "dropdown-menu dropdown-menu-end", role: "menu")
27
+ tag.ul(safe_join(items, "\n"), class: "dropdown-menu dropdown-menu-end", role: "menu")
28
28
  end
29
29
 
30
30
  class Builder
31
- delegate :admin_link_to, :content_tag, :tag, to: :@template
31
+ delegate :admin_link_to, :tag, to: :@template
32
32
 
33
33
  def initialize(menu, template)
34
34
  @menu, @template = menu, template
@@ -42,19 +42,19 @@ module Trestle
42
42
  options[:class] = Array(options[:class])
43
43
  options[:class] << "dropdown-item"
44
44
 
45
- item { admin_link_to(content, instance_or_url, options, &block) }
45
+ item { admin_link_to(content, instance_or_url, **options, &block) }
46
46
  end
47
47
 
48
48
  def header(text)
49
- item { content_tag(:h6, text, class: "dropdown-header") }
49
+ item { tag.h6(text, class: "dropdown-header") }
50
50
  end
51
51
 
52
52
  def divider
53
- item { tag(:hr, class: "dropdown-divider") }
53
+ item { tag.hr(class: "dropdown-divider") }
54
54
  end
55
55
 
56
56
  def item(options={}, &block)
57
- item = block_given? ? content_tag(:li, options, &block) : content_tag(:li, "", options)
57
+ item = block_given? ? tag.li(**options, &block) : tag.li("", **options)
58
58
 
59
59
  @menu.items << item
60
60
 
@@ -1,3 +1,3 @@
1
1
  module Trestle
2
- VERSION = "0.10.0"
2
+ VERSION = "0.10.1"
3
3
  end
data/lib/trestle.rb CHANGED
@@ -44,8 +44,8 @@ module Trestle
44
44
  end
45
45
 
46
46
  # Builds and registers a new admin resource
47
- def self.resource(name, register_model: true, **options, &block)
48
- register(Resource::Builder.create(name, options, &block), register_model: register_model)
47
+ def self.resource(name, **options, &block)
48
+ register(Resource::Builder.create(name, options, &block))
49
49
  end
50
50
 
51
51
  # Configuration methods
data/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "trestle",
3
- "version": "0.10.0",
3
+ "version": "0.10.1",
4
4
  "description": "A modern, responsive admin framework for Ruby on Rails",
5
5
  "homepage": "https://trestle.io",
6
6
  "repository": "https://github.com/TrestleAdmin/trestle.git",
@@ -18,15 +18,15 @@
18
18
  "@babel/preset-env": "^7.20.2",
19
19
  "autoprefixer": "^10.4.13",
20
20
  "babel-loader": "^9.1.2",
21
- "copy-webpack-plugin": "^11.0.0",
22
- "css-loader": "^6.7.3",
23
- "css-minimizer-webpack-plugin": "^5.0.0",
24
- "expose-loader": "^4.0.0",
21
+ "copy-webpack-plugin": "^12.0.2",
22
+ "css-loader": "^7.1.2",
23
+ "css-minimizer-webpack-plugin": "^7.0.0",
24
+ "expose-loader": "^5.0.0",
25
25
  "mini-css-extract-plugin": "^2.7.2",
26
26
  "postcss": "^8.4.21",
27
- "postcss-loader": "^7.0.2",
27
+ "postcss-loader": "^8.1.1",
28
28
  "sass": "^1.57.1",
29
- "sass-loader": "^13.2.0",
29
+ "sass-loader": "^16.0.2",
30
30
  "webpack": "^5.75.0",
31
31
  "webpack-bundle-analyzer": "^4.7.0",
32
32
  "webpack-cli": "^5.0.1"