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
Character Counter
A Stimulus controller that counts the number of characters in any input fields.
Installation
Install the package
Terminal$ yarn add @stimulus-components/character-counter
Register the controller in your application
app/javascript/controllers/index.jsimport { Application } from '@hotwired/stimulus' import CharacterCounter from '@stimulus-components/character-counter' const application = Application.start() application.register('character-counter', CharacterCounter)
Example
Character Counter
There are characters in this textarea.
Usage
app/views/index.html
<div data-controller="character-counter">
<textarea data-character-counter-target="input"></textarea>
<p>
There are
<strong data-character-counter-target="counter"></strong> characters in this textarea.
</p>
</div>
You can use it in countdown mode, add the correct value and a maxlength
attribute on the input
/textarea
field:
app/views/index.html
<div data-controller="character-counter" data-character-counter-countdown-value="true">
<textarea data-character-counter-target="input" maxlength="280"></textarea>
<p>
There are
<strong data-character-counter-target="counter"></strong> characters remaining.
</p>
</div>
Configuration
Attribute | Default | Description | Optional |
---|---|---|---|
data-character-counter-countdown-value | undefined | Activate the countdown mode. | ✅ |
Extending Controller
You can use inheritance to extend the functionality of any Stimulus component:
app/javascript/controllers/character_counter_controller.js
import CharacterCounter from "@stimulus-components/character-counter"
export default class extends CharacterCounter {
connect() {
super.connect()
console.log("Do what you want here.")
this.count // Will return the number of characters in the input/texterea.
}
}
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.