불필요한 코드 정리 및 modal 추가

This commit is contained in:
2025-04-18 07:13:56 +09:00
parent 8041453c5e
commit 4a3d0313a2
17 changed files with 147 additions and 74 deletions

View File

@@ -7,5 +7,8 @@ import { application } from "./application"
import HelloController from "./hello_controller"
application.register("hello", HelloController)
import ModalsController from "./modals_controller"
application.register("modals", ModalsController)
import TimerController from "./timer_controller"
application.register("timer", TimerController)

View File

@@ -0,0 +1,55 @@
import { Controller } from "@hotwired/stimulus"
import { useClickOutside } from 'stimulus-use'
// Connects to data-controller="modals"
export default class extends Controller {
connect() {
// useClickOutside(this)
this.boundHandleKeydown = this.handleKeydown.bind(this)
document.addEventListener("keydown", this.boundHandleKeydown)
window.addEventListener('modals:close', this.close.bind(this))
const panelElement = document.getElementById("modals-panel")
const backdropElement = document.getElementById("modals-backdrop")
if (panelElement && backdropElement) {
setTimeout(() => {
panelElement.classList.remove('opacity-0', 'translate-y-4', 'sm:scale-95')
panelElement.classList.add('opacity-100', 'translate-y-0', 'sm:scale-100')
backdropElement.classList.remove('opacity-0')
backdropElement.classList.add('opacity-75')
}, 10) // 애니메이션이 바로 시작되도록 약간의 지연 추가
}
}
disconnect() {
document.removeEventListener('keydown', this.boundHandleKeydown)
}
handleKeydown(event) {
if (event.key === "Escape") {
this.close()
}
}
close(event) {
const panelElement = document.getElementById("modals-panel")
const backdropElement = document.getElementById("modals-backdrop")
if (panelElement && backdropElement) {
panelElement.classList.remove("opacity-100", "translate-y-0", "sm:scale-100")
panelElement.classList.add("opacity-0", "translate-y-4", "sm:scale-95")
backdropElement.classList.remove("opacity-75")
backdropElement.classList.add("opacity-0")
setTimeout(() => {
const modalsFrame = document.querySelector("turbo-frame#modals")
if (modalsFrame) {
modalsFrame.innerHTML = ""
window.location.reload()
}
}, 300) // 닫힘 애니메이션 시간과 동일하게 300ms 지연 후 모달 제거
}
}
}

View File

@@ -1,4 +1,4 @@
import { Controller } from "@hotwired/stimulus"
import {Controller} from "@hotwired/stimulus"
// Connects to data-controller="timer"
export default class extends Controller {
@@ -15,8 +15,7 @@ export default class extends Controller {
updateTime() {
const now = new Date()
const formatted = `${now.getFullYear()}년 ${String(now.getMonth() + 1).padStart(2, '0')}월 ${String(now.getDate()).padStart(2, '0')}일 ` +
this.outputTarget.textContent = `${now.getFullYear()}년 ${String(now.getMonth() + 1).padStart(2, '0')}월 ${String(now.getDate()).padStart(2, '0')}일 ` +
`${String(now.getHours()).padStart(2, '0')}시 ${String(now.getMinutes()).padStart(2, '0')}분 ${String(now.getSeconds()).padStart(2, '0')}초`
this.outputTarget.textContent = formatted
}
}