Skip to content

Commit a7f3ee4

Browse files
committed
Move default option evaluation lower, allow column/filter instance to be passed
1 parent 0858f3b commit a7f3ee4

File tree

6 files changed

+10
-14
lines changed

6 files changed

+10
-14
lines changed

Diff for: lib/datagrid/columns.rb

+2-4
Original file line numberDiff line numberDiff line change
@@ -369,11 +369,9 @@ def define_column(columns, name, query = nil, **options, &block)
369369
model.public_send(name)
370370
end
371371

372-
options_with_defaults = default_column_options.merge(options)
373-
374-
position = Datagrid::Utils.extract_position_from_options(columns, options_with_defaults)
372+
position = Datagrid::Utils.extract_position_from_options(columns, options)
375373
column = Datagrid::Columns::Column.new(
376-
self, name, query, options_with_defaults, &block
374+
self, name, query, options, &block
377375
)
378376
columns.insert(position, column)
379377
column

Diff for: lib/datagrid/columns/column.rb

+2-2
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ def initialize(grid_class, name, query, options = {}, &block)
5252
@grid_class = grid_class
5353
@name = name.to_sym
5454
@query = query
55-
@options = options
55+
@options = Datagrid::Utils.callable(grid_class.default_column_options, self).merge(options)
5656

5757
if options[:class]
5858
Datagrid::Utils.warn_once(
@@ -86,7 +86,7 @@ def label
8686
# @return [String] column header
8787
def header
8888
if (header = options[:header])
89-
Datagrid::Utils.callable(header, self)
89+
Datagrid::Utils.callable(header)
9090
else
9191
Datagrid::Utils.translate_from_namespace(:columns, grid_class, name)
9292
end

Diff for: lib/datagrid/filters.rb

+2-4
Original file line numberDiff line numberDiff line change
@@ -221,10 +221,8 @@ def filter(name, type = :default, **options, &block)
221221
klass = type.is_a?(Class) ? type : FILTER_TYPES[type]
222222
raise ConfigurationError, "filter class #{type.inspect} not found" unless klass
223223

224-
options_with_defaults = default_filter_options.merge(options)
225-
226-
position = Datagrid::Utils.extract_position_from_options(filters_array, options_with_defaults)
227-
filter = klass.new(self, name, **options_with_defaults, &block)
224+
position = Datagrid::Utils.extract_position_from_options(filters_array, options)
225+
filter = klass.new(self, name, **options, &block)
228226
filters_array.insert(position, filter)
229227

230228
datagrid_attribute(name) do |value|

Diff for: lib/datagrid/filters/base_filter.rb

+2-2
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ class BaseFilter
1515
def initialize(grid_class, name, **options, &block)
1616
self.grid_class = grid_class
1717
self.name = name.to_sym
18-
self.options = options
18+
self.options = Datagrid::Utils.callable(grid_class.default_filter_options, self).merge(options)
1919
self.block = block
2020
end
2121

@@ -76,7 +76,7 @@ def separator
7676

7777
def header
7878
if (header = options[:header])
79-
Datagrid::Utils.callable(header, self)
79+
Datagrid::Utils.callable(header)
8080
else
8181
Datagrid::Utils.translate_from_namespace(:filters, grid_class, name)
8282
end

Diff for: spec/datagrid/columns_spec.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ class Report27 < Datagrid::Base
101101

102102
it "uses configured default header" do
103103
grid = test_grid do
104-
self.default_column_options = { header: ->(column) { I18n.t(column.name, scope: "other.location") } }
104+
self.default_column_options = ->(column) { { header: -> { I18n.t(column.name, scope: "other.location") } } }
105105

106106
scope { Entry }
107107
column(:name)

Diff for: spec/datagrid/filters_spec.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ class InheritedReport < TranslatedReport
205205

206206
it "translates filter using configured default header" do
207207
grid = test_grid do
208-
self.default_filter_options = { header: ->(filter) { I18n.t(filter.name, scope: "other.location") } }
208+
self.default_filter_options = ->(filter) { { header: -> { I18n.t(filter.name, scope: "other.location") } } }
209209

210210
scope { Entry }
211211
filter(:name)

0 commit comments

Comments
 (0)