diff --git a/docs/process-services/components/process-list.component.md b/docs/process-services/components/process-list.component.md index 242cdf486e..b38957458f 100644 --- a/docs/process-services/components/process-list.component.md +++ b/docs/process-services/components/process-list.component.md @@ -77,6 +77,7 @@ when the process list is empty: | rowClick | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`` | Emitted when a row in the process list is clicked. | | showRowContextMenu | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`DataCellEvent`](../../../lib/core/src/lib/datatable/components/data-cell.event.ts)`>` | Emitted before the context menu is displayed for a row. | | success | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`ProcessListModel`](../../../lib/process-services/src/lib/process-list/models/process-list.model.ts)`>` | Emitted when the list of process instances has been loaded successfully from the server. | +| rowsSelected | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`ObjectDataRow[]`](../../../lib/core/src/lib/datatable/data/object-datarow.model.ts)`>` | Emmitted when rows are selected or unselected. | ## Details diff --git a/lib/process-services/src/lib/process-list/components/process-list/process-list.component.html b/lib/process-services/src/lib/process-list/components/process-list/process-list.component.html index 94dbc0540a..e299f85906 100644 --- a/lib/process-services/src/lib/process-list/components/process-list/process-list.component.html +++ b/lib/process-services/src/lib/process-list/components/process-list/process-list.component.html @@ -13,7 +13,10 @@ [contextMenu]="showContextMenu" (showRowContextMenu)="onShowRowContextMenu($event)" (rowClick)="onRowClick($event)" - (row-keyup)="onRowKeyUp($any($event))"> + (row-keyup)="onRowKeyUp($any($event))" + (row-select)="onRowCheckboxToggle($any($event))" + (row-unselect)="onRowCheckboxToggle($any($event))" +> { expect(triggered).toBeFalsy(); }); + it('should emit rowsSelected event when a row is selected', (done) => { + const row = new ObjectDataRow({ obj: fakeProcessInstance.data[0] }); + const customEvent = new CustomEvent('row-select', { detail: { selection: [row] } }); + + component.rowsSelected.subscribe((selection) => { + expect(selection).toEqual([row]); + done(); + }); + + component.onRowCheckboxToggle(customEvent); + }); + + it('should emit rowsSelected event when a row is unselected', (done) => { + const customEvent = new CustomEvent('row-unselect', { detail: { selection: [] } }); + + component.rowsSelected.subscribe((selection) => { + expect(selection).toEqual([]); + done(); + }); + + component.onRowCheckboxToggle(customEvent); + }); + it('should show custom resolved value in the column', async () => { appConfig.config['adf-process-list'] = { presets: { diff --git a/lib/process-services/src/lib/process-list/components/process-list/process-list.component.ts b/lib/process-services/src/lib/process-list/components/process-list/process-list.component.ts index 3cb8f2d918..5b33fb1c8d 100644 --- a/lib/process-services/src/lib/process-list/components/process-list/process-list.component.ts +++ b/lib/process-services/src/lib/process-list/components/process-list/process-list.component.ts @@ -32,7 +32,8 @@ import { EmptyContentComponent, DataTableComponent, LoadingContentTemplateDirective, - NoContentTemplateDirective + NoContentTemplateDirective, + ObjectDataRow } from '@alfresco/adf-core'; import { AfterContentInit, Component, ContentChild, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core'; import { ProcessService } from '../../services/process.service'; @@ -181,6 +182,10 @@ export class ProcessInstanceListComponent extends DataTableSchema implements OnC @Output() error = new EventEmitter(); + /** Emitted when rows are selected/unselected */ + @Output() + rowsSelected = new EventEmitter(); + requestNode: ProcessInstanceQueryRepresentation; currentInstanceId: string; isLoading: boolean = true; @@ -275,6 +280,10 @@ export class ProcessInstanceListComponent extends DataTableSchema implements OnC this.rowClick.emit(this.currentInstanceId); } + onRowCheckboxToggle(event: CustomEvent) { + this.rowsSelected.emit([...event.detail.selection]); + } + /** * Emit the event rowClick passing the current task id when pressed the Enter key on the selected row *