Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .jules/palette.md
Original file line number Diff line number Diff line change
Expand Up @@ -81,3 +81,6 @@
## 2024-08-04 - 숫자 μž…λ ₯ ν•„λ“œ 빈 λ¬Έμžμ—΄ μƒνƒœ μ΄ˆκΈ°ν™” 처리
**ν•™μŠ΅:** 숫자 μž…λ ₯ ν•„λ“œμ—μ„œ 빈 λ¬Έμžμ—΄('')을 μž…λ ₯ν•  λ•Œ λΈŒλΌμš°μ €λŠ” μ΄μ „μ˜ μœ νš¨ν•˜μ§€ μ•Šμ€ μƒνƒœλ₯Ό μ•”μ‹œμ μœΌλ‘œ μœ μ§€ν•˜λ―€λ‘œ, μ‚¬μš©μž μ •μ˜ 검증을 λͺ…μ‹œμ μœΌλ‘œ μ΄ˆκΈ°ν™”ν•˜μ§€ μ•ŠμœΌλ©΄ λ„€μ΄ν‹°λΈŒ HTML5 μœ νš¨μ„± 검사가 정상 μž‘λ™ν•˜μ§€ μ•Šμ„ 수 μžˆμŒμ„ ν™•μΈν–ˆμŠ΅λ‹ˆλ‹€.
**μ‹€ν–‰:** 인라인 검증 슀크립트 μž‘μ„± μ‹œ 빈 λ¬Έμžμ—΄ μƒνƒœλ₯Ό λ³„λ„λ‘œ ν™•μΈν•˜μ—¬ this.setCustomValidity('') 및 this.removeAttribute('aria-invalid')λ₯Ό λͺ…μ‹œμ μœΌλ‘œ ν˜ΈμΆœν•˜λŠ” λ‘œμ§μ„ μΆ”κ°€ν•΄μ•Ό ν•©λ‹ˆλ‹€.
## 2024-11-07 - Add copy cursor for drag and drop
**Learning:** Operating systems rely on explicitly setting e.dataTransfer.dropEffect = 'copy' during dragover to show the correct cursor feedback. The visual class change alone is insufficient for native OS interaction cues.
**Action:** Always set dropEffect appropriately alongside CSS state changes when implementing custom drop zones to ensure native UX consistency.
7 changes: 6 additions & 1 deletion saas_web.py
Original file line number Diff line number Diff line change
Expand Up @@ -372,7 +372,12 @@ async def add_security_headers(request: Request, call_next):
zone.addEventListener(eventName, preventDefaults, false);
});
['dragenter', 'dragover'].forEach(eventName => {
zone.addEventListener(eventName, () => zone.classList.add('dragover'), false);
zone.addEventListener(eventName, (e) => {
zone.classList.add('dragover');
if (e.dataTransfer) {
e.dataTransfer.dropEffect = 'copy';
}
}, false);
});
['dragleave', 'drop'].forEach(eventName => {
zone.addEventListener(eventName, () => zone.classList.remove('dragover'), false);
Expand Down
Loading