forest_admin_datasource_customizer 1.39.1 → 1.39.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b0b2718b2eec46a5342ad0299179e3688bdeeede265ba24197b82bbc5b99a67d
4
- data.tar.gz: dbaf7dc8f8ddd9e71dbf5f103e24f1c630da61e7f83f9ba8761a58b8506e009c
3
+ metadata.gz: 78d96df2b8c9a17830a1e489d8fd05780fd0f320c791bbfbec87c697d2fb25d3
4
+ data.tar.gz: f6c904ab8d5fba6fc0cc736fd0ab632cf6398272121a1e1e5c5f70616828bc66
5
5
  SHA512:
6
- metadata.gz: a4f52a1fef9cf0c855d13e8dd068d69776ec47bab8a28e81713301b1ddade24d87186a955e847db617946bb91fcae64ff7d44629d08a67e369a96f79fb5165e2
7
- data.tar.gz: 9b54eaa42e1e87c6b8a046e78b6fb7887ee230a33467fae44abd4a277f78046dd22f3033e5e79e68a786a79ac4422b122997b59543d4e170d24c6efe02bb832f
6
+ metadata.gz: 8d624eb012a899bbc077fd0b577ecf2a60d66bc4d2b4b9dc8fc319cfaf76fe4f1244505a12e4b177feccdb2502952ba442c611c9a3405291f4fda64dcdec10c0
7
+ data.tar.gz: 64a764eaabecfd51708fa405f7dc9ce88cf6e4e3b74a76d2b4a8c6d152bb6783322597ab4594195f4c5f0b6e6a2afe5525405f3cf469765f6cf84c5697919a6c
@@ -56,8 +56,43 @@ module ForestAdminDatasourceCustomizer
56
56
  filter
57
57
  end
58
58
 
59
+ # Answers against +@child_collection+, which is what the search actually reads: a field
60
+ # hidden by the publication or renaming layers above is still searched.
61
+ #
62
+ # The term is run through the same +build_condition+ selection +refine_filter+ applies, so a
63
+ # field the search cannot match — a number column for a word, a uuid column for anything
64
+ # else — is left out rather than reported as reached.
65
+ #
66
+ # +nil+ whenever this layer does not choose the fields — a replacer is installed, or the
67
+ # child collection searches natively — because then no enumeration made here is true.
68
+ def searched_fields(search, extended)
69
+ return nil unless enumerable_search?
70
+ return [] if insignificant_search?(search)
71
+
72
+ get_fields(extended).filter_map do |path, schema|
73
+ searched_field(path) if build_condition(path, schema, search)
74
+ end
75
+ end
76
+
59
77
  private
60
78
 
79
+ def enumerable_search?
80
+ @replacer.nil? && !@child_collection.schema[:searchable]
81
+ end
82
+
83
+ def insignificant_search?(search)
84
+ search.nil? || search.strip.empty?
85
+ end
86
+
87
+ def searched_field(path)
88
+ {
89
+ path: path,
90
+ collections: ForestAdminDatasourceToolkit::Utils::FieldPath.leaf_collection_names(
91
+ @child_collection, path
92
+ )
93
+ }
94
+ end
95
+
61
96
  def default_replacer(search, extended)
62
97
  searchable_fields = get_fields(extended)
63
98
 
@@ -51,15 +51,19 @@ module ForestAdminDatasourceCustomizer
51
51
  projection.apply(records)
52
52
  end
53
53
 
54
+ # `@sorts` holds nil as the value of an emulated field, so membership is
55
+ # read with `key?`, the way `emulated?` reads it. The ColumnSchema objects
56
+ # belong to the collection below, so each is copied before the flag is
57
+ # written.
54
58
  def refine_schema(child_schema)
55
- child_schema[:fields].each do |name, schema|
56
- if schema.type == 'Column'
57
- schema.is_sortable = true if @sorts[name].nil?
58
- child_schema[:fields][name] = schema
59
- end
59
+ schema = child_schema.dup
60
+ schema[:fields] = child_schema[:fields].to_h do |name, field|
61
+ next [name, field] unless field.type == 'Column' && @sorts.key?(name)
62
+
63
+ [name, field.dup.tap { |column| column.is_sortable = true }]
60
64
  end
61
65
 
62
- child_schema
66
+ schema
63
67
  end
64
68
 
65
69
  def rewrite_plain_sort_clause(clause)
@@ -1,3 +1,3 @@
1
1
  module ForestAdminDatasourceCustomizer
2
- VERSION = "1.39.1"
2
+ VERSION = "1.39.3"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: forest_admin_datasource_customizer
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.39.1
4
+ version: 1.39.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthieu
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2026-08-20 00:00:00.000000000 Z
12
+ date: 2026-08-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport