Skip to content

Commit 30c9414

Browse files
Copilotalexr00
andcommitted
Add gear icon to Description label that opens pull request description settings
Co-authored-by: alexr00 <38270282+alexr00@users.noreply.github.com>
1 parent abfdbb2 commit 30c9414

3 files changed

Lines changed: 62 additions & 2 deletions

File tree

src/github/createPRViewProvider.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -505,6 +505,10 @@ export abstract class BaseCreatePullRequestViewProvider<T extends BasePullReques
505505
return this._replyMessage(message, undefined);
506506
}
507507

508+
private async openDescriptionSettings(): Promise<void> {
509+
return vscode.commands.executeCommand('workbench.action.openSettings', 'githubPullRequests.pullRequestDescription');
510+
}
511+
508512
protected override async _onDidReceiveMessage(message: IRequestMessage<any>) {
509513
const result = await super._onDidReceiveMessage(message);
510514
if (result !== this.MESSAGE_UNHANDLED) {
@@ -539,6 +543,9 @@ export abstract class BaseCreatePullRequestViewProvider<T extends BasePullReques
539543
case 'pr.removeLabel':
540544
return this.removeLabel(message);
541545

546+
case 'pr.openDescriptionSettings':
547+
return this.openDescriptionSettings();
548+
542549
default:
543550
return this.MESSAGE_UNHANDLED;
544551
}

webviews/createPullRequestViewNew/app.tsx

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import PullRequestContextNew from '../common/createContextNew';
1212
import { ErrorBoundary } from '../common/errorBoundary';
1313
import { LabelCreate } from '../common/label';
1414
import { ContextDropdown } from '../components/contextDropdown';
15-
import { accountIcon, feedbackIcon, gitCompareIcon, milestoneIcon, prMergeIcon, projectIcon, sparkleIcon, stopCircleIcon, tagIcon } from '../components/icon';
15+
import { accountIcon, feedbackIcon, gitCompareIcon, milestoneIcon, prMergeIcon, projectIcon, settingsIcon, sparkleIcon, stopCircleIcon, tagIcon } from '../components/icon';
1616
import { Avatar } from '../components/user';
1717

1818
type CreateMethod = 'create-draft' | 'create' | 'create-automerge-squash' | 'create-automerge-rebase' | 'create-automerge-merge';
@@ -172,6 +172,11 @@ export function main() {
172172
}
173173
}
174174

175+
function openDescriptionSettings(event: React.MouseEvent | React.KeyboardEvent): void {
176+
event.preventDefault();
177+
ctx.postMessage({ command: 'pr.openDescriptionSettings' });
178+
}
179+
175180
async function generateTitle(useCopilot?: boolean) {
176181
setGeneratingTitle(true);
177182
await ctx.generateTitle(!!useCopilot);
@@ -325,7 +330,10 @@ export function main() {
325330
: null}
326331
</div>
327332

328-
<label htmlFor='description' className='input-title'>Description</label>
333+
<div className='group-description-header'>
334+
<label htmlFor='description' className='input-title'>Description</label>
335+
<a title='Open pull request description settings' className='description-settings-action icon-button' onClick={openDescriptionSettings} onKeyDown={openDescriptionSettings} tabIndex={0}>{settingsIcon}</a>
336+
</div>
329337
<div className='group-description'>
330338
<textarea
331339
id='description'

webviews/createPullRequestViewNew/index.css

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,51 @@ button.input-box {
9393
text-transform: uppercase;
9494
}
9595

96+
.group-description-header {
97+
position: relative;
98+
display: flex;
99+
align-items: center;
100+
justify-content: space-between;
101+
margin-bottom: 4px;
102+
}
103+
104+
.group-description-header .input-title {
105+
margin-bottom: 0;
106+
}
107+
108+
.group-description-header .description-settings-action {
109+
background: unset;
110+
padding: 2px;
111+
margin: unset;
112+
height: 16px;
113+
cursor: pointer;
114+
opacity: 0.7;
115+
}
116+
117+
.group-description-header .description-settings-action:hover {
118+
outline-style: none;
119+
opacity: 1;
120+
background-color: var(--vscode-toolbar-hoverBackground);
121+
}
122+
123+
.group-description-header .description-settings-action:focus {
124+
outline-style: none;
125+
}
126+
127+
.group-description-header .description-settings-action:focus-visible {
128+
outline-width: 1px;
129+
outline-style: solid;
130+
outline-offset: -1px;
131+
outline-color: var(--vscode-focusBorder);
132+
background: unset;
133+
opacity: 1;
134+
}
135+
136+
.group-description-header .description-settings-action svg {
137+
width: 14px;
138+
height: 14px;
139+
}
140+
96141
#title {
97142
padding-right: 24px;
98143
text-overflow: ellipsis;

0 commit comments

Comments
 (0)