geoblacklight 5.3.0 → 6.0.0.pre.alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.engine_cart.yml +14 -0
- data/.github/workflows/ruby.yml +24 -25
- data/.gitignore +0 -9
- data/.prettierignore +4 -0
- data/.prettierrc +5 -0
- data/CONTRIBUTING.md +2 -4
- data/Gemfile +4 -2
- data/README.md +4 -4
- data/Rakefile +0 -22
- data/app/assets/stylesheets/geoblacklight/global.css +7 -0
- data/app/assets/stylesheets/geoblacklight/home.css +22 -0
- data/app/assets/stylesheets/geoblacklight/index_maps.css +36 -0
- data/app/assets/stylesheets/geoblacklight/record.css +39 -0
- data/app/assets/stylesheets/geoblacklight/search.css +56 -0
- data/app/assets/stylesheets/geoblacklight/viewers.css +50 -0
- data/app/assets/stylesheets/geoblacklight.css +14 -0
- data/app/components/blacklight/icons/web_services_component.rb +3 -3
- data/app/components/geoblacklight/accordion_component.html.erb +3 -3
- data/app/components/geoblacklight/accordion_component.rb +4 -0
- data/app/components/geoblacklight/arcgis_component.html.erb +1 -1
- data/app/components/geoblacklight/arcgis_component.rb +1 -1
- data/app/components/geoblacklight/attribute_table_component.html.erb +3 -3
- data/app/components/geoblacklight/data_dictionary_download_component.html.erb +1 -1
- data/app/components/geoblacklight/display_note_component.html.erb +1 -1
- data/app/components/geoblacklight/display_note_component.rb +2 -1
- data/app/components/geoblacklight/document/citation_component.html.erb +1 -1
- data/app/components/geoblacklight/document/sidebar_component.html.erb +1 -1
- data/app/components/geoblacklight/document/sidebar_component.rb +0 -1
- data/app/components/geoblacklight/document_component.html.erb +1 -2
- data/app/components/geoblacklight/header_component.html.erb +4 -4
- data/app/components/geoblacklight/header_icons_component.rb +4 -2
- data/app/components/geoblacklight/homepage_feature_facet_component.html.erb +3 -7
- data/app/components/geoblacklight/homepage_feature_facet_component.rb +12 -3
- data/app/components/geoblacklight/iiif_drag_drop_component.html.erb +2 -2
- data/app/components/geoblacklight/iiif_drag_drop_component.rb +2 -2
- data/app/components/geoblacklight/index_map_inspect_component.html.erb +3 -3
- data/app/components/geoblacklight/index_map_legend_component.html.erb +7 -7
- data/app/components/geoblacklight/index_map_legend_component.rb +7 -0
- data/app/components/geoblacklight/item_map_viewer_component.rb +8 -4
- data/app/components/geoblacklight/location_leaflet_map_component.rb +28 -15
- data/app/components/geoblacklight/relations_component.html.erb +2 -2
- data/app/components/geoblacklight/search_result_component.html.erb +28 -26
- data/app/components/geoblacklight/search_result_component.rb +2 -2
- data/app/components/geoblacklight/static_map_component.rb +5 -4
- data/app/components/geoblacklight/viewer_help_text_component.html.erb +1 -1
- data/app/components/geoblacklight/viewer_help_text_component.rb +1 -1
- data/app/components/geoblacklight/web_services_component.html.erb +1 -1
- data/app/components/geoblacklight/web_services_component.rb +1 -1
- data/app/components/geoblacklight/web_services_default_component.html.erb +6 -6
- data/app/components/geoblacklight/web_services_link_component.rb +12 -9
- data/app/components/geoblacklight/web_services_wfs_component.html.erb +4 -4
- data/app/components/geoblacklight/web_services_wms_component.html.erb +4 -4
- data/app/controllers/download_controller.rb +0 -1
- data/app/controllers/wms_controller.rb +1 -1
- data/app/helpers/geoblacklight_helper.rb +0 -15
- data/app/javascript/geoblacklight/controllers/clipboard_controller.js +6 -6
- data/app/javascript/geoblacklight/controllers/downloads_controller.js +37 -29
- data/app/javascript/geoblacklight/controllers/leaflet_viewer_controller.js +108 -117
- data/app/javascript/geoblacklight/controllers/oembed_viewer_controller.js +5 -5
- data/app/javascript/geoblacklight/controllers/openlayers_viewer_controller.js +27 -30
- data/app/javascript/geoblacklight/controllers/search_results_controller.js +18 -18
- data/app/javascript/geoblacklight/core.js +35 -36
- data/app/javascript/geoblacklight/index.js +10 -10
- data/app/javascript/geoblacklight/initializers/metadata_download.js +23 -25
- data/app/javascript/geoblacklight/initializers/popovers.js +4 -4
- data/app/javascript/geoblacklight/initializers/relations.js +20 -20
- data/app/javascript/geoblacklight/initializers/tooltips.js +19 -23
- data/app/javascript/geoblacklight/initializers/truncation.js +18 -18
- data/app/javascript/geoblacklight/leaflet/basemaps.js +2 -3
- data/app/javascript/geoblacklight/leaflet/constants.js +7 -7
- data/app/javascript/geoblacklight/leaflet/controls/geosearch.js +80 -74
- data/app/javascript/geoblacklight/leaflet/controls/layer_opacity.js +74 -73
- data/app/javascript/geoblacklight/leaflet/controls/sidebar.js +31 -29
- data/app/javascript/geoblacklight/leaflet/controls/sleep.js +54 -51
- data/app/javascript/geoblacklight/leaflet/inspection.js +77 -68
- data/app/javascript/geoblacklight/leaflet/layer_index_map.js +74 -69
- data/app/javascript/geoblacklight/leaflet/layer_wmts.js +14 -16
- data/app/javascript/geoblacklight/leaflet/layers.js +59 -66
- data/app/javascript/geoblacklight/leaflet/utils.js +37 -43
- data/app/javascript/geoblacklight/openlayers/basemaps.js +35 -27
- data/app/javascript/geoblacklight/openlayers/inspection.js +23 -23
- data/app/javascript/geoblacklight/openlayers/layers.js +11 -11
- data/app/models/concerns/geoblacklight/bbox_filter_query.rb +7 -9
- data/app/models/concerns/geoblacklight/solr_document.rb +16 -39
- data/app/models/concerns/geoblacklight/suppressed_records_search_behavior.rb +3 -3
- data/app/views/catalog/_document_split.html.erb +3 -3
- data/app/views/catalog/_home_text.html.erb +22 -14
- data/app/views/catalog/_metadata.html.erb +1 -1
- data/app/views/catalog/_relations_container.html.erb +1 -1
- data/app/views/catalog/index.html.erb +0 -1
- data/app/views/catalog/metadata/_markup.html.erb +1 -2
- data/app/views/catalog/metadata/_missing.html.erb +2 -2
- data/app/views/catalog/web_services.html.erb +1 -1
- data/app/views/relation/index.html.erb +1 -1
- data/app/views/relation/index.json.jbuilder +1 -1
- data/config/initializers/rails_config.rb +0 -3
- data/config/locales/geoblacklight.en.yml +79 -78
- data/geoblacklight.gemspec +1 -2
- data/lib/generators/geoblacklight/assets_generator.rb +35 -26
- data/lib/generators/geoblacklight/install_generator.rb +6 -11
- data/lib/generators/geoblacklight/templates/assets/customizations.css +6 -0
- data/lib/generators/geoblacklight/templates/catalog_controller.rb +97 -73
- data/lib/generators/geoblacklight/templates/settings.yml +97 -113
- data/lib/geoblacklight/configuration/default_settings_builder.rb +18 -0
- data/lib/geoblacklight/configuration/display_note_shown_config.rb +13 -0
- data/lib/geoblacklight/configuration/fields_config.rb +51 -0
- data/lib/geoblacklight/configuration/leaflet_config.rb +73 -0
- data/lib/geoblacklight/configuration/leaflet_layers_config.rb +21 -0
- data/lib/geoblacklight/configuration/leaflet_sleep_config.rb +20 -0
- data/lib/geoblacklight/configuration/legacy_settings_builder.rb +94 -0
- data/lib/geoblacklight/configuration.rb +148 -0
- data/lib/geoblacklight/download.rb +2 -2
- data/lib/geoblacklight/engine.rb +7 -5
- data/lib/geoblacklight/metadata/base.rb +0 -2
- data/lib/geoblacklight/metadata_transformer.rb +0 -2
- data/lib/geoblacklight/references.rb +5 -4
- data/lib/geoblacklight/relation/ancestors.rb +3 -2
- data/lib/geoblacklight/relation/descendants.rb +2 -1
- data/lib/geoblacklight/relation/relation_response.rb +4 -4
- data/lib/geoblacklight/version.rb +1 -1
- data/lib/geoblacklight/wms_layer.rb +3 -3
- data/lib/geoblacklight.rb +7 -1
- data/package.json +10 -31
- data/schema/geoblacklight-schema-aardvark.json +1 -9
- data/schema/readme.md +3 -4
- data/solr/conf/_rest_managed.json +3 -2
- data/solr/conf/schema.xml +1 -1
- data/spec/components/geoblacklight/arcgis_component_spec.rb +6 -6
- data/spec/components/geoblacklight/attribute_table_component_spec.rb +6 -7
- data/spec/components/geoblacklight/citation_component_spec.rb +7 -4
- data/spec/components/geoblacklight/display_note_component_spec.rb +8 -8
- data/spec/components/geoblacklight/document_component_spec.rb +13 -13
- data/spec/components/geoblacklight/download_links_component_spec.rb +17 -14
- data/spec/components/geoblacklight/header_icons_component_spec.rb +6 -11
- data/spec/components/geoblacklight/homepage_feature_facet_component_spec.rb +22 -30
- data/spec/components/geoblacklight/iiif_drag_drop_component_spec.rb +3 -3
- data/spec/components/geoblacklight/index_map_legend_component_spec.rb +5 -18
- data/spec/components/geoblacklight/item_map_viewer_component_spec.rb +5 -5
- data/spec/components/geoblacklight/login_link_component_spec.rb +4 -5
- data/spec/components/geoblacklight/search_result_component_spec.rb +2 -6
- data/spec/components/geoblacklight/static_map_component_spec.rb +2 -2
- data/spec/components/geoblacklight/viewer_help_text_component_spec.rb +4 -6
- data/spec/components/geoblacklight/web_services_component_spec.rb +11 -10
- data/spec/controllers/catalog_controller_spec.rb +7 -7
- data/spec/controllers/download_controller_spec.rb +1 -1
- data/spec/controllers/relation_controller_spec.rb +1 -1
- data/spec/controllers/wms_controller_spec.rb +1 -1
- data/spec/features/axe_spec.rb +4 -4
- data/spec/features/bookmarks_spec.rb +1 -1
- data/spec/features/citations_spec.rb +1 -1
- data/spec/features/configurable_basemap_spec.rb +1 -1
- data/spec/features/data_dictionary_download_spec.rb +1 -1
- data/spec/features/download_layer_spec.rb +1 -1
- data/spec/features/empty_search_spec.rb +1 -1
- data/spec/features/esri_viewer_spec.rb +1 -1
- data/spec/features/exports_spec.rb +1 -1
- data/spec/features/full_screen_control_spec.rb +3 -10
- data/spec/features/help_text_spec.rb +1 -1
- data/spec/features/home_page_spec.rb +1 -1
- data/spec/features/index_map_spec.rb +3 -3
- data/spec/features/index_view_spec.rb +7 -7
- data/spec/features/layer_inspection_spec.rb +1 -1
- data/spec/features/layer_opacity_spec.rb +1 -1
- data/spec/features/layer_preview_spec.rb +1 -1
- data/spec/features/layer_with_no_references_spec.rb +1 -1
- data/spec/features/linkified_attribute_table_spec.rb +1 -1
- data/spec/features/metadata_panel_spec.rb +1 -1
- data/spec/features/missing_metadata_spec.rb +1 -1
- data/spec/features/multiple_downloads_spec.rb +1 -1
- data/spec/features/oembed_spec.rb +1 -1
- data/spec/features/relations_spec.rb +2 -2
- data/spec/features/saved_searches_spec.rb +1 -1
- data/spec/features/search_bar_spec.rb +1 -1
- data/spec/features/search_results_complex_geometry_spec.rb +1 -1
- data/spec/features/search_results_icons_spec.rb +3 -4
- data/spec/features/search_results_map_spec.rb +1 -1
- data/spec/features/search_results_overlap_ratio_spec.rb +3 -3
- data/spec/features/search_spec.rb +1 -1
- data/spec/features/show_page_download_spec.rb +1 -1
- data/spec/features/show_page_metadata_spec.rb +2 -2
- data/spec/features/show_page_sidebar_static_map_spec.rb +1 -1
- data/spec/features/sms_spec.rb +1 -1
- data/spec/features/suppressed_records_spec.rb +1 -1
- data/spec/features/tilejson_spec.rb +1 -1
- data/spec/features/tms_spec.rb +1 -1
- data/spec/features/web_services_modal_spec.rb +1 -1
- data/spec/features/wmts_spec.rb +1 -1
- data/spec/features/xyz_spec.rb +1 -1
- data/spec/fixtures/manifests/tilejson.json +10 -19
- data/spec/fixtures/metadata/fgdc.html +1 -1
- data/spec/fixtures/metadata/iso.html +1 -1
- data/spec/fixtures/solr_documents/README.md +0 -1
- data/spec/fixtures/solr_documents/actual-papermap1.json +9 -28
- data/spec/fixtures/solr_documents/actual-point1.json +12 -39
- data/spec/fixtures/solr_documents/actual-polygon1.json +10 -30
- data/spec/fixtures/solr_documents/actual-raster1.json +14 -46
- data/spec/fixtures/solr_documents/all-relationships.json +12 -36
- data/spec/fixtures/solr_documents/b1g_iiif_manifest.json +33 -62
- data/spec/fixtures/solr_documents/b1g_wabash_child_15.json +13 -40
- data/spec/fixtures/solr_documents/b1g_wabash_child_16.json +13 -40
- data/spec/fixtures/solr_documents/b1g_wabash_child_17.json +13 -40
- data/spec/fixtures/solr_documents/b1g_wabash_child_18.json +13 -40
- data/spec/fixtures/solr_documents/b1g_wabash_parent.json +13 -40
- data/spec/fixtures/solr_documents/baruch_ancestor1.json +13 -40
- data/spec/fixtures/solr_documents/baruch_ancestor2.json +13 -40
- data/spec/fixtures/solr_documents/baruch_documentation_download.json +14 -46
- data/spec/fixtures/solr_documents/bbox-spans-180.json +7 -21
- data/spec/fixtures/solr_documents/complex-geom.json +11 -37
- data/spec/fixtures/solr_documents/cornell_html_metadata.json +12 -37
- data/spec/fixtures/solr_documents/display-note.json +11 -33
- data/spec/fixtures/solr_documents/esri-dynamic-layer-all-layers.json +13 -39
- data/spec/fixtures/solr_documents/esri-dynamic-layer-single-layer.json +13 -40
- data/spec/fixtures/solr_documents/esri-feature-layer.json +13 -39
- data/spec/fixtures/solr_documents/esri-image-map-layer.json +13 -40
- data/spec/fixtures/solr_documents/esri-tiled_map_layer.json +16 -54
- data/spec/fixtures/solr_documents/esri-wms-layer.json +12 -36
- data/spec/fixtures/solr_documents/harvard_raster.json +12 -37
- data/spec/fixtures/solr_documents/iiif-eastern-hemisphere.json +9 -27
- data/spec/fixtures/solr_documents/index-map-polygon-no-downloadurl.json +12 -41
- data/spec/fixtures/solr_documents/index-map-polygon.json +12 -41
- data/spec/fixtures/solr_documents/index-map-stanford.json +14 -45
- data/spec/fixtures/solr_documents/index-map-v1-complex.json +13 -38
- data/spec/fixtures/solr_documents/index_map_point.json +13 -42
- data/spec/fixtures/solr_documents/metadata_no_geom.json +4 -14
- data/spec/fixtures/solr_documents/metadata_no_provider.json +8 -25
- data/spec/fixtures/solr_documents/multiple-downloads.json +6 -18
- data/spec/fixtures/solr_documents/no_locn_geometry.json +4 -12
- data/spec/fixtures/solr_documents/no_spatial.json +4 -12
- data/spec/fixtures/solr_documents/oembed.json +8 -25
- data/spec/fixtures/solr_documents/princeton-child1.json +9 -29
- data/spec/fixtures/solr_documents/princeton-child2.json +9 -29
- data/spec/fixtures/solr_documents/princeton-child3.json +9 -29
- data/spec/fixtures/solr_documents/princeton-child4.json +9 -29
- data/spec/fixtures/solr_documents/princeton-parent.json +10 -33
- data/spec/fixtures/solr_documents/public_cog_princeton.json +9 -27
- data/spec/fixtures/solr_documents/public_iiif_princeton.json +13 -43
- data/spec/fixtures/solr_documents/public_pmtiles_princeton.json +29 -39
- data/spec/fixtures/solr_documents/public_polygon_mit.json +9 -30
- data/spec/fixtures/solr_documents/restricted-line.json +14 -47
- data/spec/fixtures/solr_documents/the-related-record.json +4 -12
- data/spec/fixtures/solr_documents/tilejson.json +23 -46
- data/spec/fixtures/solr_documents/tms.json +7 -21
- data/spec/fixtures/solr_documents/umn_metro_result1.json +13 -41
- data/spec/fixtures/solr_documents/umn_state_result1.json +13 -39
- data/spec/fixtures/solr_documents/umn_state_result2.json +13 -39
- data/spec/fixtures/solr_documents/uva_slug_colon.json +10 -30
- data/spec/fixtures/solr_documents/wmts-multiple.json +23 -39
- data/spec/fixtures/solr_documents/wmts-single-layer.json +23 -46
- data/spec/fixtures/solr_documents/xyz.json +10 -33
- data/spec/helpers/geoblacklight_helper_spec.rb +5 -50
- data/spec/javascripts/geoblacklight_spec.js +10 -10
- data/spec/javascripts/metadata_download_button_spec.js +14 -13
- data/spec/lib/geoblacklight/bounding_box_spec.rb +1 -1
- data/spec/lib/geoblacklight/configuration/default_settings_builder_spec.rb +9 -0
- data/spec/lib/geoblacklight/configuration_spec.rb +13 -0
- data/spec/lib/geoblacklight/download/csv_download_spec.rb +2 -2
- data/spec/lib/geoblacklight/download/geojson_download_spec.rb +2 -2
- data/spec/lib/geoblacklight/download/geotiff_download_spec.rb +5 -2
- data/spec/lib/geoblacklight/download/kmz_download_spec.rb +2 -2
- data/spec/lib/geoblacklight/download/shapefile_download_spec.rb +2 -2
- data/spec/lib/geoblacklight/download_spec.rb +15 -6
- data/spec/lib/geoblacklight/geometry_spec.rb +1 -1
- data/spec/lib/geoblacklight/item_viewer_spec.rb +2 -2
- data/spec/lib/geoblacklight/metadata/base_spec.rb +1 -1
- data/spec/lib/geoblacklight/metadata/html_spec.rb +1 -1
- data/spec/lib/geoblacklight/metadata_spec.rb +1 -1
- data/spec/lib/geoblacklight/metadata_transformer/base_spec.rb +1 -1
- data/spec/lib/geoblacklight/metadata_transformer/fgdc_spec.rb +1 -1
- data/spec/lib/geoblacklight/metadata_transformer/iso19139_spec.rb +1 -1
- data/spec/lib/geoblacklight/metadata_transformer_spec.rb +1 -1
- data/spec/lib/geoblacklight/reference_spec.rb +1 -1
- data/spec/lib/geoblacklight/references_spec.rb +6 -4
- data/spec/lib/geoblacklight/relation/ancestors_spec.rb +10 -4
- data/spec/lib/geoblacklight/relation/descendants_spec.rb +9 -4
- data/spec/lib/geoblacklight/relation/relation_response_spec.rb +12 -15
- data/spec/lib/geoblacklight/wms_layer/feature_info_response_spec.rb +1 -1
- data/spec/lib/geoblacklight/wms_layer_spec.rb +1 -1
- data/spec/models/concerns/geoblacklight/bbox_filter_query_spec.rb +20 -11
- data/spec/models/concerns/geoblacklight/solr_document/citation_spec.rb +1 -1
- data/spec/models/concerns/geoblacklight/solr_document/finder_spec.rb +1 -1
- data/spec/models/concerns/geoblacklight/solr_document/inspection_spec.rb +1 -1
- data/spec/models/concerns/geoblacklight/solr_document_spec.rb +4 -39
- data/spec/models/concerns/geoblacklight/suppressed_records_search_behavior_spec.rb +2 -2
- data/spec/routing/catalog_routing_spec.rb +1 -1
- data/spec/spec_helper.rb +21 -10
- data/spec/tasks/geoblacklight_spec.rb +1 -1
- data/spec/test_app_templates/lib/generators/test_app_generator.rb +4 -3
- metadata +33 -184
- data/Procfile.dev +0 -3
- data/app/assets/stylesheets/geoblacklight/geoblacklight.scss +0 -2
- data/app/assets/stylesheets/geoblacklight/modules/_base.scss +0 -31
- data/app/assets/stylesheets/geoblacklight/modules/_blacklight_overrides.scss +0 -40
- data/app/assets/stylesheets/geoblacklight/modules/_styles.scss +0 -9
- data/app/assets/stylesheets/geoblacklight/modules/downloads.scss +0 -62
- data/app/assets/stylesheets/geoblacklight/modules/geosearch.scss +0 -23
- data/app/assets/stylesheets/geoblacklight/modules/home.scss +0 -13
- data/app/assets/stylesheets/geoblacklight/modules/icon-customization.scss +0 -116
- data/app/assets/stylesheets/geoblacklight/modules/index_maps.scss +0 -61
- data/app/assets/stylesheets/geoblacklight/modules/item.scss +0 -78
- data/app/assets/stylesheets/geoblacklight/modules/layer_opacity.scss +0 -87
- data/app/assets/stylesheets/geoblacklight/modules/leaflet.scss +0 -4
- data/app/assets/stylesheets/geoblacklight/modules/metadata.scss +0 -31
- data/app/assets/stylesheets/geoblacklight/modules/metadata_content.scss +0 -43
- data/app/assets/stylesheets/geoblacklight/modules/metadata_markup.scss +0 -9
- data/app/assets/stylesheets/geoblacklight/modules/metadata_missing.scss +0 -7
- data/app/assets/stylesheets/geoblacklight/modules/modal.scss +0 -5
- data/app/assets/stylesheets/geoblacklight/modules/results.scss +0 -60
- data/app/assets/stylesheets/geoblacklight/modules/search_widgets.scss +0 -5
- data/app/assets/stylesheets/geoblacklight/modules/sidebar.scss +0 -42
- data/app/assets/stylesheets/geoblacklight/modules/toolbar.scss +0 -34
- data/app/assets/stylesheets/geoblacklight/modules/web_services.scss +0 -5
- data/app/components/blacklight/icons/american_geographical_society_library_uwm_libraries_component.rb +0 -46
- data/app/components/blacklight/icons/arizona_component.rb +0 -24
- data/app/components/blacklight/icons/baruch_cuny_component.rb +0 -23
- data/app/components/blacklight/icons/bookmark_component.rb +0 -23
- data/app/components/blacklight/icons/circle_info_solid_component.rb +0 -23
- data/app/components/blacklight/icons/columbia_component.rb +0 -23
- data/app/components/blacklight/icons/cornell_component.rb +0 -25
- data/app/components/blacklight/icons/george_mason_component.rb +0 -24
- data/app/components/blacklight/icons/harvard_component.rb +0 -23
- data/app/components/blacklight/icons/indiana_component.rb +0 -23
- data/app/components/blacklight/icons/lewis_clark_component.rb +0 -25
- data/app/components/blacklight/icons/massgis_component.rb +0 -23
- data/app/components/blacklight/icons/michigan_state_university_component.rb +0 -25
- data/app/components/blacklight/icons/mit_component.rb +0 -23
- data/app/components/blacklight/icons/northwestern_university_component.rb +0 -24
- data/app/components/blacklight/icons/nyu_component.rb +0 -26
- data/app/components/blacklight/icons/pennsylvania_state_university_component.rb +0 -25
- data/app/components/blacklight/icons/princeton_component.rb +0 -23
- data/app/components/blacklight/icons/purdue_university_component.rb +0 -25
- data/app/components/blacklight/icons/rutgers_component.rb +0 -25
- data/app/components/blacklight/icons/sms_component.rb +0 -23
- data/app/components/blacklight/icons/stanford_component.rb +0 -23
- data/app/components/blacklight/icons/texas_component.rb +0 -23
- data/app/components/blacklight/icons/the_ohio_state_university_component.rb +0 -26
- data/app/components/blacklight/icons/tufts_component.rb +0 -23
- data/app/components/blacklight/icons/ucla_component.rb +0 -23
- data/app/components/blacklight/icons/university_of_california_berkeley_component.rb +0 -24
- data/app/components/blacklight/icons/university_of_chicago_component.rb +0 -25
- data/app/components/blacklight/icons/university_of_colorado_boulder_component.rb +0 -26
- data/app/components/blacklight/icons/university_of_illinois_urbana_champaign_component.rb +0 -25
- data/app/components/blacklight/icons/university_of_iowa_component.rb +0 -24
- data/app/components/blacklight/icons/university_of_maryland_component.rb +0 -24
- data/app/components/blacklight/icons/university_of_michigan_component.rb +0 -24
- data/app/components/blacklight/icons/university_of_minnesota_component.rb +0 -24
- data/app/components/blacklight/icons/university_of_nebraska_lincoln_component.rb +0 -27
- data/app/components/blacklight/icons/university_of_wisconsin_madison_component.rb +0 -24
- data/app/components/blacklight/icons/uva_component.rb +0 -23
- data/app/components/geoblacklight/icon_facet_item_component.rb +0 -33
- data/app/components/geoblacklight/web_services_link_component.html.erb +0 -3
- data/bin/vite +0 -29
- data/config/initializers/new_gbl_settings_defaults_4.1.yml +0 -104
- data/lib/generators/geoblacklight/assets/importmap_generator.rb +0 -73
- data/lib/generators/geoblacklight/assets/vite_generator.rb +0 -89
- data/lib/generators/geoblacklight/templates/assets/_customizations.scss +0 -23
- data/lib/generators/geoblacklight/templates/assets/application.js +0 -17
- data/lib/generators/geoblacklight/templates/assets/application.scss +0 -9
- data/lib/generators/geoblacklight/templates/assets/geoblacklight.scss +0 -11
- data/lib/generators/geoblacklight/templates/base.html.erb +0 -46
- data/lib/generators/geoblacklight/templates/vite.config.ts +0 -23
- data/lib/generators/geoblacklight/templates/vite.json +0 -16
- data/schema/geoblacklight-schema-1.0.json +0 -214
- data/solr/conf/xslt/example.xsl +0 -132
- data/solr/conf/xslt/example_atom.xsl +0 -67
- data/solr/conf/xslt/example_rss.xsl +0 -66
- data/solr/conf/xslt/luke.xsl +0 -337
- data/spec/components/blacklight/icons/american_geographical_society_library_uwm_libraries_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/arizona_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/arrow_circle_down_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/baruch_cuny_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/book_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/bookmark_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/cd_rom_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/child_item_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/circle_info_solid_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/citation_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/collection_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/collections_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/columbia_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/cornell_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/datasets_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/dvd_rom_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/email_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/esri_globe_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/fire_solid_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/george_mason_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/globe_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/harvard_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/home_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/iiif_drag_drop_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/image_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/imagery_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/indiana_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/leaf_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/lewis_clark_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/lightbulb_solid_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/line_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/map_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/map_marker_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/maps_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/massgis_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/metadata_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/michigan_state_university_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/mit_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/mixed_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/multilinestring_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/multipoint_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/multipolygon_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/northwestern_university_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/nyu_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/pagelines_brands_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/paper_map_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/parent_item_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/pennsylvania_state_university_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/point_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/polygon_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/polyline_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/princeton_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/public_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/purdue_university_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/raster_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/restricted_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/rutgers_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/sms_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/stanford_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/table_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/tags_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/texas_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/the_ohio_state_university_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/triangle_exclamation_solid_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/tufts_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/ucla_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/university_of_california_berkeley_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/university_of_chicago_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/university_of_colorado_boulder_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/university_of_illinois_urbana_champaign_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/university_of_iowa_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/university_of_maryland_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/university_of_michigan_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/university_of_minnesota_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/university_of_nebraska_lincoln_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/university_of_wisconsin_madison_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/uva_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/web_services_component_spec.rb +0 -15
- data/spec/components/blacklight/icons/websites_component_spec.rb +0 -15
- data/spec/components/geoblacklight/icon_facet_item_component_spec.rb +0 -18
- data/spec/config/initializers/rails_config_spec.rb +0 -16
- data/spec/fixtures/solr_documents/public_direct_download.json +0 -62
- data/spec/support/backport_test_helpers.rb +0 -47
- data/spec/support/view_component_capybara_test_helpers.rb +0 -8
- data/vite.config.ts +0 -32
- /data/app/assets/images/{blacklight → geoblacklight}/logo.svg +0 -0
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
// Stimulus controllers
|
|
2
|
-
import OpenlayersViewerController from "geoblacklight/controllers/openlayers_viewer_controller"
|
|
3
|
-
import OembedViewerController from "geoblacklight/controllers/oembed_viewer_controller"
|
|
4
|
-
import LeafletViewerController from "geoblacklight/controllers/leaflet_viewer_controller"
|
|
5
|
-
import SearchResultsController from "geoblacklight/controllers/search_results_controller"
|
|
6
|
-
import DownloadsController from "geoblacklight/controllers/downloads_controller"
|
|
7
|
-
import ClipboardController from "geoblacklight/controllers/clipboard_controller"
|
|
2
|
+
import OpenlayersViewerController from "geoblacklight/controllers/openlayers_viewer_controller"
|
|
3
|
+
import OembedViewerController from "geoblacklight/controllers/oembed_viewer_controller"
|
|
4
|
+
import LeafletViewerController from "geoblacklight/controllers/leaflet_viewer_controller"
|
|
5
|
+
import SearchResultsController from "geoblacklight/controllers/search_results_controller"
|
|
6
|
+
import DownloadsController from "geoblacklight/controllers/downloads_controller"
|
|
7
|
+
import ClipboardController from "geoblacklight/controllers/clipboard_controller"
|
|
8
8
|
|
|
9
9
|
// GBL core
|
|
10
|
-
import Core from "geoblacklight/core"
|
|
10
|
+
import Core from "geoblacklight/core"
|
|
11
11
|
|
|
12
12
|
// Other modules
|
|
13
|
-
import openLayersBasemaps from "geoblacklight/openlayers/basemaps"
|
|
14
|
-
import leafletBasemaps from "geoblacklight/leaflet/basemaps"
|
|
13
|
+
import openLayersBasemaps from "geoblacklight/openlayers/basemaps"
|
|
14
|
+
import leafletBasemaps from "geoblacklight/leaflet/basemaps"
|
|
15
15
|
|
|
16
16
|
export default {
|
|
17
17
|
OpenlayersViewerController,
|
|
@@ -24,4 +24,4 @@ export default {
|
|
|
24
24
|
leafletBasemaps,
|
|
25
25
|
Core,
|
|
26
26
|
onLoad: Core.onLoad,
|
|
27
|
-
}
|
|
27
|
+
}
|
|
@@ -1,54 +1,52 @@
|
|
|
1
1
|
export class GeoBlacklightMetadataDownloadButton {
|
|
2
2
|
constructor(el, i, options = {}) {
|
|
3
|
-
this.options = options
|
|
4
|
-
this.el = typeof el === "string" ? document.querySelector(el) : el
|
|
5
|
-
this.download = document.querySelector(
|
|
6
|
-
this.options.target || this.el.getAttribute("data-ref-download")
|
|
7
|
-
);
|
|
3
|
+
this.options = options
|
|
4
|
+
this.el = typeof el === "string" ? document.querySelector(el) : el
|
|
5
|
+
this.download = document.querySelector(this.options.target || this.el.getAttribute("data-ref-download"))
|
|
8
6
|
// On initialization only do this for the first one.
|
|
9
7
|
if (i === 0) {
|
|
10
|
-
this.setRefUrl()
|
|
8
|
+
this.setRefUrl()
|
|
11
9
|
}
|
|
12
|
-
this.configureHandler()
|
|
10
|
+
this.configureHandler()
|
|
13
11
|
}
|
|
14
12
|
|
|
15
13
|
configureHandler() {
|
|
16
|
-
this.el.addEventListener("click", () => this.setRefUrl())
|
|
14
|
+
this.el.addEventListener("click", () => this.setRefUrl())
|
|
17
15
|
}
|
|
18
16
|
|
|
19
17
|
setRefUrl() {
|
|
20
|
-
const refUrl = this.el.getAttribute("data-ref-endpoint")
|
|
18
|
+
const refUrl = this.el.getAttribute("data-ref-endpoint")
|
|
21
19
|
if (!refUrl) {
|
|
22
|
-
this.download.style.display = "none"
|
|
20
|
+
this.download.style.display = "none"
|
|
23
21
|
} else {
|
|
24
|
-
this.download.style.display = ""
|
|
25
|
-
this.download.setAttribute("href", refUrl)
|
|
22
|
+
this.download.style.display = ""
|
|
23
|
+
this.download.setAttribute("href", refUrl)
|
|
26
24
|
}
|
|
27
25
|
}
|
|
28
26
|
}
|
|
29
27
|
|
|
30
28
|
export default function initializeMetadataDownload() {
|
|
31
|
-
const modal = document.getElementById("blacklight-modal")
|
|
29
|
+
const modal = document.getElementById("blacklight-modal")
|
|
32
30
|
|
|
33
31
|
modal.addEventListener("focus", (e) => {
|
|
34
|
-
if (!Array.from(e.target.classList).includes(
|
|
35
|
-
return
|
|
32
|
+
if (!Array.from(e.target.classList).includes("show")) {
|
|
33
|
+
return
|
|
36
34
|
}
|
|
37
35
|
e.target.querySelectorAll(".metadata-body").forEach((el) => {
|
|
38
|
-
el.closest(".modal-content").classList.add("metadata-modal")
|
|
39
|
-
})
|
|
36
|
+
el.closest(".modal-content").classList.add("metadata-modal")
|
|
37
|
+
})
|
|
40
38
|
|
|
41
39
|
e.target.querySelectorAll(".pill-metadata").forEach((element, i) => {
|
|
42
|
-
new GeoBlacklightMetadataDownloadButton(element, i)
|
|
43
|
-
})
|
|
44
|
-
})
|
|
40
|
+
new GeoBlacklightMetadataDownloadButton(element, i)
|
|
41
|
+
})
|
|
42
|
+
})
|
|
45
43
|
|
|
46
44
|
modal.addEventListener("blur", (e) => {
|
|
47
|
-
if (Array.from(e.target.classList).includes(
|
|
48
|
-
return
|
|
45
|
+
if (Array.from(e.target.classList).includes("show")) {
|
|
46
|
+
return
|
|
49
47
|
}
|
|
50
48
|
e.target.querySelectorAll(".metadata-body").forEach((el) => {
|
|
51
|
-
el.closest(".modal-content").classList.remove("metadata-modal")
|
|
52
|
-
})
|
|
53
|
-
})
|
|
49
|
+
el.closest(".modal-content").classList.remove("metadata-modal")
|
|
50
|
+
})
|
|
51
|
+
})
|
|
54
52
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { Popover } from
|
|
1
|
+
import { Popover } from "bootstrap"
|
|
2
2
|
|
|
3
3
|
// Initialize popovers
|
|
4
4
|
export default function initializePopovers() {
|
|
5
|
-
const popoverElements = document.querySelectorAll('[data-bs-toggle="popover"]')
|
|
5
|
+
const popoverElements = document.querySelectorAll('[data-bs-toggle="popover"]') // Bootstrap 5 uses 'data-bs-toggle'
|
|
6
6
|
popoverElements.forEach((element) => {
|
|
7
7
|
const popover = new Popover(element, {
|
|
8
8
|
trigger: "hover",
|
|
9
|
-
})
|
|
10
|
-
})
|
|
9
|
+
})
|
|
10
|
+
})
|
|
11
11
|
}
|
|
@@ -1,40 +1,40 @@
|
|
|
1
1
|
const fadeIn = (element, duration) => {
|
|
2
|
-
element.style.opacity = 0
|
|
3
|
-
element.style.display = "block"
|
|
2
|
+
element.style.opacity = 0
|
|
3
|
+
element.style.display = "block"
|
|
4
4
|
|
|
5
|
-
let start = null
|
|
5
|
+
let start = null
|
|
6
6
|
function step(timestamp) {
|
|
7
|
-
if (!start) start = timestamp
|
|
8
|
-
const progress = timestamp - start
|
|
9
|
-
element.style.opacity = Math.min(progress / duration, 1)
|
|
7
|
+
if (!start) start = timestamp
|
|
8
|
+
const progress = timestamp - start
|
|
9
|
+
element.style.opacity = Math.min(progress / duration, 1)
|
|
10
10
|
if (progress < duration) {
|
|
11
|
-
window.requestAnimationFrame(step)
|
|
11
|
+
window.requestAnimationFrame(step)
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
-
window.requestAnimationFrame(step)
|
|
16
|
-
}
|
|
15
|
+
window.requestAnimationFrame(step)
|
|
16
|
+
}
|
|
17
17
|
|
|
18
18
|
// Set up the relations widgets by querying the relations endpoint
|
|
19
19
|
export default function initializeRelations() {
|
|
20
20
|
document.querySelectorAll('[data-relations="true"]').forEach((element) => {
|
|
21
|
-
const attributes = element.dataset
|
|
22
|
-
const relationUrl = `${attributes.url}/relations
|
|
21
|
+
const attributes = element.dataset
|
|
22
|
+
const relationUrl = `${attributes.url}/relations`
|
|
23
23
|
|
|
24
24
|
fetch(relationUrl, { headers: { "X-Requested-With": "XMLHttpRequest" } })
|
|
25
25
|
.then((response) => {
|
|
26
26
|
if (!response.ok) {
|
|
27
|
-
throw new Error("Network response was not ok")
|
|
27
|
+
throw new Error("Network response was not ok")
|
|
28
28
|
}
|
|
29
|
-
return response.text()
|
|
29
|
+
return response.text()
|
|
30
30
|
})
|
|
31
31
|
.then((data) => {
|
|
32
|
-
const div = document.createElement("div")
|
|
33
|
-
div.innerHTML = data
|
|
34
|
-
element.appendChild(div)
|
|
35
|
-
div.style.display = "none"
|
|
36
|
-
fadeIn(div, 200)
|
|
32
|
+
const div = document.createElement("div")
|
|
33
|
+
div.innerHTML = data
|
|
34
|
+
element.appendChild(div)
|
|
35
|
+
div.style.display = "none"
|
|
36
|
+
fadeIn(div, 200)
|
|
37
37
|
})
|
|
38
|
-
.catch((error) => console.error("Error:", error))
|
|
39
|
-
})
|
|
38
|
+
.catch((error) => console.error("Error:", error))
|
|
39
|
+
})
|
|
40
40
|
}
|
|
@@ -1,55 +1,51 @@
|
|
|
1
|
-
import { Tooltip } from "bootstrap"
|
|
1
|
+
import { Tooltip } from "bootstrap"
|
|
2
2
|
|
|
3
3
|
export default function initializeTooltips() {
|
|
4
4
|
document.body.addEventListener(
|
|
5
5
|
"mouseenter",
|
|
6
6
|
(event) => {
|
|
7
7
|
if (event.target.closest(".blacklight-icons.svg_tooltip svg")) {
|
|
8
|
-
const svgElement = event.target.closest(
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
const svgTitleElement = svgElement.querySelector("title");
|
|
12
|
-
const titleText = svgTitleElement ? svgTitleElement.textContent : "";
|
|
8
|
+
const svgElement = event.target.closest(".blacklight-icons.svg_tooltip svg")
|
|
9
|
+
const svgTitleElement = svgElement.querySelector("title")
|
|
10
|
+
const titleText = svgTitleElement ? svgTitleElement.textContent : ""
|
|
13
11
|
|
|
14
12
|
if (titleText !== undefined && titleText !== "") {
|
|
15
13
|
// Initialize Bootstrap tooltip with native JavaScript
|
|
16
14
|
const tooltip = new Tooltip(svgElement, {
|
|
17
15
|
placement: "bottom",
|
|
18
16
|
title: titleText,
|
|
19
|
-
})
|
|
20
|
-
tooltip.show()
|
|
17
|
+
})
|
|
18
|
+
tooltip.show()
|
|
21
19
|
|
|
22
20
|
// Store the original title in the data-original-title attribute
|
|
23
21
|
// and remove the title element to prevent it from interfering with Bootstrap's tooltip.
|
|
24
|
-
svgElement.setAttribute("data-original-title", titleText)
|
|
25
|
-
svgTitleElement.remove()
|
|
22
|
+
svgElement.setAttribute("data-original-title", titleText)
|
|
23
|
+
svgTitleElement.remove()
|
|
26
24
|
}
|
|
27
25
|
}
|
|
28
26
|
},
|
|
29
|
-
true
|
|
30
|
-
)
|
|
27
|
+
true,
|
|
28
|
+
) // Use capture to ensure the event is caught as it bubbles up
|
|
31
29
|
|
|
32
30
|
document.body.addEventListener(
|
|
33
31
|
"mouseleave",
|
|
34
32
|
(event) => {
|
|
35
33
|
if (event.target.closest(".blacklight-icons.svg_tooltip svg")) {
|
|
36
|
-
const svgElement = event.target.closest(
|
|
37
|
-
|
|
38
|
-
);
|
|
39
|
-
const originalTitle = svgElement.getAttribute("data-original-title");
|
|
34
|
+
const svgElement = event.target.closest(".blacklight-icons.svg_tooltip svg")
|
|
35
|
+
const originalTitle = svgElement.getAttribute("data-original-title")
|
|
40
36
|
|
|
41
37
|
if (originalTitle !== undefined && originalTitle !== "") {
|
|
42
38
|
// Restore the SVG title element from data-original-title
|
|
43
|
-
const newTitleElement = document.createElement("title")
|
|
44
|
-
newTitleElement.textContent = originalTitle
|
|
45
|
-
svgElement.prepend(newTitleElement)
|
|
46
|
-
svgElement.setAttribute("data-original-title", "")
|
|
39
|
+
const newTitleElement = document.createElement("title")
|
|
40
|
+
newTitleElement.textContent = originalTitle
|
|
41
|
+
svgElement.prepend(newTitleElement)
|
|
42
|
+
svgElement.setAttribute("data-original-title", "")
|
|
47
43
|
}
|
|
48
44
|
}
|
|
49
45
|
|
|
50
46
|
// Remove tooltips
|
|
51
|
-
document.querySelectorAll(".tooltip").forEach((elem) => elem.remove())
|
|
47
|
+
document.querySelectorAll(".tooltip").forEach((elem) => elem.remove())
|
|
52
48
|
},
|
|
53
|
-
true
|
|
54
|
-
)
|
|
49
|
+
true,
|
|
50
|
+
) // Use capture to ensure the event is caught as it bubbles up
|
|
55
51
|
}
|
|
@@ -5,31 +5,31 @@
|
|
|
5
5
|
class Truncator {
|
|
6
6
|
constructor(element, { lines, id }) {
|
|
7
7
|
// if the element is already small enough, don't truncate it
|
|
8
|
-
const minHeight = lines * parseFloat(window.getComputedStyle(element).fontSize)
|
|
9
|
-
if (element.getBoundingClientRect().height
|
|
8
|
+
const minHeight = lines * parseFloat(window.getComputedStyle(element).fontSize)
|
|
9
|
+
if (element.getBoundingClientRect().height <= minHeight) return
|
|
10
10
|
|
|
11
11
|
// set a unique ID for the element if it doesn't have one
|
|
12
|
-
this.element = element
|
|
13
|
-
this.element.id ||= id
|
|
12
|
+
this.element = element
|
|
13
|
+
this.element.id ||= id
|
|
14
14
|
|
|
15
15
|
// add the button
|
|
16
|
-
this.button = document.createElement("button")
|
|
17
|
-
this.button.classList.add("btn", "btn-link", "p-0", "border-0")
|
|
18
|
-
this.button.dataset.bsToggle = "collapse"
|
|
19
|
-
this.button.dataset.bsTarget = `#${this.element.id}
|
|
20
|
-
this.button.setAttribute("aria-expanded", "false")
|
|
21
|
-
this.button.setAttribute("aria-controls", this.element.id)
|
|
22
|
-
this.button.textContent = "Read more"
|
|
23
|
-
this.button.addEventListener("click", this.toggle.bind(this))
|
|
24
|
-
element.parentNode.insertBefore(this.button, element.nextSibling)
|
|
16
|
+
this.button = document.createElement("button")
|
|
17
|
+
this.button.classList.add("btn", "btn-link", "p-0", "border-0")
|
|
18
|
+
this.button.dataset.bsToggle = "collapse"
|
|
19
|
+
this.button.dataset.bsTarget = `#${this.element.id}`
|
|
20
|
+
this.button.setAttribute("aria-expanded", "false")
|
|
21
|
+
this.button.setAttribute("aria-controls", this.element.id)
|
|
22
|
+
this.button.textContent = "Read more"
|
|
23
|
+
this.button.addEventListener("click", this.toggle.bind(this))
|
|
24
|
+
element.parentNode.insertBefore(this.button, element.nextSibling)
|
|
25
25
|
|
|
26
26
|
// start collapsed
|
|
27
|
-
this.element.classList.add("collapse")
|
|
27
|
+
this.element.classList.add("collapse")
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
toggle() {
|
|
31
|
-
if (this.button.textContent == "Read more") this.button.textContent = "Close"
|
|
32
|
-
else this.button.textContent = "Read more"
|
|
31
|
+
if (this.button.textContent == "Read more") this.button.textContent = "Close"
|
|
32
|
+
else this.button.textContent = "Read more"
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
35
|
|
|
@@ -40,6 +40,6 @@ export default function initializeTruncation() {
|
|
|
40
40
|
new Truncator(element, {
|
|
41
41
|
lines: 12,
|
|
42
42
|
id: `truncate-${i}`,
|
|
43
|
-
})
|
|
44
|
-
})
|
|
43
|
+
})
|
|
44
|
+
})
|
|
45
45
|
}
|
|
@@ -65,10 +65,9 @@ export default {
|
|
|
65
65
|
},
|
|
66
66
|
openstreetmapStandard: {
|
|
67
67
|
url: "https://tile.openstreetmap.org/{z}/{x}/{y}.png",
|
|
68
|
-
attribution:
|
|
69
|
-
'© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors',
|
|
68
|
+
attribution: '© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors',
|
|
70
69
|
maxZoom: 19,
|
|
71
70
|
worldCopyJump: true,
|
|
72
71
|
retina: "@2x",
|
|
73
72
|
},
|
|
74
|
-
}
|
|
73
|
+
}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import { LatLngBounds } from "leaflet"
|
|
1
|
+
import { LatLngBounds } from "leaflet"
|
|
2
2
|
|
|
3
3
|
export const DEFAULT_BOUNDS = new LatLngBounds([
|
|
4
4
|
[-30, -100],
|
|
5
5
|
[30, 100],
|
|
6
|
-
])
|
|
6
|
+
])
|
|
7
7
|
|
|
8
|
-
export const DEFAULT_OPACITY = 0.75
|
|
8
|
+
export const DEFAULT_OPACITY = 0.75
|
|
9
9
|
|
|
10
|
-
export const DEFAULT_BASEMAP = "positron"
|
|
10
|
+
export const DEFAULT_BASEMAP = "positron"
|
|
11
11
|
|
|
12
12
|
export const DEFAULT_GEOM_OVERLAY_OPTIONS = {
|
|
13
|
-
color:
|
|
13
|
+
color: "#3388ff",
|
|
14
14
|
dashArray: "5 5",
|
|
15
15
|
weight: 2,
|
|
16
16
|
opacity: 1,
|
|
17
|
-
fillOpacity: 0
|
|
18
|
-
}
|
|
17
|
+
fillOpacity: 0,
|
|
18
|
+
}
|
|
@@ -1,160 +1,166 @@
|
|
|
1
|
-
import { DomUtil, Control, Handler, setOptions } from "leaflet"
|
|
2
|
-
import { debounce, boundsToBbox } from "geoblacklight/leaflet/utils"
|
|
1
|
+
import { DomUtil, Control, Handler, setOptions } from "leaflet"
|
|
2
|
+
import { debounce, boundsToBbox } from "geoblacklight/leaflet/utils"
|
|
3
3
|
|
|
4
4
|
export const geosearchDefaultOptions = {
|
|
5
5
|
dynamic: true,
|
|
6
6
|
delay: 800,
|
|
7
|
-
}
|
|
7
|
+
}
|
|
8
8
|
|
|
9
9
|
export default class GeoSearchControl extends Control {
|
|
10
10
|
constructor(options) {
|
|
11
|
-
const _options = { ...geosearchDefaultOptions, ...options }
|
|
12
|
-
super(_options)
|
|
13
|
-
setOptions(this, _options)
|
|
11
|
+
const _options = { ...geosearchDefaultOptions, ...options }
|
|
12
|
+
super(_options)
|
|
13
|
+
setOptions(this, _options)
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
onAdd(map) {
|
|
17
|
-
this.map = map
|
|
18
|
-
this.map.options.geoSearchControl = this
|
|
17
|
+
this.map = map
|
|
18
|
+
this.map.options.geoSearchControl = this
|
|
19
19
|
|
|
20
20
|
// Create the buttons
|
|
21
|
-
this.staticButton = this.createStaticButton()
|
|
22
|
-
this.dynamicButton = this.createDynamicButton()
|
|
21
|
+
this.staticButton = this.createStaticButton()
|
|
22
|
+
this.dynamicButton = this.createDynamicButton()
|
|
23
23
|
|
|
24
24
|
// Add the buttons to the viewer
|
|
25
|
-
const container = DomUtil.create("div")
|
|
26
|
-
container.className = "leaflet-control search-control"
|
|
27
|
-
container.appendChild(this.staticButton)
|
|
28
|
-
container.appendChild(this.dynamicButton)
|
|
25
|
+
const container = DomUtil.create("div")
|
|
26
|
+
container.className = "leaflet-control search-control"
|
|
27
|
+
container.appendChild(this.staticButton)
|
|
28
|
+
container.appendChild(this.dynamicButton)
|
|
29
29
|
|
|
30
30
|
// Show the appropriate button
|
|
31
|
-
if (this.options.dynamic) this.dynamicButton.style.display = "block"
|
|
32
|
-
else this.staticButton.style.display = "block"
|
|
31
|
+
if (this.options.dynamic) this.dynamicButton.style.display = "block"
|
|
32
|
+
else this.staticButton.style.display = "block"
|
|
33
33
|
|
|
34
34
|
// Set up the dynamic search function with debounce
|
|
35
35
|
this.dynamicSearcher = debounce(() => {
|
|
36
36
|
if (this.options.dynamic) {
|
|
37
|
-
this.applySearch()
|
|
37
|
+
this.applySearch()
|
|
38
38
|
}
|
|
39
|
-
}, this.options.delay)
|
|
39
|
+
}, this.options.delay)
|
|
40
40
|
|
|
41
41
|
// Add the event handler
|
|
42
|
-
this.map.addHandler("geosearch", GeoSearchHandler)
|
|
42
|
+
this.map.addHandler("geosearch", GeoSearchHandler)
|
|
43
43
|
|
|
44
|
-
return container
|
|
44
|
+
return container
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
// Button to search when clicked; contains an icon
|
|
48
48
|
createStaticButton() {
|
|
49
|
-
const staticButtonNode = DomUtil.create("a")
|
|
50
|
-
staticButtonNode.setAttribute("id", "gbl-static-button")
|
|
51
|
-
staticButtonNode.setAttribute("href", "#")
|
|
52
|
-
staticButtonNode.setAttribute("style", "display:none;")
|
|
53
|
-
staticButtonNode.className = "btn btn-primary"
|
|
54
|
-
staticButtonNode.textContent = "Search here"
|
|
55
|
-
staticButtonNode.addEventListener("click", this.staticSearch.bind(this))
|
|
56
|
-
return staticButtonNode
|
|
49
|
+
const staticButtonNode = DomUtil.create("a")
|
|
50
|
+
staticButtonNode.setAttribute("id", "gbl-static-button")
|
|
51
|
+
staticButtonNode.setAttribute("href", "#")
|
|
52
|
+
staticButtonNode.setAttribute("style", "display:none;")
|
|
53
|
+
staticButtonNode.className = "btn btn-primary shadow"
|
|
54
|
+
staticButtonNode.textContent = "Search here"
|
|
55
|
+
staticButtonNode.addEventListener("click", this.staticSearch.bind(this))
|
|
56
|
+
return staticButtonNode
|
|
57
57
|
}
|
|
58
58
|
|
|
59
59
|
// Button to search when the map is moved; contains a checkbox
|
|
60
60
|
createDynamicButton() {
|
|
61
|
-
const dynamicButtonNode = DomUtil.create("label")
|
|
62
|
-
dynamicButtonNode.setAttribute("id", "gbl-dynamic-button")
|
|
63
|
-
dynamicButtonNode.
|
|
64
|
-
dynamicButtonNode.
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
input
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
)
|
|
73
|
-
|
|
61
|
+
const dynamicButtonNode = DomUtil.create("label")
|
|
62
|
+
dynamicButtonNode.setAttribute("id", "gbl-dynamic-button")
|
|
63
|
+
dynamicButtonNode.className = "btn shadow border form-check-label"
|
|
64
|
+
dynamicButtonNode.textContent = " Search when I move the map"
|
|
65
|
+
dynamicButtonNode.setAttribute("style", "display:none;")
|
|
66
|
+
dynamicButtonNode.setAttribute("for", "gbl-dynamic-search-toggle")
|
|
67
|
+
const input = DomUtil.create("input")
|
|
68
|
+
input.setAttribute("type", "checkbox")
|
|
69
|
+
input.setAttribute("id", "gbl-dynamic-search-toggle")
|
|
70
|
+
input.className = "form-check-input"
|
|
71
|
+
input.checked = true
|
|
72
|
+
dynamicButtonNode.insertBefore(input, dynamicButtonNode.firstChild)
|
|
73
|
+
dynamicButtonNode.addEventListener("input", this.toggleDynamicSearch.bind(this))
|
|
74
|
+
return dynamicButtonNode
|
|
74
75
|
}
|
|
75
76
|
|
|
76
77
|
// Hide the static button, show the dynamic button, and apply the search
|
|
77
78
|
staticSearch() {
|
|
78
|
-
this.staticButton.style.display = "none"
|
|
79
|
+
this.staticButton.style.display = "none"
|
|
79
80
|
if (this.options.dynamic) {
|
|
80
|
-
this.dynamicButton.style.display = "block"
|
|
81
|
+
this.dynamicButton.style.display = "block"
|
|
81
82
|
}
|
|
82
83
|
// Do full page reload for staticSearch button
|
|
83
|
-
this.applySearch({ turbo: false })
|
|
84
|
+
this.applySearch({ turbo: false })
|
|
84
85
|
}
|
|
85
86
|
|
|
86
87
|
// Update the URL with the current bounding box and go back to page 1
|
|
87
|
-
applySearch(opts={turbo: true}) {
|
|
88
|
+
applySearch(opts = { turbo: true }) {
|
|
88
89
|
// Delete any existing page and bbox parameters
|
|
89
|
-
const params = new URL(window.location).searchParams
|
|
90
|
-
params.delete("page")
|
|
91
|
-
params.delete("bbox")
|
|
90
|
+
const params = new URL(window.location).searchParams
|
|
91
|
+
params.delete("page")
|
|
92
|
+
params.delete("bbox")
|
|
92
93
|
|
|
93
94
|
// Calculate the bounding box from the current map bounds
|
|
94
|
-
const bbox = boundsToBbox(this._map.getBounds())
|
|
95
|
-
params.set("bbox", bbox.join(" "))
|
|
95
|
+
const bbox = boundsToBbox(this._map.getBounds())
|
|
96
|
+
params.set("bbox", bbox.join(" "))
|
|
96
97
|
|
|
97
98
|
// Make the new target URL using the configured base URL
|
|
98
99
|
const newUrl = new URL(this.options.baseUrl)
|
|
99
100
|
newUrl.search = params.toString()
|
|
100
101
|
|
|
101
102
|
// If Turbo Drive is active, do the new page navigation without a full page reload
|
|
102
|
-
if (
|
|
103
|
-
|
|
103
|
+
if (Turbo && opts.turbo) {
|
|
104
|
+
// prevent scroll to top on new page
|
|
105
|
+
document.addEventListener("turbo:before-render", (event) => {
|
|
106
|
+
Turbo.navigator.currentVisit.scrolled = true
|
|
107
|
+
})
|
|
108
|
+
Turbo.visit(newUrl)
|
|
109
|
+
}
|
|
104
110
|
// Otherwise fall back to the traditional full page reload
|
|
105
|
-
else window.location.href = newUrl
|
|
111
|
+
else window.location.href = newUrl
|
|
106
112
|
}
|
|
107
113
|
|
|
108
114
|
// Toggle the dynamic search option
|
|
109
115
|
toggleDynamicSearch() {
|
|
110
|
-
this.options.dynamic = !this.options.dynamic
|
|
116
|
+
this.options.dynamic = !this.options.dynamic
|
|
111
117
|
}
|
|
112
118
|
|
|
113
119
|
// Hide the dynamic button and show the static button
|
|
114
120
|
hideDynamicButton() {
|
|
115
|
-
this.dynamicButton.style.display = "none"
|
|
116
|
-
this.staticButton.style.display = "block"
|
|
121
|
+
this.dynamicButton.style.display = "none"
|
|
122
|
+
this.staticButton.style.display = "block"
|
|
117
123
|
}
|
|
118
124
|
}
|
|
119
125
|
|
|
120
126
|
class GeoSearchHandler extends Handler {
|
|
121
127
|
constructor(map) {
|
|
122
|
-
super(map)
|
|
123
|
-
this.map = map
|
|
124
|
-
this.control = map.options.geoSearchControl
|
|
125
|
-
this.wasResized = false
|
|
128
|
+
super(map)
|
|
129
|
+
this.map = map
|
|
130
|
+
this.control = map.options.geoSearchControl
|
|
131
|
+
this.wasResized = false
|
|
126
132
|
}
|
|
127
133
|
|
|
128
134
|
// Bind event handlers to the map
|
|
129
135
|
addHooks() {
|
|
130
|
-
this.map.on("resize", this.handleResize.bind(this))
|
|
131
|
-
this.map.on("dragend", this.handleDragEnd.bind(this))
|
|
132
|
-
this.map.on("dragstart", this.handleDragStart.bind(this))
|
|
133
|
-
this.map.on("zoomstart", this.handleDragEnd.bind(this))
|
|
134
|
-
this.map.on("zoomend", this.handleDragStart.bind(this))
|
|
136
|
+
this.map.on("resize", this.handleResize.bind(this))
|
|
137
|
+
this.map.on("dragend", this.handleDragEnd.bind(this))
|
|
138
|
+
this.map.on("dragstart", this.handleDragStart.bind(this))
|
|
139
|
+
this.map.on("zoomstart", this.handleDragEnd.bind(this))
|
|
140
|
+
this.map.on("zoomend", this.handleDragStart.bind(this))
|
|
135
141
|
}
|
|
136
142
|
|
|
137
143
|
// Remove event handlers from the map
|
|
138
144
|
removeHooks() {
|
|
139
|
-
this.map.off("resize")
|
|
140
|
-
this.map.off("dragend")
|
|
141
|
-
this.map.off("dragstart")
|
|
142
|
-
this.map.off("zoomend")
|
|
143
|
-
this.map.off("zoomstart")
|
|
145
|
+
this.map.off("resize")
|
|
146
|
+
this.map.off("dragend")
|
|
147
|
+
this.map.off("dragstart")
|
|
148
|
+
this.map.off("zoomend")
|
|
149
|
+
this.map.off("zoomstart")
|
|
144
150
|
}
|
|
145
151
|
|
|
146
152
|
handleResize() {
|
|
147
|
-
this.wasResized = true
|
|
153
|
+
this.wasResized = true
|
|
148
154
|
}
|
|
149
155
|
|
|
150
156
|
handleDragEnd() {
|
|
151
|
-
if (this.wasResized) this.wasResized = false
|
|
152
|
-
else this.control.dynamicSearcher.apply(this.control)
|
|
157
|
+
if (this.wasResized) this.wasResized = false
|
|
158
|
+
else this.control.dynamicSearcher.apply(this.control)
|
|
153
159
|
}
|
|
154
160
|
|
|
155
161
|
handleDragStart() {
|
|
156
162
|
if (!this.control.options.dynamic) {
|
|
157
|
-
this.control.hideDynamicButton()
|
|
163
|
+
this.control.hideDynamicButton()
|
|
158
164
|
}
|
|
159
165
|
}
|
|
160
166
|
}
|