diff --git a/extensions/sql-migration/src/dialog/assessmentResults/sqlDatabasesTree.ts b/extensions/sql-migration/src/dialog/assessmentResults/sqlDatabasesTree.ts index 9277cf39df..8199da0c96 100644 --- a/extensions/sql-migration/src/dialog/assessmentResults/sqlDatabasesTree.ts +++ b/extensions/sql-migration/src/dialog/assessmentResults/sqlDatabasesTree.ts @@ -799,11 +799,14 @@ export class SqlDatabaseTree { this._model._assessmentResults.databaseAssessments.sort((db1, db2) => { return db2.issues.length - db1.issues.length; }); + // Reset the dbName list so that it is in sync with the table + this._dbNames = this._model._assessmentResults.databaseAssessments.map(da => da.name); this._model._assessmentResults.databaseAssessments.forEach((db) => { this._databaseTableValues.push( [ { value: selectedDbs.includes(db.name), + enabled: db.issues.length === 0, style: styleLeft }, { diff --git a/src/sql/azdata.proposed.d.ts b/src/sql/azdata.proposed.d.ts index 02b8ecd034..cc34f72562 100644 --- a/src/sql/azdata.proposed.d.ts +++ b/src/sql/azdata.proposed.d.ts @@ -256,7 +256,6 @@ declare module 'azdata' { rowCssStyles?: CssStyles; ariaLabel?: string; showCheckAll?: boolean; - isChecked?: boolean; } @@ -384,9 +383,23 @@ declare module 'azdata' { } export interface DeclarativeTableCellValue { + /** + * The cell value + */ value: string | number | boolean | Component; + /** + * The aria-label of the cell + */ ariaLabel?: string; - style?: CssStyles + /** + * The CSS style of the cell + */ + style?: CssStyles; + /** + * A boolean value indicates whether the cell is enabled. Default value is true. + * Note: this is currently only implemented for boolean type (checkbox). + */ + enabled?: boolean; } /** diff --git a/src/sql/base/browser/ui/checkbox/checkbox.ts b/src/sql/base/browser/ui/checkbox/checkbox.ts index 94f8d25d03..f4efa3b252 100644 --- a/src/sql/base/browser/ui/checkbox/checkbox.ts +++ b/src/sql/base/browser/ui/checkbox/checkbox.ts @@ -52,8 +52,8 @@ export class Checkbox extends Widget { this._label.setAttribute('for', id); this.label = opts.label; - this.enabled = opts.enabled || true; - this.checked = opts.checked || false; + this.enabled = opts.enabled ?? true; + this.checked = opts.checked ?? false; if (opts.onChange) { this.onChange(opts.onChange); diff --git a/src/sql/workbench/browser/modelComponents/declarativeTable.component.html b/src/sql/workbench/browser/modelComponents/declarativeTable.component.html index 09dddd9e22..909e8209e3 100644 --- a/src/sql/workbench/browser/modelComponents/declarativeTable.component.html +++ b/src/sql/workbench/browser/modelComponents/declarativeTable.component.html @@ -6,7 +6,7 @@ [ngStyle]="column.headerCssStyles" [attr.aria-label]="getHeaderAriaLabel(c)"> {{column.displayName}} - @@ -23,7 +23,7 @@ [ngStyle]="mergeCss(columns[c].rowCssStyles, cellData.style)" role="gridcell"> { - if (row[colIdx].value !== e) { + const cellData = row[colIdx]; + if (cellData.value !== e && cellData.enabled !== false) { this.onCellDataChanged(e, rowIdx, colIdx); } });