fix(ui): scope mousedown handler to .tat-header to restore input/select focus
The dialog's mousedown listener was attached to the whole root and unconditionally called preventDefault(), which blocked the target element from receiving focus. As a result, the custom target <input> and the milestone <select> could never be focused. Only initiate drag (and only preventDefault) when the mousedown is on the .tat-header bar. This lets the user click into inputs, selects, and buttons inside the dialog body, while still allowing the dialog to be dragged from the title bar. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -148,6 +148,9 @@ export class Dialog {
|
||||
const self = this;
|
||||
this.root.addEventListener('mousedown', (e) => {
|
||||
if (self.mode !== 'free') return;
|
||||
// Only initiate drag from the header bar. This prevents stealing focus
|
||||
// from inputs, selects, and buttons inside the dialog body.
|
||||
if (!e.target.closest('.tat-header')) return;
|
||||
if (e.target.classList.contains('tat-close')) return;
|
||||
const rect = self.root.getBoundingClientRect();
|
||||
self.dragState = { dx: e.clientX - rect.left, dy: e.clientY - rect.top };
|
||||
|
||||
Reference in New Issue
Block a user