diff --git a/lib/core/src/lib/datatable/components/datatable/datatable.component.spec.ts b/lib/core/src/lib/datatable/components/datatable/datatable.component.spec.ts index 82c90b3d36..700591cf45 100644 --- a/lib/core/src/lib/datatable/components/datatable/datatable.component.spec.ts +++ b/lib/core/src/lib/datatable/components/datatable/datatable.component.spec.ts @@ -397,22 +397,35 @@ describe('DataTable', () => { expect(dataSort).toEqual(dataSortObj); }); - it('should reset selection on mode change', () => { - spyOn(dataTable, 'resetSelection').and.callThrough(); + describe('Selection reset', () => { + beforeEach(() => { + spyOn(dataTable, 'resetSelection').and.callThrough(); - dataTable.data = new ObjectDataTableAdapter([{ name: '1' }, { name: '2' }], [new ObjectDataColumn({ key: 'name' })]); - const rows = dataTable.data.getRows(); - rows[0].isSelected = true; - rows[1].isSelected = true; + dataTable.data = new ObjectDataTableAdapter([{ name: '1' }, { name: '2' }], [new ObjectDataColumn({ key: 'name' })]); + const rows = dataTable.data.getRows(); - expect(rows[0].isSelected).toBeTruthy(); - expect(rows[1].isSelected).toBeTruthy(); + rows[0].isSelected = true; + rows[1].isSelected = true; - dataTable.ngOnChanges({ - selectionMode: new SimpleChange(null, 'multiple', false) + expect(rows[0].isSelected).toBeTruthy(); + expect(rows[1].isSelected).toBeTruthy(); }); - expect(dataTable.resetSelection).toHaveBeenCalled(); + it('should reset selection on mode change', () => { + dataTable.ngOnChanges({ + selectionMode: new SimpleChange(null, 'multiple', false) + }); + + expect(dataTable.selection).toEqual([]); + }); + + it('should reset selection on multiselect change', () => { + dataTable.ngOnChanges({ + multiselect: new SimpleChange(true, false, false) + }); + + expect(dataTable.selection).toEqual([]); + }); }); it('should select the row where isSelected is true', () => { diff --git a/lib/core/src/lib/datatable/components/datatable/datatable.component.ts b/lib/core/src/lib/datatable/components/datatable/datatable.component.ts index b9be4015c8..d1809a3b0b 100644 --- a/lib/core/src/lib/datatable/components/datatable/datatable.component.ts +++ b/lib/core/src/lib/datatable/components/datatable/datatable.component.ts @@ -302,6 +302,7 @@ export class DataTableComponent implements OnInit, AfterContentInit, OnChanges, const dataChanges = changes['data']; const rowChanges = changes['rows']; const columnChanges = changes['columns']; + const multiselectChanges = changes['multiselect']; if (this.isPropertyChanged(dataChanges) || this.isPropertyChanged(rowChanges) || this.isPropertyChanged(columnChanges)) { if (this.isTableEmpty()) { @@ -333,6 +334,10 @@ export class DataTableComponent implements OnInit, AfterContentInit, OnChanges, if (this.isPropertyChanged(changes['sorting'])) { this.setTableSorting(changes['sorting'].currentValue); } + + if (multiselectChanges?.currentValue === false) { + this.resetSelection(); + } } isColumnSortActive(column: DataColumn): boolean {