recourse 2.0.2 → 3.0.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.
- checksums.yaml +4 -4
- data/app/helpers/searchable_helper.rb +10 -10
- data/lib/recourse/searchable.rb +3 -9
- data/lib/recourse/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 00a9c1bf568e9a4d8865b558364d3aa001887eb2cdabafad876ec20497442099
|
|
4
|
+
data.tar.gz: d5e660c1b0ff23011704883345e5be94bfc8103e936ac55b8f7bcb7e17855898
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 1787a883804dd4e8bfb15415190421f0e54984bd64250141a59b09becb8e90a5682037becce24f6997c5ef4a193ba1db8aa61763a92157329fe09ba2e6e73ce4
|
|
7
|
+
data.tar.gz: e1ab2bd8325350dcb8e723bdb379236a6697d64ea51498b36692a060efdb0cc033361a238678af1bccb5a7d4c7d8029bfe7866ef981ce73d24546fddaeb5a504
|
|
@@ -5,25 +5,25 @@ module SearchableHelper
|
|
|
5
5
|
# @param [ApplicationRecord] model the model of each object returned by the search
|
|
6
6
|
def search_form(q:, model:, url: url_for(model))
|
|
7
7
|
search_form_for(q, search_form_params(url: url)) do |form|
|
|
8
|
-
safe_join [
|
|
8
|
+
safe_join [*filter_fields_for(form, model:), search_field_for(form, model:)].compact
|
|
9
9
|
end
|
|
10
10
|
end
|
|
11
11
|
|
|
12
12
|
# Highlights the search query within the text of the matched content.
|
|
13
|
-
def search_highlight(content, model:)
|
|
14
|
-
highlight content.to_s, params.dig(:q, model.search_field)
|
|
15
|
-
end
|
|
13
|
+
def search_highlight(content, model:) = highlight content.to_s, params.dig(:q, model.search_field)
|
|
16
14
|
|
|
17
15
|
private
|
|
18
16
|
|
|
19
|
-
def
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
17
|
+
def filter_fields_for(form, model:)
|
|
18
|
+
selects = model.filter_fields.map do |method, options = {}|
|
|
19
|
+
choices = options.delete :choices
|
|
20
|
+
form.select method, choices, options, filter_field_params if choices
|
|
21
|
+
end
|
|
22
|
+
safe_join selects.compact
|
|
24
23
|
end
|
|
25
24
|
|
|
26
25
|
def search_field_for(form, model:)
|
|
26
|
+
return unless model.search_field
|
|
27
27
|
adorn = tag.svg width: 16, height: 16, viewBox: '0 0 16 16', xmlns: 'http://www.w3.org/2000/svg' do
|
|
28
28
|
tag.path d: 'M11.742 10.344a6.5 6.5 0 1 0-1.397 1.398h-.001q.044.06.098.115l3.85 3.85a1 1 0 0 0 1.415-1.414l-3.85-3.85a1 1 0 0 0-.115-.1zM12 6.5a5.5 5.5 0 1 1-11 0 5.5 5.5 0 0 1 11 0'
|
|
29
29
|
end
|
|
@@ -33,7 +33,7 @@ private
|
|
|
33
33
|
|
|
34
34
|
def search_form_params(url:)
|
|
35
35
|
{
|
|
36
|
-
url: url, class: 'col-
|
|
36
|
+
url: url, class: 'col-6 d-flex pe-4', role: 'search',
|
|
37
37
|
data: { turbo_frame: :results, turbo_action: :advance },
|
|
38
38
|
}
|
|
39
39
|
end
|
data/lib/recourse/searchable.rb
CHANGED
|
@@ -26,16 +26,10 @@ module Recourse
|
|
|
26
26
|
end
|
|
27
27
|
|
|
28
28
|
# @note to be overriden by subclasses -- the name of the field to filter by.
|
|
29
|
-
def
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
# @note to be overriden by subclasses -- the prompt for the field to filter by.
|
|
33
|
-
def filter_prompt
|
|
34
|
-
end
|
|
29
|
+
def filter_fields = {}
|
|
35
30
|
|
|
36
|
-
#
|
|
37
|
-
def
|
|
38
|
-
end
|
|
31
|
+
# Returns the names of all the search and filter fields.
|
|
32
|
+
def searchable_fields = [search_field, filter_fields.keys]
|
|
39
33
|
end
|
|
40
34
|
end
|
|
41
35
|
|
data/lib/recourse/version.rb
CHANGED