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
Animated Number
A Stimulus controller that animates a numerical value by counting to it.
Installation
Install the package
Terminal$ yarn add @stimulus-components/animated-number
Register the controller in your application
app/javascript/controllers/index.jsimport { Application } from '@hotwired/stimulus' import AnimatedNumber from '@stimulus-components/animated-number' const application = Application.start() application.register('animated-number', AnimatedNumber)
Example
Animated Number
Counting from 0 to 100 in 3 seconds:Usage
app/views/index.html
<div
data-controller="animated-number"
data-animated-number-start-value="0"
data-animated-number-end-value="200"
data-animated-number-duration-value="3000"
>
0
</div>
app/views/index.html
<div
data-controller="animated-number"
data-animated-number-lazy-value=""
data-animated-number-start-value="0"
data-animated-number-end-value="200"
data-animated-number-duration-value="3000"
>
This animation will start only when the element become visible thanks to Intersection Observers.
</div>
app/views/index.html
<div
data-controller="animated-number"
data-animated-number-lazy-value=""
data-animated-number-lazy-root-margin-value="30px"
data-animated-number-lazy-threshold-value="0.4"
data-animated-number-start-value="0"
data-animated-number-end-value="200"
data-animated-number-duration-value="3000"
>
You can customize the Intersection Observer options.
</div>
Configuration
Attribute | Default | Description | Optional |
---|---|---|---|
data-animated-number-start-value | undefined | Number, at which animation starts. | ❌ |
data-animated-number-end-value | undefined | Number, at which animation ends. | ❌ |
data-animated-number-duration-value | undefined | Total animation duration in milliseconds. | ❌ |
data-animated-number-lazy-value | undefined | Fetch content when element is visible. | ✅ |
data-animated-number-lazy-root-margin-value | 0px | rootMargin option for Intersection Observer. | ✅ |
data-animated-number-lazy-threshold-value | 0 | threshold option for Intersection Observer. | ✅ |
Extending Controller
You can use inheritance to extend the functionality of any Stimulus component:
app/javascript/controllers/animated_number_controller.js
import AnimatedNumber from "@stimulus-components/animated-number"
export default class extends AnimatedNumber {
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.