Skip to content

Commit fe4d4f7

Browse files
author
Rachel Macfarlane
committed
Show validation message on empty fields in issue reporter, fixes microsoft#104472
1 parent 16adb5b commit fe4d4f7

3 files changed

Lines changed: 17 additions & 7 deletions

File tree

src/vs/code/electron-sandbox/issue/issueReporterMain.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -812,11 +812,14 @@ export class IssueReporter extends Disposable {
812812

813813
private validateInput(inputId: string): boolean {
814814
const inputElement = (<HTMLInputElement>this.getElementById(inputId));
815+
const inputValidationMessage = this.getElementById(`${inputId}-empty-error`);
815816
if (!inputElement.value) {
816817
inputElement.classList.add('invalid-input');
818+
inputValidationMessage?.classList.remove('hidden');
817819
return false;
818820
} else {
819821
inputElement.classList.remove('invalid-input');
822+
inputValidationMessage?.classList.add('hidden');
820823
return true;
821824
}
822825
}

src/vs/code/electron-sandbox/issue/issueReporterPage.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ export default (): string => `
2323
<select id="issue-source" class="inline-form-control" required>
2424
<!-- To be dynamically filled -->
2525
</select>
26+
<div id="issue-source-empty-error" class="validation-error hidden" role="alert">${escape(localize('issueSourceEmptyValidation', "An issue source is required."))}</div>
2627
<div id="problem-source-help-text" class="instructions hidden">${escape(localize('disableExtensionsLabelText', "Try to reproduce the problem after {0}. If the problem only reproduces when extensions are active, it is likely an issue with an extension."))
2728
.replace('{0}', `<span tabIndex=0 role="button" id="disableExtensions" class="workbenchCommand">${escape(localize('disableExtensions', "disabling all extensions and reloading the window"))}</span>`)}
2829
</div>
@@ -43,6 +44,7 @@ export default (): string => `
4344
<div class="input-group">
4445
<label class="inline-label" for="issue-title">${escape(localize('issueTitleLabel', "Title"))} <span class="required-input">*</span></label>
4546
<input id="issue-title" type="text" class="inline-form-control" placeholder="${escape(localize('issueTitleRequired', "Please enter a title."))}" required>
47+
<div id="issue-title-empty-error" class="validation-error hidden" role="alert">${escape(localize('titleEmptyValidation', "A title is required."))}</div>
4648
<div id="issue-title-length-validation-error" class="validation-error hidden" role="alert">${escape(localize('titleLengthValidation', "The title is too long."))}</div>
4749
<small id="similar-issues">
4850
<!-- To be dynamically filled -->
@@ -61,6 +63,7 @@ export default (): string => `
6163
<div class="block-info-text">
6264
<textarea name="description" id="description" placeholder="${escape(localize('details', "Please enter details."))}" required></textarea>
6365
</div>
66+
<div id="description-empty-error" class="validation-error hidden" role="alert">${escape(localize('descriptionEmptyValidation', "A description is required."))}</div>
6467
</div>
6568
6669
<div class="system-info" id="block-container">

src/vs/code/electron-sandbox/issue/media/issueReporter.css

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -201,9 +201,10 @@ select, input, textarea {
201201
}
202202

203203

204-
.validation-error {
204+
#issue-reporter .validation-error {
205205
font-size: 12px;
206-
margin-top: 1em;
206+
padding: 10px;
207+
border-top: 0px !important;
207208
}
208209

209210

@@ -256,8 +257,7 @@ a {
256257
}
257258

258259
.section .input-group .validation-error {
259-
margin-left: calc(15% + 5px);
260-
padding: 10px;
260+
margin-left: 100px;
261261
}
262262

263263
.section .inline-form-control, .section .inline-label {
@@ -268,7 +268,7 @@ a {
268268
width: 95px;
269269
}
270270

271-
.section .inline-form-control {
271+
.section .inline-form-control, .section .input-group .validation-error {
272272
width: calc(100% - 100px);
273273
}
274274

@@ -294,9 +294,13 @@ a {
294294
margin-left: calc(15% + 1em);
295295
}
296296

297-
.section .inline-form-control {
297+
.section .inline-form-control, .section .input-group .validation-error {
298298
width: calc(85% - 5px);
299299
}
300+
301+
.section .input-group .validation-error {
302+
margin-left: calc(15% + 4px);
303+
}
300304
}
301305

302306
@media (max-width: 620px) {
@@ -308,7 +312,7 @@ a {
308312
margin-left: 1em;
309313
}
310314

311-
.section .inline-form-control {
315+
.section .inline-form-control, .section .input-group .validation-error {
312316
width: 100%;
313317
}
314318

0 commit comments

Comments
 (0)