blacklight-gallery 4.6.0 → 4.6.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/ruby.yml +8 -0
- data/app/components/blacklight/gallery/openseadragon_embed_component.html.erb +9 -9
- data/app/components/blacklight/gallery/openseadragon_embed_component.rb +8 -8
- data/app/components/blacklight/gallery/slideshow_preview_component.rb +4 -3
- data/lib/blacklight/gallery/version.rb +1 -1
- data/spec/components/blacklight/gallery/openseadragon_embed_component_spec.rb +58 -0
- data/spec/components/blacklight/gallery/slideshow_preview_component_spec.rb +8 -0
- data/spec/spec_helper.rb +6 -0
- data/spec/test_app_templates/Gemfile.extra +4 -0
- data/spec/view_component_v2_test_helpers.rb +20 -0
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8b75282f6589ca914165117342f3f5122f114ec3fcb399dfc5ae660eaeb678ea
|
4
|
+
data.tar.gz: 7f63ed97b52f21db2a92688e8d9e20ad17997c74a98cdacfd0e488c7d675c6ae
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5122d73ef112b00f340999c31faa6cb572c1ea83dc639164475be9f91596ad64c995cc0acfb9226145c343cf191b4f9f401af5a9912eda82cbdad507a69d24f6
|
7
|
+
data.tar.gz: f83b3438b30ce60a936a5ca98694dc2a50c01d41cf37b8fdc0a8de628f171d0396d5d8de952a65936cff015cafedf482e9ccf963e51df1b958bede7c9e0c4b5e
|
data/.github/workflows/ruby.yml
CHANGED
@@ -19,6 +19,7 @@ jobs:
|
|
19
19
|
experimental: [false]
|
20
20
|
additional_engine_cart_rails_options: [""]
|
21
21
|
additional_name: [""]
|
22
|
+
view_component_version: ["~> 3.12"]
|
22
23
|
include:
|
23
24
|
- ruby: "3.1"
|
24
25
|
rails_version: 6.1.7
|
@@ -35,6 +36,12 @@ jobs:
|
|
35
36
|
blacklight_version: "github"
|
36
37
|
experimental: true
|
37
38
|
additional_name: Blacklight main branch
|
39
|
+
- ruby: "3.2"
|
40
|
+
rails_version: "7.0.4"
|
41
|
+
blacklight_version: "~> 7.0"
|
42
|
+
experimental: false
|
43
|
+
view_component_version: "~> 2.83"
|
44
|
+
additional_name: "/ ViewComponent 2"
|
38
45
|
- ruby: "3.2"
|
39
46
|
rails_version: "7.0.4"
|
40
47
|
blacklight_version: "github"
|
@@ -44,6 +51,7 @@ jobs:
|
|
44
51
|
env:
|
45
52
|
RAILS_VERSION: ${{ matrix.rails_version }}
|
46
53
|
BLACKLIGHT_VERSION: ${{ matrix.blacklight_version }}
|
54
|
+
VIEW_COMPONENT_VERSION: ${{ matrix.view_component_version }}
|
47
55
|
ENGINE_CART_RAILS_OPTIONS: "--skip-git --skip-listen --skip-spring --skip-keeps --skip-action-cable --skip-coffee --skip-test ${{ matrix.additional_engine_cart_rails_options }}"
|
48
56
|
steps:
|
49
57
|
- uses: actions/checkout@v4
|
@@ -2,18 +2,18 @@
|
|
2
2
|
<div class="osd-toolbar row">
|
3
3
|
<div class="col-md-6 pagination">
|
4
4
|
<% if count > 1 %>
|
5
|
-
<%
|
6
|
-
|
7
|
-
|
8
|
-
|
5
|
+
<% multi_page_osd_config = osd_config_referencestrip.merge(osd_config) %>
|
6
|
+
<a id="<%= @id_prefix %>-previous"><%= render Blacklight::Gallery::Icons::ChevronLeftComponent.new %></a>
|
7
|
+
<span id="<%= @id_prefix %>-page">1</span> of <%= count %>
|
8
|
+
<a id="<%= @id_prefix %>-next"><%= render Blacklight::Gallery::Icons::ChevronRightComponent.new %></a>
|
9
9
|
<% end %>
|
10
10
|
</div>
|
11
11
|
<div class="col-md-6 controls">
|
12
|
-
<a id="<%= id_prefix %>-zoom-in"><%= render Blacklight::Gallery::Icons::AddCircleComponent.new %></a>
|
13
|
-
<a id="<%= id_prefix %>-zoom-out"><%= render Blacklight::Gallery::Icons::RemoveCircleComponent.new %></a>
|
14
|
-
<a id="<%= id_prefix %>-home"><%= render Blacklight::Gallery::Icons::ResizeSmallComponent.new %></a>
|
15
|
-
<a id="<%= id_prefix %>-full-page"><%= render Blacklight::Gallery::Icons::CustomFullscreenComponent.new %></a>
|
12
|
+
<a id="<%= @id_prefix %>-zoom-in"><%= render Blacklight::Gallery::Icons::AddCircleComponent.new %></a>
|
13
|
+
<a id="<%= @id_prefix %>-zoom-out"><%= render Blacklight::Gallery::Icons::RemoveCircleComponent.new %></a>
|
14
|
+
<a id="<%= @id_prefix %>-home"><%= render Blacklight::Gallery::Icons::ResizeSmallComponent.new %></a>
|
15
|
+
<a id="<%= @id_prefix %>-full-page"><%= render Blacklight::Gallery::Icons::CustomFullscreenComponent.new %></a>
|
16
16
|
</div>
|
17
17
|
</div>
|
18
|
-
<%= helpers.openseadragon_picture_tag image, class: 'osd-image row', data: { openseadragon: osd_config } %>
|
18
|
+
<%= helpers.openseadragon_picture_tag image, class: 'osd-image row', data: { openseadragon: multi_page_osd_config ? multi_page_osd_config : osd_config } %>
|
19
19
|
</div>
|
@@ -12,6 +12,7 @@ module Blacklight
|
|
12
12
|
@presenter = presenter
|
13
13
|
@view_config = view_config
|
14
14
|
@classes = classes
|
15
|
+
@id_prefix = id_prefix
|
15
16
|
end
|
16
17
|
|
17
18
|
def image
|
@@ -33,21 +34,20 @@ module Blacklight
|
|
33
34
|
def osd_config
|
34
35
|
{
|
35
36
|
crossOriginPolicy: false,
|
36
|
-
zoomInButton: "#{id_prefix}-zoom-in",
|
37
|
-
zoomOutButton: "#{id_prefix}-zoom-out",
|
38
|
-
homeButton: "#{id_prefix}-home",
|
39
|
-
fullPageButton: "#{id_prefix}-full-page",
|
40
|
-
nextButton: "#{id_prefix}-next",
|
41
|
-
previousButton: "#{id_prefix}-previous"
|
37
|
+
zoomInButton: "#{@id_prefix}-zoom-in",
|
38
|
+
zoomOutButton: "#{@id_prefix}-zoom-out",
|
39
|
+
homeButton: "#{@id_prefix}-home",
|
40
|
+
fullPageButton: "#{@id_prefix}-full-page",
|
41
|
+
nextButton: "#{@id_prefix}-next",
|
42
|
+
previousButton: "#{@id_prefix}-previous"
|
42
43
|
}
|
43
44
|
end
|
44
45
|
|
45
46
|
def osd_config_referencestrip
|
46
47
|
{
|
47
48
|
showReferenceStrip: true,
|
48
|
-
|
49
|
+
sequenceMode: true,
|
49
50
|
referenceStripScroll: 'vertical',
|
50
|
-
referenceStripWidth: 100,
|
51
51
|
referenceStripBackgroundColor: 'transparent'
|
52
52
|
}
|
53
53
|
end
|
@@ -7,7 +7,8 @@ module Blacklight
|
|
7
7
|
|
8
8
|
def initialize(document:, document_counter: nil, **args)
|
9
9
|
super(document: document, document_counter: document_counter, **args)
|
10
|
-
|
10
|
+
|
11
|
+
@slide_to = @counter - 1
|
11
12
|
end
|
12
13
|
|
13
14
|
def before_render
|
@@ -45,8 +46,8 @@ module Blacklight
|
|
45
46
|
{
|
46
47
|
'context-href': nil,
|
47
48
|
context_href: nil,
|
48
|
-
'slide-to': @
|
49
|
-
'bs-slide-to': @
|
49
|
+
'slide-to': @slide_to,
|
50
|
+
'bs-slide-to': @slide_to,
|
50
51
|
toggle: "modal",
|
51
52
|
'bs-toggle': "modal",
|
52
53
|
target: "#slideshow-modal",
|
@@ -0,0 +1,58 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
RSpec.describe Blacklight::Gallery::OpenseadragonEmbedComponent, type: :component do
|
6
|
+
subject(:component) do
|
7
|
+
described_class.new(
|
8
|
+
document: document,
|
9
|
+
presenter: presenter,
|
10
|
+
**attr
|
11
|
+
)
|
12
|
+
end
|
13
|
+
|
14
|
+
let(:attr) { {} }
|
15
|
+
let(:view_context) { vc_test_controller.view_context }
|
16
|
+
let(:render) do
|
17
|
+
component.render_in(view_context)
|
18
|
+
end
|
19
|
+
|
20
|
+
let(:rendered) do
|
21
|
+
Capybara::Node::Simple.new(render)
|
22
|
+
end
|
23
|
+
|
24
|
+
let(:document) do
|
25
|
+
SolrDocument.new(
|
26
|
+
id: 'x'
|
27
|
+
)
|
28
|
+
end
|
29
|
+
|
30
|
+
let(:presenter) { Blacklight::IndexPresenter.new(document, view_context, blacklight_config) }
|
31
|
+
|
32
|
+
before do
|
33
|
+
allow(view_context).to receive(:current_search_session).and_return(nil)
|
34
|
+
allow(view_context).to receive(:search_session).and_return({})
|
35
|
+
allow(view_context).to receive(:blacklight_config).and_return(blacklight_config)
|
36
|
+
end
|
37
|
+
|
38
|
+
describe 'openseadragon viewer' do
|
39
|
+
let(:blacklight_config) do
|
40
|
+
Blacklight::Configuration.new.tap do |config|
|
41
|
+
config.index.slideshow_method = :xyz
|
42
|
+
if Blacklight::VERSION > '8'
|
43
|
+
config.track_search_session.storage = false
|
44
|
+
else
|
45
|
+
config.track_search_session = false
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
it 'uses a single @id_prefix to generate unique control ids' do
|
50
|
+
expect(component.osd_config[:zoomInButton]).to include(component.instance_variable_get(:@id_prefix))
|
51
|
+
expect(component.osd_config[:zoomOutButton]).to include(component.instance_variable_get(:@id_prefix))
|
52
|
+
expect(component.osd_config[:homeButton]).to include(component.instance_variable_get(:@id_prefix))
|
53
|
+
expect(component.osd_config[:fullPageButton]).to include(component.instance_variable_get(:@id_prefix))
|
54
|
+
expect(component.osd_config[:nextButton]).to include(component.instance_variable_get(:@id_prefix))
|
55
|
+
expect(component.osd_config[:previousButton]).to include(component.instance_variable_get(:@id_prefix))
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
@@ -51,6 +51,14 @@ RSpec.describe Blacklight::Gallery::SlideshowPreviewComponent, type: :component
|
|
51
51
|
expect(rendered).to have_selector '.thumbnail img[@src="http://example.com/image.jpg"]'
|
52
52
|
end
|
53
53
|
|
54
|
+
it 'renders the correct slide number' do
|
55
|
+
if VIEW_COMPONENT_VERSION < 3
|
56
|
+
expect(rendered).to have_css '[data-slide-to=\"4\"][data-bs-slide-to=\"4\"]'
|
57
|
+
else
|
58
|
+
expect(rendered).to have_css '[data-slide-to=\"5\"][data-bs-slide-to=\"5\"]'
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
54
62
|
context 'when the presenter returns nothing' do
|
55
63
|
let(:document) { SolrDocument.new(id: 'abc') }
|
56
64
|
|
data/spec/spec_helper.rb
CHANGED
@@ -7,6 +7,7 @@ require 'rspec/collection_matchers'
|
|
7
7
|
require 'rspec/its'
|
8
8
|
require 'rspec/rails'
|
9
9
|
require 'rspec/active_model/mocks'
|
10
|
+
require 'view_component_v2_test_helpers'
|
10
11
|
|
11
12
|
require 'selenium-webdriver'
|
12
13
|
|
@@ -19,4 +20,9 @@ require 'blacklight/gallery'
|
|
19
20
|
RSpec.configure do |c|
|
20
21
|
c.infer_spec_type_from_file_location!
|
21
22
|
c.include ViewComponent::TestHelpers, type: :component
|
23
|
+
view_component_version = Gem.loaded_specs['view_component'].version
|
24
|
+
VIEW_COMPONENT_VERSION = view_component_version.segments.first
|
25
|
+
if VIEW_COMPONENT_VERSION < 3
|
26
|
+
c.include ViewComponentV2TestHelpers, type: :component
|
27
|
+
end
|
22
28
|
end
|
@@ -3,3 +3,7 @@ if ENV['BLACKLIGHT_VERSION'] == 'github'
|
|
3
3
|
elsif ENV['BLACKLIGHT_VERSION'] && !ENV['BLACKLIGHT_VERSION'].empty?
|
4
4
|
gem 'blacklight', ENV['BLACKLIGHT_VERSION']
|
5
5
|
end
|
6
|
+
|
7
|
+
unless ENV['VIEW_COMPONENT_VERSION'].to_s == ""
|
8
|
+
gem 'view_component', ENV.fetch('VIEW_COMPONENT_VERSION')
|
9
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module ViewComponentV2TestHelpers
|
2
|
+
def vc_test_controller
|
3
|
+
@vc_test_controller ||= __vc_test_helpers_build_controller(ViewComponent::Base.test_controller.constantize)
|
4
|
+
end
|
5
|
+
|
6
|
+
def __vc_test_helpers_build_controller(klass)
|
7
|
+
klass.new.tap { |c| c.request = vc_test_request }.extend(Rails.application.routes.url_helpers)
|
8
|
+
end
|
9
|
+
|
10
|
+
def vc_test_request
|
11
|
+
require "action_controller/test_case"
|
12
|
+
|
13
|
+
@vc_test_request ||=
|
14
|
+
begin
|
15
|
+
out = ActionDispatch::TestRequest.create
|
16
|
+
out.session = ActionController::TestSession.new
|
17
|
+
out
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: blacklight-gallery
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.6.
|
4
|
+
version: 4.6.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Beer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-10-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -288,6 +288,7 @@ files:
|
|
288
288
|
- solr/conf/xslt/example_rss.xsl
|
289
289
|
- solr/conf/xslt/luke.xsl
|
290
290
|
- spec/components/blacklight/gallery/document_component_spec.rb
|
291
|
+
- spec/components/blacklight/gallery/openseadragon_embed_component_spec.rb
|
291
292
|
- spec/components/blacklight/gallery/slideshow_component_spec.rb
|
292
293
|
- spec/components/blacklight/gallery/slideshow_preview_component_spec.rb
|
293
294
|
- spec/features/gallery_spec.rb
|
@@ -298,6 +299,7 @@ files:
|
|
298
299
|
- spec/spec_helper.rb
|
299
300
|
- spec/test_app_templates/Gemfile.extra
|
300
301
|
- spec/test_app_templates/lib/generators/test_app_generator.rb
|
302
|
+
- spec/view_component_v2_test_helpers.rb
|
301
303
|
- spec/views/catalog/_document_slideshow.html.erb_spec.rb
|
302
304
|
- spec/views/catalog/_openseadragon_default.html.erb_spec.rb
|
303
305
|
- vendor/assets/javascripts/imagesloaded.min.js
|
@@ -327,6 +329,7 @@ specification_version: 4
|
|
327
329
|
summary: Gallery display for Blacklight
|
328
330
|
test_files:
|
329
331
|
- spec/components/blacklight/gallery/document_component_spec.rb
|
332
|
+
- spec/components/blacklight/gallery/openseadragon_embed_component_spec.rb
|
330
333
|
- spec/components/blacklight/gallery/slideshow_component_spec.rb
|
331
334
|
- spec/components/blacklight/gallery/slideshow_preview_component_spec.rb
|
332
335
|
- spec/features/gallery_spec.rb
|
@@ -337,5 +340,6 @@ test_files:
|
|
337
340
|
- spec/spec_helper.rb
|
338
341
|
- spec/test_app_templates/Gemfile.extra
|
339
342
|
- spec/test_app_templates/lib/generators/test_app_generator.rb
|
343
|
+
- spec/view_component_v2_test_helpers.rb
|
340
344
|
- spec/views/catalog/_document_slideshow.html.erb_spec.rb
|
341
345
|
- spec/views/catalog/_openseadragon_default.html.erb_spec.rb
|