From 96557e5f6b637dcf024f00fd6c27ec5e9491aaa6 Mon Sep 17 00:00:00 2001 From: Denys Vuika Date: Thu, 20 Jul 2017 17:43:55 +0100 Subject: [PATCH] [ADF-1134] selection management fixes (#2109) * selection management fixes * remove dual behaviour --- .../datatable/datatable.component.ts | 39 ++++++++++--------- .../src/components/document-list.component.ts | 6 ++- 2 files changed, 24 insertions(+), 21 deletions(-) diff --git a/ng2-components/ng2-alfresco-datatable/src/components/datatable/datatable.component.ts b/ng2-components/ng2-alfresco-datatable/src/components/datatable/datatable.component.ts index a6333d3a29..6182458468 100644 --- a/ng2-components/ng2-alfresco-datatable/src/components/datatable/datatable.component.ts +++ b/ng2-components/ng2-alfresco-datatable/src/components/datatable/datatable.component.ts @@ -147,6 +147,7 @@ export class DataTableComponent implements AfterContentInit, OnChanges, DoCheck if (changes.selectionMode && !changes.selectionMode.isFirstChange()) { this.resetSelection(); + this.emitRowSelectionEvent('row-unselect', null); } } @@ -244,20 +245,12 @@ export class DataTableComponent implements AfterContentInit, OnChanges, DoCheck if (row) { if (this.data) { const newValue = !row.isSelected; - const domEventName = newValue ? 'row-select' : 'row-unselect'; - const domEvent = new CustomEvent(domEventName, { - detail: { - row: row, - selection: this.selection - }, - bubbles: true - }); if (this.isSingleSelectionMode()) { this.resetSelection(); this.selectRow(row, newValue); - this.elementRef.nativeElement.dispatchEvent(domEvent); + this.emitRowSelectionEvent(domEventName, row); } if (this.isMultiSelectionMode()) { @@ -266,7 +259,7 @@ export class DataTableComponent implements AfterContentInit, OnChanges, DoCheck this.resetSelection(); } this.selectRow(row, newValue); - this.elementRef.nativeElement.dispatchEvent(domEvent); + this.emitRowSelectionEvent(domEventName, row); } } @@ -315,6 +308,11 @@ export class DataTableComponent implements AfterContentInit, OnChanges, DoCheck this.selectRow(rows[i], e.checked); } } + + const domEventName = e.checked ? 'row-select' : 'row-unselect'; + const row = this.selection.length > 0 ? this.selection[0] : null; + + this.emitRowSelectionEvent(domEventName, row); } } @@ -324,15 +322,7 @@ export class DataTableComponent implements AfterContentInit, OnChanges, DoCheck this.selectRow(row, newValue); const domEventName = newValue ? 'row-select' : 'row-unselect'; - const domEvent = new CustomEvent(domEventName, { - detail: { - row: row, - selection: this.selection - }, - bubbles: true - }); - - this.elementRef.nativeElement.dispatchEvent(domEvent); + this.emitRowSelectionEvent(domEventName, row); } onImageLoadingError(event: Event) { @@ -428,4 +418,15 @@ export class DataTableComponent implements AfterContentInit, OnChanges, DoCheck } } } + + private emitRowSelectionEvent(name: string, row: DataRow) { + const domEvent = new CustomEvent(name, { + detail: { + row: row, + selection: this.selection + }, + bubbles: true + }); + this.elementRef.nativeElement.dispatchEvent(domEvent); + } } diff --git a/ng2-components/ng2-alfresco-documentlist/src/components/document-list.component.ts b/ng2-components/ng2-alfresco-documentlist/src/components/document-list.component.ts index d71cf93b89..157224561f 100644 --- a/ng2-components/ng2-alfresco-documentlist/src/components/document-list.component.ts +++ b/ng2-components/ng2-alfresco-documentlist/src/components/document-list.component.ts @@ -511,7 +511,8 @@ export class DocumentListComponent implements OnInit, OnChanges, AfterContentIni detail: { node: event.row.node, selection: this.selection - } + }, + bubbles: true }); this.elementRef.nativeElement.dispatchEvent(domEvent); } @@ -522,7 +523,8 @@ export class DocumentListComponent implements OnInit, OnChanges, AfterContentIni detail: { node: event.row.node, selection: this.selection - } + }, + bubbles: true }); this.elementRef.nativeElement.dispatchEvent(domEvent); }