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/clipboard
Register the controller in your application
app/javascript/controllers/index.jsimport { Application } from '@hotwired/stimulus' import Clipboard from '@stimulus-components/clipboard' const application = Application.start() application.register('clipboard', Clipboard)
Example
Clipboard
Usage
app/views/index.html
<div data-controller="clipboard" data-clipboard-success-content-value="Copied!">
<input type="text" value="Click the button to copy me!" data-clipboard-target="source" />
<button type="button" data-action="clipboard#copy" data-clipboard-target="button">Copy to clipboard</button>
</div>
Configuration
Attribute | Default | Description | Optional |
---|---|---|---|
data-clipboard-success-content-value | '' | Text to display on button. | ✅ |
data-clipboard-success-duration-value | 2000 | Duration in ms to display the success content on button. | ✅ |
data-clipboard-target="button"
attribute is optional
if you don't want to change the text of the button.
Extending Controller
You can use inheritance to extend the functionality of any Stimulus component:
app/javascript/controllers/clipboard_controller.js
import Clipboard from "@stimulus-components/clipboard"
export default class extends Clipboard {
connect() {
super.connect()
console.log("Do what you want here.")
}
// Function to override on copy.
copy() {}
// Function to override when to input is copied.
copied() {
//
}
}
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.