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/popover
Register the controller in your application
app/javascript/controllers/index.jsimport { Application } from '@hotwired/stimulus' import Popover from '@stimulus-components/popover' const application = Application.start() application.register('popover', Popover)
Example
Popover
This is my GitHub card available on GitHub.
Guillaume Briday
This content is in a hidden template.
Usage
With remote content
In your controller:
app/controllers/users_controller.rb
class UsersController < ApplicationController
def card
render partial: 'users/card', locals: { user: @user }
end
end
In your routes:
config/routes.rb
Rails.application.routes.draw do
get :card, to: 'users#card'
end
With server rendered content on the fly:
app/views/index.html.erb
<div data-controller="popover" data-popover-url-value="<%= card_path %>">
You can load popover with AJAX. For instance, this is my
<a href="/profile" data-action="mouseenter->popover#show mouseleave->popover#hide">profile card</a>
</div>
In the card partial app/views/users/_card.html.erb
:
app/views/users/_card.html.erb
<div data-popover-target="card">
<p>This content is loaded with AJAX.</p>
</div>
With local template
app/views/index.html
<div data-controller="popover">
This is my GitHub card available on
<a href="/profile" data-action="mouseenter->popover#show mouseleave->popover#hide"> GitHub </a>
<template data-popover-target="content">
<div data-popover-target="card">
<p>This content is in a hidden template.</p>
</div>
</template>
</div>
Configuration
Attribute | Default | Description | Optional |
---|---|---|---|
data-popover-url-value | undefined | URL to fetch the content. | ✅ |
Important note: It's up to you to provide the popover style!
Extending Controller
You can use inheritance to extend the functionality of any Stimulus component:
app/javascript/controllers/popover_controller.js
import Popover from "@stimulus-components/popover"
export default class extends Popover {
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.