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);
}
});