blacklight 8.0.0.beta4 → 8.0.0.beta6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (122) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.rubocop_todo.yml +3 -1
  4. data/Gemfile +0 -4
  5. data/README.md +1 -1
  6. data/Rakefile +18 -0
  7. data/VERSION +1 -1
  8. data/app/assets/config/blacklight/manifest.js +3 -0
  9. data/app/assets/stylesheets/blacklight/_facets.scss +32 -5
  10. data/app/assets/stylesheets/blacklight/blacklight_defaults.scss +1 -1
  11. data/app/components/blacklight/document_component.rb +44 -18
  12. data/app/components/blacklight/document_metadata_component.html.erb +4 -2
  13. data/app/components/blacklight/document_metadata_component.rb +8 -2
  14. data/app/components/blacklight/metadata_field_layout_component.rb +7 -4
  15. data/app/components/blacklight/metadata_field_plain_text_layout_component.rb +17 -0
  16. data/app/components/blacklight/response/facet_group_component.html.erb +2 -1
  17. data/app/components/blacklight/response/sort_component.rb +1 -1
  18. data/app/components/blacklight/response/spellcheck_component.rb +1 -1
  19. data/app/components/blacklight/response/view_type_button_component.rb +1 -1
  20. data/app/components/blacklight/response/view_type_component.rb +1 -1
  21. data/app/components/blacklight/search_context/server_applied_params_component.html.erb +4 -0
  22. data/app/components/blacklight/search_context/server_applied_params_component.rb +13 -0
  23. data/app/components/blacklight/{search_context_component.html.erb → search_context/server_item_pagination_component.html.erb} +0 -0
  24. data/app/components/blacklight/search_context/server_item_pagination_component.rb +71 -0
  25. data/app/components/blacklight/system/dropdown_component.rb +1 -1
  26. data/app/components/blacklight/system/flash_message_component.rb +1 -1
  27. data/app/components/blacklight/system/modal_component.rb +1 -1
  28. data/app/controllers/concerns/blacklight/bookmarks.rb +1 -1
  29. data/app/controllers/concerns/blacklight/search_context.rb +46 -6
  30. data/app/helpers/blacklight/blacklight_helper_behavior.rb +0 -101
  31. data/app/helpers/blacklight/catalog_helper_behavior.rb +27 -54
  32. data/app/helpers/blacklight/component_helper_behavior.rb +0 -11
  33. data/app/helpers/blacklight/document_helper_behavior.rb +76 -0
  34. data/app/helpers/blacklight/layout_helper_behavior.rb +59 -0
  35. data/app/helpers/blacklight/url_helper_behavior.rb +11 -3
  36. data/app/javascript/blacklight/bookmark_toggle.js +8 -15
  37. data/app/javascript/blacklight/button_focus.js +10 -10
  38. data/app/javascript/blacklight/index.js +5 -5
  39. data/app/javascript/blacklight/modal.js +11 -16
  40. data/app/javascript/blacklight/search_context.js +51 -57
  41. data/app/models/concerns/blacklight/document.rb +11 -0
  42. data/app/models/record_mailer.rb +19 -15
  43. data/app/presenters/blacklight/document_presenter.rb +13 -11
  44. data/app/presenters/blacklight/index_presenter.rb +1 -1
  45. data/app/presenters/blacklight/rendering/abstract_step.rb +4 -0
  46. data/app/presenters/blacklight/rendering/join.rb +7 -1
  47. data/app/presenters/blacklight/rendering/link_to_facet.rb +1 -1
  48. data/app/presenters/blacklight/rendering/microdata.rb +1 -1
  49. data/app/services/blacklight/search_service.rb +2 -1
  50. data/app/views/catalog/_document.atom.builder +1 -1
  51. data/app/views/catalog/_document.html.erb +3 -8
  52. data/app/views/catalog/_document_list.html.erb +2 -1
  53. data/app/views/catalog/_show_main_content.html.erb +3 -9
  54. data/app/views/catalog/index.html.erb +3 -0
  55. data/app/views/catalog/show.html.erb +1 -6
  56. data/app/views/layouts/blacklight/base.html.erb +4 -4
  57. data/app/views/record_mailer/email_record.text.erb +4 -3
  58. data/app/views/record_mailer/sms_record.text.erb +4 -4
  59. data/blacklight.gemspec +1 -1
  60. data/config/importmap.rb +1 -1
  61. data/config/locales/blacklight.ar.yml +209 -232
  62. data/config/locales/blacklight.ca.yml +0 -6
  63. data/config/locales/blacklight.de.yml +197 -215
  64. data/config/locales/blacklight.en.yml +2 -6
  65. data/config/locales/blacklight.es.yml +196 -215
  66. data/config/locales/blacklight.fr.yml +196 -219
  67. data/config/locales/blacklight.hu.yml +193 -212
  68. data/config/locales/blacklight.it.yml +197 -215
  69. data/config/locales/blacklight.nl.yml +193 -212
  70. data/config/locales/blacklight.pt-BR.yml +195 -215
  71. data/config/locales/blacklight.sq.yml +193 -212
  72. data/config/locales/blacklight.zh.yml +194 -213
  73. data/lib/blacklight/configuration/session_tracking_config.rb +45 -0
  74. data/lib/blacklight/configuration/view_config.rb +0 -4
  75. data/lib/blacklight/configuration.rb +8 -4
  76. data/lib/blacklight/engine.rb +6 -7
  77. data/lib/blacklight/routes/searchable.rb +1 -0
  78. data/lib/generators/blacklight/assets/importmap_generator.rb +9 -2
  79. data/lib/generators/blacklight/assets/propshaft_generator.rb +11 -2
  80. data/lib/generators/blacklight/assets/sprockets_generator.rb +2 -0
  81. data/lib/generators/blacklight/templates/solr_document.rb +0 -6
  82. data/package.json +7 -4
  83. data/rollup.config.js +11 -1
  84. data/spec/components/blacklight/document_component_spec.rb +9 -4
  85. data/spec/components/blacklight/search_context/server_applied_params_component_spec.rb +29 -0
  86. data/spec/components/blacklight/{search_context_component_spec.rb → search_context/server_item_pagination_component_spec.rb} +15 -4
  87. data/spec/controllers/bookmarks_controller_spec.rb +1 -1
  88. data/spec/controllers/catalog_controller_spec.rb +17 -5
  89. data/spec/features/component_template_override_spec.rb +8 -0
  90. data/spec/features/modal_spec.rb +12 -0
  91. data/spec/features/sitelinks_search_box_spec.rb +13 -0
  92. data/spec/helpers/blacklight/url_helper_behavior_spec.rb +1 -1
  93. data/spec/helpers/blacklight_helper_spec.rb +0 -56
  94. data/spec/helpers/catalog_helper_spec.rb +56 -0
  95. data/spec/lib/blacklight/configuration/session_tracking_config_spec.rb +38 -0
  96. data/spec/models/blacklight/icon_spec.rb +0 -2
  97. data/spec/models/record_mailer_spec.rb +36 -23
  98. data/spec/presenters/blacklight/document_presenter_spec.rb +1 -0
  99. data/spec/presenters/blacklight/field_presenter_spec.rb +2 -2
  100. data/spec/presenters/blacklight/index_presenter_spec.rb +1 -0
  101. data/spec/presenters/blacklight/show_presenter_spec.rb +1 -0
  102. data/spec/presenters/pipeline_spec.rb +13 -2
  103. data/spec/routing/catalog_routing_spec.rb +4 -0
  104. data/spec/spec_helper.rb +1 -1
  105. data/spec/support/view_component_test_helpers.rb +21 -0
  106. data/spec/test_app_templates/Gemfile.extra +4 -0
  107. data/spec/test_app_templates/lib/generators/test_app_generator.rb +8 -0
  108. data/spec/views/catalog/_document.html.erb_spec.rb +22 -1
  109. data/spec/views/catalog/_document_list.html.erb_spec.rb +7 -2
  110. data/tasks/blacklight.rake +1 -1
  111. metadata +24 -20
  112. data/app/assets/javascripts/blacklight/blacklight.esm.js +0 -390
  113. data/app/assets/javascripts/blacklight/blacklight.esm.js.map +0 -1
  114. data/app/assets/javascripts/blacklight/blacklight.js +0 -398
  115. data/app/assets/javascripts/blacklight/blacklight.js.map +0 -1
  116. data/app/components/blacklight/search_context_component.rb +0 -68
  117. data/app/models/concerns/blacklight/document/email.rb +0 -27
  118. data/app/models/concerns/blacklight/document/sms.rb +0 -25
  119. data/spec/features/sitelinks_search_box.rb +0 -13
  120. data/spec/models/blacklight/document/email_spec.rb +0 -57
  121. data/spec/models/blacklight/document/sms_spec.rb +0 -58
  122. data/spec/support/view_component_capybara_test_helpers.rb +0 -8
@@ -1,240 +1,221 @@
1
+ ---
1
2
  zh:
2
- views:
3
- pagination:
4
- first: '« 首页'
5
- last: '末页 »'
6
- previous: '« 上一页'
7
- next: '下一页 »'
8
- truncate: '…'
9
- aria:
10
- container_label: 分页链接
11
- current_page: 当前页面,页面%{page}
12
- go_to_page: 前往页面%{page}
13
- go_to_previous_page: 转到上一页
14
- go_to_next_page: 转到下一页
15
- go_to_first_page: 转到第一页
16
- go_to_last_page: 转到最后一页
17
-
18
- pagination_compact:
19
- previous: '« 上一页'
20
- next: '下一页 »'
21
-
22
3
  blacklight:
23
- application_name: 'Blacklight'
24
- skip_links:
25
- label: '跳过链接'
26
- main_content: '转到主要内容'
27
- search_field: '转到搜索'
28
- first_result: '转到第一个搜索结果'
29
- header_links:
30
- login: '登陆'
31
- logout: '注销'
32
- bookmarks: '书签'
33
- search_history: '搜索历史'
34
-
35
- welcome: '欢迎!'
36
- and: '和'
37
- or: '或'
38
-
39
- modal:
40
- close: "关闭"
41
-
4
+ and:
5
+ application_name: Blacklight
6
+ back_to_bookmarks: 返回书签页面
7
+ back_to_search: 返回搜索页面
42
8
  bookmarks:
43
- title: '书签'
44
- page_title: '书签 - %{application_name}'
45
- no_bookmarks: '你还没有任何书签'
46
9
  add:
47
- button: '书签'
10
+ button: 书签
11
+ failure: 抱歉,保存书签时出错。
48
12
  success:
49
- one: '成功添加书签。'
50
- other: '成功添加书签。'
51
- failure: '抱歉,保存书签时出错。'
52
- remove:
53
- button: '删除书签'
54
- success: '成功删除书签。'
55
- failure: '抱歉,删除书签时出错。'
56
- action_confirm: '删除这个书签?'
57
- clear:
58
- action_title: '清除书签'
59
- action_confirm: '清除所有书签?'
60
- success: '已经清除了所有书签。'
61
- failure: '抱歉,清除书签时出错。'
62
- need_login: '登陆后才能访问你的书签功能。'
63
- list_title: '你的书签'
64
- delete: '删除'
65
-
66
- search_history:
13
+ one: 成功添加书签。
14
+ other: 成功添加书签。
67
15
  clear:
68
- action_title: '清除搜索历史'
69
- action_confirm: '清除搜索历史?'
70
- success: '已经清除搜索历史。'
71
- failure: '清除搜索历史时出错。'
72
- title: ''
73
- page_title: '搜索历史 - %{application_name}'
74
- no_history: '你没有任何搜索历史'
75
- recent: '你最近搜索历史'
76
- forget: '去除'
77
- save: '保存'
78
-
79
- tools:
80
- title: '工具'
81
- citation: '引用'
82
- email: '电子邮件'
83
- sms: '发送短信'
84
- clear: '清除'
85
-
16
+ action_confirm: 清除所有书签?
17
+ action_title: 清除书签
18
+ failure: 抱歉,清除书签时出错。
19
+ success: 已经清除了所有书签。
20
+ delete: 删除
21
+ list_title: 你的书签
22
+ need_login: 登陆后才能访问你的书签功能。
23
+ no_bookmarks: 你还没有任何书签
24
+ page_title: 书签 - %{application_name}
25
+ remove:
26
+ action_confirm: 删除这个书签?
27
+ button: 删除书签
28
+ failure: 抱歉,删除书签时出错。
29
+ success: 成功删除书签。
30
+ title: 书签
86
31
  citation:
87
- mla: 'MLA'
88
- apa: 'APA'
89
- chicago: 'Chicago'
90
-
32
+ apa: APA
33
+ chicago: Chicago
34
+ mla: MLA
35
+ did_you_mean: 你是要输入: %{options} 吗?
91
36
  email:
37
+ errors:
38
+ to:
39
+ blank: 请输入电子邮件接收人才能发送
40
+ invalid: 请输入合法电子邮件地址
92
41
  form:
93
- title: '通过电子邮件发送'
94
- to: '电子邮件:'
95
- message: '正文:'
96
- submit: '发送'
42
+ message: 正文:
43
+ submit: 发送
44
+ title: 通过电子邮件发送
45
+ to: 电子邮件:
46
+ success: 已发送电子邮件
97
47
  text:
98
- default_title: ''
99
- title: '标题: %{value}'
100
- author: '作者: %{value}'
101
- format: '格式: %{value}'
102
- language: '语言: %{value}'
48
+ default_title: 无
49
+ message: 正文: %{message}
103
50
  subject:
104
51
  one: '记录: %{title}'
105
- other: '记录'
52
+ other: 记录
106
53
  url: '网址: %{url}'
107
- message: '正文: %{message}'
108
-
109
- success: "已发送电子邮件"
110
-
111
- errors:
112
- to:
113
- invalid: '请输入合法电子邮件地址'
114
- blank: '请输入电子邮件接收人才能发送'
115
- sms:
116
- form:
117
- title: '通过短信发送'
118
- to: '电话号码:'
119
- carrier: '运营商'
120
- carrier_prompt: '请选择运营商'
121
- submit: '发送'
122
- text:
123
- title: '%{value}'
124
- author: ' 来自 %{value}'
125
- url: '链接: %{url}'
126
- success: "已发送短信"
127
- errors:
128
- to:
129
- invalid: '请输入10位正确电话号码'
130
- blank: "请输入接收人电话号码才能发送短信"
131
- carrier:
132
- blank: '你必须选择一个运营商'
133
- invalid: "你必须输入一个运营商"
134
-
135
- back_to_search: '返回搜索页面'
136
- back_to_bookmarks: '返回书签页面'
137
-
54
+ entry_name:
55
+ default: 条目
56
+ grouped:
57
+ default: 分组结果
58
+ header_links:
59
+ bookmarks: 书签
60
+ login: 登陆
61
+ logout: 注销
62
+ search_history: 搜索历史
63
+ main:
64
+ aria:
65
+ main_container: 主要内容
66
+ modal:
67
+ close: 关闭
68
+ or:
138
69
  search:
139
- page_title:
140
- title: '%{constraints} - %{application_name} 搜索结果'
141
- constraint: '%{label}: %{value}'
142
- many_constraint_values: '%{values} 已选'
143
- header: '搜'
144
- search_constraints_header: '搜索条件'
145
- search_results: '搜索结果'
146
- errors:
147
- invalid_solr_id: "抱歉,你要找的结果不存在。"
148
- per_page:
149
- label: '%{count}<span class="sr-only visually-hidden"> 每页</span>'
150
- button_label: '%{count} 每页' # TODO: Remove during major release
151
- button_label_html: '%{count}<span class="d-none d-sm-inline"> 每页</span>'
152
- title: '每页显示结果数'
153
- submit: '更新'
154
- aria_label: '结果导航'
155
- sort:
156
- label: '按 %{field} 排序' # TODO: Remove during major release
157
- label_html: '<span class="d-none d-sm-inline">按 %{field} </span>排序'
158
- submit: '排序'
159
- form:
160
- search_field:
161
- label: '搜索字段'
162
- title: '设定的搜索选项'
163
- post_label: '为'
164
- search:
165
- label: '搜索'
166
- placeholder: '搜索...'
167
- submit: '搜索'
168
- pagination:
169
- title: '搜索结果导航'
170
- pagination_info:
171
- no_items_found: '没有找到 %{entry_name} '
172
- single_item_found: '找到 <strong>1</strong> %{entry_name}'
173
- pages:
174
- one: '<strong>%{start_num}</strong> - <strong>%{end_num}</strong> 共 <strong>%{total_num}</strong>'
175
- other: '<strong>%{start_num}</strong> - <strong>%{end_num}</strong> 共 <strong>%{total_num}</strong>'
176
- entry_pagination_info:
177
- one: '<strong>1 / 1</strong>'
178
- other: '<strong>%{current}</strong> / <strong>%{total}</strong>'
70
+ atom_feed: 搜索结果Atom
71
+ bookmarks:
72
+ absent: 加入书签
73
+ inprogress: 保存...
74
+ present: 在书签中
179
75
  documents:
180
76
  aria:
181
- search_results: '搜索结果'
182
- limit_search: '限定搜索'
183
- counter: '%{counter}. '
77
+ limit_search: 限定搜索
78
+ search_results: 搜索结果
79
+ counter: "%{counter}. "
80
+ entry_pagination_info:
81
+ one: "<strong>1 / 1</strong>"
82
+ other: "<strong>%{current}</strong> / <strong>%{total}</strong>"
83
+ errors:
84
+ invalid_solr_id: 抱歉,你要找的结果不存在。
184
85
  facets:
185
- title: '限定搜索'
186
- clear: '清除搜索条件'
187
- all: '皆'
188
- sort:
189
- count: '按数量排序'
190
- index: '按字母排序'
191
- count: '%{number}'
192
- more_html: '更多 <span class="sr-only visually-hidden">%{field_name}</span> »'
193
- selected:
194
- remove: '[删除]'
86
+ all:
87
+ clear: 清除搜索条件
88
+ count: "%{number}"
89
+ group:
90
+ close: 隐藏方面
91
+ open: 显示方面
92
+ toggle: 更多 »
195
93
  missing: "[未找到]"
94
+ more_html: 更多 <span class="sr-only visually-hidden">%{field_name}</span> »
196
95
  pivot:
197
- show: 打开
198
96
  hide: 关
199
- group:
200
- toggle: '更多 »'
201
- group:
202
- more: '更多 »'
97
+ show: 打开
98
+ selected:
99
+ remove: "[删除]"
100
+ sort:
101
+ count: 按数量排序
102
+ index: 按字母排序
103
+ title: 限定搜索
203
104
  filters:
204
- title: '你在搜索:'
205
- label: '%{label}:'
105
+ label: "%{label}:"
206
106
  remove:
207
- value: '删除限定条件 %{value}'
208
107
  label_value: '删除限定条件 %{label}: %{value}'
209
- start_over: '重新开始'
108
+ value: 删除限定条件 %{value}
109
+ title: 你在搜索:
110
+ form:
111
+ search:
112
+ label: 搜索
113
+ placeholder: 搜索...
114
+ search_field:
115
+ label: 搜索字段
116
+ post_label: 为
117
+ title: 设定的搜索选项
118
+ submit: 搜索
119
+ group:
120
+ more: 更多 »
121
+ header: 搜
210
122
  index:
211
- label: '%{label}:'
123
+ label: "%{label}:"
124
+ page_title:
125
+ constraint: "%{label}: %{value}"
126
+ many_constraint_values: "%{values} 已选"
127
+ title: "%{constraints} - %{application_name} 搜索结果"
128
+ pagination:
129
+ title: 搜索结果导航
130
+ pagination_info:
131
+ no_items_found: '没有找到 %{entry_name} '
132
+ pages:
133
+ one: "<strong>%{start_num}</strong> - <strong>%{end_num}</strong> 共 <strong>%{total_num}</strong>"
134
+ other: "<strong>%{start_num}</strong> - <strong>%{end_num}</strong> 共 <strong>%{total_num}</strong>"
135
+ single_item_found: 找到 <strong>1</strong> %{entry_name}
136
+ per_page:
137
+ aria_label: 结果导航
138
+ button_label: "%{count} 每页"
139
+ button_label_html: '%{count}<span class="d-none d-sm-inline"> 每页</span>'
140
+ label: '%{count}<span class="sr-only visually-hidden"> 每页</span>'
141
+ submit: 更新
142
+ title: 每页显示结果数
143
+ rss_feed: 搜索结果RSS
144
+ search_constraints_header: 搜索条件
145
+ search_results: 搜索结果
212
146
  show:
213
- title: '%{document_title} - %{application_name}'
214
- label: '%{label}:'
215
- rss_feed: '搜索结果RSS'
216
- atom_feed: '搜索结果Atom'
217
- bookmarks:
218
- present: "在书签中"
219
- absent: "加入书签"
220
- inprogress: "保存..."
221
- zero_results:
222
- title: "未找到任何结果"
223
- modify_search: "请更改你的搜索条件"
224
- use_fewer_keywords: "使用更少的搜索条件,使用左边的链接来筛选搜索结果。"
225
- search_fields: "你在搜索如下字段 %{search_fields}"
226
- search_everything: "试一试搜索所有记录"
227
- view_title: "以如下方式察看搜索结果: "
147
+ label: "%{label}:"
148
+ title: "%{document_title} - %{application_name}"
149
+ sort:
150
+ label: 按 %{field} 排序
151
+ label_html: <span class="d-none d-sm-inline">按 %{field} </span>排序
152
+ submit: 排序
153
+ start_over: 重新开始
228
154
  view:
229
- list: "列表"
230
-
231
- entry_name:
232
- default: '条目'
233
- grouped:
234
- default: '分组结果'
235
-
236
- did_you_mean: '你是要输入: %{options} 吗?'
237
-
238
- main:
155
+ list: 列表
156
+ view_title: '以如下方式察看搜索结果: '
157
+ zero_results:
158
+ modify_search: 请更改你的搜索条件
159
+ search_everything: 试一试搜索所有记录
160
+ search_fields: 你在搜索如下字段 %{search_fields}
161
+ title: 未找到任何结果
162
+ use_fewer_keywords: 使用更少的搜索条件,使用左边的链接来筛选搜索结果。
163
+ search_history:
164
+ clear:
165
+ action_confirm: 清除搜索历史?
166
+ action_title: 清除搜索历史
167
+ failure: 清除搜索历史时出错。
168
+ success: 已经清除搜索历史。
169
+ forget: 去除
170
+ no_history: 你没有任何搜索历史
171
+ page_title: 搜索历史 - %{application_name}
172
+ recent: 你最近搜索历史
173
+ save: 保存
174
+ title: ''
175
+ skip_links:
176
+ first_result: 转到第一个搜索结果
177
+ label: 跳过链接
178
+ main_content: 转到主要内容
179
+ search_field: 转到搜索
180
+ sms:
181
+ errors:
182
+ carrier:
183
+ blank: 你必须选择一个运营商
184
+ invalid: 你必须输入一个运营商
185
+ to:
186
+ blank: 请输入接收人电话号码才能发送短信
187
+ invalid: 请输入10位正确电话号码
188
+ form:
189
+ carrier: 运营商
190
+ carrier_prompt: 请选择运营商
191
+ submit: 发送
192
+ title: 通过短信发送
193
+ to: '电话号码:'
194
+ success: 已发送短信
195
+ text:
196
+ url: '链接: %{url}'
197
+ tools:
198
+ citation: 引用
199
+ clear: 清除
200
+ email: 电子邮件
201
+ sms: 发送短信
202
+ title: 工具
203
+ welcome: 欢迎!
204
+ views:
205
+ pagination:
239
206
  aria:
240
- main_container: '主要内容'
207
+ container_label: 分页链接
208
+ current_page: 当前页面,页面%{page}
209
+ go_to_first_page: 转到第一页
210
+ go_to_last_page: 转到最后一页
211
+ go_to_next_page: 转到下一页
212
+ go_to_page: 前往页面%{page}
213
+ go_to_previous_page: 转到上一页
214
+ first: "&laquo; 首页"
215
+ last: 末页 &raquo;
216
+ next: 下一页 &raquo;
217
+ previous: "&laquo; 上一页"
218
+ truncate: "…"
219
+ pagination_compact:
220
+ next: 下一页 &raquo;
221
+ previous: "&laquo; 上一页"
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Blacklight::Configuration
4
+ class SessionTrackingConfig < Blacklight::OpenStructWithHashAccess
5
+ # @!attribute storage
6
+ # @return [String, FalseClass] 'server': use server-side tracking; 'client': delegate search tracking and prev/next navigation to client
7
+ # @!attribute applied_params_component
8
+ # @return [Class] component class used to render a facet group
9
+ # @!attribute item_pagination_component
10
+ # @return [Class] component class used to render the constraints
11
+
12
+ def initialize(property_hash = {})
13
+ super({ storage: 'server' }.merge(property_hash))
14
+ end
15
+
16
+ def applied_params_component
17
+ super || default_applied_params_component(storage)
18
+ end
19
+
20
+ def item_pagination_component
21
+ super || default_item_pagination_component(storage)
22
+ end
23
+
24
+ def url_helper
25
+ super || default_url_helper(storage)
26
+ end
27
+
28
+ def default_applied_params_component(storage)
29
+ return Blacklight::SearchContext::ServerAppliedParamsComponent if storage == 'server'
30
+
31
+ nil
32
+ end
33
+
34
+ def default_item_pagination_component(storage)
35
+ return Blacklight::SearchContext::ServerItemPaginationComponent if storage == 'server'
36
+
37
+ nil
38
+ end
39
+
40
+ # extension point for alternative storage types
41
+ def default_url_helper(_storage)
42
+ nil
43
+ end
44
+ end
45
+ end
@@ -26,10 +26,6 @@ class Blacklight::Configuration
26
26
  # @return [Class] component class used to render the search bar
27
27
  # @!attribute search_header_component
28
28
  # @return [Class] component class used to render the header above the documents
29
- def search_bar_presenter_class
30
- super || Blacklight::SearchBarPresenter
31
- end
32
-
33
29
  def display_label(**options)
34
30
  I18n.t(
35
31
  :"blacklight.search.view_title.#{key}",
@@ -20,6 +20,7 @@ module Blacklight
20
20
  autoload :DisplayField
21
21
  autoload :IndexField
22
22
  autoload :ShowField
23
+ autoload :SessionTrackingConfig
23
24
  end
24
25
 
25
26
  class_attribute :default_values, default: {}
@@ -200,7 +201,9 @@ module Blacklight
200
201
  ViewConfig,
201
202
  default: { top_level_config: :index },
202
203
  show: { top_level_config: :show },
203
- citation: { parent_config: :show }
204
+ citation: { parent_config: :show },
205
+ email_record: { top_level_config: :email },
206
+ sms_record: { top_level_config: :sms }
204
207
  )
205
208
 
206
209
  # @!attribute sms
@@ -279,9 +282,10 @@ module Blacklight
279
282
  property :raw_endpoint, default: OpenStructWithHashAccess.new(enabled: false)
280
283
 
281
284
  # @!attribute track_search_session
282
- # @since v7.1.0
283
- # @return [Boolean]
284
- property :track_search_session, default: true
285
+ # { storage: false } value: do no tracking
286
+ # @since v8.0.0
287
+ # @return [Blacklight::Configuration::SessionTrackingConfig]
288
+ property :track_search_session, default: Blacklight::Configuration::SessionTrackingConfig.new
285
289
 
286
290
  # @!attribute advanced_search
287
291
  # @since v7.15.0
@@ -19,15 +19,14 @@ module Blacklight
19
19
  end
20
20
  end
21
21
 
22
- initializer "blacklight.assets.precompile" do
23
- # rubocop:disable Lint/ConstantDefinitionInBlock
24
- PRECOMPILE_ASSETS = %w(favicon.ico blacklight/blacklight.js blacklight/blacklight.js.map blacklight/blacklight.esm.js blacklight/blacklight.esm.js.map).freeze
25
- # rubocop:enable Lint/ConstantDefinitionInBlock
22
+ PRECOMPILE_ASSETS = %w(favicon.ico blacklight/blacklight.js blacklight/blacklight.js.map blacklight/blacklight.esm.js blacklight/blacklight.esm.js.map).freeze
26
23
 
24
+ initializer "blacklight.assets.precompile" do |app|
27
25
  # When Rails has been generated in API mode, it does not have sprockets available
28
- if Rails.application.config.respond_to?(:assets)
29
- Rails.application.config.assets.precompile += PRECOMPILE_ASSETS
30
- end
26
+ next unless app.config.respond_to?(:assets)
27
+
28
+ app.config.assets.paths << Engine.root.join("app/javascript")
29
+ app.config.assets.precompile += Blacklight::Engine::PRECOMPILE_ASSETS
31
30
  end
32
31
 
33
32
  initializer "blacklight.importmap", before: "importmap" do |app|
@@ -10,6 +10,7 @@ module Blacklight
10
10
  def call(mapper, _options = {})
11
11
  mapper.match '/', action: 'index', as: 'search', via: [:get, :post]
12
12
  mapper.get '/advanced', action: 'advanced_search', as: 'advanced_search'
13
+ mapper.get '/page_links', action: 'page_links', as: 'page_links'
13
14
 
14
15
  mapper.post ":id/track", action: 'track', as: 'track'
15
16
  mapper.get ":id/raw", action: 'raw', as: 'raw', defaults: { format: 'json' }
@@ -14,9 +14,15 @@ module Blacklight
14
14
  def import_javascript_assets
15
15
  append_to_file 'config/importmap.rb' do
16
16
  <<~CONTENT
17
+ pin "@github/auto-complete-element", to: "https://cdn.skypack.dev/@github/auto-complete-element"
17
18
  pin "@popperjs/core", to: "https://ga.jspm.io/npm:@popperjs/core@2.11.6/dist/umd/popper.min.js"
18
19
  pin "bootstrap", to: "https://ga.jspm.io/npm:bootstrap@#{(defined?(Bootstrap) && Bootstrap::VERSION) || '5.2.2'}/dist/js/bootstrap.js"
19
- pin "blacklight", to: "blacklight/blacklight.js"
20
+ CONTENT
21
+ end
22
+
23
+ append_to_file 'app/assets/config/manifest.js' do
24
+ <<~CONTENT
25
+ //= link blacklight/manifest.js
20
26
  CONTENT
21
27
  end
22
28
  end
@@ -25,7 +31,8 @@ module Blacklight
25
31
  append_to_file 'app/javascript/application.js' do
26
32
  <<~CONTENT
27
33
  import bootstrap from "bootstrap"
28
- import "blacklight"
34
+ import githubAutoCompleteElement from "@github/auto-complete-element"
35
+ import Blacklight from "blacklight"
29
36
  CONTENT
30
37
  end
31
38
  end
@@ -4,7 +4,15 @@ module Blacklight
4
4
  module Assets
5
5
  class PropshaftGenerator < Rails::Generators::Base
6
6
  def add_package
7
- run 'yarn add blacklight-frontend'
7
+ if ENV['CI']
8
+ run "yarn add blacklight-frontend:#{Blacklight::Engine.root}"
9
+ else
10
+ run 'yarn add blacklight-frontend'
11
+ end
12
+ end
13
+
14
+ def add_third_party_packages
15
+ run 'yarn add @github/auto-complete-element'
8
16
  end
9
17
 
10
18
  def add_package_assets
@@ -16,7 +24,8 @@ module Blacklight
16
24
 
17
25
  append_to_file 'app/javascript/application.js' do
18
26
  <<~CONTENT
19
- import Blacklight from "blacklight-frontend/app/assets/javascripts/blacklight/blacklight.esm";
27
+ import Blacklight from "blacklight-frontend";
28
+ import githubAutoCompleteElement from "@github/auto-complete-element";
20
29
  CONTENT
21
30
  end
22
31
  end
@@ -18,6 +18,7 @@ module Blacklight
18
18
  return if Rails.version > '7' || Sprockets::VERSION < '4'
19
19
 
20
20
  append_to_file 'app/assets/config/manifest.js', "\n//= link application.js"
21
+ append_to_file 'app/assets/config/manifest.js', "\n//= link blacklight/manifest.js"
21
22
  empty_directory 'app/assets/images'
22
23
  end
23
24
 
@@ -42,6 +43,7 @@ module Blacklight
42
43
  // Required by Blacklight
43
44
  //= require popper
44
45
  //= require bootstrap
46
+ //= require blacklight/blacklight
45
47
  CONTENT
46
48
  end
47
49
  end
@@ -6,12 +6,6 @@ class <%= model_name.classify %>
6
6
 
7
7
  # self.unique_key = 'id'
8
8
 
9
- # Email uses the semantic field mappings below to generate the body of an email.
10
- SolrDocument.use_extension(Blacklight::Document::Email)
11
-
12
- # SMS uses the semantic field mappings below to generate the body of an SMS email.
13
- SolrDocument.use_extension(Blacklight::Document::Sms)
14
-
15
9
  # DublinCore uses the semantic field mappings below to assemble an OAI-compliant Dublin Core document
16
10
  # Semantic mappings of solr stored fields. Fields may be multi or
17
11
  # single valued. See Blacklight::Document::SemanticFields#field_semantics