diff --git a/frontend/dashboard.css b/frontend/dashboard.css index 4a1cb5b..eb1e9a2 100644 --- a/frontend/dashboard.css +++ b/frontend/dashboard.css @@ -449,8 +449,12 @@ textarea { resize: vertical; min-height: 120px; } .create-issue-sheet.open { display:flex; } .create-issue-panel { width:min(560px,100%); height:100dvh; overflow:auto; overflow-x:hidden; display:grid; align-content:start; gap:12px; padding:18px; padding-bottom:calc(18px + env(safe-area-inset-bottom)); background:#0b1526; border-left:1px solid #2a496e; } .create-issue-header { display:flex; align-items:center; justify-content:space-between; gap:10px; } -.create-issue-header button, .create-issue-actions button { min-height:44px; } +.create-issue-header button, .create-issue-actions button, .create-issue-capture-actions button { min-height:44px; } .create-issue-form { display:grid; gap:12px; } +.create-issue-capture-actions { position:sticky; bottom:0; display:grid; grid-template-columns:1fr 1fr; gap:8px; padding:10px 0; padding-bottom:calc(10px + env(safe-area-inset-bottom)); background:#0b1526; } +.create-issue-capture-actions[hidden] { display:none; } +.create-issue-filing { display:grid; gap:12px; min-width:0; } +.create-issue-filing[hidden] { display:none; } .create-issue-attachment { display:grid; gap:8px; min-width:0; } .create-issue-repository-more { min-height:44px; width:100%; } .create-issue-repository-picker { min-width:0; display:grid; gap:8px; } diff --git a/frontend/dashboard.js b/frontend/dashboard.js index 3f618ca..c190255 100644 --- a/frontend/dashboard.js +++ b/frontend/dashboard.js @@ -3217,6 +3217,8 @@ qs('#create-issue-repository-results').hidden = true; qs('#create-issue-title').value = captureDraft.title; qs('#create-issue-body').value = captureDraft.body; + setIssueFilingMode(Boolean(captureDraft.repository)); + qs('#create-issue-capture-status').textContent = ''; qs('#create-issue-due-date').value = captureDraft.dueDate || ''; loadIssueLabels(qs('#create-issue-repository').value, captureDraft.labelIds); loadIssueMilestones(qs('#create-issue-repository').value, captureDraft.milestoneId); @@ -3225,7 +3227,13 @@ updateIssueCreateActions(); qs('#create-issue-sheet').classList.add('open'); creatingIssue = true; - (captureDraft.repository ? qs('#create-issue-title') : qs('#create-issue-repository-search')).focus(); + qs('#create-issue-title').focus(); + } + + function setIssueFilingMode(enabled) { + qs('#create-issue-filing').hidden = !enabled; + qs('.create-issue-capture-actions').hidden = enabled; + qs('#create-issue-heading').textContent = enabled ? 'File issue' : 'Capture work'; } let suppressCreateDraftOnHistoryClose = false; @@ -4038,6 +4046,17 @@ } }); qs('#new-issue').addEventListener('click', openCreateIssueSheet); + qs('#file-new-issue').addEventListener('click', () => { + if (!qs('#create-issue-title').value.trim()) { + qs('#create-issue-capture-status').textContent = 'Add a title before filing.'; + qs('#create-issue-title').focus(); + return; + } + saveIssueCaptureDraft(); + setIssueFilingMode(true); + qs('#create-issue-capture-status').textContent = ''; + qs('#create-issue-repository-search').focus(); + }); qs('#save-unfiled-issue').addEventListener('click', () => { const captureDraft = { title: qs('#create-issue-title').value.trim(), @@ -4052,7 +4071,7 @@ refreshMyWorkView(); qs('#my-work-action-status').textContent = 'Saved in Drafts · choose a repository after reconnecting.'; } catch (error) { - qs('#create-issue-status').textContent = error.message; + qs('#create-issue-capture-status').textContent = error.message; qs('#create-issue-title').focus(); } }); diff --git a/frontend/index.html b/frontend/index.html index de52bb2..5d0edfb 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -514,7 +514,7 @@