mirror of
https://github.com/Freika/dawarich.git
synced 2026-01-09 21:28:01 -05:00
43 lines
1.1 KiB
JavaScript
43 lines
1.1 KiB
JavaScript
import { Controller } from "@hotwired/stimulus"
|
|
|
|
export default class extends Controller {
|
|
static targets = ["modal"]
|
|
static values = { showable: Boolean }
|
|
|
|
connect() {
|
|
if (this.showableValue) {
|
|
// Listen for Turbo page load events to show modal after navigation completes
|
|
document.addEventListener('turbo:load', this.handleTurboLoad.bind(this))
|
|
}
|
|
}
|
|
|
|
disconnect() {
|
|
// Clean up event listener when controller is removed
|
|
document.removeEventListener('turbo:load', this.handleTurboLoad.bind(this))
|
|
}
|
|
|
|
handleTurboLoad() {
|
|
if (this.showableValue) {
|
|
this.checkAndShowModal()
|
|
}
|
|
}
|
|
|
|
checkAndShowModal() {
|
|
const MODAL_STORAGE_KEY = 'dawarich_onboarding_shown'
|
|
const hasShownModal = localStorage.getItem(MODAL_STORAGE_KEY)
|
|
|
|
if (!hasShownModal && this.hasModalTarget) {
|
|
// Show the modal
|
|
this.modalTarget.showModal()
|
|
|
|
// Mark as shown in local storage
|
|
localStorage.setItem(MODAL_STORAGE_KEY, 'true')
|
|
|
|
// Add event listener to handle when modal is closed
|
|
this.modalTarget.addEventListener('close', () => {
|
|
// Modal closed - state already saved
|
|
})
|
|
}
|
|
}
|
|
}
|