From e24f316ab7f91d293bb5037a8c149823b9e5e7ff Mon Sep 17 00:00:00 2001 From: Alan Ren Date: Wed, 15 Jun 2022 20:41:07 -0700 Subject: [PATCH] fix selected state of select boxes (#19743) * fix the selected state * add comments * validate parameters --- src/sql/base/browser/ui/editableDropdown/browser/dropdown.ts | 2 ++ src/vs/base/browser/ui/list/listWidget.ts | 3 ++- src/vs/base/browser/ui/selectBox/selectBoxCustom.ts | 1 + 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/sql/base/browser/ui/editableDropdown/browser/dropdown.ts b/src/sql/base/browser/ui/editableDropdown/browser/dropdown.ts index fc2f7d84a3..64b44ac01f 100644 --- a/src/sql/base/browser/ui/editableDropdown/browser/dropdown.ts +++ b/src/sql/base/browser/ui/editableDropdown/browser/dropdown.ts @@ -315,6 +315,8 @@ export class Dropdown extends Disposable implements IListVirtualDelegate private _updateDropDownList(): void { this._selectList.splice(0, this._selectList.length, this._dataSource.filteredValues.map(v => { return { text: v }; })); + const selectedIndex = this._dataSource.filteredValues.indexOf(this.value); + this._selectList.setSelection(selectedIndex !== -1 ? [selectedIndex] : []); let width = this._inputContainer.clientWidth; diff --git a/src/vs/base/browser/ui/list/listWidget.ts b/src/vs/base/browser/ui/list/listWidget.ts index c8e05d4dce..f8ea55da82 100644 --- a/src/vs/base/browser/ui/list/listWidget.ts +++ b/src/vs/base/browser/ui/list/listWidget.ts @@ -1279,7 +1279,8 @@ export class List implements ISpliceable, IThemable, IDisposable { private _options: IListOptions = DefaultOptions ) { const role = this._options.accessibilityProvider && this._options.accessibilityProvider.getWidgetRole ? this._options.accessibilityProvider?.getWidgetRole() : 'list'; - this.selection = new SelectionTrait(role !== 'listbox'); + // {{SQL CARBON EDIT}} - Change the parameter from 'role !== listbox' to 'role !== list', according to the doc https://www.w3.org/WAI/PF/HTML/wiki/RoleAttribute, list role is non-interactive. + this.selection = new SelectionTrait(role !== 'list'); mixin(_options, defaultStyles, false); diff --git a/src/vs/base/browser/ui/selectBox/selectBoxCustom.ts b/src/vs/base/browser/ui/selectBox/selectBoxCustom.ts index 26ff06a781..010aa7e2a8 100644 --- a/src/vs/base/browser/ui/selectBox/selectBoxCustom.ts +++ b/src/vs/base/browser/ui/selectBox/selectBoxCustom.ts @@ -271,6 +271,7 @@ export class SelectBoxList extends Disposable implements ISelectBoxDelegate, ILi // Populate select list for non-native select mode if (this.selectList) { this.selectList.splice(0, this.selectList.length, this.options); + this.selectList?.setSelection(this.selected !== -1 ? [this.selected] : []); // {{SQL CARBON EDIT}} - Set the selected indexes. } }