diff --git a/docs/process-services-cloud/components/user-task-cloud.component.md b/docs/process-services-cloud/components/user-task-cloud.component.md index 814f6a9aa5..2170128d4b 100644 --- a/docs/process-services-cloud/components/user-task-cloud.component.md +++ b/docs/process-services-cloud/components/user-task-cloud.component.md @@ -40,7 +40,7 @@ Based on property taskDetails: TaskDetailsCloudModel shows a form or a screen. | readOnly | `boolean` | false | Toggle readonly state of the task. | | showCancelButton | `boolean` | true | Toggle rendering of the `Cancel` button. | | showCompleteButton | `boolean` | true | Toggle rendering of the `Complete` button. | -| showSaveButton | `boolean` | true | Toggle rendering of the `Save` button. | +| showNextTaskCheckbox | `boolean` | false | Toggle rendering of the `Open next task` checkbox. | | showTitle | `boolean` | true | Toggle rendering of the form title. | | showValidationIcon | `boolean` | true | Toggle rendering of the `Validation` icon. | | taskId | `string` | | Task id to fetch corresponding form and values. | diff --git a/lib/process-services-cloud/src/lib/screen/components/screen-cloud/screen-cloud.component.ts b/lib/process-services-cloud/src/lib/screen/components/screen-cloud/screen-cloud.component.ts index 33a781f9c3..19f1274f87 100644 --- a/lib/process-services-cloud/src/lib/screen/components/screen-cloud/screen-cloud.component.ts +++ b/lib/process-services-cloud/src/lib/screen/components/screen-cloud/screen-cloud.component.ts @@ -153,8 +153,8 @@ export class TaskScreenCloudComponent implements OnInit { if (this.rootProcessInstanceId && Object.prototype.hasOwnProperty.call(this.componentRef.instance, 'rootProcessInstanceId')) { this.componentRef.setInput('rootProcessInstanceId', this.rootProcessInstanceId); } - if (Object.prototype.hasOwnProperty.call(this.componentRef.instance, 'showNextTaskCheckbox')) { - this.componentRef.setInput('showNextTaskCheckbox', true); + if (this.showNextTaskCheckbox && Object.prototype.hasOwnProperty.call(this.componentRef.instance, 'showNextTaskCheckbox')) { + this.componentRef.setInput('showNextTaskCheckbox', this.showNextTaskCheckbox); } if (this.isNextTaskCheckboxChecked && Object.prototype.hasOwnProperty.call(this.componentRef.instance, 'isNextTaskCheckboxChecked')) { this.componentRef.setInput('isNextTaskCheckboxChecked', this.isNextTaskCheckboxChecked); diff --git a/lib/process-services-cloud/src/lib/task/task-form/components/user-task-cloud/user-task-cloud.component.html b/lib/process-services-cloud/src/lib/task/task-form/components/user-task-cloud/user-task-cloud.component.html index 08730c0757..8804d4d8c1 100644 --- a/lib/process-services-cloud/src/lib/task/task-form/components/user-task-cloud/user-task-cloud.component.html +++ b/lib/process-services-cloud/src/lib/task/task-form/components/user-task-cloud/user-task-cloud.component.html @@ -42,7 +42,7 @@ [showCancelButton]="showCancelButton" [taskName]="taskDetails.name" [taskId]="taskId" - [showNextTaskCheckbox]="canCompleteTask()" + [showNextTaskCheckbox]="showNextTaskCheckbox && canCompleteTask()" [isNextTaskCheckboxChecked]="isNextTaskCheckboxChecked" (cancelTask)="onCancelClick()" (claimTask)="onClaimTask()" diff --git a/lib/process-services-cloud/src/lib/task/task-form/components/user-task-cloud/user-task-cloud.component.spec.ts b/lib/process-services-cloud/src/lib/task/task-form/components/user-task-cloud/user-task-cloud.component.spec.ts index b881f43f64..864e99364c 100644 --- a/lib/process-services-cloud/src/lib/task/task-form/components/user-task-cloud/user-task-cloud.component.spec.ts +++ b/lib/process-services-cloud/src/lib/task/task-form/components/user-task-cloud/user-task-cloud.component.spec.ts @@ -514,7 +514,7 @@ describe('UserTaskCloudComponent', () => { expect(noFormTemplateTitleText).toBe(''); }); - it('should show [open next task] checkbox based on canCompleteTask result', () => { + it('should allow controlling [open next task] checkbox visibility', () => { taskDetails.formKey = 'my-screen'; component.taskDetails = { ...taskDetails }; component.getTaskType(); @@ -531,14 +531,66 @@ describe('UserTaskCloudComponent', () => { return screenComponent.showNextTaskCheckbox; }; - // Test case: canCompleteTask returns false - spy.and.returnValue(false); - fixture.detectChanges(); + const prepareTestCase = (testCase: { + showNextTaskCheckbox: boolean; + showCompleteButton: boolean; + readOnly: boolean; + canCompleteTask: boolean; + }): void => { + component.showNextTaskCheckbox = testCase.showNextTaskCheckbox; + component.showCompleteButton = testCase.showCompleteButton; + component.readOnly = testCase.readOnly; + spy.calls.reset(); + spy.and.returnValue(testCase.canCompleteTask); + fixture.detectChanges(); + }; + + prepareTestCase({ showNextTaskCheckbox: false, showCompleteButton: false, readOnly: false, canCompleteTask: false }); expect(isCheckboxShown()).toBeFalse(); - // Test case: canCompleteTask returns true - spy.and.returnValue(true); - fixture.detectChanges(); + prepareTestCase({ showNextTaskCheckbox: false, showCompleteButton: false, readOnly: false, canCompleteTask: true }); + expect(isCheckboxShown()).toBeFalse(); + + prepareTestCase({ showNextTaskCheckbox: false, showCompleteButton: false, readOnly: true, canCompleteTask: false }); + expect(isCheckboxShown()).toBeFalse(); + + prepareTestCase({ showNextTaskCheckbox: false, showCompleteButton: false, readOnly: true, canCompleteTask: true }); + expect(isCheckboxShown()).toBeFalse(); + + prepareTestCase({ showNextTaskCheckbox: false, showCompleteButton: true, readOnly: false, canCompleteTask: false }); + expect(isCheckboxShown()).toBeFalse(); + + prepareTestCase({ showNextTaskCheckbox: false, showCompleteButton: true, readOnly: false, canCompleteTask: true }); + expect(isCheckboxShown()).toBeFalse(); + + prepareTestCase({ showNextTaskCheckbox: false, showCompleteButton: true, readOnly: true, canCompleteTask: false }); + expect(isCheckboxShown()).toBeFalse(); + + prepareTestCase({ showNextTaskCheckbox: false, showCompleteButton: true, readOnly: true, canCompleteTask: true }); + expect(isCheckboxShown()).toBeFalse(); + + prepareTestCase({ showNextTaskCheckbox: true, showCompleteButton: false, readOnly: false, canCompleteTask: false }); + expect(isCheckboxShown()).toBeFalse(); + + prepareTestCase({ showNextTaskCheckbox: true, showCompleteButton: false, readOnly: false, canCompleteTask: true }); + expect(isCheckboxShown()).toBeFalse(); + + prepareTestCase({ showNextTaskCheckbox: true, showCompleteButton: false, readOnly: true, canCompleteTask: false }); + expect(isCheckboxShown()).toBeFalse(); + + prepareTestCase({ showNextTaskCheckbox: true, showCompleteButton: false, readOnly: true, canCompleteTask: true }); + expect(isCheckboxShown()).toBeFalse(); + + prepareTestCase({ showNextTaskCheckbox: true, showCompleteButton: true, readOnly: true, canCompleteTask: false }); + expect(isCheckboxShown()).toBeFalse(); + + prepareTestCase({ showNextTaskCheckbox: true, showCompleteButton: true, readOnly: true, canCompleteTask: true }); + expect(isCheckboxShown()).toBeFalse(); + + prepareTestCase({ showNextTaskCheckbox: true, showCompleteButton: true, readOnly: false, canCompleteTask: false }); + expect(isCheckboxShown()).toBeFalse(); + + prepareTestCase({ showNextTaskCheckbox: true, showCompleteButton: true, readOnly: false, canCompleteTask: true }); expect(isCheckboxShown()).toBeTrue(); }); diff --git a/lib/process-services-cloud/src/lib/task/task-form/components/user-task-cloud/user-task-cloud.component.ts b/lib/process-services-cloud/src/lib/task/task-form/components/user-task-cloud/user-task-cloud.component.ts index d030a0bda3..b0ae951e4b 100644 --- a/lib/process-services-cloud/src/lib/task/task-form/components/user-task-cloud/user-task-cloud.component.ts +++ b/lib/process-services-cloud/src/lib/task/task-form/components/user-task-cloud/user-task-cloud.component.ts @@ -112,6 +112,10 @@ export class UserTaskCloudComponent implements OnInit, OnChanges { @Input() customSaveButtonText: string = ''; + /** Toggle rendering of the `Open next task` checkbox (for screens only). */ + @Input() + showNextTaskCheckbox = false; + /** Whether the `Open next task` checkbox is checked by default or not. */ @Input() isNextTaskCheckboxChecked = false;