mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-07-24 17:32:15 +00:00
[ADF-3196] fixed task selection and double click (#3484)
This commit is contained in:
@@ -55,7 +55,6 @@
|
||||
[ngStyle]="rowStyle"
|
||||
[ngClass]="getRowStyle(row)"
|
||||
(keyup)="onRowKeyUp(row, $event)">
|
||||
|
||||
<!-- Actions (left) -->
|
||||
<div *ngIf="actions && actionsPosition === 'left'" class="adf-datatable-table-cell">
|
||||
<button mat-icon-button [matMenuTriggerFor]="menu"
|
||||
|
@@ -319,27 +319,29 @@ describe('DataTable', () => {
|
||||
expect(dataTable.resetSelection).toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('should select first row when selectFirstRow set to true', () => {
|
||||
dataTable.selectFirstRow = true;
|
||||
dataTable.rows = [{ name: 'TEST1' }, { name: 'FAKE2' }, { name: 'TEST2' }, { name: 'FAKE2' }];
|
||||
it('should select the row where isSelected is true', () => {
|
||||
dataTable.rows = [
|
||||
{ name: 'TEST1' },
|
||||
{ name: 'FAKE2' },
|
||||
{ name: 'TEST2', isSelected : true },
|
||||
{ name: 'FAKE2' }];
|
||||
dataTable.data = new ObjectDataTableAdapter([],
|
||||
[new ObjectDataColumn({ key: 'name' })]
|
||||
);
|
||||
fixture.detectChanges();
|
||||
const rows = dataTable.data.getRows();
|
||||
expect(rows[0].isSelected).toBeTruthy();
|
||||
expect(rows[0].isSelected).toBeFalsy();
|
||||
expect(rows[1].isSelected).toBeFalsy();
|
||||
expect(rows[2].isSelected).toBeFalsy();
|
||||
expect(rows[2].isSelected).toBeTruthy();
|
||||
expect(rows[3].isSelected).toBeFalsy();
|
||||
});
|
||||
|
||||
it('should not select first row when selectFirstRow set to false', () => {
|
||||
dataTable.selectFirstRow = false;
|
||||
it('should not select any row when isSelected is not defined', () => {
|
||||
const dataRows =
|
||||
[
|
||||
{ name: 'TEST1' },
|
||||
{ name: 'FAKE2' },
|
||||
{ name: 'TEST2' },
|
||||
{ name: 'FAKE2' }
|
||||
{ name: 'TEST2' }
|
||||
];
|
||||
dataTable.data = new ObjectDataTableAdapter(dataRows,
|
||||
[new ObjectDataColumn({ key: 'name' })]
|
||||
|
@@ -74,10 +74,6 @@ export class DataTableComponent implements AfterContentInit, OnChanges, DoCheck,
|
||||
@Input()
|
||||
columns: any[] = [];
|
||||
|
||||
/* Toggles default selection of the first row */
|
||||
@Input()
|
||||
selectFirstRow: boolean = true;
|
||||
|
||||
/** Row selection mode. Can be none, `single` or `multiple`. For `multiple` mode,
|
||||
* you can use Cmd (macOS) or Ctrl (Win) modifier key to toggle selection for multiple rows.
|
||||
*/
|
||||
@@ -202,7 +198,7 @@ export class DataTableComponent implements AfterContentInit, OnChanges, DoCheck,
|
||||
this.initTable();
|
||||
} else {
|
||||
this.data = changes['data'].currentValue;
|
||||
this.setupData(this.data);
|
||||
this.resetSelection();
|
||||
}
|
||||
return;
|
||||
}
|
||||
@@ -212,7 +208,6 @@ export class DataTableComponent implements AfterContentInit, OnChanges, DoCheck,
|
||||
this.initTable();
|
||||
} else {
|
||||
this.setTableRows(changes['rows'].currentValue);
|
||||
this.setupData(this.data);
|
||||
}
|
||||
return;
|
||||
}
|
||||
@@ -239,7 +234,7 @@ export class DataTableComponent implements AfterContentInit, OnChanges, DoCheck,
|
||||
}
|
||||
|
||||
convertToRowsData(rows: any []): ObjectDataRow[] {
|
||||
return rows.map(row => new ObjectDataRow(row));
|
||||
return rows.map(row => new ObjectDataRow(row, row.isSelected));
|
||||
}
|
||||
|
||||
convertToDataSorting(sorting: any[]): DataSorting {
|
||||
@@ -301,23 +296,8 @@ export class DataTableComponent implements AfterContentInit, OnChanges, DoCheck,
|
||||
|
||||
private initTable() {
|
||||
this.data = new ObjectDataTableAdapter(this.rows, this.columns);
|
||||
this.setupData(this.data);
|
||||
this.rowMenuCache = {};
|
||||
}
|
||||
|
||||
private setupData(adapter: DataTableAdapter) {
|
||||
if (this.dataRowsChanged) {
|
||||
this.dataRowsChanged.unsubscribe();
|
||||
this.dataRowsChanged = null;
|
||||
}
|
||||
|
||||
this.resetSelection();
|
||||
|
||||
if (adapter && adapter.rowsChanged) {
|
||||
this.dataRowsChanged = adapter.rowsChanged.subscribe(() => {
|
||||
this.resetSelection();
|
||||
});
|
||||
}
|
||||
this.rowMenuCache = {};
|
||||
}
|
||||
|
||||
isTableEmpty() {
|
||||
@@ -326,21 +306,8 @@ export class DataTableComponent implements AfterContentInit, OnChanges, DoCheck,
|
||||
|
||||
private setTableRows(rows: any[]) {
|
||||
if (this.data) {
|
||||
if (rows && rows.length > 0) {
|
||||
this.resetSelection();
|
||||
}
|
||||
this.resetSelection();
|
||||
this.data.setRows(this.convertToRowsData(rows));
|
||||
this.selectFirst();
|
||||
}
|
||||
}
|
||||
|
||||
private selectFirst() {
|
||||
if (this.selectFirstRow) {
|
||||
if (this.data && this.data.getRows().length > 0) {
|
||||
let row = this.data.getRows()[0];
|
||||
row.isSelected = true;
|
||||
this.data.selectedRow = row;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user