app/javascript/controllers/ui/popover_controller.js in shadcn-ui-0.0.1 vs app/javascript/controllers/ui/popover_controller.js in shadcn-ui-0.0.2
- old
+ new
@@ -1,11 +1,11 @@
// Inspired by: https://github.com/excid3/tailwindcss-stimulus-components/blob/master/src/popover.js
import { Controller } from "@hotwired/stimulus";
import { createPopper } from "@popperjs/core";
-export default class extends Controller {
+export default class UIPopover extends Controller {
static values = {
dismissAfter: Number,
};
static targets = ["content", "wrapper", "trigger"];
@@ -21,7 +21,35 @@
offset: [0, 8],
},
},
],
});
+ }
+
+ // Show the popover
+ show() {
+ this.contentTarget.classList.remove("hidden");
+ this.contentTarget.dataset.state = "open";
+ }
+
+ // Hide the popover
+ hide() {
+ this.contentTarget.classList.add("hidden");
+ this.contentTarget.dataset.state = "closed";
+ }
+
+ // Toggle the popover on demand
+ toggle(event) {
+ this.popperInstance.update();
+ if (this.contentTarget.classList.contains("hidden")) {
+ this.show();
+
+ if (this.hasDismissAfterValue) {
+ setTimeout(() => {
+ this.hide();
+ }, this.dismissAfterValue);
+ }
+ } else {
+ this.hide();
+ }
}
}