diff --git a/extensions/dacpac/src/wizard/api/dacFxConfigPage.ts b/extensions/dacpac/src/wizard/api/dacFxConfigPage.ts index 5c82f9aa0d..53146838c0 100644 --- a/extensions/dacpac/src/wizard/api/dacFxConfigPage.ts +++ b/extensions/dacpac/src/wizard/api/dacFxConfigPage.ts @@ -102,6 +102,7 @@ export abstract class DacFxConfigPage extends BasePage { protected async createDatabaseDropdown(): Promise { const databaseDropdownTitle = loc.sourceDatabase; this.databaseDropdown = this.view.modelBuilder.dropDown().withProperties({ + required: true, ariaLabel: databaseDropdownTitle }).component(); @@ -116,7 +117,6 @@ export abstract class DacFxConfigPage extends BasePage { required: true }).component(); - return { component: this.databaseLoader, title: databaseDropdownTitle diff --git a/src/sql/base/browser/ui/selectBox/selectBox.ts b/src/sql/base/browser/ui/selectBox/selectBox.ts index b0afca8f5f..11c7305504 100644 --- a/src/sql/base/browser/ui/selectBox/selectBox.ts +++ b/src/sql/base/browser/ui/selectBox/selectBox.ts @@ -318,6 +318,10 @@ export class SelectBox extends vsSelectBox { super.render(container); } } + + public get selectElem(): HTMLSelectElement { + return this.selectElement; + } } export interface ISelectBoxOptionsWithLabel extends ISelectBoxOptions { diff --git a/src/sql/base/parts/editableDropdown/browser/dropdown.ts b/src/sql/base/parts/editableDropdown/browser/dropdown.ts index 1ffb1dffef..3a7bdb28eb 100644 --- a/src/sql/base/parts/editableDropdown/browser/dropdown.ts +++ b/src/sql/base/parts/editableDropdown/browser/dropdown.ts @@ -310,6 +310,10 @@ export class Dropdown extends Disposable { this._input.value = val; } + public get inputElement(): HTMLInputElement { + return this._input.inputElement; + } + public focus() { this._input.focus(); } diff --git a/src/sql/workbench/browser/modelComponents/dropdown.component.ts b/src/sql/workbench/browser/modelComponents/dropdown.component.ts index 65646fffe0..d82538247b 100644 --- a/src/sql/workbench/browser/modelComponents/dropdown.component.ts +++ b/src/sql/workbench/browser/modelComponents/dropdown.component.ts @@ -136,6 +136,9 @@ export default class DropDownComponent extends ComponentBase implements ICompone this._selectBox.disable(); } } + + this._selectBox.selectElem.required = this.required; + this._editableDropdown.inputElement.required = this.required; } private getValues(): string[] { @@ -217,6 +220,14 @@ export default class DropDownComponent extends ComponentBase implements ICompone properties.values = values; } + public get required(): boolean { + return this.getPropertyOrDefault((props) => props.required, false); + } + + public set required(newValue: boolean) { + this.setPropertyFromUI((props, value) => props.required = value, newValue); + } + public focus(): void { if (this.editable && !this._isInAccessibilityMode) { this._editableDropdown.focus();