불필요한 코드 정리 및 modal 추가
This commit is contained in:
@@ -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)
|
||||
|
||||
55
app/javascript/controllers/modals_controller.js
Normal file
55
app/javascript/controllers/modals_controller.js
Normal 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 지연 후 모달 제거
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user