geoblacklight 4.4.2 → 5.0.0

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 (579) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/build-demo-app.yml +156 -0
  3. data/.github/workflows/prune-containers.yml +19 -0
  4. data/.github/workflows/ruby.yml +51 -52
  5. data/.gitignore +2 -2
  6. data/CONTRIBUTING.md +62 -44
  7. data/Gemfile +3 -28
  8. data/Rakefile +50 -67
  9. data/app/assets/images/blacklight/logo.svg +31 -1
  10. data/app/assets/stylesheets/geoblacklight/geoblacklight.scss +1 -2
  11. data/app/assets/stylesheets/geoblacklight/modules/_base.scss +1 -2
  12. data/app/assets/stylesheets/geoblacklight/modules/_blacklight_overrides.scss +24 -26
  13. data/app/assets/stylesheets/geoblacklight/modules/downloads.scss +13 -0
  14. data/app/assets/stylesheets/geoblacklight/modules/home.scss +2 -17
  15. data/app/assets/stylesheets/geoblacklight/modules/icon-customization.scss +48 -23
  16. data/app/assets/stylesheets/geoblacklight/modules/index_maps.scss +1 -15
  17. data/app/assets/stylesheets/geoblacklight/modules/item.scss +13 -11
  18. data/app/assets/stylesheets/geoblacklight/modules/layer_opacity.scss +3 -3
  19. data/app/assets/stylesheets/geoblacklight/modules/leaflet.scss +4 -0
  20. data/app/assets/stylesheets/geoblacklight/modules/modal.scss +0 -15
  21. data/app/assets/stylesheets/geoblacklight/modules/results.scss +14 -19
  22. data/app/assets/stylesheets/geoblacklight/modules/sidebar.scss +2 -2
  23. data/app/components/blacklight/icons/american_geographical_society_library_uwm_libraries_component.rb +46 -0
  24. data/app/components/blacklight/icons/arizona_component.rb +24 -0
  25. data/app/components/blacklight/icons/arrow_circle_down_component.rb +23 -0
  26. data/app/components/blacklight/icons/baruch_cuny_component.rb +23 -0
  27. data/app/components/blacklight/icons/book_component.rb +23 -0
  28. data/app/components/blacklight/icons/bookmark_component.rb +23 -0
  29. data/app/components/blacklight/icons/cd_rom_component.rb +23 -0
  30. data/app/components/blacklight/icons/child_item_component.rb +23 -0
  31. data/app/components/blacklight/icons/circle_info_solid_component.rb +23 -0
  32. data/app/components/blacklight/icons/citation_component.rb +23 -0
  33. data/app/components/blacklight/icons/collection_component.rb +23 -0
  34. data/app/components/blacklight/icons/collections_component.rb +24 -0
  35. data/app/components/blacklight/icons/columbia_component.rb +23 -0
  36. data/app/components/blacklight/icons/cornell_component.rb +25 -0
  37. data/app/components/blacklight/icons/datasets_component.rb +27 -0
  38. data/app/components/blacklight/icons/dvd_rom_component.rb +23 -0
  39. data/app/components/blacklight/icons/email_component.rb +23 -0
  40. data/app/components/blacklight/icons/esri_globe_component.rb +51 -0
  41. data/app/components/blacklight/icons/fire_solid_component.rb +23 -0
  42. data/app/components/blacklight/icons/george_mason_component.rb +24 -0
  43. data/app/components/blacklight/icons/globe_component.rb +23 -0
  44. data/app/components/blacklight/icons/harvard_component.rb +23 -0
  45. data/app/components/blacklight/icons/home_component.rb +23 -0
  46. data/app/components/blacklight/icons/iiif_drag_drop_component.rb +31 -0
  47. data/app/components/blacklight/icons/image_component.rb +23 -0
  48. data/app/components/blacklight/icons/imagery_component.rb +24 -0
  49. data/app/components/blacklight/icons/indiana_component.rb +23 -0
  50. data/app/components/blacklight/icons/leaf_component.rb +23 -0
  51. data/app/components/blacklight/icons/lewis_clark_component.rb +25 -0
  52. data/app/components/blacklight/icons/lightbulb_solid_component.rb +23 -0
  53. data/app/components/blacklight/icons/line_component.rb +24 -0
  54. data/app/components/blacklight/icons/map_component.rb +23 -0
  55. data/app/components/blacklight/icons/map_marker_component.rb +23 -0
  56. data/app/components/blacklight/icons/maps_component.rb +24 -0
  57. data/app/components/blacklight/icons/massgis_component.rb +23 -0
  58. data/app/components/blacklight/icons/metadata_component.rb +23 -0
  59. data/app/components/blacklight/icons/michigan_state_university_component.rb +25 -0
  60. data/app/components/blacklight/icons/mit_component.rb +23 -0
  61. data/app/components/blacklight/icons/mixed_component.rb +25 -0
  62. data/app/components/blacklight/icons/multilinestring_component.rb +26 -0
  63. data/app/components/blacklight/icons/multipoint_component.rb +23 -0
  64. data/app/components/blacklight/icons/multipolygon_component.rb +26 -0
  65. data/app/components/blacklight/icons/northwestern_university_component.rb +24 -0
  66. data/app/components/blacklight/icons/nyu_component.rb +26 -0
  67. data/app/components/blacklight/icons/pagelines_brands_component.rb +23 -0
  68. data/app/components/blacklight/icons/paper_map_component.rb +23 -0
  69. data/app/components/blacklight/icons/parent_item_component.rb +23 -0
  70. data/app/components/blacklight/icons/pennsylvania_state_university_component.rb +25 -0
  71. data/app/components/blacklight/icons/point_component.rb +23 -0
  72. data/app/components/blacklight/icons/polygon_component.rb +24 -0
  73. data/app/components/blacklight/icons/polyline_component.rb +26 -0
  74. data/app/components/blacklight/icons/princeton_component.rb +23 -0
  75. data/app/components/blacklight/icons/public_component.rb +23 -0
  76. data/app/components/blacklight/icons/purdue_university_component.rb +25 -0
  77. data/app/components/blacklight/icons/raster_component.rb +23 -0
  78. data/app/components/blacklight/icons/restricted_component.rb +23 -0
  79. data/app/components/blacklight/icons/rutgers_component.rb +25 -0
  80. data/app/components/blacklight/icons/sms_component.rb +23 -0
  81. data/app/components/blacklight/icons/stanford_component.rb +23 -0
  82. data/app/components/blacklight/icons/table_component.rb +23 -0
  83. data/app/components/blacklight/icons/tags_component.rb +23 -0
  84. data/app/components/blacklight/icons/texas_component.rb +23 -0
  85. data/app/components/blacklight/icons/the_ohio_state_university_component.rb +26 -0
  86. data/app/components/blacklight/icons/triangle_exclamation_solid_component.rb +23 -0
  87. data/app/components/blacklight/icons/tufts_component.rb +23 -0
  88. data/app/components/blacklight/icons/ucla_component.rb +23 -0
  89. data/app/components/blacklight/icons/university_of_california_berkeley_component.rb +24 -0
  90. data/app/components/blacklight/icons/university_of_chicago_component.rb +25 -0
  91. data/app/components/blacklight/icons/university_of_colorado_boulder_component.rb +26 -0
  92. data/app/components/blacklight/icons/university_of_illinois_urbana_champaign_component.rb +25 -0
  93. data/app/components/blacklight/icons/university_of_iowa_component.rb +24 -0
  94. data/app/components/blacklight/icons/university_of_maryland_component.rb +24 -0
  95. data/app/components/blacklight/icons/university_of_michigan_component.rb +24 -0
  96. data/app/components/blacklight/icons/university_of_minnesota_component.rb +24 -0
  97. data/app/components/blacklight/icons/university_of_nebraska_lincoln_component.rb +27 -0
  98. data/app/components/blacklight/icons/university_of_wisconsin_madison_component.rb +24 -0
  99. data/app/components/blacklight/icons/uva_component.rb +23 -0
  100. data/app/components/blacklight/icons/web_services_component.rb +23 -0
  101. data/app/components/blacklight/icons/websites_component.rb +24 -0
  102. data/app/components/geoblacklight/arcgis_component.html.erb +3 -0
  103. data/app/components/geoblacklight/arcgis_component.rb +25 -0
  104. data/app/components/geoblacklight/attribute_table_component.html.erb +17 -0
  105. data/app/components/geoblacklight/attribute_table_component.rb +17 -0
  106. data/app/components/geoblacklight/data_dictionary_download_component.html.erb +3 -0
  107. data/app/components/geoblacklight/data_dictionary_download_component.rb +16 -0
  108. data/app/components/geoblacklight/display_note_component.rb +1 -1
  109. data/app/components/geoblacklight/document/citation_component.html.erb +1 -0
  110. data/app/components/geoblacklight/document/citation_component.rb +19 -0
  111. data/app/components/geoblacklight/document/sidebar_component.html.erb +12 -0
  112. data/app/components/geoblacklight/document/sidebar_component.rb +8 -0
  113. data/app/components/geoblacklight/document_component.html.erb +43 -0
  114. data/app/components/geoblacklight/document_component.rb +6 -0
  115. data/app/components/geoblacklight/download_links_component.html.erb +31 -0
  116. data/app/components/geoblacklight/download_links_component.rb +80 -0
  117. data/app/components/geoblacklight/header_component.html.erb +14 -0
  118. data/app/components/geoblacklight/header_component.rb +9 -0
  119. data/app/components/geoblacklight/header_icons_component.html.erb +3 -0
  120. data/app/components/geoblacklight/header_icons_component.rb +29 -0
  121. data/app/components/geoblacklight/iiif_drag_drop_component.html.erb +3 -0
  122. data/app/components/geoblacklight/iiif_drag_drop_component.rb +16 -0
  123. data/app/components/geoblacklight/index_map_inspect_component.rb +15 -0
  124. data/app/components/geoblacklight/index_map_legend_component.html.erb +14 -0
  125. data/app/components/geoblacklight/index_map_legend_component.rb +17 -0
  126. data/app/components/geoblacklight/item_map_viewer_component.html.erb +1 -0
  127. data/app/components/geoblacklight/item_map_viewer_component.rb +87 -0
  128. data/app/components/geoblacklight/location_leaflet_map_component.html.erb +1 -0
  129. data/app/components/geoblacklight/location_leaflet_map_component.rb +49 -0
  130. data/app/components/geoblacklight/login_link_component.html.erb +5 -0
  131. data/app/components/geoblacklight/login_link_component.rb +17 -0
  132. data/app/components/geoblacklight/relations_component.html.erb +23 -0
  133. data/app/components/geoblacklight/relations_component.rb +25 -0
  134. data/app/components/geoblacklight/search_result_component.html.erb +44 -0
  135. data/app/{presenters/geoblacklight/document_presenter.rb → components/geoblacklight/search_result_component.rb} +9 -6
  136. data/app/components/geoblacklight/static_map_component.html.erb +9 -0
  137. data/app/components/geoblacklight/static_map_component.rb +38 -0
  138. data/app/components/geoblacklight/viewer_help_text_component.html.erb +1 -0
  139. data/app/components/geoblacklight/viewer_help_text_component.rb +46 -0
  140. data/app/components/geoblacklight/web_services_component.html.erb +1 -0
  141. data/app/components/geoblacklight/web_services_component.rb +26 -0
  142. data/app/{views/catalog/_web_services_default.html.erb → components/geoblacklight/web_services_default_component.html.erb} +3 -5
  143. data/app/components/geoblacklight/web_services_default_component.rb +11 -0
  144. data/app/components/geoblacklight/web_services_link_component.html.erb +3 -0
  145. data/app/components/geoblacklight/web_services_link_component.rb +22 -0
  146. data/app/{views/catalog/_web_services_wfs.html.erb → components/geoblacklight/web_services_wfs_component.html.erb} +4 -7
  147. data/app/components/geoblacklight/web_services_wfs_component.rb +12 -0
  148. data/app/components/geoblacklight/web_services_wms_component.html.erb +10 -0
  149. data/app/components/geoblacklight/web_services_wms_component.rb +12 -0
  150. data/app/controllers/download_controller.rb +8 -24
  151. data/app/helpers/geoblacklight_helper.rb +10 -194
  152. data/app/javascript/geoblacklight/controllers/clipboard_controller.js +11 -0
  153. data/app/javascript/geoblacklight/controllers/clover_viewer_controller.js +47 -0
  154. data/app/javascript/geoblacklight/controllers/downloads_controller.js +56 -0
  155. data/app/javascript/geoblacklight/controllers/leaflet_viewer_controller.js +220 -0
  156. data/app/javascript/geoblacklight/controllers/oembed_viewer_controller.js +18 -0
  157. data/app/javascript/geoblacklight/controllers/openlayers_viewer_controller.js +63 -0
  158. data/app/javascript/geoblacklight/controllers/search_results_controller.js +50 -0
  159. data/app/javascript/geoblacklight/core.js +69 -0
  160. data/app/javascript/geoblacklight/index.js +29 -0
  161. data/app/javascript/geoblacklight/initializers/metadata_download.js +54 -0
  162. data/app/javascript/geoblacklight/initializers/popovers.js +11 -0
  163. data/app/javascript/geoblacklight/initializers/relations.js +40 -0
  164. data/app/javascript/geoblacklight/initializers/tooltips.js +55 -0
  165. data/app/javascript/geoblacklight/initializers/truncation.js +45 -0
  166. data/app/javascript/geoblacklight/leaflet/basemaps.js +74 -0
  167. data/app/javascript/geoblacklight/leaflet/constants.js +18 -0
  168. data/app/javascript/geoblacklight/leaflet/controls/geosearch.js +160 -0
  169. data/app/javascript/geoblacklight/leaflet/controls/layer_opacity.js +120 -0
  170. data/app/javascript/geoblacklight/leaflet/controls/sleep.js +100 -0
  171. data/app/javascript/geoblacklight/leaflet/inspection.js +195 -0
  172. data/app/javascript/geoblacklight/leaflet/layer_index_map.js +120 -0
  173. data/app/javascript/geoblacklight/leaflet/layer_wmts.js +59 -0
  174. data/app/javascript/geoblacklight/leaflet/layers.js +153 -0
  175. data/app/javascript/geoblacklight/leaflet/utils.js +83 -0
  176. data/app/javascript/geoblacklight/openlayers/basemaps.js +47 -0
  177. data/app/javascript/geoblacklight/openlayers/layers.js +44 -0
  178. data/app/models/concerns/geoblacklight/solr_document/citation.rb +20 -8
  179. data/app/models/concerns/geoblacklight/solr_document.rb +22 -30
  180. data/app/presenters/geoblacklight/bbox_item_presenter.rb +1 -1
  181. data/app/views/catalog/_citation.html.erb +16 -33
  182. data/app/views/catalog/_document_split.html.erb +18 -3
  183. data/app/views/catalog/_home_text.html.erb +2 -2
  184. data/app/views/catalog/_metadata.html.erb +1 -1
  185. data/app/views/catalog/index.html.erb +8 -4
  186. data/app/views/catalog/metadata/_markup.html.erb +1 -1
  187. data/app/views/catalog/metadata.html.erb +14 -13
  188. data/app/views/catalog/web_services.html.erb +19 -28
  189. data/app/views/relation/index.html.erb +2 -12
  190. data/app/views/relation/index.json.jbuilder +1 -1
  191. data/compose.yml +14 -0
  192. data/config/importmap.rb +20 -0
  193. data/config/locales/geoblacklight.en.yml +15 -24
  194. data/geoblacklight.gemspec +8 -7
  195. data/lib/generators/geoblacklight/assets/importmap_generator.rb +82 -0
  196. data/lib/generators/geoblacklight/assets/vite_generator.rb +92 -0
  197. data/lib/generators/geoblacklight/assets_generator.rb +12 -37
  198. data/lib/generators/geoblacklight/install_generator.rb +11 -49
  199. data/lib/generators/geoblacklight/templates/assets/_customizations.scss +13 -19
  200. data/lib/generators/geoblacklight/templates/assets/application.js +17 -0
  201. data/lib/generators/geoblacklight/templates/assets/application.scss +9 -4
  202. data/lib/generators/geoblacklight/templates/assets/geoblacklight.scss +11 -0
  203. data/lib/generators/geoblacklight/templates/base.html.erb +6 -12
  204. data/lib/generators/geoblacklight/templates/catalog_controller.rb +7 -15
  205. data/lib/generators/geoblacklight/templates/demo-app/Dockerfile +31 -0
  206. data/lib/generators/geoblacklight/templates/demo-app/compose.yml +26 -0
  207. data/lib/generators/geoblacklight/templates/demo-app/start-server.sh +21 -0
  208. data/lib/generators/geoblacklight/templates/settings.yml +53 -40
  209. data/lib/generators/geoblacklight/templates/vite.config.ts +22 -7
  210. data/lib/geoblacklight/bounding_box.rb +16 -0
  211. data/lib/geoblacklight/constants.rb +0 -1
  212. data/lib/geoblacklight/download/csv_download.rb +22 -0
  213. data/lib/geoblacklight/download/geojson_download.rb +1 -1
  214. data/lib/geoblacklight/download/geotiff_download.rb +1 -1
  215. data/lib/geoblacklight/download/kmz_download.rb +1 -1
  216. data/lib/geoblacklight/download/shapefile_download.rb +1 -1
  217. data/lib/geoblacklight/download.rb +1 -1
  218. data/lib/geoblacklight/engine.rb +15 -6
  219. data/lib/geoblacklight/item_viewer.rb +1 -1
  220. data/lib/geoblacklight/metadata/base.rb +2 -1
  221. data/lib/geoblacklight/references.rb +27 -8
  222. data/lib/geoblacklight/routes/downloadable.rb +0 -1
  223. data/lib/geoblacklight/routes.rb +0 -3
  224. data/lib/geoblacklight/version.rb +1 -1
  225. data/lib/geoblacklight/wms_layer/feature_info_response.rb +9 -6
  226. data/lib/geoblacklight.rb +6 -30
  227. data/lib/tasks/geoblacklight.rake +24 -60
  228. data/package.json +24 -17
  229. data/solr/conf/schema.xml +15 -13
  230. data/solr/conf/solrconfig.xml +6 -4
  231. data/spec/components/blacklight/icons/american_geographical_society_library_uwm_libraries_component_spec.rb +15 -0
  232. data/spec/components/blacklight/icons/arizona_component_spec.rb +15 -0
  233. data/spec/components/blacklight/icons/arrow_circle_down_component_spec.rb +15 -0
  234. data/spec/components/blacklight/icons/baruch_cuny_component_spec.rb +15 -0
  235. data/spec/components/blacklight/icons/book_component_spec.rb +15 -0
  236. data/spec/components/blacklight/icons/bookmark_component_spec.rb +15 -0
  237. data/spec/components/blacklight/icons/cd_rom_component_spec.rb +15 -0
  238. data/spec/components/blacklight/icons/child_item_component_spec.rb +15 -0
  239. data/spec/components/blacklight/icons/circle_info_solid_component_spec.rb +15 -0
  240. data/spec/components/blacklight/icons/citation_component_spec.rb +15 -0
  241. data/spec/components/blacklight/icons/collection_component_spec.rb +15 -0
  242. data/spec/components/blacklight/icons/collections_component_spec.rb +15 -0
  243. data/spec/components/blacklight/icons/columbia_component_spec.rb +15 -0
  244. data/spec/components/blacklight/icons/cornell_component_spec.rb +15 -0
  245. data/spec/components/blacklight/icons/datasets_component_spec.rb +15 -0
  246. data/spec/components/blacklight/icons/dvd_rom_component_spec.rb +15 -0
  247. data/spec/components/blacklight/icons/email_component_spec.rb +15 -0
  248. data/spec/components/blacklight/icons/esri_globe_component_spec.rb +15 -0
  249. data/spec/components/blacklight/icons/fire_solid_component_spec.rb +15 -0
  250. data/spec/components/blacklight/icons/george_mason_component_spec.rb +15 -0
  251. data/spec/components/blacklight/icons/globe_component_spec.rb +15 -0
  252. data/spec/components/blacklight/icons/harvard_component_spec.rb +15 -0
  253. data/spec/components/blacklight/icons/home_component_spec.rb +15 -0
  254. data/spec/components/blacklight/icons/iiif_drag_drop_component_spec.rb +15 -0
  255. data/spec/components/blacklight/icons/image_component_spec.rb +15 -0
  256. data/spec/components/blacklight/icons/imagery_component_spec.rb +15 -0
  257. data/spec/components/blacklight/icons/indiana_component_spec.rb +15 -0
  258. data/spec/components/blacklight/icons/leaf_component_spec.rb +15 -0
  259. data/spec/components/blacklight/icons/lewis_clark_component_spec.rb +15 -0
  260. data/spec/components/blacklight/icons/lightbulb_solid_component_spec.rb +15 -0
  261. data/spec/components/blacklight/icons/line_component_spec.rb +15 -0
  262. data/spec/components/blacklight/icons/map_component_spec.rb +15 -0
  263. data/spec/components/blacklight/icons/map_marker_component_spec.rb +15 -0
  264. data/spec/components/blacklight/icons/maps_component_spec.rb +15 -0
  265. data/spec/components/blacklight/icons/massgis_component_spec.rb +15 -0
  266. data/spec/components/blacklight/icons/metadata_component_spec.rb +15 -0
  267. data/spec/components/blacklight/icons/michigan_state_university_component_spec.rb +15 -0
  268. data/spec/components/blacklight/icons/mit_component_spec.rb +15 -0
  269. data/spec/components/blacklight/icons/mixed_component_spec.rb +15 -0
  270. data/spec/components/blacklight/icons/multilinestring_component_spec.rb +15 -0
  271. data/spec/components/blacklight/icons/multipoint_component_spec.rb +15 -0
  272. data/spec/components/blacklight/icons/multipolygon_component_spec.rb +15 -0
  273. data/spec/components/blacklight/icons/northwestern_university_component_spec.rb +15 -0
  274. data/spec/components/blacklight/icons/nyu_component_spec.rb +15 -0
  275. data/spec/components/blacklight/icons/pagelines_brands_component_spec.rb +15 -0
  276. data/spec/components/blacklight/icons/paper_map_component_spec.rb +15 -0
  277. data/spec/components/blacklight/icons/parent_item_component_spec.rb +15 -0
  278. data/spec/components/blacklight/icons/pennsylvania_state_university_component_spec.rb +15 -0
  279. data/spec/components/blacklight/icons/point_component_spec.rb +15 -0
  280. data/spec/components/blacklight/icons/polygon_component_spec.rb +15 -0
  281. data/spec/components/blacklight/icons/polyline_component_spec.rb +15 -0
  282. data/spec/components/blacklight/icons/princeton_component_spec.rb +15 -0
  283. data/spec/components/blacklight/icons/public_component_spec.rb +15 -0
  284. data/spec/components/blacklight/icons/purdue_university_component_spec.rb +15 -0
  285. data/spec/components/blacklight/icons/raster_component_spec.rb +15 -0
  286. data/spec/components/blacklight/icons/restricted_component_spec.rb +15 -0
  287. data/spec/components/blacklight/icons/rutgers_component_spec.rb +15 -0
  288. data/spec/components/blacklight/icons/sms_component_spec.rb +15 -0
  289. data/spec/components/blacklight/icons/stanford_component_spec.rb +15 -0
  290. data/spec/components/blacklight/icons/table_component_spec.rb +15 -0
  291. data/spec/components/blacklight/icons/tags_component_spec.rb +15 -0
  292. data/spec/components/blacklight/icons/texas_component_spec.rb +15 -0
  293. data/spec/components/blacklight/icons/the_ohio_state_university_component_spec.rb +15 -0
  294. data/spec/components/blacklight/icons/triangle_exclamation_solid_component_spec.rb +15 -0
  295. data/spec/components/blacklight/icons/tufts_component_spec.rb +15 -0
  296. data/spec/components/blacklight/icons/ucla_component_spec.rb +15 -0
  297. data/spec/components/blacklight/icons/university_of_california_berkeley_component_spec.rb +15 -0
  298. data/spec/components/blacklight/icons/university_of_chicago_component_spec.rb +15 -0
  299. data/spec/components/blacklight/icons/university_of_colorado_boulder_component_spec.rb +15 -0
  300. data/spec/components/blacklight/icons/university_of_illinois_urbana_champaign_component_spec.rb +15 -0
  301. data/spec/components/blacklight/icons/university_of_iowa_component_spec.rb +15 -0
  302. data/spec/components/blacklight/icons/university_of_maryland_component_spec.rb +15 -0
  303. data/spec/components/blacklight/icons/university_of_michigan_component_spec.rb +15 -0
  304. data/spec/components/blacklight/icons/university_of_minnesota_component_spec.rb +15 -0
  305. data/spec/components/blacklight/icons/university_of_nebraska_lincoln_component_spec.rb +15 -0
  306. data/spec/components/blacklight/icons/university_of_wisconsin_madison_component_spec.rb +15 -0
  307. data/spec/components/blacklight/icons/uva_component_spec.rb +15 -0
  308. data/spec/components/blacklight/icons/web_services_component_spec.rb +15 -0
  309. data/spec/components/blacklight/icons/websites_component_spec.rb +15 -0
  310. data/spec/components/geoblacklight/arcgis_component_spec.rb +31 -0
  311. data/spec/components/geoblacklight/attribute_table_component_spec.rb +37 -0
  312. data/spec/components/geoblacklight/citation_component_spec.rb +37 -0
  313. data/spec/components/geoblacklight/document_component_spec.rb +92 -0
  314. data/spec/components/geoblacklight/download_links_component_spec.rb +102 -0
  315. data/spec/components/geoblacklight/header_icons_component_spec.rb +56 -0
  316. data/spec/components/geoblacklight/iiif_drag_drop_component_spec.rb +30 -0
  317. data/spec/components/geoblacklight/index_map_legend_component_spec.rb +42 -0
  318. data/spec/components/geoblacklight/item_map_viewer_component_spec.rb +36 -0
  319. data/spec/components/geoblacklight/login_link_component_spec.rb +33 -0
  320. data/spec/{lib/geoblacklight/document_presenter_spec.rb → components/geoblacklight/search_result_component_spec.rb} +19 -11
  321. data/spec/components/geoblacklight/static_map_component_spec.rb +22 -0
  322. data/spec/components/geoblacklight/viewer_help_text_component_spec.rb +28 -0
  323. data/spec/components/geoblacklight/web_services_component_spec.rb +45 -0
  324. data/spec/controllers/download_controller_spec.rb +12 -35
  325. data/spec/features/axe_spec.rb +66 -0
  326. data/spec/features/bookmarks_spec.rb +1 -1
  327. data/spec/features/citations_spec.rb +7 -3
  328. data/spec/features/download_layer_spec.rb +24 -39
  329. data/spec/features/esri_viewer_spec.rb +1 -1
  330. data/spec/features/exports_spec.rb +0 -15
  331. data/spec/features/{full_screen_controll_spec.rb → full_screen_control_spec.rb} +6 -6
  332. data/spec/features/home_page_spec.rb +12 -7
  333. data/spec/features/iiif_viewer_spec.rb +1 -1
  334. data/spec/features/index_map_spec.rb +16 -9
  335. data/spec/features/{split_view.html.erb_spec.rb → index_view_spec.rb} +15 -13
  336. data/spec/features/layer_inspection_spec.rb +2 -2
  337. data/spec/features/layer_preview_spec.rb +1 -1
  338. data/spec/features/missing_metadata_spec.rb +5 -5
  339. data/spec/features/oembed_spec.rb +2 -2
  340. data/spec/features/saved_searches_spec.rb +4 -1
  341. data/spec/features/search_results_complex_geometry_spec.rb +2 -2
  342. data/spec/features/search_results_icons_spec.rb +3 -3
  343. data/spec/features/search_results_map_spec.rb +4 -36
  344. data/spec/features/search_results_overlap_ratio_spec.rb +1 -1
  345. data/spec/features/show_page_download_spec.rb +0 -8
  346. data/spec/features/tilejson_spec.rb +2 -2
  347. data/spec/features/web_services_modal_spec.rb +57 -39
  348. data/spec/features/wmts_spec.rb +4 -4
  349. data/spec/fixtures/solr_documents/README.md +2 -1
  350. data/spec/fixtures/solr_documents/complex-geom.json +61 -0
  351. data/spec/fixtures/solr_documents/esri-tiled_map_layer.json +45 -24
  352. data/spec/fixtures/solr_documents/harvard_raster.json +1 -1
  353. data/spec/fixtures/solr_documents/multiple-downloads.json +1 -0
  354. data/spec/helpers/geoblacklight_helper_spec.rb +8 -173
  355. data/spec/lib/geoblacklight/download/csv_download_spec.rb +21 -0
  356. data/spec/lib/geoblacklight/reference_spec.rb +17 -19
  357. data/spec/lib/geoblacklight/references_spec.rb +31 -17
  358. data/spec/lib/geoblacklight/wms_layer/feature_info_response_spec.rb +8 -6
  359. data/spec/lib/geoblacklight/wms_layer_spec.rb +14 -0
  360. data/spec/models/concerns/geoblacklight/solr_document/citation_spec.rb +1 -1
  361. data/spec/models/concerns/geoblacklight/solr_document_spec.rb +1 -21
  362. data/spec/spec_helper.rb +3 -28
  363. data/spec/test_app_templates/lib/generators/test_app_generator.rb +2 -20
  364. data/template.rb +20 -11
  365. data/test/leaflet/layers.test.js +17 -0
  366. data/vite.config.ts +34 -23
  367. metadata +306 -259
  368. data/.hound.yml +0 -8
  369. data/.jshintignore +0 -2
  370. data/.jshintrc +0 -67
  371. data/.solr_wrapper +0 -6
  372. data/app/assets/images/blacklight/american-geographical-society-library-uwm-libraries.svg +0 -26
  373. data/app/assets/images/blacklight/arizona.svg +0 -4
  374. data/app/assets/images/blacklight/arrow-circle-down.svg +0 -3
  375. data/app/assets/images/blacklight/baruch-cuny.svg +0 -3
  376. data/app/assets/images/blacklight/book.svg +0 -3
  377. data/app/assets/images/blacklight/bookmark.svg +0 -3
  378. data/app/assets/images/blacklight/cd-rom.svg +0 -3
  379. data/app/assets/images/blacklight/chicago.svg +0 -4
  380. data/app/assets/images/blacklight/child-item.svg +0 -3
  381. data/app/assets/images/blacklight/circle-info-solid.svg +0 -1
  382. data/app/assets/images/blacklight/citation.svg +0 -3
  383. data/app/assets/images/blacklight/collection.svg +0 -3
  384. data/app/assets/images/blacklight/collections.svg +0 -4
  385. data/app/assets/images/blacklight/columbia.svg +0 -3
  386. data/app/assets/images/blacklight/cornell.svg +0 -5
  387. data/app/assets/images/blacklight/datasets.svg +0 -7
  388. data/app/assets/images/blacklight/dvd-rom.svg +0 -3
  389. data/app/assets/images/blacklight/email.svg +0 -3
  390. data/app/assets/images/blacklight/esri-globe.svg +0 -31
  391. data/app/assets/images/blacklight/fire-solid.svg +0 -1
  392. data/app/assets/images/blacklight/geoblacklight-icons.json +0 -3312
  393. data/app/assets/images/blacklight/george-mason.svg +0 -4
  394. data/app/assets/images/blacklight/globe.svg +0 -3
  395. data/app/assets/images/blacklight/harvard.svg +0 -3
  396. data/app/assets/images/blacklight/home.svg +0 -3
  397. data/app/assets/images/blacklight/illinois.svg +0 -4
  398. data/app/assets/images/blacklight/image.svg +0 -3
  399. data/app/assets/images/blacklight/imagery.svg +0 -4
  400. data/app/assets/images/blacklight/indiana.svg +0 -3
  401. data/app/assets/images/blacklight/iowa.svg +0 -3
  402. data/app/assets/images/blacklight/leaf.svg +0 -3
  403. data/app/assets/images/blacklight/lewis-clark.svg +0 -5
  404. data/app/assets/images/blacklight/lightbulb-solid.svg +0 -1
  405. data/app/assets/images/blacklight/line.svg +0 -4
  406. data/app/assets/images/blacklight/map-marker.svg +0 -3
  407. data/app/assets/images/blacklight/map.svg +0 -3
  408. data/app/assets/images/blacklight/maps.svg +0 -4
  409. data/app/assets/images/blacklight/maryland.svg +0 -3
  410. data/app/assets/images/blacklight/massgis.svg +0 -3
  411. data/app/assets/images/blacklight/metadata.svg +0 -3
  412. data/app/assets/images/blacklight/michigan-state-university.svg +0 -5
  413. data/app/assets/images/blacklight/michigan-state.svg +0 -4
  414. data/app/assets/images/blacklight/michigan.svg +0 -3
  415. data/app/assets/images/blacklight/minnesota.svg +0 -3
  416. data/app/assets/images/blacklight/mit.svg +0 -3
  417. data/app/assets/images/blacklight/mixed.svg +0 -5
  418. data/app/assets/images/blacklight/multilinestring.svg +0 -6
  419. data/app/assets/images/blacklight/multipoint.svg +0 -3
  420. data/app/assets/images/blacklight/multipolygon.svg +0 -6
  421. data/app/assets/images/blacklight/nebraska.svg +0 -4
  422. data/app/assets/images/blacklight/northwestern-university.svg +0 -5
  423. data/app/assets/images/blacklight/nyu.svg +0 -6
  424. data/app/assets/images/blacklight/ohio-state.svg +0 -5
  425. data/app/assets/images/blacklight/pagelines-brands.svg +0 -3
  426. data/app/assets/images/blacklight/paper-map.svg +0 -3
  427. data/app/assets/images/blacklight/parent-item.svg +0 -3
  428. data/app/assets/images/blacklight/penn-state.svg +0 -4
  429. data/app/assets/images/blacklight/pennsylvania-state-university.svg +0 -5
  430. data/app/assets/images/blacklight/point.svg +0 -3
  431. data/app/assets/images/blacklight/polygon.svg +0 -4
  432. data/app/assets/images/blacklight/polyline.svg +0 -6
  433. data/app/assets/images/blacklight/princeton.svg +0 -3
  434. data/app/assets/images/blacklight/public.svg +0 -3
  435. data/app/assets/images/blacklight/purdue-university.svg +0 -5
  436. data/app/assets/images/blacklight/purdue.svg +0 -4
  437. data/app/assets/images/blacklight/raster.svg +0 -3
  438. data/app/assets/images/blacklight/restricted.svg +0 -3
  439. data/app/assets/images/blacklight/rutgers.svg +0 -5
  440. data/app/assets/images/blacklight/sms.svg +0 -3
  441. data/app/assets/images/blacklight/stanford.svg +0 -3
  442. data/app/assets/images/blacklight/table.svg +0 -3
  443. data/app/assets/images/blacklight/tags.svg +0 -3
  444. data/app/assets/images/blacklight/texas.svg +0 -3
  445. data/app/assets/images/blacklight/the-ohio-state-university.svg +0 -6
  446. data/app/assets/images/blacklight/triangle-exclamation-solid.svg +0 -1
  447. data/app/assets/images/blacklight/tufts.svg +0 -3
  448. data/app/assets/images/blacklight/ucla.svg +0 -3
  449. data/app/assets/images/blacklight/university-of-california-berkeley.svg +0 -4
  450. data/app/assets/images/blacklight/university-of-chicago.svg +0 -5
  451. data/app/assets/images/blacklight/university-of-colorado-boulder.svg +0 -6
  452. data/app/assets/images/blacklight/university-of-illinois-urbana-champaign.svg +0 -5
  453. data/app/assets/images/blacklight/university-of-iowa.svg +0 -4
  454. data/app/assets/images/blacklight/university-of-maryland.svg +0 -4
  455. data/app/assets/images/blacklight/university-of-michigan.svg +0 -4
  456. data/app/assets/images/blacklight/university-of-minnesota.svg +0 -4
  457. data/app/assets/images/blacklight/university-of-nebraska-lincoln.svg +0 -7
  458. data/app/assets/images/blacklight/university-of-wisconsin-madison.svg +0 -4
  459. data/app/assets/images/blacklight/uva.svg +0 -3
  460. data/app/assets/images/blacklight/web_services.svg +0 -3
  461. data/app/assets/images/blacklight/websites.svg +0 -4
  462. data/app/assets/images/blacklight/wisconsin.svg +0 -3
  463. data/app/assets/javascripts/geoblacklight/basemaps.js +0 -85
  464. data/app/assets/javascripts/geoblacklight/controls/fullscreen.js +0 -8
  465. data/app/assets/javascripts/geoblacklight/controls/opacity.js +0 -6
  466. data/app/assets/javascripts/geoblacklight/controls.js +0 -1
  467. data/app/assets/javascripts/geoblacklight/downloaders/downloader.js +0 -61
  468. data/app/assets/javascripts/geoblacklight/downloaders/hgl_downloader.js +0 -32
  469. data/app/assets/javascripts/geoblacklight/downloaders.js +0 -1
  470. data/app/assets/javascripts/geoblacklight/geoblacklight.js +0 -60
  471. data/app/assets/javascripts/geoblacklight/modules/bookmarks.js +0 -43
  472. data/app/assets/javascripts/geoblacklight/modules/download.js +0 -11
  473. data/app/assets/javascripts/geoblacklight/modules/geosearch.js +0 -133
  474. data/app/assets/javascripts/geoblacklight/modules/help_text.js +0 -7
  475. data/app/assets/javascripts/geoblacklight/modules/home.js +0 -16
  476. data/app/assets/javascripts/geoblacklight/modules/item.js +0 -32
  477. data/app/assets/javascripts/geoblacklight/modules/layer_opacity.js +0 -68
  478. data/app/assets/javascripts/geoblacklight/modules/metadata.js +0 -15
  479. data/app/assets/javascripts/geoblacklight/modules/metadata_download_button.js +0 -58
  480. data/app/assets/javascripts/geoblacklight/modules/relations.js +0 -14
  481. data/app/assets/javascripts/geoblacklight/modules/results.js +0 -81
  482. data/app/assets/javascripts/geoblacklight/modules/svg_tooltips.js +0 -31
  483. data/app/assets/javascripts/geoblacklight/modules/util.js +0 -48
  484. data/app/assets/javascripts/geoblacklight/modules.js +0 -1
  485. data/app/assets/javascripts/geoblacklight/templates/index_map_download.hbs +0 -19
  486. data/app/assets/javascripts/geoblacklight/templates/index_map_info.hbs +0 -61
  487. data/app/assets/javascripts/geoblacklight/viewers/cog.js +0 -5
  488. data/app/assets/javascripts/geoblacklight/viewers/esri/dynamic_map_layer.js +0 -85
  489. data/app/assets/javascripts/geoblacklight/viewers/esri/feature_layer.js +0 -76
  490. data/app/assets/javascripts/geoblacklight/viewers/esri/image_map_layer.js +0 -14
  491. data/app/assets/javascripts/geoblacklight/viewers/esri/tiled_map_layer.js +0 -50
  492. data/app/assets/javascripts/geoblacklight/viewers/esri.js +0 -78
  493. data/app/assets/javascripts/geoblacklight/viewers/iiif.js +0 -25
  494. data/app/assets/javascripts/geoblacklight/viewers/index_map.js +0 -71
  495. data/app/assets/javascripts/geoblacklight/viewers/map.js +0 -77
  496. data/app/assets/javascripts/geoblacklight/viewers/oembed.js +0 -13
  497. data/app/assets/javascripts/geoblacklight/viewers/pmtiles.js +0 -5
  498. data/app/assets/javascripts/geoblacklight/viewers/tilejson.js +0 -33
  499. data/app/assets/javascripts/geoblacklight/viewers/tms.js +0 -10
  500. data/app/assets/javascripts/geoblacklight/viewers/viewer.js +0 -68
  501. data/app/assets/javascripts/geoblacklight/viewers/wms.js +0 -74
  502. data/app/assets/javascripts/geoblacklight/viewers/wmts.js +0 -85
  503. data/app/assets/javascripts/geoblacklight/viewers/xyz.js +0 -10
  504. data/app/assets/javascripts/geoblacklight/viewers.js +0 -1
  505. data/app/assets/stylesheets/geoblacklight/modules/facets.scss +0 -5
  506. data/app/assets/stylesheets/geoblacklight/modules/mixins.scss +0 -5
  507. data/app/helpers/arcgis_helper.rb +0 -14
  508. data/app/helpers/blacklight_helper.rb +0 -11
  509. data/app/helpers/carto_helper.rb +0 -31
  510. data/app/helpers/geoblacklight/geoblacklight_helper_behavior.rb +0 -18
  511. data/app/javascript/clover/clover_initializer.js +0 -29
  512. data/app/javascript/index.js +0 -7
  513. data/app/javascript/openlayers/basemaps.js +0 -47
  514. data/app/javascript/openlayers/ol_initializer.js +0 -106
  515. data/app/javascript/stylesheets/openlayers.css +0 -1
  516. data/app/models/concerns/geoblacklight/solr_document/carto.rb +0 -17
  517. data/app/views/catalog/_arcgis.html.erb +0 -4
  518. data/app/views/catalog/_carto.html.erb +0 -4
  519. data/app/views/catalog/_data_dictionary.html.erb +0 -5
  520. data/app/views/catalog/_downloads_collapse.html.erb +0 -27
  521. data/app/views/catalog/_header_icons.html.erb +0 -3
  522. data/app/views/catalog/_index_split_default.html.erb +0 -30
  523. data/app/views/catalog/_results_pagination.html.erb +0 -12
  524. data/app/views/catalog/_show_default_attribute_table.html.erb +0 -19
  525. data/app/views/catalog/_show_default_display_note.html.erb +0 -7
  526. data/app/views/catalog/_show_default_viewer_container.html.erb +0 -28
  527. data/app/views/catalog/_show_downloads.html.erb +0 -23
  528. data/app/views/catalog/_show_header_default.html.erb +0 -4
  529. data/app/views/catalog/_show_sidebar.html.erb +0 -16
  530. data/app/views/catalog/_show_sidebar_static_map.html.erb +0 -10
  531. data/app/views/catalog/_show_web_services.html.erb +0 -11
  532. data/app/views/catalog/_web_services.html.erb +0 -9
  533. data/app/views/catalog/_web_services_wms.html.erb +0 -13
  534. data/app/views/download/hgl.html.erb +0 -27
  535. data/app/views/relation/_relations.html.erb +0 -15
  536. data/app/views/shared/_header_navbar.html.erb +0 -46
  537. data/babel.config.json +0 -4
  538. data/jest.config.js +0 -25
  539. data/lib/generators/geoblacklight/templates/assets/_blacklight.scss +0 -1
  540. data/lib/generators/geoblacklight/templates/assets/_geoblacklight.scss +0 -1
  541. data/lib/generators/geoblacklight/templates/assets/geoblacklight.js +0 -9
  542. data/lib/generators/geoblacklight/templates/clover.js +0 -5
  543. data/lib/generators/geoblacklight/templates/ol.js +0 -6
  544. data/lib/generators/geoblacklight/templates/package-test.json +0 -10
  545. data/lib/generators/geoblacklight/templates/package.json +0 -10
  546. data/lib/generators/geoblacklight/templates/settings.gbl_v1.yml +0 -195
  547. data/lib/geoblacklight/download/hgl_download.rb +0 -20
  548. data/lib/geoblacklight/view_helper_override.rb +0 -16
  549. data/setupJest.js +0 -14
  550. data/spec/helpers/arcgis_helper_spec.rb +0 -16
  551. data/spec/helpers/carto_helper_spec.rb +0 -13
  552. data/spec/helpers/geoblacklight/geoblacklight_helper_behavior_spec.rb +0 -27
  553. data/spec/javascripts/util_spec.js +0 -10
  554. data/spec/lib/geoblacklight/download/hgl_download_spec.rb +0 -62
  555. data/spec/lib/geoblacklight/view_helper_override_spec.rb +0 -29
  556. data/spec/models/concerns/geoblacklight/solr_document/carto_spec.rb +0 -43
  557. data/spec/test_app_templates/Gemfile.extra +0 -2
  558. data/spec/views/catalog/_document_split.html.erb_spec.rb +0 -7
  559. data/spec/views/catalog/_index_split.html.erb_spec.rb +0 -7
  560. data/spec/views/catalog/_results_pagination.html.erb_spec.rb +0 -11
  561. data/spec/views/catalog/_show_downloads.html.erb_spec.rb +0 -43
  562. data/spec/views/catalog/_show_tools.html.erb_spec.rb +0 -38
  563. data/vendor/assets/images/fullscreen.png +0 -0
  564. data/vendor/assets/images/fullscreen@2x.png +0 -0
  565. data/vendor/assets/images/layers-2x.png +0 -0
  566. data/vendor/assets/images/layers.png +0 -0
  567. data/vendor/assets/images/marker-icon-2x.png +0 -0
  568. data/vendor/assets/images/marker-icon.png +0 -0
  569. data/vendor/assets/images/marker-shadow.png +0 -0
  570. data/vendor/assets/javascripts/Leaflet.fullscreen.js +0 -152
  571. data/vendor/assets/javascripts/esri-leaflet.js +0 -12
  572. data/vendor/assets/javascripts/esri-leaflet.js.map +0 -1
  573. data/vendor/assets/javascripts/leaflet-iiif.js +0 -323
  574. data/vendor/assets/javascripts/leaflet-src.js.erb +0 -14126
  575. data/vendor/assets/javascripts/leaflet-src.js.map +0 -1
  576. data/vendor/assets/javascripts/native.history.js +0 -1
  577. data/vendor/assets/stylesheets/leaflet.css +0 -640
  578. data/vendor/assets/stylesheets/leaflet.fullscreen.css +0 -40
  579. /data/app/{views/catalog/_show_default_viewer_information.html.erb → components/geoblacklight/index_map_inspect_component.html.erb} +0 -0
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "spec_helper"
4
+
5
+ RSpec.describe Geoblacklight::IiifDragDropComponent, type: :component do
6
+ describe "#iiifdragdropcomponet" do
7
+ let(:reference) { instance_double(Geoblacklight::Reference, endpoint: endpoint) }
8
+ let(:item_viewer) { instance_double(Geoblacklight::ItemViewer, iiif_manifest: reference) }
9
+ let(:document) { instance_double(SolrDocument, id: 123, item_viewer: item_viewer) }
10
+ let(:component) { described_class.new(document: document) }
11
+ let(:rendered) { render_inline_to_capybara_node(component) }
12
+
13
+ context "does not have viewer_endpoint url" do
14
+ let(:endpoint) { nil }
15
+
16
+ it "does not render" do
17
+ expect(component.render?).to be false
18
+ end
19
+ end
20
+
21
+ context "has viewer_endpoint url" do
22
+ let(:endpoint) { "https://url.com/manifest.json" }
23
+ it "renders iiif drag and drop icon" do
24
+ expect(component.render?).to be true
25
+ expect(rendered).to have_selector(:css, ".blacklight-icons-iiif-drag-drop")
26
+ expect(rendered).to have_selector(:css, "a[href='https://url.com/manifest.json?manifest=https://url.com/manifest.json']")
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "spec_helper"
4
+
5
+ RSpec.describe Geoblacklight::IndexMapLegendComponent, type: :component do
6
+ let(:document) { instance_double(SolrDocument) }
7
+
8
+ subject(:rendered) do
9
+ render_inline_to_capybara_node(described_class.new(document:))
10
+ end
11
+
12
+ context "when the document has an index map" do
13
+ before do
14
+ allow(document).to receive_message_chain(:item_viewer, :index_map).and_return(true)
15
+ end
16
+
17
+ it "shows available map text" do
18
+ expect(rendered).to have_text("Green tile indicates")
19
+ expect(rendered).to have_selector(:css, ".index-map-legend-default")
20
+ end
21
+
22
+ it "shows unavailable map text" do
23
+ expect(rendered).to have_text("Yellow tile indicates")
24
+ expect(rendered).to have_selector(:css, ".index-map-legend-unavailable")
25
+ end
26
+
27
+ it "shows selected map text" do
28
+ expect(rendered).to have_text("Blue tile indicates")
29
+ expect(rendered).to have_selector(:css, ".index-map-legend-selected")
30
+ end
31
+ end
32
+
33
+ context "when the document does not have an index map" do
34
+ before do
35
+ allow(document).to receive_message_chain(:item_viewer, :index_map).and_return(false)
36
+ end
37
+
38
+ it "does not render" do
39
+ expect(rendered.text.strip).to be_empty
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "spec_helper"
4
+
5
+ RSpec.describe Geoblacklight::ItemMapViewerComponent, type: :component do
6
+ subject(:rendered) do
7
+ render_inline_to_capybara_node(described_class.new(document:))
8
+ end
9
+
10
+ context "IIIF viewer" do
11
+ let(:fixture) { JSON.parse(read_fixture("solr_documents/iiif-eastern-hemisphere.json")) }
12
+ let(:document) { SolrDocument.new(fixture) }
13
+
14
+ it "uses the IIIF tag" do
15
+ expect(rendered).to have_css("div#clover-viewer")
16
+ end
17
+ end
18
+
19
+ context "Open layers viewer" do
20
+ let(:fixture) { JSON.parse(read_fixture("solr_documents/public_pmtiles_princeton.json")) }
21
+ let(:document) { SolrDocument.new(fixture) }
22
+
23
+ it "uses the open layers tag" do
24
+ expect(rendered).to have_css("div#openlayers-viewer")
25
+ end
26
+ end
27
+
28
+ context "Base or leaflet viewer" do
29
+ let(:fixture) { JSON.parse(read_fixture("solr_documents/actual-polygon1.json")) }
30
+ let(:document) { SolrDocument.new(fixture) }
31
+
32
+ it "uses the IIIF tag" do
33
+ expect(rendered).to have_css("div#leaflet-viewer")
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "spec_helper"
4
+
5
+ RSpec.describe Geoblacklight::LoginLinkComponent, type: :component do
6
+ subject(:rendered) do
7
+ render_inline_to_capybara_node(described_class.new(document: document))
8
+ end
9
+ let(:document) { instance_double(SolrDocument, id: 123) }
10
+
11
+ context "when rendering is required" do
12
+ before do
13
+ allow_any_instance_of(GeoblacklightHelper).to receive(:document_available?).and_return(false)
14
+ allow(document).to receive(:restricted?).and_return(true)
15
+ allow(document).to receive(:same_institution?).and_return(true)
16
+ end
17
+
18
+ it "shows download link" do
19
+ expect(rendered).to have_text(I18n.t("geoblacklight.tools.login_to_view"))
20
+ end
21
+ end
22
+
23
+ context "when rendering is not required" do
24
+ before do
25
+ allow(document).to receive(:restricted?).and_return(false)
26
+ allow(document).to receive(:same_institution?).and_return(false)
27
+ end
28
+
29
+ it "does not render anything" do
30
+ expect(rendered).not_to have_text(I18n.t("geoblacklight.tools.login_to_view"))
31
+ end
32
+ end
33
+ end
@@ -2,10 +2,8 @@
2
2
 
3
3
  require "spec_helper"
4
4
 
5
- describe Geoblacklight::DocumentPresenter do
6
- # Please see https://github.com/projectblacklight/blacklight/blob/v6.15.0/spec/presenters/index_presenter_spec.rb#L4
7
- subject { presenter }
8
- let(:request_context) { double(document_index_view_type: "list") }
5
+ RSpec.describe Geoblacklight::SearchResultComponent, type: :component do
6
+ let(:request_context) { double(document_index_view_type: "list", action_name: :index) }
9
7
  let(:blacklight_config) do
10
8
  Blacklight::Configuration.new.configure do |config|
11
9
  config.add_index_field "gbl_wxsIdentifier_s"
@@ -16,7 +14,7 @@ describe Geoblacklight::DocumentPresenter do
16
14
  end
17
15
  let(:solr_fields) { Settings.FIELDS }
18
16
  let(:presenter) do
19
- described_class.new(document, request_context, blacklight_config)
17
+ Blacklight::DocumentPresenter.new(document, request_context, blacklight_config)
20
18
  end
21
19
 
22
20
  let(:document) do
@@ -28,35 +26,45 @@ describe Geoblacklight::DocumentPresenter do
28
26
  multi_display: %w[blue blah]
29
27
  )
30
28
  end
29
+ subject(:rendered) do
30
+ render_inline_to_capybara_node(described_class.new(document: presenter))
31
+ end
32
+
33
+ before do
34
+ allow(request_context).to receive(:snippit)
35
+ allow_any_instance_of(BlacklightHelper).to receive(:link_to_document)
36
+ allow_any_instance_of(GeoblacklightHelper).to receive(:blacklight_config).and_return(blacklight_config)
37
+ end
31
38
 
32
39
  describe "#index_fields_display" do
33
- let(:rendered_index_text) { subject.index_fields_display }
34
40
  let(:multi_valued_text) { document["multi_display"].join(" and ") }
35
41
  let(:combined_fields) { document["gbl_wxsIdentifier_s"] + ". " + document["period"] }
36
42
 
43
+ subject(:index_fields_display) { rendered.find("[itemprop=description]").text }
44
+
37
45
  context "with multi-valued field" do
38
46
  it "each value is separated by comma" do
39
- expect(rendered_index_text).to include(multi_valued_text)
47
+ expect(index_fields_display).to include(multi_valued_text)
40
48
  end
41
49
  end
42
50
  context "with document fields not configured as index field" do
43
51
  it "does not render" do
44
- expect(rendered_index_text).not_to include(document["non_index_field"])
52
+ expect(index_fields_display).not_to include(document["non_index_field"])
45
53
  end
46
54
  end
47
55
  context "with multiple document index fields present" do
48
56
  it "separates fields by period followed by a space" do
49
- expect(rendered_index_text).to include(combined_fields)
57
+ expect(index_fields_display).to include(combined_fields)
50
58
  end
51
59
  context "with index field ending in period" do
52
60
  it "renders only 1 period" do
53
- expect(rendered_index_text).to include(document["period"] + " ")
61
+ expect(index_fields_display).to include(document["period"] + " ")
54
62
  end
55
63
  end
56
64
  end
57
65
  context "with document empty configured index field" do
58
66
  it "does not render a period followed by a space" do
59
- expect(rendered_index_text).not_to include(". .")
67
+ expect(index_fields_display).not_to include(". .")
60
68
  end
61
69
  end
62
70
  end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "spec_helper"
4
+
5
+ RSpec.describe Geoblacklight::StaticMapComponent, type: :component do
6
+ let(:document) { SolrDocument.new(id: 1) }
7
+
8
+ subject(:rendered) do
9
+ render_inline(described_class.new(document: document))
10
+ end
11
+
12
+ before do
13
+ allow(document).to receive(:viewer_protocol).and_return("map")
14
+ allow(Settings).to receive(:SIDEBAR_STATIC_MAP).and_return(["map"])
15
+ end
16
+
17
+ context "when the protocol matches the SIDEBAR_STATIC_MAP setting" do
18
+ it "renders the static map" do
19
+ expect(rendered.css("#static-map")).to be_present
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "spec_helper"
4
+
5
+ RSpec.describe Geoblacklight::ViewerHelpTextComponent, type: :component do
6
+ let(:feature) { "viewer_protocol" }
7
+ let(:key) { "wms" }
8
+
9
+ subject(:rendered) do
10
+ render_inline_to_capybara_node(described_class.new(feature, key))
11
+ end
12
+
13
+ context "when the help text exists for an existing viewer protocol" do
14
+ it "shows correct help text title for wms" do
15
+ expect(rendered).to have_text(I18n.t("geoblacklight.help_text.viewer_protocol.wms.title"))
16
+ end
17
+ end
18
+
19
+ context "when the help text is missing for a viewer protocol that exists" do
20
+ before do
21
+ allow(I18n).to receive(:exists?).and_return(false)
22
+ end
23
+
24
+ it "shows missing help text class" do
25
+ expect(render_inline_to_capybara_node(described_class.new(feature, key))).to have_css(".translation-missing")
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "spec_helper"
4
+
5
+ RSpec.describe Geoblacklight::WebServicesComponent, type: :component do
6
+ let(:document) { instance_double(SolrDocument, id: 123, wxs_identifier: "wxs_identifier") }
7
+ let(:ref) { instance_double(Geoblacklight::Reference, type: type, endpoint: "endpoint") }
8
+ let(:component) { described_class.new(document: document, ref: ref) }
9
+ subject(:rendered) do
10
+ render_inline_to_capybara_node(component)
11
+ end
12
+
13
+ context "when wms is rendered" do
14
+ let(:type) { "wms" }
15
+ it "shows the web mapping service and layers" do
16
+ expect(rendered).to have_text("Web Mapping Service (WMS)")
17
+ expect(rendered).to have_text("WMS layers")
18
+ expect(rendered).to have_css(".web-services-form")
19
+ end
20
+ end
21
+
22
+ context "when wfs is rendered" do
23
+ let(:type) { "wfs" }
24
+ it "shows the web mapping service and typeNames" do
25
+ expect(rendered).to have_text("Web Feature Service (WFS)")
26
+ expect(rendered).to have_text("WFS typeNames")
27
+ expect(rendered).to have_css(".web-services-form")
28
+ end
29
+ end
30
+
31
+ context "when iiif is rendered" do
32
+ let(:type) { "iiif" }
33
+ it "shows the service" do
34
+ expect(rendered).to have_text("International Image Interoperability Framework (IIIF)")
35
+ expect(rendered).to have_css(".web-services-form")
36
+ end
37
+ end
38
+
39
+ context "when non service is passed" do
40
+ let(:type) { "iiif2" }
41
+ it "shows nothing" do
42
+ expect(component.render?).to be false
43
+ end
44
+ end
45
+ end
@@ -76,46 +76,23 @@ describe DownloadController, type: :controller do
76
76
  expect(response.body).to include "Your file file.tiff is ready for download"
77
77
  end
78
78
  end
79
- end
80
-
81
- describe "#hgl" do
82
- let(:hgl_download) { instance_double(Geoblacklight::HglDownload) }
83
-
84
- it "requests file" do
85
- allow(hgl_download).to receive(:get).and_return("success")
86
- allow(Geoblacklight::HglDownload).to receive(:new).and_return(hgl_download)
87
-
88
- get :hgl, params: {id: "harvard-g7064-s2-1834-k3", email: "foo@example.com"}
89
- expect(response).to have_http_status :ok
90
- end
91
-
92
- it "renders form" do
93
- allow(Geoblacklight::HglDownload).to receive(:new).and_return(hgl_download)
94
-
95
- get :hgl, params: {id: "harvard-g7064-s2-1834-k3"}
96
- expect(response).to render_template("hgl")
97
- end
98
79
 
99
- context "when an error occurs while downloading a file" do
100
- let(:exception) { Geoblacklight::Exceptions::ExternalDownloadFailed.new(url: nil) }
101
-
102
- it "uses the default error message when the exception does not have a URL" do
103
- allow(Geoblacklight::HglDownload).to receive(:new).and_raise(exception)
80
+ context "when requesting CSV files" do
81
+ let(:id) { "tufts-cambridgegrid100-04" }
82
+ let(:type) { "csv" }
83
+ let(:csv_download) { instance_double(Geoblacklight::CsvDownload) }
104
84
 
105
- get :hgl, params: {id: "harvard-g7064-s2-1834-k3", email: "foo@example.com"}
106
- expect(response.body).to include("danger")
107
- expect(response.body).to include("Sorry, the requested file could not be downloaded")
85
+ before do
86
+ allow(csv_download).to receive(:get).and_return("file.csv")
87
+ allow(Geoblacklight::CsvDownload).to receive(:new).and_return(csv_download)
108
88
  end
109
- end
110
89
 
111
- context "when downloading the requested file fails" do
112
- it "flashes the error message" do
113
- allow(hgl_download).to receive(:get).and_return(nil)
114
- allow(Geoblacklight::HglDownload).to receive(:new).and_return(hgl_download)
90
+ it "downloads the files and notifies the user" do
91
+ expect(Geoblacklight::CsvDownload).to receive(:new)
92
+ get :show, params: {id: id, type: type}
115
93
 
116
- get :hgl, params: {id: "harvard-g7064-s2-1834-k3", email: "foo@example.com"}
117
- expect(response.body).to include("danger")
118
- expect(response.body).to include("Sorry, the requested file could not be downloaded")
94
+ expect(response.body).to include "success"
95
+ expect(response.body).to include "Your file file.csv is ready for download"
119
96
  end
120
97
  end
121
98
  end
@@ -0,0 +1,66 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "axe-rspec"
4
+ require "spec_helper"
5
+
6
+ feature "Accessibility testing", js: true do
7
+ context "logged out tests" do
8
+ it "validates the home page" do
9
+ visit root_path
10
+ expect(page).to be_accessible
11
+ end
12
+
13
+ it "validates an item page" do
14
+ visit solr_document_path("tufts-cambridgegrid100-04")
15
+ expect(page).to be_accessible
16
+ end
17
+
18
+ it "validates an item page with relationships" do
19
+ visit solr_document_path("nyu_2451_34502")
20
+ sleep 5 # wait for relationships to be fully visible / faded in
21
+ expect(page).to be_accessible
22
+ end
23
+
24
+ it "validates an bookmarks page" do
25
+ visit solr_document_path("tufts-cambridgegrid100-04")
26
+ find(".checkbox.toggle-bookmark").click
27
+ visit bookmarks_path
28
+ expect(page).to be_accessible
29
+ end
30
+
31
+ it "validates the history page" do
32
+ visit "/search_history"
33
+ expect(page).to be_accessible
34
+ visit search_catalog_path({q: "index"})
35
+ visit "/search_history"
36
+ expect(page).to be_accessible
37
+ end
38
+ end
39
+
40
+ context "logged in tests" do
41
+ before do
42
+ sign_in
43
+ end
44
+
45
+ it "validates the home page" do
46
+ visit root_path
47
+ expect(page).to be_accessible
48
+ end
49
+
50
+ it "validates an item page" do
51
+ visit solr_document_path("princeton-02870w62c")
52
+ expect(page).to be_accessible
53
+ end
54
+
55
+ it "validates an bookmarks page" do
56
+ visit solr_document_path("nyu_2451_34502")
57
+ find(".checkbox.toggle-bookmark").click
58
+ visit "/bookmarks"
59
+ expect(page).to be_accessible
60
+ end
61
+ end
62
+
63
+ def be_accessible
64
+ be_axe_clean.excluding("#clover-viewer")
65
+ end
66
+ end
@@ -4,7 +4,7 @@ require "spec_helper"
4
4
 
5
5
  feature "Blacklight Bookmarks" do
6
6
  scenario "index has created bookmarks" do
7
- visit solr_document_path "nyu-2451-34564"
7
+ visit solr_document_path "harvard-g7064-s2-1834-k3"
8
8
  click_button "Bookmark"
9
9
  visit bookmarks_path
10
10
  expect(page).to have_css ".document", count: 1
@@ -3,10 +3,14 @@
3
3
  require "spec_helper"
4
4
 
5
5
  feature "Blacklight Citation" do
6
- scenario "index has created citations" do
7
- sign_in
6
+ scenario "citations can be copied", js: true do
7
+ sign_in # NOTE: this seems to be required for clipboard permissions to be granted succesfully
8
+ page.driver.browser.add_permission("clipboard-read", "granted")
9
+ page.driver.browser.add_permission("clipboard-write", "granted")
8
10
  visit "/catalog/princeton-1r66j405w"
9
11
  click_link "Cite"
10
- expect(page).to have_text "Copy Citation"
12
+ click_button "Copy Citation"
13
+ clip_text = page.evaluate_async_script("navigator.clipboard.readText().then(arguments[0])")
14
+ expect(clip_text).to include("Sanborn Map Company. Princeton, Mercer County, New Jersey.")
11
15
  end
12
16
  end
@@ -5,39 +5,50 @@ require "spec_helper"
5
5
  feature "Download layer" do
6
6
  let(:shapefile_download) { instance_double(Geoblacklight::ShapefileDownload) }
7
7
  let(:kmz_download) { instance_double(Geoblacklight::KmzDownload) }
8
+ let(:csv_download) { instance_double(Geoblacklight::CsvDownload) }
8
9
 
9
10
  before do
10
11
  allow(Geoblacklight::ShapefileDownload).to receive(:new).and_return(shapefile_download)
11
12
  allow(Geoblacklight::KmzDownload).to receive(:new).and_return(kmz_download)
13
+ allow(Geoblacklight::CsvDownload).to receive(:new).and_return(csv_download)
14
+ end
15
+
16
+ # cleanup any downloaded files
17
+ after do
18
+ FileUtils.rm("tufts-cambridgegrid100-04-shapefile.zip", force: true)
19
+ FileUtils.rm("tufts-cambridgegrid100-04-kmz.kmz", force: true)
12
20
  end
13
21
 
14
22
  scenario "clicking initial shapefile download button should trigger download", js: true do
15
- expect(shapefile_download).to receive(:get).and_return("mit-f6rqs4ucovjk2-shapefile.zip")
16
- visit solr_document_path("mit-f6rqs4ucovjk2")
23
+ allow(shapefile_download).to receive(:get).and_return("tufts-cambridgegrid100-04-shapefile.zip")
24
+ visit solr_document_path("tufts-cambridgegrid100-04")
17
25
  find("#downloads-button").click
18
26
  find('a[data-download-type="shapefile"]', text: "Export Shapefile").click
19
27
  expect(page).to have_css(
20
- 'a[href="/download/file/mit-f6rqs4ucovjk2-shapefile.zip"]',
21
- text: "Your file mit-f6rqs4ucovjk2-shapefile.zip is ready for download"
28
+ 'a[href="/download/file/tufts-cambridgegrid100-04-shapefile.zip"]',
29
+ text: "Your file tufts-cambridgegrid100-04-shapefile.zip is ready for download"
22
30
  )
23
31
  end
24
32
 
25
33
  scenario "failed download should return message with link to layer", js: true do
26
- expect(shapefile_download).to receive(:get).and_raise(Geoblacklight::Exceptions::ExternalDownloadFailed.new(message: "Failed", url: "http://www.example.com/failed"))
34
+ allow(shapefile_download).to receive(:get).and_raise(Geoblacklight::Exceptions::ExternalDownloadFailed.new(
35
+ message: "Failed", url: "http://www.example.com/failed"
36
+ ))
27
37
  visit solr_document_path("mit-f6rqs4ucovjk2")
28
38
  find("#downloads-button").click
29
39
  find('#downloads-collapse a[data-download-type="shapefile"]', text: "Export Shapefile").click
40
+ expect(page).to have_text "Download failed (shapefile)"
30
41
  expect(page).to have_css "div.alert.alert-danger", text: "Sorry, the requested file could not be downloaded."
31
42
  end
32
43
 
33
44
  scenario "clicking kmz download button should trigger download", js: true do
34
- expect(kmz_download).to receive(:get).and_return("mit-f6rqs4ucovjk2-kmz.kmz")
35
- visit solr_document_path("mit-f6rqs4ucovjk2")
45
+ allow(kmz_download).to receive(:get).and_return("tufts-cambridgegrid100-04-kmz.kmz")
46
+ visit solr_document_path("tufts-cambridgegrid100-04")
36
47
  find("#downloads-button").click
37
48
  find('#downloads-collapse a[data-download-type="kmz"]', text: "Export KMZ").click
38
49
  expect(page).to have_css(
39
- 'a[href="/download/file/mit-f6rqs4ucovjk2-kmz.kmz"]',
40
- text: "Your file mit-f6rqs4ucovjk2-kmz.kmz is ready for download"
50
+ 'a[href="/download/file/tufts-cambridgegrid100-04-kmz.kmz"]',
51
+ text: "Your file tufts-cambridgegrid100-04-kmz.kmz is ready for download"
41
52
  )
42
53
  end
43
54
 
@@ -50,11 +61,13 @@ feature "Download layer" do
50
61
  scenario "clicking jpg download button should redirect to external image" do
51
62
  visit solr_document_path("princeton-02870w62c")
52
63
  find("#downloads-button").click
53
- expect(page).to have_css("#downloads-collapse a[href='https://iiif-cloud.princeton.edu/iiif/2/6c%2F52%2F12%2F6c5212e81bc845f59bb1cdc740a88bad%2Fintermediate_file/full/full/0/default.jpg']", text: "Original JPG")
64
+ expect(page).to have_css(
65
+ "#downloads-collapse a[href='https://iiif-cloud.princeton.edu/iiif/2/6c%2F52%2F12%2F6c5212e81bc845f59bb1cdc740a88bad%2Fintermediate_file/full/full/0/default.jpg']", text: "Original JPG"
66
+ )
54
67
  end
55
68
 
56
69
  scenario "options should be available under toggle" do
57
- visit solr_document_path("mit-f6rqs4ucovjk2")
70
+ visit solr_document_path("tufts-cambridgegrid100-04")
58
71
  find("#downloads-button").click
59
72
  expect(page).to have_css('#downloads-collapse a[data-download-type="shapefile"]', text: "Export Shapefile")
60
73
  expect(page).to have_css('#downloads-collapse a[data-download-type="kmz"]', text: "Export KMZ")
@@ -80,32 +93,4 @@ feature "Download layer" do
80
93
  expect(page).to have_css("#downloads-collapse a", text: "Original")
81
94
  expect(page).to have_css("#downloads-collapse a", text: "Export")
82
95
  end
83
-
84
- scenario "clicking download GeoTIFF for Harvard layer should show email form", js: true do
85
- visit solr_document_path("harvard-g7064-s2-1834-k3")
86
- find("#downloads-button").click
87
- find('a[data-download-type="harvard-hgl"]', text: "GeoTIFF").click
88
- expect(page).to have_css("#hglRequest")
89
- end
90
-
91
- context "with a successful request to the server" do
92
- let(:hgl_download) { instance_double(Geoblacklight::HglDownload) }
93
-
94
- xscenario "submitting email form should trigger HGL request", js: true do
95
- # There are currently difficulties with testing the HGL downloader
96
- visit solr_document_path("harvard-g7064-s2-1834-k3")
97
- find("#downloads-button").click
98
- find('a[data-download-type="harvard-hgl"]', text: "Original GeoTIFF").click
99
-
100
- allow_any_instance_of(Geoblacklight::HglDownload).to receive(:new).and_return(hgl_download)
101
- allow(hgl_download).to receive(:get).and_return("success")
102
-
103
- within "#hglRequest" do
104
- fill_in("Email", with: "foo@example.com")
105
- click_button("Request")
106
- end
107
- expect(page).to have_css(".alert-success")
108
- expect(page).to have_content("You should receive an email when your download is ready")
109
- end
110
- end
111
96
  end
@@ -30,7 +30,7 @@ feature "feature_layer reference", js: true do
30
30
  end
31
31
  scenario "displays tiled map layer" do
32
32
  skip "spec depend on potentially flaky external services"
33
- visit solr_document_path "nyu-test-soil-survey-map"
33
+ visit solr_document_path "31567cf1-bad8-4bc5-8d57-44b96c207ecc"
34
34
  expect(page).to have_css ".leaflet-control-zoom", visible: true
35
35
  expect(page).to have_css "img.leaflet-tile.leaflet-tile-loaded", visible: true
36
36
  end
@@ -3,15 +3,6 @@
3
3
  require "spec_helper"
4
4
 
5
5
  feature "Export features" do
6
- feature "when item is public and wfs is available" do
7
- feature "Open in Carto" do
8
- scenario "shows up in tools" do
9
- visit solr_document_path "tufts-cambridgegrid100-04"
10
- expect(page).to have_css "li.carto a", text: "Open in Carto"
11
- click_link "Open in Carto"
12
- end
13
- end
14
- end
15
6
  feature "when esri web services are available" do
16
7
  feature "Open in ArcGIS Online" do
17
8
  scenario "shows up in tools" do
@@ -20,10 +11,4 @@ feature "Export features" do
20
11
  end
21
12
  end
22
13
  end
23
- feature "when restricted or no wfs" do
24
- scenario "is not in tools" do
25
- visit solr_document_path "princeton-02870w62c"
26
- expect(page).not_to have_css "li.carto a", text: "Open in Carto"
27
- end
28
- end
29
14
  end
@@ -3,14 +3,9 @@
3
3
  require "spec_helper"
4
4
 
5
5
  feature "Leaflet fullscreen control", js: true do
6
- scenario "IIIF layer should have full screen control" do
7
- visit solr_document_path("princeton-02870w62c")
8
- expect(page).to have_css(".leaflet-control-fullscreen-button")
9
- end
10
-
11
6
  scenario "WMS layer should have full screen control" do
12
7
  visit solr_document_path("stanford-cz128vq0535")
13
- expect(page).to have_css(".leaflet-control-fullscreen-button")
8
+ expect(page).to have_css(".leaflet-control-fullscreen-button", visible: :all)
14
9
  end
15
10
  end
16
11
 
@@ -19,4 +14,9 @@ feature "Clover IIIF fullscreen control", js: true do
19
14
  visit solr_document_path("princeton-sx61dn82p")
20
15
  expect(page).to have_button("Toggle full page")
21
16
  end
17
+
18
+ scenario "IIIF image should have full screen control" do
19
+ visit solr_document_path("princeton-02870w62c")
20
+ expect(page).to have_css("[data-button='full-page']")
21
+ end
22
22
  end