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/notification
Register the controller in your application
app/javascript/controllers/index.jsimport { Application } from '@hotwired/stimulus' import Notification from '@stimulus-components/notification' const application = Application.start() application.register('notification', Notification)
This controller uses stimulus-use/use-transition under the hood. You can change the animation behavior as you want.
Example
Notification
Reload to re-run the animation.
Usage
app/views/index.html
<div
data-controller="notification"
data-notification-delay-value="2000"
class="transition transform duration-1000 hidden"
data-transition-enter-from="opacity-0 translate-x-6"
data-transition-enter-to="opacity-100 translate-x-0"
data-transition-leave-from="opacity-100 translate-x-0"
data-transition-leave-to="opacity-0 translate-x-6"
>
<p>This alert will magically disappear!</p>
<button data-action="notification#hide">Close</button>
</div>
You can hide the notification by default and open it programmatically.
Use a CustomEvent and set the correct value
and action
.
For instance:
app/views/index.html
<div
data-controller="notification"
data-notification-hidden-value="true"
data-action="awesome@window->notification#show"
class="transition transform duration-1000 hidden"
data-transition-enter-from="opacity-0 translate-x-6"
data-transition-enter-to="opacity-100 translate-x-0"
data-transition-leave-from="opacity-100 translate-x-0"
data-transition-leave-to="opacity-0 translate-x-6"
>
<p>This alert will magically disappear!</p>
<button data-action="notification#hide">Close</button>
</div>
<script>
document.addEventListener("DOMContentLoaded", () => {
const event = new CustomEvent("awesome")
window.dispatchEvent(event)
})
</script>
Configuration
Attribute | Default | Description | Optional |
---|---|---|---|
data-notification-delay-value | 3000 | Delay in milliseconds before closing the notification. | ✅ |
data-notification-hidden-value | false | Hide the notification by default to open it programmatically. | ✅ |
Extending Controller
You can use inheritance to extend the functionality of any Stimulus component:
app/javascript/controllers/notification_controller.js
import Notification from "@stimulus-components/notification"
export default class extends Notification {
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.