diff --git a/docs/process-services-cloud/components/start-process-cloud.component.md b/docs/process-services-cloud/components/start-process-cloud.component.md index d9f5d994b5..23e3ea98ed 100644 --- a/docs/process-services-cloud/components/start-process-cloud.component.md +++ b/docs/process-services-cloud/components/start-process-cloud.component.md @@ -52,6 +52,7 @@ Starts a process. | error | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`ProcessInstanceCloud`](../../../lib/process-services-cloud/src/lib/process/start-process/models/process-instance-cloud.model.ts)`>` | Emitted when an error occurs. | | formContentClicked | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`ContentLinkModel`](../../../lib/core/form/components/widgets/core/content-link.model.ts)`>` | Emitted when form content is clicked. | | success | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`ProcessInstanceCloud`](../../../lib/process-services-cloud/src/lib/process/start-process/models/process-instance-cloud.model.ts)`>` | Emitted when the process is successfully started. | +| processDefinitionSelection | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`ProcessDefinitionCloud`](../../../lib/process-services-cloud/src/lib/process/start-process/models/process-definition-cloud.model.ts)`>` | Emitted when process definition selection changes. | ## Details diff --git a/docs/process-services/components/start-process.component.md b/docs/process-services/components/start-process.component.md index 2feb4c9788..e533e3c51b 100644 --- a/docs/process-services/components/start-process.component.md +++ b/docs/process-services/components/start-process.component.md @@ -54,6 +54,7 @@ Starts a process. | cancel | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`ProcessInstance`](../../../lib/process-services/src/lib/process-list/models/process-instance.model.ts)`>` | Emitted when the process is canceled. | | error | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`ProcessInstance`](../../../lib/process-services/src/lib/process-list/models/process-instance.model.ts)`>` | Emitted when an error occurs. | | start | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`ProcessInstance`](../../../lib/process-services/src/lib/process-list/models/process-instance.model.ts)`>` | Emitted when the process starts. | +| processDefinitionSelection | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`ProcessDefinitionRepresentation`](../../../lib/process-services/src/lib/process-list/models/process-definition.model.ts)`>` | Emitted when process definition selection changes. | ## Details diff --git a/lib/process-services-cloud/src/lib/process/start-process/components/start-process-cloud.component.html b/lib/process-services-cloud/src/lib/process/start-process/components/start-process-cloud.component.html index 9b04581633..f16f48e118 100755 --- a/lib/process-services-cloud/src/lib/process/start-process/components/start-process-cloud.component.html +++ b/lib/process-services-cloud/src/lib/process/start-process/components/start-process-cloud.component.html @@ -33,7 +33,8 @@ id="processDefinitionName">
- + {{ getProcessDefinitionValue(processDef) }} diff --git a/lib/process-services-cloud/src/lib/process/start-process/components/start-process-cloud.component.spec.ts b/lib/process-services-cloud/src/lib/process/start-process/components/start-process-cloud.component.spec.ts index 5eded7c8b8..e5311a0ece 100755 --- a/lib/process-services-cloud/src/lib/process/start-process/components/start-process-cloud.component.spec.ts +++ b/lib/process-services-cloud/src/lib/process/start-process/components/start-process-cloud.component.spec.ts @@ -534,5 +534,14 @@ describe('StartProcessCloudComponent', () => { fixture.detectChanges(); expect(processInstanceName.valid).toBeTruthy(); }); + + it('should emit processDefinitionSelection event when a process definition is selected', (done) => { + component.processDefinitionSelection.subscribe((processDefinition) => { + expect(processDefinition).toEqual(fakeProcessDefinitions[0]); + done(); + }); + fixture.detectChanges(); + selectOptionByName(fakeProcessDefinitions[0].name); + }); }); }); diff --git a/lib/process-services-cloud/src/lib/process/start-process/components/start-process-cloud.component.ts b/lib/process-services-cloud/src/lib/process/start-process/components/start-process-cloud.component.ts index 9016563923..7ab5cdbc98 100755 --- a/lib/process-services-cloud/src/lib/process/start-process/components/start-process-cloud.component.ts +++ b/lib/process-services-cloud/src/lib/process/start-process/components/start-process-cloud.component.ts @@ -88,6 +88,10 @@ export class StartProcessCloudComponent implements OnChanges, OnInit, OnDestroy @Output() formContentClicked: EventEmitter = new EventEmitter(); + /** Emitted when process definition selection changes. */ + @Output() + processDefinitionSelection: EventEmitter = new EventEmitter(); + processDefinitionList: ProcessDefinitionCloud[] = []; processDefinitionCurrent: ProcessDefinitionCloud; errorMessageId: string = ''; @@ -312,6 +316,10 @@ export class StartProcessCloudComponent implements OnChanges, OnInit, OnDestroy this.formContentClicked.emit(content); } + processDefinitionSelectionChanged(processDefinition) { + this.processDefinitionSelection.emit(processDefinition); + } + ngOnDestroy() { this.onDestroy$.next(true); this.onDestroy$.complete(); diff --git a/lib/process-services/src/lib/process-list/components/start-process.component.html b/lib/process-services/src/lib/process-list/components/start-process.component.html index 58c1b8ee03..7f00fdd464 100644 --- a/lib/process-services/src/lib/process-list/components/start-process.component.html +++ b/lib/process-services/src/lib/process-list/components/start-process.component.html @@ -29,7 +29,8 @@ #auto="matAutocomplete" id="processDefinitionOptions" [displayWith]="displayFn"> - + {{ processDef.name }} diff --git a/lib/process-services/src/lib/process-list/components/start-process.component.spec.ts b/lib/process-services/src/lib/process-list/components/start-process.component.spec.ts index 60b8a91726..185bfb8a3e 100644 --- a/lib/process-services/src/lib/process-list/components/start-process.component.spec.ts +++ b/lib/process-services/src/lib/process-list/components/start-process.component.spec.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import { SimpleChange } from '@angular/core'; +import { DebugElement, SimpleChange } from '@angular/core'; import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { ActivitiContentService, AppConfigService, FormService, setupTestBed } from '@alfresco/adf-core'; import { of, throwError } from 'rxjs'; @@ -32,6 +32,7 @@ import { } from '../../mock'; import { StartProcessInstanceComponent } from './start-process.component'; import { ProcessTestingModule } from '../../testing/process.testing.module'; +import { By } from '@angular/platform-browser'; describe('StartFormComponent', () => { @@ -52,6 +53,19 @@ describe('StartFormComponent', () => { ] }); + const selectOptionByName = (name: string) => { + + const selectElement = fixture.nativeElement.querySelector('button#adf-select-process-dropdown'); + selectElement.click(); + fixture.detectChanges(); + const options: any = fixture.debugElement.queryAll(By.css('.mat-option-text')); + const currentOption = options.find( (option: DebugElement) => option.nativeElement.innerHTML.trim() === name ); + + if (currentOption) { + currentOption.nativeElement.click(); + } + }; + beforeEach(() => { appConfig = TestBed.get(AppConfigService); activitiContentService = TestBed.get(ActivitiContentService); @@ -490,6 +504,15 @@ describe('StartFormComponent', () => { fixture.detectChanges(); }); + it('should emit processDefinitionSelection event when a process definition is selected', (done) => { + component.processDefinitionSelection.subscribe((processDefinition) => { + expect(processDefinition).toEqual(testProcessDef); + done(); + }); + fixture.detectChanges(); + selectOptionByName(testProcessDef.name); + }); + it('should not emit start event when start the process without select a process and name', () => { component.name = null; component.selectedProcessDef = null; diff --git a/lib/process-services/src/lib/process-list/components/start-process.component.ts b/lib/process-services/src/lib/process-list/components/start-process.component.ts index 554035e43c..a629b471b1 100644 --- a/lib/process-services/src/lib/process-list/components/start-process.component.ts +++ b/lib/process-services/src/lib/process-list/components/start-process.component.ts @@ -91,6 +91,10 @@ export class StartProcessInstanceComponent implements OnChanges, OnInit, OnDestr @Output() error: EventEmitter = new EventEmitter(); + /** Emitted when process definition selection changes. */ + @Output() + processDefinitionSelection: EventEmitter = new EventEmitter(); + @ViewChild('startForm') startForm: StartFormComponent; @@ -320,4 +324,8 @@ export class StartProcessInstanceComponent implements OnChanges, OnInit, OnDestr get nameController(): AbstractControl { return this.processNameInput; } + + processDefinitionSelectionChanged(processDefinition) { + this.processDefinitionSelection.emit(processDefinition); + } }