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
Components
Reveal Controller
A Stimulus controller to toggle a class on one or multiple items to show or hide them.
Installation
Install the package
Terminal$ yarn add @stimulus-components/reveal
Register the controller in your application
app/javascript/controllers/index.jsimport { Application } from '@hotwired/stimulus' import RevealController from '@stimulus-components/reveal' const application = Application.start() application.register('reveal', RevealController)
Example
Reveal Controller
Hey 👋
Hey 🙈
Hi 🐵
Usage
Toggle
app/views/index.html
<div data-controller="reveal" data-reveal-hidden-class="d-none">
<button data-action="reveal#toggle" type="button" class="btn">Toggle me!</button>
<p data-reveal-target="item" class="d-none mt-4">Hey 👋</p>
<p data-reveal-target="item" class="d-none mt-4">You can have multiple items</p>
</div>
Show
app/views/index.html
<div data-controller="reveal">
<button data-action="reveal#show" type="button" class="btn">Show me!</button>
<p data-reveal-target="item" class="hidden mt-4">Hey 👋</p>
</div>
Hide
app/views/index.html
<div data-controller="reveal">
<button data-action="reveal#hide" type="button" class="btn">Hide me!</button>
<p data-reveal-target="item" class="mt-4">Hey 👋</p>
</div>
Configuration
Attribute | Default | Description | Optional |
---|---|---|---|
data-reveal-hidden-class | hidden | CSS class to toggle | ✅ |
Extending Controller
You can use inheritance to extend the functionality of any Stimulus component:
app/javascript/controllers/reveal_controller.js
import Reveal from "@stimulus-components/reveal"
export default class extends Reveal {
connect() {
super.connect()
console.log("Do what you want 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.