From 6cce532ca474cb3272a81c7317d759579e4c2afb Mon Sep 17 00:00:00 2001 From: Charles Gagnon Date: Tue, 3 Dec 2019 17:40:19 -0800 Subject: [PATCH] Fix wizard not displaying error messages (#8545) --- src/sql/workbench/browser/modal/modal.ts | 22 +++++++++++-------- .../services/dialog/browser/wizardModal.ts | 15 ++++++++++--- 2 files changed, 25 insertions(+), 12 deletions(-) diff --git a/src/sql/workbench/browser/modal/modal.ts b/src/sql/workbench/browser/modal/modal.ts index 961068dc25..ccfb3c2ae1 100644 --- a/src/sql/workbench/browser/modal/modal.ts +++ b/src/sql/workbench/browser/modal/modal.ts @@ -481,19 +481,23 @@ export abstract class Modal extends Disposable implements IThemable { this._messageDetail.innerText = description; } DOM.removeNode(this._messageDetail); - if (this._messageSummaryText) { - if (this._useDefaultMessageBoxLocation) { - DOM.prepend(this._modalContent, (this._messageElement)); - } - } else { - // Set the focus manually otherwise it'll escape the dialog to something behind it - this.setInitialFocusedElement(); - DOM.removeNode(this._messageElement); - } + this.messagesElementVisible = !!this._messageSummaryText; this.updateExpandMessageState(); } } + protected set messagesElementVisible(visible: boolean) { + if (visible) { + if (this._useDefaultMessageBoxLocation) { + DOM.prepend(this._modalContent, (this._messageElement)); + } + } else { + // Set the focus manually otherwise it'll escape the dialog to something behind it + this.setInitialFocusedElement(); + DOM.removeNode(this._messageElement); + } + } + /** * Set spinner element to show or hide */ diff --git a/src/sql/workbench/services/dialog/browser/wizardModal.ts b/src/sql/workbench/services/dialog/browser/wizardModal.ts index e3694de487..c0f217c389 100644 --- a/src/sql/workbench/services/dialog/browser/wizardModal.ts +++ b/src/sql/workbench/services/dialog/browser/wizardModal.ts @@ -36,6 +36,7 @@ export class WizardModal extends Modal { private _body: HTMLElement; private _pageContainer: HTMLElement; + private _mpContainer: HTMLElement; // Buttons private _previousButton: Button; @@ -130,9 +131,8 @@ export class WizardModal extends Modal { this.initializeNavigation(this._body); - const mpContainer = append(this._body, $('div.dialog-message-and-page-container')); - mpContainer.append(this._messageElement); - this._pageContainer = append(mpContainer, $('div.dialogModal-page-container')); + this._mpContainer = append(this._body, $('div.dialog-message-and-page-container')); + this._pageContainer = append(this._mpContainer, $('div.dialogModal-page-container')); this._wizard.pages.forEach(page => { this.registerPage(page); @@ -152,6 +152,15 @@ export class WizardModal extends Modal { this.updatePageNumbers(); } + protected set messagesElementVisible(visible: boolean) { + if (visible) { + this._mpContainer.prepend(this._messageElement); + } else { + // Let base class handle it + super.messagesElementVisible = false; + } + } + private updatePageNumbers(): void { this._wizard.pages.forEach((page, index) => { let dialogPane = this._dialogPanes.get(page);