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-08-16 - Add explicit dropEffect to drag and drop zones
**Learning:** Adding `.dragover` CSS classes provides good visual feedback for drop zones, but the OS cursor often remains as the default pointer or indicates "not allowed" unless `e.dataTransfer.dropEffect` is explicitly set during the `dragover` event.
**Action:** Always set `e.dataTransfer.dropEffect = 'copy'` (or another appropriate effect) during `dragenter`/`dragover` events to provide clear, native cursor feedback to the user that the drop action is supported.
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