From 073003ba9ac1d9a66bc3de531876fe064e2769d9 Mon Sep 17 00:00:00 2001 From: Vito Date: Tue, 17 Oct 2017 15:11:06 +0100 Subject: [PATCH] [ADF-1740] disabling start process button when the process name is empty (#2483) * [ADF-1740] disabling start process button when the process name is empty * [ADF-1740] removed wrong fdescribe --- docs/form.component.md | 1 + .../src/assets/start-form.component.mock.ts | 4 ++++ .../src/components/form.component.spec.ts | 11 +++++++++++ .../src/components/form.component.ts | 6 ++++++ .../src/components/start-process.component.html | 3 ++- .../src/components/start-process.component.spec.ts | 9 ++++++++- .../src/components/start-process.component.ts | 4 ++++ 7 files changed, 36 insertions(+), 2 deletions(-) diff --git a/docs/form.component.md b/docs/form.component.md index 30df04832f..706a018c0f 100644 --- a/docs/form.component.md +++ b/docs/form.component.md @@ -114,6 +114,7 @@ and store the form field as metadata. The param nameNode is optional. | showTitle | boolean | true | Toggle rendering of the form title. | | showCompleteButton | boolean | true | Toggle rendering of the `Complete` outcome button. | | disableCompleteButton | boolean | false | The `Complete` outcome button is shown but it will be disabled. | +| disableStartProcessButton | boolean | false | The `Start Process` outcome button is shown but it will be disabled. | | showSaveButton | boolean | true | Toggle rendering of the `Save` outcome button. | | readOnly | boolean | false | Toggle readonly state of the form. Enforces all form widgets render readonly if enabled. | | showRefreshButton | boolean | true | Toggle rendering of the `Refresh` button. | diff --git a/ng2-components/ng2-activiti-form/src/assets/start-form.component.mock.ts b/ng2-components/ng2-activiti-form/src/assets/start-form.component.mock.ts index f7848e89ae..89830346bb 100644 --- a/ng2-components/ng2-activiti-form/src/assets/start-form.component.mock.ts +++ b/ng2-components/ng2-activiti-form/src/assets/start-form.component.mock.ts @@ -577,6 +577,10 @@ export let startMockForm = { { id: 'complete', name: 'Complete' + }, + { + id: 'start_process', + name: 'Start Process' } ], javascriptEvents: [], diff --git a/ng2-components/ng2-activiti-form/src/components/form.component.spec.ts b/ng2-components/ng2-activiti-form/src/components/form.component.spec.ts index d930f46f39..402591eb25 100644 --- a/ng2-components/ng2-activiti-form/src/components/form.component.spec.ts +++ b/ng2-components/ng2-activiti-form/src/components/form.component.spec.ts @@ -775,6 +775,17 @@ describe('FormComponent', () => { expect(formComponent.isOutcomeButtonEnabled(completeOutcome)).toBeFalsy(); }); + it('should disable start process outcome button when disableStartProcessButton is true', () => { + let formModel = new FormModel(); + formComponent.form = formModel; + formComponent.disableStartProcessButton = true; + + expect(formModel.isValid).toBeTruthy(); + let startProcessOutcome = formComponent.form.outcomes.find(outcome => outcome.name === FormOutcomeModel.START_PROCESS_ACTION); + + expect(formComponent.isOutcomeButtonEnabled(startProcessOutcome)).toBeFalsy(); + }); + it('should raise [executeOutcome] event for formService', (done) => { formService.executeOutcome.subscribe(() => { done(); diff --git a/ng2-components/ng2-activiti-form/src/components/form.component.ts b/ng2-components/ng2-activiti-form/src/components/form.component.ts index 61cf971797..052e3354f2 100644 --- a/ng2-components/ng2-activiti-form/src/components/form.component.ts +++ b/ng2-components/ng2-activiti-form/src/components/form.component.ts @@ -75,6 +75,9 @@ export class FormComponent implements OnInit, OnChanges { @Input() disableCompleteButton: boolean = false; + @Input() + disableStartProcessButton: boolean = false; + @Input() showSaveButton: boolean = true; @@ -148,6 +151,9 @@ export class FormComponent implements OnInit, OnChanges { if (outcome.name === FormOutcomeModel.COMPLETE_ACTION) { return this.disableCompleteButton ? false : this.form.isValid; } + if (outcome.name === FormOutcomeModel.START_PROCESS_ACTION) { + return this.disableStartProcessButton ? false : this.form.isValid; + } return this.form.isValid; } return false; diff --git a/ng2-components/ng2-activiti-processlist/src/components/start-process.component.html b/ng2-components/ng2-activiti-processlist/src/components/start-process.component.html index 4832f215b7..313fa7d80d 100644 --- a/ng2-components/ng2-activiti-processlist/src/components/start-process.component.html +++ b/ng2-components/ng2-activiti-processlist/src/components/start-process.component.html @@ -16,7 +16,8 @@ - diff --git a/ng2-components/ng2-activiti-processlist/src/components/start-process.component.spec.ts b/ng2-components/ng2-activiti-processlist/src/components/start-process.component.spec.ts index 37a045dea4..4ab548216c 100644 --- a/ng2-components/ng2-activiti-processlist/src/components/start-process.component.spec.ts +++ b/ng2-components/ng2-activiti-processlist/src/components/start-process.component.spec.ts @@ -353,7 +353,14 @@ describe('StartProcessInstanceComponent', () => { it('should enable start button when name and process filled out', async(() => { fixture.detectChanges(); let startButton = fixture.nativeElement.querySelector('#button-start'); - expect(startButton.enable).toBeFalsy(); + expect(startButton.disabled).toBeFalsy(); + })); + + it('should disable the start process button when process name is empty', async(() => { + component.name = ''; + fixture.detectChanges(); + let startButton = fixture.nativeElement.querySelector('#button-start'); + expect(startButton.disabled).toBeTruthy(); })); }); diff --git a/ng2-components/ng2-activiti-processlist/src/components/start-process.component.ts b/ng2-components/ng2-activiti-processlist/src/components/start-process.component.ts index c48fdf2d90..a7b4ba9911 100644 --- a/ng2-components/ng2-activiti-processlist/src/components/start-process.component.ts +++ b/ng2-components/ng2-activiti-processlist/src/components/start-process.component.ts @@ -154,4 +154,8 @@ export class StartProcessInstanceComponent implements OnChanges { } this.resetErrorMessage(); } + + hasProcessName(): boolean { + return this.name ? true : false; + } }