mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-07-24 17:32:15 +00:00
AAE-33909 Ensure onProcessFinish event triggers when invoked from onFormLoaded event (#10867)
* AAE-33909 Ensure onProcessFinish event triggers when invoked from onFormLoaded event * clean code * fix unit tests * update outcomes buttons * update
This commit is contained in:
@@ -18,6 +18,7 @@
|
||||
import { Directive, EventEmitter, Input, Output } from '@angular/core';
|
||||
import { ThemePalette } from '@angular/material/core';
|
||||
import { FormFieldModel, FormFieldValidator, FormModel, FormOutcomeEvent, FormOutcomeModel } from './widgets';
|
||||
import { isOutcomeButtonVisible } from './helpers/buttons-visibility';
|
||||
|
||||
@Directive({
|
||||
standalone: true
|
||||
@@ -103,10 +104,6 @@ export abstract class FormBaseComponent {
|
||||
*/
|
||||
formStyle: string = '';
|
||||
|
||||
get hasVisibleOutcomes(): boolean {
|
||||
return this.form?.outcomes?.some((outcome) => this.isOutcomeButtonVisible(outcome, this.form.readOnly));
|
||||
}
|
||||
|
||||
get form(): FormModel {
|
||||
return this._form;
|
||||
}
|
||||
@@ -169,22 +166,7 @@ export abstract class FormBaseComponent {
|
||||
}
|
||||
|
||||
isOutcomeButtonVisible(outcome: FormOutcomeModel, isFormReadOnly: boolean): boolean {
|
||||
if (outcome?.name) {
|
||||
if (outcome.name === FormOutcomeModel.COMPLETE_ACTION) {
|
||||
return this.showCompleteButton;
|
||||
}
|
||||
if (isFormReadOnly) {
|
||||
return outcome.isSelected;
|
||||
}
|
||||
if (outcome.name === FormOutcomeModel.SAVE_ACTION) {
|
||||
return this.showSaveButton;
|
||||
}
|
||||
if (outcome.name === FormOutcomeModel.START_PROCESS_ACTION) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
return isOutcomeButtonVisible(outcome, { isFormReadOnly, showCompleteButton: this.showCompleteButton, showSaveButton: this.showSaveButton });
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -73,6 +73,7 @@ export class FormFieldComponent implements OnInit, OnDestroy {
|
||||
if (w.adf === undefined) {
|
||||
w.adf = {};
|
||||
}
|
||||
|
||||
const originalField = this.getField();
|
||||
if (originalField) {
|
||||
const customTemplate = this.field.form.customFieldTemplates[originalField.type];
|
||||
|
@@ -40,7 +40,8 @@
|
||||
<section class="adf-grid-list-column-view" *ngIf="currentRootElement?.isExpanded">
|
||||
<div class="adf-grid-list-single-column"
|
||||
*ngFor="let column of currentRootElement?.columns"
|
||||
[style.width.%]="getColumnWidth(currentRootElement)">
|
||||
[style.width.%]="getColumnWidth(currentRootElement)"
|
||||
>
|
||||
<ng-container *ngFor="let field of column?.fields">
|
||||
<ng-container *ngIf="field.type === 'section'; else formField">
|
||||
<adf-form-section [field]="field"/>
|
||||
@@ -61,9 +62,11 @@
|
||||
</div>
|
||||
</ng-template>
|
||||
</div>
|
||||
|
||||
<div *ngIf="currentRootElement.type === 'dynamic-table'" class="adf-container-widget">
|
||||
<adf-form-field [field]="currentRootElement" />
|
||||
</div>
|
||||
|
||||
<div class="adf-container-widget"
|
||||
*ngIf="currentRootElement.type === 'readonly' && currentRootElement.field.params.field.type === 'dynamic-table'">
|
||||
<adf-form-field [field]="currentRootElement.field"/>
|
||||
|
@@ -0,0 +1,45 @@
|
||||
/*!
|
||||
* @license
|
||||
* Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { FormOutcomeModel } from '../widgets';
|
||||
|
||||
interface IsOutcomeButtonVisibleProps {
|
||||
isFormReadOnly: boolean;
|
||||
showCompleteButton: boolean;
|
||||
showSaveButton: boolean;
|
||||
}
|
||||
|
||||
export const isOutcomeButtonVisible = (outcome: FormOutcomeModel, props: IsOutcomeButtonVisibleProps): boolean => {
|
||||
const { isFormReadOnly, showCompleteButton, showSaveButton } = props;
|
||||
|
||||
if (outcome?.name) {
|
||||
if (outcome.name === FormOutcomeModel.COMPLETE_ACTION) {
|
||||
return showCompleteButton;
|
||||
}
|
||||
if (isFormReadOnly) {
|
||||
return outcome.isSelected;
|
||||
}
|
||||
if (outcome.name === FormOutcomeModel.SAVE_ACTION) {
|
||||
return showSaveButton;
|
||||
}
|
||||
if (outcome.name === FormOutcomeModel.START_PROCESS_ACTION) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
};
|
@@ -23,6 +23,7 @@ export * from './components/form-renderer.component';
|
||||
export * from './components/widgets';
|
||||
export * from './components/middlewares/middleware';
|
||||
export * from './components/middlewares/decimal-middleware.service';
|
||||
export * from './components/helpers/buttons-visibility';
|
||||
|
||||
export * from './services/form-rendering.service';
|
||||
export * from './services/form.service';
|
||||
|
Reference in New Issue
Block a user