Skip to content

Commit a7072cc

Browse files
committed
Use custom lightbox controller instead of imported controller
1 parent 12f888e commit a7072cc

File tree

5 files changed

+52
-2
lines changed

5 files changed

+52
-2
lines changed
Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1-
<div class="related w-full -mt-4 md:-mt-4 lg:-mt-6 mb-2 flex flex-col">
2-
<%= image_tag helpers.main_app.url_for(@cover_photo.value), class: class_names("w-full object-cover", size_class), data: {component: self.class.to_s.underscore} %>
1+
<div data-controller="lightbox" class="related w-full -mt-4 md:-mt-4 lg:-mt-6 mb-2 flex flex-col">
2+
<%= image_tag helpers.main_app.url_for(@cover_photo.value),
3+
class: class_names("w-full object-cover", size_class),
4+
data: {
5+
action: "click->lightbox#open",
6+
lightbox_target: "image"
7+
component: self.class.to_s.underscore
8+
} %>
39
</div>

app/javascript/js/controllers.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ import TiptapFieldController from './controllers/fields/tiptap_field_controller'
5252
import ToggleController from './controllers/toggle_controller'
5353
import TrixBodyController from './controllers/trix_body_controller'
5454
import TrixFieldController from './controllers/fields/trix_field_controller'
55+
import LightBoxController from './controllers/lightbox_controller'
5556

5657
application.register('action', ActionController)
5758
application.register('actions-overflow', ActionsOverflowController)
@@ -95,6 +96,7 @@ application.register('text-filter', TextFilterController)
9596
application.register('tippy', TippyController)
9697
application.register('toggle', ToggleController)
9798
application.register('trix-body', TrixBodyController)
99+
application.register('lightbox', LightBoxController)
98100

99101
// Field controllers
100102
application.register('belongs-to-field', BelongsToFieldController)
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import { Controller } from "@hotwired/stimulus"
2+
3+
export default class extends Controller {
4+
static targets = ["modal", "image"]
5+
6+
connect() {
7+
console.log("Lightbox controller connected")
8+
}
9+
10+
open(event) {
11+
const imageUrl = event.target.getAttribute("src")
12+
this.imageTarget.setAttribute("src", imageUrl)
13+
this.modalTarget.classList.remove("hidden")
14+
}
15+
16+
close(event) {
17+
if (event.target === this.modalTarget) {
18+
this.modalTarget.classList.add("hidden")
19+
}
20+
}
21+
}

app/views/layouts/avo/application.html.erb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
<%= render partial: "avo/partials/javascript" %>
1313
<%= render partial: "avo/partials/branding" %>
1414
<%= render partial: "avo/partials/pre_head" %>
15+
<%= render partial: "avo/partials/lightbox" %>
1516
<%= render Avo::AssetManager::StylesheetComponent.new asset_manager: Avo.asset_manager %>
1617
<%= stylesheet_link_tag @stylesheet_assets_path, "data-turbo-track": "reload", as: "style" %>
1718

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<div
2+
data-controller="lightbox"
3+
data-lightbox-target="modal"
4+
class="hidden fixed inset-0 z-50 flex items-center justify-center bg-black bg-opacity-75 transition-opacity"
5+
data-action="click->lightbox#close"
6+
>
7+
<div class="relative max-w-3xl w-full">
8+
<img
9+
data-lightbox-target="image"
10+
class="rounded-lg shadow-lg object-contain max-h-screen"
11+
alt="Expanded view of the image"
12+
/>
13+
<button
14+
class="absolute top-4 right-4 text-white text-2xl font-bold"
15+
data-action="click->lightbox#close"
16+
>
17+
&times;
18+
</button>
19+
</div>
20+
</div>

0 commit comments

Comments
 (0)