blacklight-gallery 3.3.0 → 3.5.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.
- checksums.yaml +4 -4
- data/.github/workflows/ruby.yml +1 -1
- data/README.md +1 -1
- data/app/assets/images/blacklight/slideshow.svg +4 -1
- data/app/assets/stylesheets/blacklight_gallery/_gallery.scss +5 -0
- data/app/assets/stylesheets/blacklight_gallery/_slideshow.scss +19 -4
- data/app/components/blacklight/gallery/slideshow_component.html.erb +1 -1
- data/app/components/blacklight/gallery/slideshow_component.rb +4 -4
- data/app/components/blacklight/gallery/slideshow_preview_component.rb +15 -2
- data/blacklight-gallery.gemspec +0 -1
- data/lib/blacklight/gallery/version.rb +1 -1
- data/spec/components/blacklight/gallery/slideshow_component_spec.rb +34 -11
- data/spec/components/blacklight/gallery/slideshow_preview_component_spec.rb +52 -0
- metadata +5 -17
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: c6cef93b47ca74eb2e2cf9083baafce7e28948cc568b1146dd30f98a842720f6
|
|
4
|
+
data.tar.gz: 890631e78d834ac011666bb1b652ef97f9948b12352a4085c421b4e6f7aec6f7
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 79942d8ad4a805a6020fc30e96e26fc392ea38b51dbab5868379a2744fd6ee798fd1b75f9c71f744678456deb165e3510e31820ff24f5c2eb7e21c9343be3c7f
|
|
7
|
+
data.tar.gz: 136ddeb750ddafe01d690265d734e9a183ffefebd896a024e893ae4fd8ab41762c5558fc72a4a88a7198358be9bc5594c69fc3de84304e7f1d2677148ecc64d0
|
data/.github/workflows/ruby.yml
CHANGED
data/README.md
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# Blacklight::Gallery
|
|
2
|
-
[](http://badge.fury.io/rb/blacklight-gallery)
|
|
2
|
+
[](http://badge.fury.io/rb/blacklight-gallery) [](https://github.com/projectblacklight/blacklight-gallery/actions/workflows/ruby.yml)
|
|
3
3
|
|
|
4
4
|
Gallery views for Blacklight search results
|
|
5
5
|
|
|
@@ -1 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 25 24">
|
|
3
|
+
<path d="m1 9v6h-1v-6zm6-3h12v13h-13v-13zm11 1h-11v11h11zm-13 0v11h-1v-11zm-2 1v9h-1v-9zm18-1v11h-1v-11zm2 1v8h-1v-8zm2 1v5h-1v-5z"/>
|
|
4
|
+
</svg>
|
|
@@ -12,8 +12,10 @@ $gray-dark: #343a40 !default;
|
|
|
12
12
|
|
|
13
13
|
.modal-header {
|
|
14
14
|
border-bottom: none;
|
|
15
|
+
padding: 0.5rem 1rem;
|
|
15
16
|
|
|
16
17
|
.close {
|
|
18
|
+
font-size: 2.5rem;
|
|
17
19
|
color: white;
|
|
18
20
|
}
|
|
19
21
|
}
|
|
@@ -57,11 +59,16 @@ $gray-dark: #343a40 !default;
|
|
|
57
59
|
|
|
58
60
|
.carousel-control {
|
|
59
61
|
position: absolute;
|
|
60
|
-
top:
|
|
62
|
+
top: 0;
|
|
61
63
|
height: 100%;
|
|
62
64
|
width: 50px;
|
|
65
|
+
|
|
63
66
|
.blacklight-icons {
|
|
67
|
+
display: block;
|
|
68
|
+
position: absolute;
|
|
64
69
|
width: 3rem;
|
|
70
|
+
top: calc(50% - 3rem);
|
|
71
|
+
|
|
65
72
|
svg {
|
|
66
73
|
height: 3rem;
|
|
67
74
|
width: 3rem;
|
|
@@ -77,18 +84,24 @@ $gray-dark: #343a40 !default;
|
|
|
77
84
|
}
|
|
78
85
|
|
|
79
86
|
.caption {
|
|
80
|
-
font-size:
|
|
81
|
-
color: $gray-light;
|
|
87
|
+
font-size: 1rem;
|
|
82
88
|
margin: 10px auto;
|
|
83
89
|
min-width: 200px;
|
|
84
90
|
max-width: 50%;
|
|
91
|
+
a {
|
|
92
|
+
color: $gray-light;
|
|
93
|
+
text-decoration: underline;
|
|
94
|
+
&:hover, &:focus {
|
|
95
|
+
color: #ffffff;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
85
98
|
}
|
|
86
99
|
|
|
87
100
|
.counter {
|
|
88
101
|
border-radius: 12px;
|
|
89
102
|
border: 1px solid $gray-light;
|
|
90
103
|
color: $gray-light;
|
|
91
|
-
font-size:
|
|
104
|
+
font-size: 1rem;
|
|
92
105
|
overflow: auto;
|
|
93
106
|
padding: 4px 10px;
|
|
94
107
|
text-align: center;
|
|
@@ -97,6 +110,8 @@ $gray-dark: #343a40 !default;
|
|
|
97
110
|
.controls {
|
|
98
111
|
svg {
|
|
99
112
|
fill: $gray-light;
|
|
113
|
+
width: 32px;
|
|
114
|
+
height: 32px;
|
|
100
115
|
}
|
|
101
116
|
}
|
|
102
117
|
}
|
|
@@ -20,11 +20,11 @@ module Blacklight
|
|
|
20
20
|
method_name = view_config.slideshow_method
|
|
21
21
|
@view_context.send(method_name, @document, image_options)
|
|
22
22
|
elsif view_config.slideshow_field
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
return if slideshow_image_url.blank?
|
|
24
|
+
image = image_tag slideshow_image_url, image_options
|
|
25
|
+
helpers.link_to_document(@document, image)
|
|
26
26
|
elsif presenter.thumbnail.exists?
|
|
27
|
-
presenter.thumbnail.thumbnail_tag(image_options
|
|
27
|
+
presenter.thumbnail.thumbnail_tag(image_options)
|
|
28
28
|
end
|
|
29
29
|
end
|
|
30
30
|
|
|
@@ -11,11 +11,24 @@ module Blacklight
|
|
|
11
11
|
end
|
|
12
12
|
|
|
13
13
|
def before_render
|
|
14
|
-
|
|
15
|
-
thumbnail(content_tag(:div, t('.missing_image', scope: [:blacklight_gallery]), class: 'thumbnail thumbnail-placeholder')) if thumbnail.blank?
|
|
14
|
+
populate_thumbnail_slot if thumbnail.blank?
|
|
16
15
|
super
|
|
17
16
|
end
|
|
18
17
|
|
|
18
|
+
# populate the thumbnail slot with a value if one wasn't explicitly provided
|
|
19
|
+
def populate_thumbnail_slot
|
|
20
|
+
thumbnail_content = presenter.thumbnail.render({ alt: presenter.heading }) if presenter.thumbnail.exists?
|
|
21
|
+
unless thumbnail_content.present?
|
|
22
|
+
thumbnail_content = content_tag(
|
|
23
|
+
:div,
|
|
24
|
+
t(:missing_image, scope: %i[blacklight_gallery catalog grid_slideshow]),
|
|
25
|
+
class: 'thumbnail thumbnail-placeholder'
|
|
26
|
+
)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
thumbnail(thumbnail_content)
|
|
30
|
+
end
|
|
31
|
+
|
|
19
32
|
def presenter
|
|
20
33
|
@presenter ||= @view_context.document_presenter(@document)
|
|
21
34
|
end
|
data/blacklight-gallery.gemspec
CHANGED
|
@@ -19,7 +19,6 @@ Gem::Specification.new do |spec|
|
|
|
19
19
|
|
|
20
20
|
spec.add_dependency "rails", '>= 5.1', '< 7'
|
|
21
21
|
spec.add_dependency 'blacklight', '~> 7.17'
|
|
22
|
-
spec.add_dependency "bootstrap", "~> 4.0"
|
|
23
22
|
|
|
24
23
|
spec.add_development_dependency "rake"
|
|
25
24
|
spec.add_development_dependency 'sqlite3'
|
|
@@ -15,20 +15,30 @@ RSpec.describe Blacklight::Gallery::SlideshowComponent, type: :component do
|
|
|
15
15
|
Capybara::Node::Simple.new(render)
|
|
16
16
|
end
|
|
17
17
|
|
|
18
|
-
let(:
|
|
18
|
+
let(:document) do
|
|
19
|
+
SolrDocument.new(
|
|
20
|
+
id: 'x',
|
|
21
|
+
)
|
|
22
|
+
end
|
|
23
|
+
|
|
19
24
|
let(:presenter) { Blacklight::IndexPresenter.new(document, view_context, blacklight_config) }
|
|
20
25
|
|
|
21
26
|
before do
|
|
27
|
+
allow(view_context).to receive(:current_search_session).and_return(nil)
|
|
28
|
+
allow(view_context).to receive(:search_session).and_return({})
|
|
22
29
|
allow(view_context).to receive(:blacklight_config).and_return(blacklight_config)
|
|
23
30
|
end
|
|
24
31
|
|
|
25
32
|
describe '#slideshow_tag' do
|
|
26
33
|
subject { rendered }
|
|
27
34
|
|
|
28
|
-
let(:document) { SolrDocument.new({}) }
|
|
29
|
-
|
|
30
35
|
context 'with a slideshow method' do
|
|
31
|
-
let(:blacklight_config)
|
|
36
|
+
let(:blacklight_config) do
|
|
37
|
+
Blacklight::Configuration.new.tap do |config|
|
|
38
|
+
config.index.slideshow_method = :xyz
|
|
39
|
+
config.track_search_session = false
|
|
40
|
+
end
|
|
41
|
+
end
|
|
32
42
|
|
|
33
43
|
it 'calls the provided slideshow method' do
|
|
34
44
|
expect(view_context).to receive_messages(xyz: 'some-slideshow')
|
|
@@ -41,26 +51,39 @@ RSpec.describe Blacklight::Gallery::SlideshowComponent, type: :component do
|
|
|
41
51
|
end
|
|
42
52
|
end
|
|
43
53
|
|
|
44
|
-
context 'with a field' do
|
|
45
|
-
let(:blacklight_config)
|
|
46
|
-
|
|
54
|
+
context 'with a slideshow field' do
|
|
55
|
+
let(:blacklight_config) do
|
|
56
|
+
Blacklight::Configuration.new.tap do |config|
|
|
57
|
+
config.index.slideshow_field = :xyz
|
|
58
|
+
config.track_search_session = false
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
let(:document) { SolrDocument.new({ xyz: 'http://example.com/some.jpg', id: 'x' }) }
|
|
47
62
|
|
|
48
63
|
it { is_expected.to have_selector 'img[src="http://example.com/some.jpg"]' }
|
|
49
64
|
|
|
50
65
|
context 'without data in the field' do
|
|
51
|
-
let(:document) { SolrDocument.new({}) }
|
|
66
|
+
let(:document) { SolrDocument.new({id: 'x'}) }
|
|
52
67
|
|
|
53
68
|
it { is_expected.not_to have_selector 'img' }
|
|
54
69
|
end
|
|
55
70
|
end
|
|
56
71
|
|
|
57
|
-
context 'with
|
|
72
|
+
context 'with no view_config' do
|
|
73
|
+
let(:blacklight_config) { Blacklight::Configuration.new.tap { |config|
|
|
74
|
+
config.track_search_session = false
|
|
75
|
+
} }
|
|
58
76
|
it { is_expected.not_to have_selector 'img' }
|
|
59
77
|
end
|
|
60
78
|
|
|
61
79
|
context 'falling back to a thumbnail' do
|
|
62
|
-
let(:blacklight_config)
|
|
63
|
-
|
|
80
|
+
let(:blacklight_config) do
|
|
81
|
+
Blacklight::Configuration.new.tap do |config|
|
|
82
|
+
config.index.thumbnail_field = :xyz
|
|
83
|
+
config.track_search_session = false
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
let(:document) { SolrDocument.new({ xyz: 'http://example.com/thumb.jpg', id: 'x' }) }
|
|
64
87
|
|
|
65
88
|
it { is_expected.to have_selector 'img[src="http://example.com/thumb.jpg"]' }
|
|
66
89
|
end
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'spec_helper'
|
|
4
|
+
|
|
5
|
+
RSpec.describe Blacklight::Gallery::SlideshowPreviewComponent, type: :component do
|
|
6
|
+
subject(:component) { described_class.new(document: document, document_counter: 5, presenter: presenter, **attr) }
|
|
7
|
+
|
|
8
|
+
let(:attr) { {} }
|
|
9
|
+
let(:view_context) { controller.view_context }
|
|
10
|
+
let(:render) do
|
|
11
|
+
component.render_in(view_context)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
let(:rendered) do
|
|
15
|
+
Capybara::Node::Simple.new(render)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
let(:blacklight_config) { Blacklight::Configuration.new }
|
|
19
|
+
let(:presenter) { Blacklight::IndexPresenter.new(document, view_context, blacklight_config) }
|
|
20
|
+
|
|
21
|
+
before do
|
|
22
|
+
allow(view_context).to receive(:blacklight_config).and_return(blacklight_config)
|
|
23
|
+
allow(view_context).to receive(:current_search_session).and_return(nil)
|
|
24
|
+
allow(view_context).to receive(:search_session).and_return({})
|
|
25
|
+
|
|
26
|
+
# dumb hack to get our stubbing into the thumbnail component
|
|
27
|
+
allow(controller).to receive(:view_context).and_return(view_context)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
let(:blacklight_config) do
|
|
31
|
+
Blacklight::Configuration.new.tap do |config|
|
|
32
|
+
config.index.thumbnail_field = 'thumbnail_path_ss'
|
|
33
|
+
config.track_search_session = false
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
describe 'default thumbnail' do
|
|
38
|
+
let(:document) { SolrDocument.new(id: 'abc', thumbnail_path_ss: 'http://example.com/image.jpg') }
|
|
39
|
+
|
|
40
|
+
it 'renders the thumbnail' do
|
|
41
|
+
puts render
|
|
42
|
+
expect(rendered).to have_selector '.thumbnail img[@src="http://example.com/image.jpg"]'
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
context 'when the presenter returns nothing' do
|
|
46
|
+
let(:document) { SolrDocument.new(id: 'abc') }
|
|
47
|
+
|
|
48
|
+
subject { rendered }
|
|
49
|
+
it { is_expected.to have_selector '.thumbnail-placeholder', text: 'Missing' }
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
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: 3.
|
|
4
|
+
version: 3.5.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Chris Beer
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2022-02-22 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rails
|
|
@@ -44,20 +44,6 @@ dependencies:
|
|
|
44
44
|
- - "~>"
|
|
45
45
|
- !ruby/object:Gem::Version
|
|
46
46
|
version: '7.17'
|
|
47
|
-
- !ruby/object:Gem::Dependency
|
|
48
|
-
name: bootstrap
|
|
49
|
-
requirement: !ruby/object:Gem::Requirement
|
|
50
|
-
requirements:
|
|
51
|
-
- - "~>"
|
|
52
|
-
- !ruby/object:Gem::Version
|
|
53
|
-
version: '4.0'
|
|
54
|
-
type: :runtime
|
|
55
|
-
prerelease: false
|
|
56
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
57
|
-
requirements:
|
|
58
|
-
- - "~>"
|
|
59
|
-
- !ruby/object:Gem::Version
|
|
60
|
-
version: '4.0'
|
|
61
47
|
- !ruby/object:Gem::Dependency
|
|
62
48
|
name: rake
|
|
63
49
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -307,6 +293,7 @@ files:
|
|
|
307
293
|
- solr/conf/xslt/luke.xsl
|
|
308
294
|
- spec/components/blacklight/gallery/document_component_spec.rb
|
|
309
295
|
- spec/components/blacklight/gallery/slideshow_component_spec.rb
|
|
296
|
+
- spec/components/blacklight/gallery/slideshow_preview_component_spec.rb
|
|
310
297
|
- spec/features/gallery_spec.rb
|
|
311
298
|
- spec/features/masonry_spec.rb
|
|
312
299
|
- spec/features/slideshow_spec.rb
|
|
@@ -338,13 +325,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
338
325
|
- !ruby/object:Gem::Version
|
|
339
326
|
version: '0'
|
|
340
327
|
requirements: []
|
|
341
|
-
rubygems_version: 3.2.
|
|
328
|
+
rubygems_version: 3.2.32
|
|
342
329
|
signing_key:
|
|
343
330
|
specification_version: 4
|
|
344
331
|
summary: Gallery display for Blacklight
|
|
345
332
|
test_files:
|
|
346
333
|
- spec/components/blacklight/gallery/document_component_spec.rb
|
|
347
334
|
- spec/components/blacklight/gallery/slideshow_component_spec.rb
|
|
335
|
+
- spec/components/blacklight/gallery/slideshow_preview_component_spec.rb
|
|
348
336
|
- spec/features/gallery_spec.rb
|
|
349
337
|
- spec/features/masonry_spec.rb
|
|
350
338
|
- spec/features/slideshow_spec.rb
|