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(); + } } }