Getting Started
Components
- Animated Number
- Auto Submit
- Carousel
- Character Counter
- Chartjs
- Checkbox Select All
- Clipboard
- Color Picker
- Confirmation New
- Content Loader
- Dialog
- Dropdown
- Glow
- Lightbox
- Notification
- Password Visibility
- Places Autocomplete
- Popover
- Prefetch
- Rails Nested Form
- Read More
- Remote Rails
- Reveal Controller
- Scroll Progress
- Scroll Reveal
- Scroll To
- Sortable
- Sound
- Textarea Autogrow
- Timeago
Installation
Install the package
Terminal$ yarn add @stimulus-components/lightbox
Register the controller in your application
app/javascript/controllers/index.jsimport { Application } from '@hotwired/stimulus' import Lightbox from '@stimulus-components/lightbox' const application = Application.start() application.register('lightbox', Lightbox)
This component is based on the lightgalleryjs.
Example
Usage
Before starting, your must import the lightgallery.css
in your js
or in your sass
:
app/javascript/index.js
import "lightgallery/css/lightgallery.css"
Or in your sass:
app/javascript/stylesheets/application.scss
@import "~lightgallery/scss/lightgallery";
app/views/index.html
<div data-controller="lightbox">
<a href="img/img1.jpg">
<img src="img/img1.jpg" alt="" />
</a>
<a href="img/img2.jpg">
<img src="img/img2.jpg" alt="" />
</a>
<a href="img/img3.jpg">
<img src="img/img3.jpg" alt="" />
</a>
</div>
With options:
app/views/index.html
<div data-controller="lightbox" data-lightbox-options-value='{"index": 2}'>
<a href="img/img1.jpg">
<img src="img/img1.jpg" alt="" />
</a>
<a href="img/img2.jpg">
<img src="img/img2.jpg" alt="" />
</a>
<a href="img/img3.jpg">
<img src="img/img3.jpg" alt="" />
</a>
</div>
Configuration
Attribute | Default | Description | Optional |
---|---|---|---|
data-lightbox-options-value | {} | Options for lightgallery.js as JSON string. | ✅ |
Extending Controller
You can use inheritance to extend the functionality of any Stimulus component:
app/javascript/controllers/lightbox_controller.js
import Lightbox from "@stimulus-components/lightbox"
export default class extends Lightbox {
connect() {
super.connect()
console.log("Do what you want here.")
// Get the lightgallery instance
this.lightGallery
// Default options for every lightboxes.
this.defaultOptions
}
// You can set default options in this getter.
get defaultOptions() {
return {
// Your default options here
}
}
}
This controller will automatically have access to targets defined in the parent class.
If you override the connect
, disconnect
or any other methods from the parent, you'll want to call super.method()
to make sure the parent functionality is executed.