[ACS-7430] Process Library improvements and cleanup (#9720)

This commit is contained in:
Denys Vuika 2024-06-03 11:11:55 -04:00 committed by GitHub
parent f1167b1bc5
commit ad1904ce41
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
152 changed files with 798 additions and 855 deletions

View File

@ -34,12 +34,7 @@ const routes: Routes = [
];
@NgModule({
imports: [
CommonModule,
RouterModule.forChild(routes),
CoreModule,
ProcessModule.forChild()
],
imports: [CommonModule, RouterModule.forChild(routes), CoreModule, ProcessModule],
declarations: [ProcessListDemoComponent]
})
export class AppProcessListModule {}

View File

@ -34,7 +34,7 @@ const routes: Routes = [
];
@NgModule({
imports: [CommonModule, RouterModule.forChild(routes), CoreModule, ProcessModule.forChild(), LocalizedDatePipe, FullNamePipe],
imports: [CommonModule, RouterModule.forChild(routes), CoreModule, ProcessModule, LocalizedDatePipe, FullNamePipe],
declarations: [TaskListDemoComponent]
})
export class AppTaskListModule {}

View File

@ -120,7 +120,7 @@ for more information about installing and using the source code.
| [Sidenav Layout component](core/components/sidenav-layout.component.md) | Displays the standard three-region ADF application layout. | [Source](../lib/core/src/lib/layout/components/sidenav-layout/sidenav-layout.component.ts) |
| [Snackbar Content Component](core/components/snackbar-content.component.md) | Custom content for Snackbar which allows use icon as action. | [Source](../lib/core/src/lib/snackbar-content/snackbar-content.component.ts) |
| [Sorting Picker Component](core/components/sorting-picker.component.md) | Selects from a set of predefined sorting definitions and directions. | [Source](../lib/core/src/lib/sorting-picker/sorting-picker.component.ts) |
| [Start Form component](core/components/start-form.component.md) | Displays the Start Form for a process. | [Source](../lib/process-services/src/lib/form/start-form.component.ts) |
| [Start Form component](core/components/start-form.component.md) | Displays the Start Form for a process. | [Source](../lib/process-services/src/lib/form/start-form/start-form.component.ts) |
| [Text Mask directive](core/components/text-mask.component.md) | Implements text field input masks. | [Source](../lib/core/src/lib/form/components/widgets/text/text-mask.component.ts) |
| [Toolbar Divider Component](core/components/toolbar-divider.component.md) | Divides groups of elements in a Toolbar with a visual separator. | [Source](../lib/core/src/lib/toolbar/toolbar-divider.component.ts) |
| [Toolbar Title Component](core/components/toolbar-title.component.md) | Supplies custom HTML to be included in a Toolbar component title. | [Source](../lib/core/src/lib/toolbar/toolbar-title.component.ts) |
@ -192,7 +192,7 @@ for more information about installing and using the source code.
| [APS Alfresco Content Service](core/services/activiti-alfresco.service.md) | Gets Alfresco Repository folder content based on a Repository account configured in Alfresco Process Services (APS). | [Source](../lib/process-services/src/lib/form/services/activiti-alfresco.service.ts) |
| [Alfresco Api Service](core/services/alfresco-api.service.md) | Provides access to an initialized AlfrescoJSApi instance. | [Source](../lib/core/src/lib/services/alfresco-api.service.ts) |
| [App Config service](core/services/app-config.service.md) | Supports app configuration settings, stored server side. | [Source](../lib/core/src/lib/app-config/app-config.service.ts) |
| [Apps Process service](core/services/apps-process.service.md) | Gets details of the Process Services apps that are deployed for the user. | [Source](../lib/process-services/src/lib/app-list/services/apps-process.service.ts) |
| [Apps Process service](core/services/apps-process.service.md) | Gets details of the Process Services apps that are deployed for the user. | [Source](../lib/process-services/src/lib/services/apps-process.service.ts) |
| [Auth Guard Bpm service](core/services/auth-guard-bpm.service.md) | Adds authentication with Process Services to a route within the app. | [Source](../lib/core/src/lib/auth/guard/auth-guard-bpm.service.ts) |
| [Auth Guard Ecm service](core/services/auth-guard-ecm.service.md) | Adds authentication with Content Services to a route within the app. | [Source](../lib/core/src/lib/auth/guard/auth-guard-ecm.service.ts) |
| [Auth Guard SSO Role service](core/services/auth-guard-sso-role.service.md) | Checks the user roles of a user. | [Source](../lib/core/src/lib/auth/guard/auth-guard-sso-role.service.ts) |
@ -394,7 +394,7 @@ for more information about installing and using the source code.
| [Security Controls service](content-services/services/security-controls.service.md) | Manages security groups & marks in Content Services. | [Source](../lib/content-services/src/lib/security/services/security-controls-groups-marks-security.service.ts) |
| [Sites service](content-services/services/sites.service.md) | Accesses and manipulates sites from a Content Services repository. | [Source](../lib/content-services/src/lib/common/services/sites.service.ts) |
| [Tag service](content-services/services/tag.service.md) | Manages tags in Content Services. | [Source](../lib/content-services/src/lib/tag/services/tag.service.ts) |
| [Task Comments service](content-services/services/task-comments.service.md) | Adds and retrieves comments for task and process instances in Process Services. | [Source](../lib/process-services/src/lib/task-comments/services/task-comments.service.ts) |
| [Task Comments service](content-services/services/task-comments.service.md) | Adds and retrieves comments for task and process instances in Process Services. | [Source](../lib/process-services/src/lib/task-comments/task-comments.service.ts) |
<!--content-services end-->
@ -414,8 +414,8 @@ for more information about installing and using the source code.
| Name | Description | Source link |
| ---- | ----------- | ----------- |
| [Apps List Component](process-services/components/apps-list.component.md) | Shows all available apps. | [Source](../lib/process-services/src/lib/app-list/apps-list.component.ts) |
| [Attach Form component](process-services/components/attach-form.component.md) | This component can be used when there is no form attached to a task and you want to add one. | [Source](../lib/process-services/src/lib/task-list/components/attach-form.component.ts) |
| [Checklist Component](process-services/components/checklist.component.md) | Shows the checklist task functionality. | [Source](../lib/process-services/src/lib/task-list/components/checklist.component.ts) |
| [Attach Form component](process-services/components/attach-form.component.md) | This component can be used when there is no form attached to a task and you want to add one. | [Source](../lib/process-services/src/lib/task-list/components/attach-form/attach-form.component.ts) |
| [Checklist Component](process-services/components/checklist.component.md) | Shows the checklist task functionality. | [Source](../lib/process-services/src/lib/task-list/components/checklist/checklist.component.ts) |
| [Create Process Attachment component](process-services/components/create-process-attachment.component.md) | Displays an Upload Component (Drag and Click) to upload the attachment to a specified process instance. | [Source](../lib/process-services/src/lib/attachment/create-process-attachment/create-process-attachment.component.ts) |
| [Create Task Attachment Component](process-services/components/create-task-attachment.component.md) | Displays an Upload Component (Drag and Click) to upload the attachment to a specified task. | [Source](../lib/process-services/src/lib/attachment/create-task-attachment/create-task-attachment.component.ts) |
| [Form custom outcomes component](process-services/components/form-custom-outcome.component.md) | Supplies custom outcome buttons to be included in Form component. | [Source](../lib/process-services/src/lib/form/form-custom-outcomes.component.ts) |
@ -425,31 +425,31 @@ for more information about installing and using the source code.
| [People Component](process-services/components/people.component.md) | Displays users involved with a specified task | [Source](../lib/process-services/src/lib/people/components/people/people.component.ts) |
| [Process Attachment List component](process-services/components/process-attachment-list.component.md) | Displays documents attached to a specified process instance. | [Source](../lib/process-services/src/lib/attachment/process-attachment-list/process-attachment-list.component.ts) |
| [Process Instance Comments component](process-services/components/process-comments.component.md) | Displays comments associated with a particular process instance and allows the user to add new comments. | [Source](../lib/process-services/src/lib/process-comments/process-comments.component.ts) |
| [Process Filters Component](process-services/components/process-filters.component.md) | Collection of criteria used to filter process instances, which may be customized by users. | [Source](../lib/process-services/src/lib/process-list/components/process-filters.component.ts) |
| [Process Details component](process-services/components/process-instance-details.component.md) | Displays detailed information about a specified process instance | [Source](../lib/process-services/src/lib/process-list/components/process-instance-details.component.ts) |
| [Process Instance Details Header component](process-services/components/process-instance-header.component.md) | Sub-component of the process details component, which renders some general information about the selected process. | [Source](../lib/process-services/src/lib/process-list/components/process-instance-header.component.ts) |
| [Process Instance Tasks component](process-services/components/process-instance-tasks.component.md) | Lists both the active and completed tasks associated with a particular process instance | [Source](../lib/process-services/src/lib/process-list/components/process-instance-tasks.component.ts) |
| [Process Instance List](process-services/components/process-list.component.md) | Renders a list containing all the process instances matched by the parameters specified. | [Source](../lib/process-services/src/lib/process-list/components/process-list.component.ts) |
| [Process Filters Component](process-services/components/process-filters.component.md) | Collection of criteria used to filter process instances, which may be customized by users. | [Source](../lib/process-services/src/lib/process-list/components/process-filters/process-filters.component.ts) |
| [Process Details component](process-services/components/process-instance-details.component.md) | Displays detailed information about a specified process instance | [Source](../lib/process-services/src/lib/process-list/components/process-instance-details/process-instance-details.component.ts) |
| [Process Instance Details Header component](process-services/components/process-instance-header.component.md) | Sub-component of the process details component, which renders some general information about the selected process. | [Source](../lib/process-services/src/lib/process-list/components/process-instance-header/process-instance-header.component.ts) |
| [Process Instance Tasks component](process-services/components/process-instance-tasks.component.md) | Lists both the active and completed tasks associated with a particular process instance | [Source](../lib/process-services/src/lib/process-list/components/process-instance-tasks/process-instance-tasks.component.ts) |
| [Process Instance List](process-services/components/process-list.component.md) | Renders a list containing all the process instances matched by the parameters specified. | [Source](../lib/process-services/src/lib/process-list/components/process-list/process-list.component.ts) |
| [Process User Info component](process-services/components/process-user-info.component.md) | Shows user information for PROCESS and ALL mode. | [Source](../lib/process-services/src/lib/process-user-info/process-user-info.component.ts) |
| [Select App Component](process-services/components/select-apps-dialog.component.md) | Shows all available apps and returns the selected app. | [Source](../lib/process-services/src/lib/app-list/select-apps-dialog/select-apps-dialog.component.ts) |
| [Start Process component](process-services/components/start-process.component.md) | Starts a process. | [Source](../lib/process-services/src/lib/process-list/components/start-process.component.ts) |
| [Start Task Component](process-services/components/start-task.component.md) | Creates/Starts a new task for the specified app. | [Source](../lib/process-services/src/lib/task-list/components/start-task.component.ts) |
| [Start Process component](process-services/components/start-process.component.md) | Starts a process. | [Source](../lib/process-services/src/lib/process-list/components/start-process/start-process.component.ts) |
| [Start Task Component](process-services/components/start-task.component.md) | Creates/Starts a new task for the specified app. | [Source](../lib/process-services/src/lib/task-list/components/start-task/start-task.component.ts) |
| [Task Attachment List Component](process-services/components/task-attachment-list.component.md) | Displays documents attached to a specified task. | [Source](../lib/process-services/src/lib/attachment/task-attachment-list/task-attachment-list.component.ts) |
| [Task Comments Component](process-services/components/task-comments.component.md) | Displays comments from users involved in a specified task and allows an involved user to add a comment to a task. | [Source](../lib/process-services/src/lib/task-comments/task-comments.component.ts) |
| [Task Details component](process-services/components/task-details.component.md) | Shows the details of the task ID passed in as input. | [Source](../lib/process-services/src/lib/task-list/components/task-details.component.ts) |
| [Task Filters component](process-services/components/task-filters.component.md) | Shows all available filters. | [Source](../lib/process-services/src/lib/task-list/components/task-filters.component.ts) |
| [Task Details component](process-services/components/task-details.component.md) | Shows the details of the task ID passed in as input. | [Source](../lib/process-services/src/lib/task-list/components/task-details/task-details.component.ts) |
| [Task Filters component](process-services/components/task-filters.component.md) | Shows all available filters. | [Source](../lib/process-services/src/lib/task-list/components/task-filters/task-filters.component.ts) |
| [Task Form component](process-services/components/task-form.component.md) | Shows a form for a task. | [Source](../lib/process-services/src/lib/task-list/components/task-form/task-form.component.ts) |
| [Task Header component](process-services/components/task-header.component.md) | Shows all the information related to a task. | [Source](../lib/process-services/src/lib/task-list/components/task-header.component.ts) |
| [Task List component](process-services/components/task-list.component.md) | Renders a list containing all the tasks matched by the parameters specified. | [Source](../lib/process-services/src/lib/task-list/components/task-list.component.ts) |
| [Task Standalone component](process-services/components/task-standalone.component.md) | This component can be used when the task doesn't belong to any processes. | [Source](../lib/process-services/src/lib/task-list/components/task-standalone.component.ts) |
| [Task Header component](process-services/components/task-header.component.md) | Shows all the information related to a task. | [Source](../lib/process-services/src/lib/task-list/components/task-header/task-header.component.ts) |
| [Task List component](process-services/components/task-list.component.md) | Renders a list containing all the tasks matched by the parameters specified. | [Source](../lib/process-services/src/lib/task-list/components/task-list/task-list.component.ts) |
| [Task Standalone component](process-services/components/task-standalone.component.md) | This component can be used when the task doesn't belong to any processes. | [Source](../lib/process-services/src/lib/task-list/components/task-standalone/task-standalone.component.ts) |
### Directives
| Name | Description | Source link |
| ---- | ----------- | ----------- |
| [Claim Task Directive](process-services/directives/claim-task.directive.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Claims a task | [Source](../lib/process-services/src/lib/task-list/components/task-form/claim-task.directive.ts) |
| [Process Audit Directive](process-services/directives/process-audit.directive.md) | Fetches the Process Audit information in PDF or JSON format. | [Source](../lib/process-services/src/lib/process-list/components/process-audit.directive.ts) |
| [Task Audit Directive](process-services/directives/task-audit.directive.md) | Fetches the Task Audit information in PDF or JSON format. | [Source](../lib/process-services/src/lib/task-list/components/task-audit.directive.ts) |
| [Process Audit Directive](process-services/directives/process-audit.directive.md) | Fetches the Process Audit information in PDF or JSON format. | [Source](../lib/process-services/src/lib/process-list/components/process-audit/process-audit.directive.ts) |
| [Task Audit Directive](process-services/directives/task-audit.directive.md) | Fetches the Task Audit information in PDF or JSON format. | [Source](../lib/process-services/src/lib/task-list/components/task-audit/task-audit.directive.ts) |
| [Unclaim Task Directive](process-services/directives/unclaim-task.directive.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Unclaims a task | [Source](../lib/process-services/src/lib/task-list/components/task-form/unclaim-task.directive.ts) |
### Services

View File

@ -5,7 +5,7 @@ Status: Active
Last reviewed: 2018-06-08
---
# [Start Form component](../../../lib/process-services/src/lib/form/start-form.component.ts "Defined in start-form.component.ts")
# [Start Form component](../../../lib/process-services/src/lib/form/start-form/start-form.component.ts "Defined in start-form.component.ts")
Displays the Start [`Form`](../../../lib/process-services/src/lib/task-list/models/form.model.ts) for a process.

View File

@ -5,7 +5,7 @@ Status: Active
Last reviewed: 2018-11-16
---
# [Apps Process service](../../../lib/process-services/src/lib/app-list/services/apps-process.service.ts "Defined in apps-process.service.ts")
# [Apps Process service](../../../lib/process-services/src/lib/services/apps-process.service.ts "Defined in apps-process.service.ts")
Gets details of the Process Services apps that are deployed for the user.

View File

@ -5,7 +5,7 @@ Status: Active
Last reviewed: 2018-11-20
---
# [Attach Form component](../../../lib/process-services/src/lib/task-list/components/attach-form.component.ts "Defined in attach-form.component.ts")
# [Attach Form component](../../../lib/process-services/src/lib/task-list/components/attach-form/attach-form.component.ts "Defined in attach-form.component.ts")
This component can be used when there is no form attached to a task and you want to add one.

View File

@ -5,7 +5,7 @@ Status: Active
Last reviewed: 2018-11-19
---
# [Process Details component](../../../lib/process-services/src/lib/process-list/components/process-instance-details.component.ts "Defined in process-instance-details.component.ts")
# [Process Details component](../../../lib/process-services/src/lib/process-list/components/process-instance-details/process-instance-details.component.ts "Defined in process-instance-details.component.ts")
Displays detailed information about a specified process instance

View File

@ -5,7 +5,7 @@ Status: Active
Last reviewed: 2019-01-14
---
# [Process Instance Details Header component](../../../lib/process-services/src/lib/process-list/components/process-instance-header.component.ts "Defined in process-instance-header.component.ts")
# [Process Instance Details Header component](../../../lib/process-services/src/lib/process-list/components/process-instance-header/process-instance-header.component.ts "Defined in process-instance-header.component.ts")
Sub-component of the process details component, which renders some general information about the selected process.

View File

@ -5,7 +5,7 @@ Status: Active
Last reviewed: 2018-11-19
---
# [Process Instance Tasks component](../../../lib/process-services/src/lib/process-list/components/process-instance-tasks.component.ts "Defined in process-instance-tasks.component.ts")
# [Process Instance Tasks component](../../../lib/process-services/src/lib/process-list/components/process-instance-tasks/process-instance-tasks.component.ts "Defined in process-instance-tasks.component.ts")
Lists both the active and completed tasks associated with a particular process instance

View File

@ -5,7 +5,7 @@ Status: Active
Last reviewed: 2019-01-16
---
# [Process Instance List](../../../lib/process-services/src/lib/process-list/components/process-list.component.ts "Defined in process-list.component.ts")
# [Process Instance List](../../../lib/process-services/src/lib/process-list/components/process-list/process-list.component.ts "Defined in process-list.component.ts")
Renders a list containing all the process instances matched by the parameters specified.
@ -195,7 +195,7 @@ The Process Instance List also supports pagination:
Emitted before the context menu is displayed for a row.
Note that the [`ProcessInstanceListComponent`](../../../lib/process-services/src/lib/process-list/components/process-list.component.ts) itself does not populate the context menu with items. You can provide all necessary content via the handler.
Note that the [`ProcessInstanceListComponent`](../../../lib/process-services/src/lib/process-list/components/process-list/process-list.component.ts) itself does not populate the context menu with items. You can provide all necessary content via the handler.
```html
<adf-process-instance-list

View File

@ -5,7 +5,7 @@ Status: Active
Last reviewed: 2019-01-14
---
# [Start Process component](../../../lib/process-services/src/lib/process-list/components/start-process.component.ts "Defined in start-process.component.ts")
# [Start Process component](../../../lib/process-services/src/lib/process-list/components/start-process/start-process.component.ts "Defined in start-process.component.ts")
Starts a process.

View File

@ -5,7 +5,7 @@ Status: Active
Last reviewed: 2019-01-14
---
# [Start Task Component](../../../lib/process-services/src/lib/task-list/components/start-task.component.ts "Defined in start-task.component.ts")
# [Start Task Component](../../../lib/process-services/src/lib/task-list/components/start-task/start-task.component.ts "Defined in start-task.component.ts")
Creates/Starts a new task for the specified app.

View File

@ -5,7 +5,7 @@ Status: Active
Last reviewed: 2018-11-16
---
# [Task Filters component](../../../lib/process-services/src/lib/task-list/components/task-filters.component.ts "Defined in task-filters.component.ts")
# [Task Filters component](../../../lib/process-services/src/lib/task-list/components/task-filters/task-filters.component.ts "Defined in task-filters.component.ts")
Shows all available filters.

View File

@ -5,7 +5,7 @@ Status: Active
Last reviewed: 2018-11-19
---
# [Task Standalone component](../../../lib/process-services/src/lib/task-list/components/task-standalone.component.ts "Defined in task-standalone.component.ts")
# [Task Standalone component](../../../lib/process-services/src/lib/task-list/components/task-standalone/task-standalone.component.ts "Defined in task-standalone.component.ts")
This component can be used when the task doesn't belong to any processes.

View File

@ -5,7 +5,7 @@ Status: Active
Last reviewed: 2019-01-14
---
# [Process Audit Directive](../../../lib/process-services/src/lib/process-list/components/process-audit.directive.ts "Defined in process-audit.directive.ts")
# [Process Audit Directive](../../../lib/process-services/src/lib/process-list/components/process-audit/process-audit.directive.ts "Defined in process-audit.directive.ts")
Fetches the Process Audit information in PDF or JSON format.

View File

@ -5,7 +5,7 @@ Status: Active
Last reviewed: 2019-01-14
---
# [Task Audit Directive](../../../lib/process-services/src/lib/task-list/components/task-audit.directive.ts "Defined in task-audit.directive.ts")
# [Task Audit Directive](../../../lib/process-services/src/lib/task-list/components/task-audit/task-audit.directive.ts "Defined in task-audit.directive.ts")
Fetches the Task Audit information in PDF or JSON format.

View File

@ -44,11 +44,9 @@ describe('FileViewerWidgetComponent', () => {
beforeEach(() => {
TestBed.configureTestingModule({
imports: [
TranslateModule.forRoot()
],
declarations: [ FileViewerWidgetComponent ],
providers: [ { provide: FormService, useValue: formServiceStub } ],
imports: [TranslateModule.forRoot()],
declarations: [FileViewerWidgetComponent],
providers: [{ provide: FormService, useValue: formServiceStub }],
schemas: [CUSTOM_ELEMENTS_SCHEMA]
});

View File

@ -18,7 +18,7 @@
import { DebugElement, Component } from '@angular/core';
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { By } from '@angular/platform-browser';
import { AppsProcessService } from './services/apps-process.service';
import { AppsProcessService } from '../services/apps-process.service';
import { of, throwError } from 'rxjs';
import { defaultApp, deployedApps, nonDeployedApps } from '../mock/apps-list.mock';
import { AppsListComponent, APP_LIST_LAYOUT_GRID, APP_LIST_LAYOUT_LIST } from './apps-list.component';

View File

@ -16,7 +16,7 @@
*/
import { CustomEmptyContentTemplateDirective, EmptyContentComponent } from '@alfresco/adf-core';
import { AppsProcessService } from './services/apps-process.service';
import { AppsProcessService } from '../services/apps-process.service';
import { AfterContentInit, Component, EventEmitter, Input, OnInit, Output, ContentChild, OnDestroy, ViewEncapsulation } from '@angular/core';
import { Subject } from 'rxjs';
import { IconModel } from './icon.model';

View File

@ -20,6 +20,6 @@ import { SelectAppsDialogComponent } from './select-apps-dialog/select-apps-dial
export * from './apps-list.component';
export * from './select-apps-dialog/select-apps-dialog.component';
export * from './services/apps-process.service';
export * from '../services/apps-process.service';
export const APPS_LIST_DIRECTIVES = [AppsListComponent, SelectAppsDialogComponent] as const;

View File

@ -19,7 +19,7 @@ import { Component } from '@angular/core';
import { TestBed, ComponentFixture } from '@angular/core/testing';
import { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';
import { OverlayContainer } from '@angular/cdk/overlay';
import { AppsProcessService } from '../services/apps-process.service';
import { AppsProcessService } from '../../services/apps-process.service';
import { deployedApps } from '../../mock/apps-list.mock';
import { of } from 'rxjs';
import { SelectAppsDialogComponent } from './select-apps-dialog.component';

View File

@ -17,7 +17,7 @@
import { Component, Inject, ViewEncapsulation } from '@angular/core';
import { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';
import { AppsProcessService } from '../services/apps-process.service';
import { AppsProcessService } from '../../services/apps-process.service';
import { CommonModule } from '@angular/common';
import { TranslateModule } from '@ngx-translate/core';
import { MatSelectModule } from '@angular/material/select';

View File

@ -20,7 +20,6 @@ import {
LightUserRepresentation,
ProcessInstanceRepresentation,
RestVariable,
TaskRepresentation,
UserRepresentation,
UserTaskFilterRepresentation
} from '@alfresco/js-api';
@ -45,8 +44,3 @@ export type UserProcessModel = LightUserRepresentation;
/** @deprecated use js-api/RestVariable instead */
export type ProcessInstanceVariable = RestVariable;
/** @deprecated use js-api/TaskRepresentation instead */
export type TaskDetailsModel = TaskRepresentation;
export { ProcessDefinitionRepresentation } from '@alfresco/js-api';

View File

@ -19,6 +19,7 @@ import { Component } from '@angular/core';
@Component({
selector: 'adf-form-custom-outcomes',
standalone: true,
template: '<ng-content></ng-content>'
})
export class FormCustomOutcomesComponent {}

View File

@ -22,7 +22,6 @@ import { FormListComponent } from './form-list.component';
import { ModelService } from '../services/model.service';
describe('TaskAttachmentList', () => {
let component: FormListComponent;
let fixture: ComponentFixture<FormListComponent>;
let modelService: ModelService;
@ -30,9 +29,7 @@ describe('TaskAttachmentList', () => {
beforeEach(() => {
TestBed.configureTestingModule({
imports: [
CoreTestingModule
]
imports: [CoreTestingModule, FormListComponent]
});
fixture = TestBed.createComponent(FormListComponent);
component = fixture.componentInstance;
@ -41,10 +38,12 @@ describe('TaskAttachmentList', () => {
});
it('should show the forms as a list', async () => {
spyOn(modelService, 'getForms').and.returnValue(of([
{name: 'FakeName-1', lastUpdatedByFullName: 'FakeUser-1', lastUpdated: '2017-01-02'},
{name: 'FakeName-2', lastUpdatedByFullName: 'FakeUser-2', lastUpdated: '2017-01-03'}
]));
spyOn(modelService, 'getForms').and.returnValue(
of([
{ name: 'FakeName-1', lastUpdatedByFullName: 'FakeUser-1', lastUpdated: '2017-01-02' },
{ name: 'FakeName-2', lastUpdatedByFullName: 'FakeUser-2', lastUpdated: '2017-01-03' }
])
);
component.ngOnChanges();

View File

@ -17,20 +17,22 @@
import { Component, Input, OnChanges, ViewEncapsulation } from '@angular/core';
import { ModelService } from '../services/model.service';
import { CommonModule } from '@angular/common';
import { DataTableModule } from '@alfresco/adf-core';
@Component({
selector: 'adf-form-list',
standalone: true,
imports: [CommonModule, DataTableModule],
templateUrl: './form-list.component.html',
encapsulation: ViewEncapsulation.None
})
export class FormListComponent implements OnChanges {
/** The array that contains the information to show inside the list. */
@Input()
forms: any [] = [];
forms: any[] = [];
constructor(protected modelService: ModelService) {
}
constructor(protected modelService: ModelService) {}
ngOnChanges() {
this.getForms();
@ -45,5 +47,4 @@ export class FormListComponent implements OnChanges {
this.forms.push(...forms);
});
}
}

View File

@ -28,7 +28,9 @@ import {
FormOutcomeEvent,
FormValues,
ContentLinkModel,
TaskProcessVariableModel
TaskProcessVariableModel,
FormRendererComponent,
FormatSpacePipe
} from '@alfresco/adf-core';
import { from, Observable, of, Subject } from 'rxjs';
import { switchMap, takeUntil } from 'rxjs/operators';
@ -39,9 +41,17 @@ import { TaskService } from './services/task.service';
import { TaskFormService } from './services/task-form.service';
import { NodesApiService } from '@alfresco/adf-content-services';
import { FormDefinitionModel } from './model/form-definition.model';
import { CommonModule } from '@angular/common';
import { MatCardModule } from '@angular/material/card';
import { MatButtonModule } from '@angular/material/button';
import { MatIconModule } from '@angular/material/icon';
import { MatTooltipModule } from '@angular/material/tooltip';
import { TranslateModule } from '@ngx-translate/core';
@Component({
selector: 'adf-form',
standalone: true,
imports: [CommonModule, MatCardModule, MatButtonModule, MatIconModule, MatTooltipModule, TranslateModule, FormRendererComponent, FormatSpacePipe],
templateUrl: './form.component.html',
encapsulation: ViewEncapsulation.None
})

View File

@ -1,67 +0,0 @@
/*!
* @license
* Copyright © 2005-2024 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 { NgModule } from '@angular/core';
import { MaterialModule } from '../material.module';
import { CoreModule, FormatSpacePipe, InitialUsernamePipe } from '@alfresco/adf-core';
import { FormComponent } from './form.component';
import { StartFormComponent } from './start-form.component';
import { FormCustomOutcomesComponent } from './form-custom-outcomes.component';
import { DocumentWidgetComponent } from './widgets/document/document.widget';
import { ContentWidgetComponent } from './widgets/document/content.widget';
import { UploadWidgetComponent } from './widgets/upload/upload.widget';
import { FormListComponent } from './form-list/form-list.component';
import { FunctionalGroupWidgetComponent } from './widgets/functional-group/functional-group.widget';
import { PeopleWidgetComponent } from './widgets/people/people.widget';
import { RadioButtonsWidgetComponent } from './widgets/radio-buttons/radio-buttons.widget';
import { TypeaheadWidgetComponent } from './widgets/typeahead/typeahead.widget';
import { DropdownWidgetComponent } from './widgets/dropdown/dropdown.widget';
import { DynamicTableModule } from './widgets/dynamic-table/dynamic-table.module';
import { FileViewerWidgetComponent } from './widgets/file-viewer/file-viewer.widget';
import { AlfrescoViewerModule } from '@alfresco/adf-content-services';
@NgModule({
imports: [DynamicTableModule, CoreModule, AlfrescoViewerModule, MaterialModule, FormatSpacePipe, InitialUsernamePipe],
declarations: [
UploadWidgetComponent,
FormComponent,
StartFormComponent,
FormCustomOutcomesComponent,
DocumentWidgetComponent,
ContentWidgetComponent,
PeopleWidgetComponent,
FunctionalGroupWidgetComponent,
FormListComponent,
RadioButtonsWidgetComponent,
DropdownWidgetComponent,
TypeaheadWidgetComponent,
FileViewerWidgetComponent
],
exports: [
FormComponent,
StartFormComponent,
FormCustomOutcomesComponent,
PeopleWidgetComponent,
FunctionalGroupWidgetComponent,
RadioButtonsWidgetComponent,
TypeaheadWidgetComponent,
DropdownWidgetComponent,
FormListComponent,
FileViewerWidgetComponent
]
})
export class FormModule {}

View File

@ -15,18 +15,20 @@
* limitations under the License.
*/
export * from './widgets/index';
export * from './services';
export * from './process-form-rendering.service';
import { FormListComponent } from './form-list/form-list.component';
import { FormCustomOutcomesComponent } from './form-custom-outcomes.component';
import { StartFormComponent } from './start-form/start-form.component';
import { WIDGET_DIRECTIVES } from './widgets';
import { FormComponent } from './form.component';
export * from './events/validate-dynamic-table-row.event';
export * from './model/form-definition.model';
export * from './form-list/form-list.component';
export * from './model/form-definition.model';
export * from './services';
export * from './start-form/start-form.component';
export * from './widgets/public-api';
export * from './form.component';
export * from './start-form.component';
export * from './form-custom-outcomes.component';
export * from './process-form-rendering.service';
export * from './form.module';
export const FORM_DIRECTIVES = [FormListComponent, FormCustomOutcomesComponent, StartFormComponent, FormComponent, ...WIDGET_DIRECTIVES];

View File

@ -18,7 +18,7 @@
import { AlfrescoApiService } from '@alfresco/adf-core';
import { Injectable } from '@angular/core';
import { Observable, from, throwError } from 'rxjs';
import { FormModelsApi } from '@alfresco/js-api';
import { FormModelsApi, FormRepresentation } from '@alfresco/js-api';
import { catchError, map } from 'rxjs/operators';
import { FormDefinitionModel } from '../model/form-definition.model';
@ -44,7 +44,7 @@ export class EditorService {
* @param formModel Model data for the form
* @returns Data for the saved form
*/
saveForm(formId: number, formModel: FormDefinitionModel): Observable<any> {
saveForm(formId: number, formModel: FormDefinitionModel): Observable<FormRepresentation> {
return from(this.editorApi.saveForm(formId, formModel));
}

View File

@ -35,8 +35,8 @@ import {
import { StartFormComponent } from './start-form.component';
import { WidgetVisibilityService, FormModel, FormOutcomeModel } from '@alfresco/adf-core';
import { TranslateService } from '@ngx-translate/core';
import { ProcessTestingModule } from '../testing/process.testing.module';
import { ProcessService } from '../process-list/services/process.service';
import { ProcessTestingModule } from '../../testing/process.testing.module';
import { ProcessService } from '../../process-list/services/process.service';
import { HarnessLoader } from '@angular/cdk/testing';
import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed';
import { MatSelectHarness } from '@angular/material/select/testing';

View File

@ -29,12 +29,19 @@ import {
OnDestroy,
inject
} from '@angular/core';
import { FormComponent } from './form.component';
import { ContentLinkModel, FormOutcomeModel } from '@alfresco/adf-core';
import { ProcessService } from '../process-list/services/process.service';
import { FormComponent } from '../form.component';
import { ContentLinkModel, FormOutcomeModel, FormRendererComponent } from '@alfresco/adf-core';
import { ProcessService } from '../../process-list/services/process.service';
import { CommonModule } from '@angular/common';
import { TranslateModule } from '@ngx-translate/core';
import { MatButtonModule } from '@angular/material/button';
import { MatCardModule } from '@angular/material/card';
import { MatIconModule } from '@angular/material/icon';
@Component({
selector: 'adf-start-form',
standalone: true,
imports: [CommonModule, TranslateModule, MatButtonModule, MatCardModule, FormRendererComponent, MatIconModule],
templateUrl: './start-form.component.html',
styleUrls: ['./start-form.component.scss'],
encapsulation: ViewEncapsulation.None

View File

@ -51,7 +51,7 @@ describe('AttachFileWidgetDialogComponent', () => {
beforeEach(() => {
TestBed.configureTestingModule({
imports: [ContentModule.forRoot(), ProcessTestingModule],
imports: [ContentModule.forRoot(), ProcessTestingModule, AttachFileWidgetDialogComponent],
providers: [
{ provide: OidcAuthenticationService, useValue: {} },
{ provide: MAT_DIALOG_DATA, useValue: data },

View File

@ -16,15 +16,20 @@
*/
import { Component, Inject, ViewEncapsulation, ViewChild } from '@angular/core';
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
import { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';
import { AlfrescoApiService, LoginDialogPanelComponent, TranslationService, AuthenticationService } from '@alfresco/adf-core';
import { AttachFileWidgetDialogComponentData } from './attach-file-widget-dialog-component.interface';
import { DocumentListService, SitesService, SearchService } from '@alfresco/adf-content-services';
import { DocumentListService, SitesService, SearchService, ContentNodeSelectorModule } from '@alfresco/adf-content-services';
import { ExternalAlfrescoApiService } from '../../services/external-alfresco-api.service';
import { Node } from '@alfresco/js-api';
import { CommonModule } from '@angular/common';
import { MatButtonModule } from '@angular/material/button';
import { TranslateModule } from '@ngx-translate/core';
@Component({
selector: 'adf-attach-file-widget-dialog',
standalone: true,
imports: [CommonModule, MatDialogModule, LoginDialogPanelComponent, ContentNodeSelectorModule, MatButtonModule, TranslateModule],
templateUrl: './attach-file-widget-dialog.component.html',
styleUrls: ['./attach-file-widget-dialog.component.scss'],
encapsulation: ViewEncapsulation.None,

View File

@ -18,7 +18,7 @@
/* eslint-disable @angular-eslint/component-selector */
import { Component, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';
import { AppConfigService, AppConfigValues, DownloadService, FormService, ThumbnailService } from '@alfresco/adf-core';
import { AppConfigService, AppConfigValues, DownloadService, ErrorWidgetComponent, FormService, ThumbnailService } from '@alfresco/adf-core';
import { ContentNodeDialogService, ContentService } from '@alfresco/adf-content-services';
import { AlfrescoEndpointRepresentation, Node, NodeChildAssociation, RelatedContentRepresentation } from '@alfresco/js-api';
import { from, of, Subject, zip } from 'rxjs';
@ -27,9 +27,18 @@ import { AttachFileWidgetDialogService } from './attach-file-widget-dialog.servi
import { UploadWidgetComponent } from '../upload/upload.widget';
import { ProcessContentService } from '../../services/process-content.service';
import { ActivitiContentService } from '../../services/activiti-alfresco.service';
import { CommonModule } from '@angular/common';
import { TranslateModule } from '@ngx-translate/core';
import { MatIconModule } from '@angular/material/icon';
import { MatButtonModule } from '@angular/material/button';
import { MatMenuModule } from '@angular/material/menu';
import { MatListModule } from '@angular/material/list';
import { MatTooltipModule } from '@angular/material/tooltip';
@Component({
selector: 'attach-widget',
standalone: true,
imports: [CommonModule, TranslateModule, MatIconModule, MatButtonModule, MatMenuModule, MatListModule, MatTooltipModule, ErrorWidgetComponent],
templateUrl: './attach-file-widget.component.html',
styleUrls: ['./attach-file-widget.component.scss'],
host: {

View File

@ -49,7 +49,7 @@ describe('AttachFolderWidgetComponent', () => {
beforeEach(() => {
TestBed.configureTestingModule({
imports: [ProcessTestingModule]
imports: [ProcessTestingModule, AttachFolderWidgetComponent]
});
fixture = TestBed.createComponent(AttachFolderWidgetComponent);
widget = fixture.componentInstance;

View File

@ -18,12 +18,19 @@
/* eslint-disable @angular-eslint/component-selector */
import { Component, ViewEncapsulation, OnInit } from '@angular/core';
import { WidgetComponent, FormService } from '@alfresco/adf-core';
import { WidgetComponent, FormService, ErrorWidgetComponent } from '@alfresco/adf-core';
import { ContentNodeDialogService, NodesApiService } from '@alfresco/adf-content-services';
import { Node } from '@alfresco/js-api';
import { CommonModule } from '@angular/common';
import { TranslateModule } from '@ngx-translate/core';
import { MatIconModule } from '@angular/material/icon';
import { MatLineModule } from '@angular/material/core';
import { MatButtonModule } from '@angular/material/button';
@Component({
selector: 'attach-folder-widget',
standalone: true,
imports: [CommonModule, TranslateModule, MatIconModule, MatLineModule, MatButtonModule, ErrorWidgetComponent],
templateUrl: './attach-folder-widget.component.html',
styleUrls: ['./attach-folder-widget.component.scss'],
host: {

View File

@ -1,44 +0,0 @@
/*!
* @license
* Copyright © 2005-2024 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 { NgModule } from '@angular/core';
import { MaterialModule } from '../../../material.module';
import { CoreModule } from '@alfresco/adf-core';
import { ContentNodeSelectorModule } from '@alfresco/adf-content-services';
import { AttachFileWidgetComponent } from './attach-file-widget.component';
import { AttachFolderWidgetComponent } from './attach-folder-widget.component';
import { AttachFileWidgetDialogComponent } from './attach-file-widget-dialog.component';
@NgModule({
imports: [
CoreModule,
ContentNodeSelectorModule,
MaterialModule
],
declarations: [
AttachFileWidgetComponent,
AttachFolderWidgetComponent,
AttachFileWidgetDialogComponent
],
exports: [
AttachFileWidgetComponent,
AttachFolderWidgetComponent,
AttachFileWidgetDialogComponent
]
})
export class ContentWidgetModule {}

View File

@ -20,5 +20,3 @@ export * from './attach-folder-widget.component';
export * from './attach-file-widget-dialog-component.interface';
export * from './attach-file-widget-dialog.component';
export * from './attach-file-widget-dialog.service';
export * from './content-widget.module';

View File

@ -59,7 +59,7 @@ describe('ContentWidgetComponent', () => {
beforeEach(() => {
TestBed.configureTestingModule({
imports: [CoreTestingModule]
imports: [CoreTestingModule, ContentWidgetComponent]
});
downloadService = TestBed.inject(DownloadService);
processContentService = TestBed.inject(ProcessContentService);

View File

@ -19,9 +19,16 @@ import { UrlService, ContentLinkModel, FormService, DownloadService } from '@alf
import { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges, ViewEncapsulation } from '@angular/core';
import { Observable } from 'rxjs';
import { ProcessContentService } from '../../services/process-content.service';
import { CommonModule } from '@angular/common';
import { TranslateModule } from '@ngx-translate/core';
import { MatCardModule } from '@angular/material/card';
import { MatIconModule } from '@angular/material/icon';
import { MatButtonModule } from '@angular/material/button';
@Component({
selector: 'adf-content',
standalone: true,
imports: [CommonModule, TranslateModule, MatCardModule, MatIconModule, MatButtonModule],
templateUrl: './content.widget.html',
styleUrls: ['./content.widget.scss'],
encapsulation: ViewEncapsulation.None

View File

@ -17,9 +17,13 @@
import { Component, OnInit, ViewEncapsulation } from '@angular/core';
import { FormService, WidgetComponent } from '@alfresco/adf-core';
import { CommonModule } from '@angular/common';
import { ContentWidgetComponent } from './content.widget';
@Component({
selector: 'adf-form-document-widget',
standalone: true,
imports: [CommonModule, ContentWidgetComponent],
templateUrl: './document.widget.html',
host: {
'(click)': 'event($event)',
@ -35,7 +39,6 @@ import { FormService, WidgetComponent } from '@alfresco/adf-core';
encapsulation: ViewEncapsulation.None
})
export class DocumentWidgetComponent extends WidgetComponent implements OnInit {
fileId: string = null;
hasFile: boolean = false;

View File

@ -42,7 +42,7 @@ describe('DropdownWidgetComponent', () => {
beforeEach(() => {
TestBed.configureTestingModule({
imports: [CoreTestingModule]
imports: [CoreTestingModule, DropdownWidgetComponent]
});
fixture = TestBed.createComponent(DropdownWidgetComponent);
widget = fixture.componentInstance;

View File

@ -18,12 +18,19 @@
/* eslint-disable @angular-eslint/component-selector */
import { Component, OnInit, ViewEncapsulation } from '@angular/core';
import { FormService, FormFieldOption, WidgetComponent } from '@alfresco/adf-core';
import { FormService, FormFieldOption, WidgetComponent, ErrorWidgetComponent } from '@alfresco/adf-core';
import { ProcessDefinitionService } from '../../services/process-definition.service';
import { TaskFormService } from '../../services/task-form.service';
import { CommonModule } from '@angular/common';
import { TranslateModule } from '@ngx-translate/core';
import { MatFormFieldModule } from '@angular/material/form-field';
import { MatSelectModule } from '@angular/material/select';
import { FormsModule } from '@angular/forms';
@Component({
selector: 'dropdown-widget',
standalone: true,
imports: [CommonModule, TranslateModule, MatFormFieldModule, MatSelectModule, FormsModule, ErrorWidgetComponent],
templateUrl: './dropdown.widget.html',
styleUrls: ['./dropdown.widget.scss'],
host: {

View File

@ -1,51 +0,0 @@
/*!
* @license
* Copyright © 2005-2024 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 { NgModule } from '@angular/core';
import { MaterialModule } from '../../../material.module';
import { CoreModule } from '@alfresco/adf-core';
import { RowEditorComponent } from './editors/row-editor/row.editor';
import { DynamicTableWidgetComponent } from './dynamic-table.widget';
import { DropdownEditorComponent } from './editors/dropdown/dropdown.editor';
import { DateTimeEditorComponent } from './editors/datetime/datetime.editor';
import { DateEditorComponent } from './editors/date/date.editor';
import { BooleanEditorComponent } from './editors/boolean/boolean.editor';
import { AmountEditorComponent } from './editors/amount/amount.editor';
import { TextEditorComponent } from './editors/text/text.editor';
@NgModule({
imports: [
CoreModule,
MaterialModule
],
declarations: [
AmountEditorComponent,
BooleanEditorComponent,
DateEditorComponent,
DateTimeEditorComponent,
DropdownEditorComponent,
RowEditorComponent,
DynamicTableWidgetComponent,
TextEditorComponent
],
exports: [
DynamicTableWidgetComponent,
RowEditorComponent
]
})
export class DynamicTableModule {
}

View File

@ -17,14 +17,22 @@
/* eslint-disable @angular-eslint/component-selector */
import { WidgetVisibilityService, WidgetComponent, FormService } from '@alfresco/adf-core';
import { WidgetVisibilityService, WidgetComponent, FormService, ErrorWidgetComponent } from '@alfresco/adf-core';
import { ChangeDetectorRef, Component, ElementRef, OnInit, ViewEncapsulation } from '@angular/core';
import { DynamicTableColumn } from './editors/models/dynamic-table-column.model';
import { DynamicTableRow } from './editors/models/dynamic-table-row.model';
import { DynamicTableModel } from './editors/models/dynamic-table.widget.model';
import { CommonModule } from '@angular/common';
import { TranslateModule } from '@ngx-translate/core';
import { MatCheckboxModule } from '@angular/material/checkbox';
import { MatButtonModule } from '@angular/material/button';
import { MatIconModule } from '@angular/material/icon';
import { RowEditorComponent } from './editors/row-editor/row.editor';
@Component({
selector: 'dynamic-table-widget',
standalone: true,
imports: [CommonModule, TranslateModule, MatCheckboxModule, MatButtonModule, MatIconModule, RowEditorComponent, ErrorWidgetComponent],
templateUrl: './dynamic-table.widget.html',
styleUrls: ['./dynamic-table.widget.scss'],
host: {

View File

@ -21,14 +21,18 @@ import { Component, Input, OnInit } from '@angular/core';
import { DynamicTableColumn } from '../models/dynamic-table-column.model';
import { DynamicTableRow } from '../models/dynamic-table-row.model';
import { DynamicTableModel } from '../models/dynamic-table.widget.model';
import { CommonModule } from '@angular/common';
import { MatFormFieldModule } from '@angular/material/form-field';
import { MatInputModule } from '@angular/material/input';
@Component({
selector: 'adf-amount-editor',
standalone: true,
imports: [CommonModule, MatFormFieldModule, MatInputModule],
templateUrl: './amount.editor.html',
styleUrls: ['./amount.editor.scss']
})
export class AmountEditorComponent implements OnInit {
@Input()
table: DynamicTableModel;
@ -48,5 +52,4 @@ export class AmountEditorComponent implements OnInit {
const value: number = Number(event.target.value);
row.value[column.id] = value;
}
}

View File

@ -21,14 +21,17 @@ import { Component, Input } from '@angular/core';
import { DynamicTableColumn } from '../models/dynamic-table-column.model';
import { DynamicTableRow } from '../models/dynamic-table-row.model';
import { DynamicTableModel } from '../models/dynamic-table.widget.model';
import { CommonModule } from '@angular/common';
import { MatCheckboxModule } from '@angular/material/checkbox';
@Component({
selector: 'adf-boolean-editor',
standalone: true,
imports: [CommonModule, MatCheckboxModule],
templateUrl: './boolean.editor.html',
styleUrls: ['./boolean.editor.scss']
})
export class BooleanEditorComponent {
@Input()
table: DynamicTableModel;
@ -42,5 +45,4 @@ export class BooleanEditorComponent {
const value: boolean = event.checked;
row.value[column.id] = value;
}
}

View File

@ -18,14 +18,20 @@
import { ADF_DATE_FORMATS, AdfDateFnsAdapter, DateFnsUtils } from '@alfresco/adf-core';
import { Component, Input, OnInit } from '@angular/core';
import { DateAdapter, MAT_DATE_FORMATS } from '@angular/material/core';
import { MatDatepickerInputEvent } from '@angular/material/datepicker';
import { MatDatepickerInputEvent, MatDatepickerModule } from '@angular/material/datepicker';
import { DynamicTableColumn } from '../models/dynamic-table-column.model';
import { DynamicTableRow } from '../models/dynamic-table-row.model';
import { DynamicTableModel } from '../models/dynamic-table.widget.model';
import { isValid } from 'date-fns';
import { CommonModule } from '@angular/common';
import { MatFormFieldModule } from '@angular/material/form-field';
import { MatInputModule } from '@angular/material/input';
import { FormsModule } from '@angular/forms';
@Component({
selector: 'adf-date-editor',
standalone: true,
imports: [CommonModule, MatFormFieldModule, MatDatepickerModule, MatInputModule, FormsModule],
templateUrl: './date.editor.html',
providers: [
{ provide: MAT_DATE_FORMATS, useValue: ADF_DATE_FORMATS },

View File

@ -15,17 +15,28 @@
* limitations under the License.
*/
import { ADF_DATETIME_FORMATS, ADF_DATE_FORMATS, AdfDateFnsAdapter, AdfDateTimeFnsAdapter, /*MOMENT_DATE_FORMATS, MomentDateAdapter*/
DateFnsUtils} from '@alfresco/adf-core';
import {
ADF_DATETIME_FORMATS,
ADF_DATE_FORMATS,
AdfDateFnsAdapter,
AdfDateTimeFnsAdapter /*MOMENT_DATE_FORMATS, MomentDateAdapter*/,
DateFnsUtils
} from '@alfresco/adf-core';
import { Component, Input, OnInit } from '@angular/core';
import { DateAdapter, MAT_DATE_FORMATS } from '@angular/material/core';
import { DynamicTableColumn } from '../models/dynamic-table-column.model';
import { DynamicTableRow } from '../models/dynamic-table-row.model';
import { DynamicTableModel } from '../models/dynamic-table.widget.model';
import { DatetimeAdapter, MAT_DATETIME_FORMATS, MatDatetimepickerInputEvent } from '@mat-datetimepicker/core';
import { DatetimeAdapter, MAT_DATETIME_FORMATS, MatDatetimepickerInputEvent, MatDatetimepickerModule } from '@mat-datetimepicker/core';
import { CommonModule } from '@angular/common';
import { MatFormFieldModule } from '@angular/material/form-field';
import { MatInputModule } from '@angular/material/input';
import { FormsModule } from '@angular/forms';
@Component({
selector: 'adf-datetime-editor',
standalone: true,
imports: [CommonModule, MatFormFieldModule, MatInputModule, MatDatetimepickerModule, FormsModule],
templateUrl: './datetime.editor.html',
providers: [
{ provide: MAT_DATE_FORMATS, useValue: ADF_DATE_FORMATS },

View File

@ -26,12 +26,8 @@ import { DropdownEditorComponent } from './dropdown.editor';
import { TaskFormService } from '../../../../services/task-form.service';
import { ProcessDefinitionService } from '../../../../services/process-definition.service';
import { MatSelectHarness } from '@angular/material/select/testing';
import { FormModule } from '../../../../form.module';
import { HarnessLoader } from '@angular/cdk/testing';
import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed';
import { MatSelectModule } from '@angular/material/select';
import { MatFormFieldModule } from '@angular/material/form-field';
import { MatOptionModule } from '@angular/material/core';
import { ProcessTestingModule } from '../../../../../testing/process.testing.module';
describe('DropdownEditorComponent', () => {
@ -48,7 +44,7 @@ describe('DropdownEditorComponent', () => {
beforeEach(() => {
TestBed.configureTestingModule({
imports: [ProcessTestingModule, MatFormFieldModule, MatSelectModule, MatOptionModule, FormModule]
imports: [ProcessTestingModule, DropdownEditorComponent]
});
formService = TestBed.inject(FormService);
taskFormService = TestBed.inject(TaskFormService);

View File

@ -25,9 +25,15 @@ import { DynamicTableRow } from '../models/dynamic-table-row.model';
import { DynamicTableModel } from '../models/dynamic-table.widget.model';
import { ProcessDefinitionService } from '../../../../services/process-definition.service';
import { TaskFormService } from '../../../../services/task-form.service';
import { CommonModule } from '@angular/common';
import { MatFormFieldModule } from '@angular/material/form-field';
import { MatSelectModule } from '@angular/material/select';
import { FormsModule } from '@angular/forms';
@Component({
selector: 'adf-dropdown-editor',
standalone: true,
imports: [CommonModule, MatFormFieldModule, MatSelectModule, FormsModule],
templateUrl: './dropdown.editor.html',
styleUrls: ['./dropdown.editor.scss']
})

View File

@ -22,9 +22,30 @@ import { DynamicRowValidationSummary } from '../models/dynamic-row-validation-su
import { DynamicTableColumn } from '../models/dynamic-table-column.model';
import { DynamicTableRow } from '../models/dynamic-table-row.model';
import { DynamicTableModel } from '../models/dynamic-table.widget.model';
import { CommonModule } from '@angular/common';
import { DropdownEditorComponent } from '../dropdown/dropdown.editor';
import { DateEditorComponent } from '../date/date.editor';
import { DateTimeEditorComponent } from '../datetime/datetime.editor';
import { BooleanEditorComponent } from '../boolean/boolean.editor';
import { AmountEditorComponent } from '../amount/amount.editor';
import { TextEditorComponent } from '../text/text.editor';
import { ErrorWidgetComponent } from '@alfresco/adf-core';
import { MatButtonModule } from '@angular/material/button';
@Component({
selector: 'row-editor',
standalone: true,
imports: [
CommonModule,
DropdownEditorComponent,
DateEditorComponent,
DateTimeEditorComponent,
BooleanEditorComponent,
AmountEditorComponent,
TextEditorComponent,
ErrorWidgetComponent,
MatButtonModule
],
templateUrl: './row.editor.html',
styleUrls: ['./row.editor.css']
})

View File

@ -21,14 +21,18 @@ import { Component, Input, OnInit } from '@angular/core';
import { DynamicTableColumn } from '../models/dynamic-table-column.model';
import { DynamicTableRow } from '../models/dynamic-table-row.model';
import { DynamicTableModel } from '../models/dynamic-table.widget.model';
import { CommonModule } from '@angular/common';
import { MatFormFieldModule } from '@angular/material/form-field';
import { MatInputModule } from '@angular/material/input';
@Component({
selector: 'adf-text-editor',
standalone: true,
imports: [CommonModule, MatFormFieldModule, MatInputModule],
templateUrl: './text.editor.html',
styleUrls: ['./text.editor.scss']
})
export class TextEditorComponent implements OnInit {
@Input()
table: DynamicTableModel;
@ -48,5 +52,4 @@ export class TextEditorComponent implements OnInit {
const value: any = event.target.value;
row.value[column.id] = value;
}
}

View File

@ -15,6 +15,15 @@
* limitations under the License.
*/
import { DropdownEditorComponent } from './editors/dropdown/dropdown.editor';
import { AmountEditorComponent } from './editors/amount/amount.editor';
import { BooleanEditorComponent } from './editors/boolean/boolean.editor';
import { DateEditorComponent } from './editors/date/date.editor';
import { RowEditorComponent } from './editors/row-editor/row.editor';
import { TextEditorComponent } from './editors/text/text.editor';
import { DateTimeEditorComponent } from './editors/datetime/datetime.editor';
import { DynamicTableWidgetComponent } from './dynamic-table.widget';
export * from './editors/dropdown/dropdown.editor';
export * from './editors/amount/amount.editor';
export * from './editors/boolean/boolean.editor';
@ -22,10 +31,16 @@ export * from './editors/date/date.editor';
export * from './editors/datetime/datetime.editor';
export * from './editors/row-editor/row.editor';
export * from './editors/text/text.editor';
export * from './editors/models/dynamic-table-row.model';
export * from './dynamic-table.widget';
export * from './dynamic-table.module';
export const DYNAMIC_TABLE_WIDGET_DIRECTIVES = [
DynamicTableWidgetComponent,
DropdownEditorComponent,
AmountEditorComponent,
BooleanEditorComponent,
DateEditorComponent,
DateTimeEditorComponent,
RowEditorComponent,
TextEditorComponent
] as const;

View File

@ -18,7 +18,7 @@
import { FileViewerWidgetComponent } from './file-viewer.widget';
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { FormModel, FormService, FormFieldModel } from '@alfresco/adf-core';
import { TranslateModule } from '@ngx-translate/core';
import { ProcessTestingModule } from '../../../testing/process.testing.module';
describe('FileViewerWidgetComponent', () => {
const fakeForm = new FormModel();
@ -43,11 +43,8 @@ describe('FileViewerWidgetComponent', () => {
beforeEach(() => {
TestBed.configureTestingModule({
imports: [
TranslateModule.forRoot()
],
declarations: [ FileViewerWidgetComponent ],
providers: [ { provide: FormService, useValue: formServiceStub } ]
imports: [ProcessTestingModule, FileViewerWidgetComponent],
providers: [{ provide: FormService, useValue: formServiceStub }]
});
formServiceStub = TestBed.inject(FormService);

View File

@ -15,13 +15,18 @@
* limitations under the License.
*/
import { BaseViewerWidgetComponent, FormService } from '@alfresco/adf-core';
import { BaseViewerWidgetComponent, ErrorWidgetComponent, FormService } from '@alfresco/adf-core';
import { Component, ViewEncapsulation } from '@angular/core';
import { CommonModule } from '@angular/common';
import { TranslateModule } from '@ngx-translate/core';
import { AlfrescoViewerModule } from '@alfresco/adf-content-services';
/* eslint-disable @angular-eslint/component-selector */
@Component({
selector: 'file-viewer-widget',
standalone: true,
imports: [CommonModule, TranslateModule, AlfrescoViewerModule, ErrorWidgetComponent],
templateUrl: './file-viewer.widget.html',
styleUrls: ['./file-viewer.widget.scss'],
host: {

View File

@ -18,14 +18,21 @@
/* eslint-disable @angular-eslint/component-selector */
import { Component, ElementRef, OnInit, ViewEncapsulation } from '@angular/core';
import { FormService, GroupModel, WidgetComponent } from '@alfresco/adf-core';
import { ErrorWidgetComponent, FormService, GroupModel, WidgetComponent } from '@alfresco/adf-core';
import { catchError, debounceTime, filter, switchMap, tap } from 'rxjs/operators';
import { merge, of } from 'rxjs';
import { UntypedFormControl } from '@angular/forms';
import { ReactiveFormsModule, UntypedFormControl } from '@angular/forms';
import { PeopleProcessService } from '../../../common/services/people-process.service';
import { CommonModule } from '@angular/common';
import { MatFormFieldModule } from '@angular/material/form-field';
import { TranslateModule } from '@ngx-translate/core';
import { MatInputModule } from '@angular/material/input';
import { MatAutocompleteModule } from '@angular/material/autocomplete';
@Component({
selector: 'functional-group-widget',
standalone: true,
imports: [CommonModule, MatFormFieldModule, TranslateModule, MatInputModule, ReactiveFormsModule, MatAutocompleteModule, ErrorWidgetComponent],
templateUrl: './functional-group.widget.html',
styleUrls: ['./functional-group.widget.scss'],
host: {

View File

@ -17,16 +17,34 @@
/* eslint-disable @angular-eslint/component-selector */
import { FormService, WidgetComponent } from '@alfresco/adf-core';
import { ErrorWidgetComponent, FormService, InitialUsernamePipe, WidgetComponent } from '@alfresco/adf-core';
import { Component, ElementRef, EventEmitter, OnInit, Output, ViewChild, ViewEncapsulation } from '@angular/core';
import { UntypedFormControl } from '@angular/forms';
import { ReactiveFormsModule, UntypedFormControl } from '@angular/forms';
import { Observable, of } from 'rxjs';
import { catchError, distinctUntilChanged, map, switchMap, tap } from 'rxjs/operators';
import { PeopleProcessService } from '../../../common/services/people-process.service';
import { LightUserRepresentation } from '@alfresco/js-api';
import { CommonModule } from '@angular/common';
import { TranslateModule } from '@ngx-translate/core';
import { MatFormFieldModule } from '@angular/material/form-field';
import { MatInputModule } from '@angular/material/input';
import { MatAutocompleteModule } from '@angular/material/autocomplete';
import { MatTooltipModule } from '@angular/material/tooltip';
@Component({
selector: 'people-widget',
standalone: true,
imports: [
CommonModule,
TranslateModule,
MatFormFieldModule,
MatInputModule,
ReactiveFormsModule,
MatAutocompleteModule,
MatTooltipModule,
InitialUsernamePipe,
ErrorWidgetComponent
],
templateUrl: './people.widget.html',
styleUrls: ['./people.widget.scss'],
host: {

View File

@ -15,15 +15,42 @@
* limitations under the License.
*/
import { UploadWidgetComponent } from './upload/upload.widget';
import { DocumentWidgetComponent } from './document/document.widget';
import { ContentWidgetComponent } from './document/content.widget';
import { PeopleWidgetComponent } from './people/people.widget';
import { FunctionalGroupWidgetComponent } from './functional-group/functional-group.widget';
import { RadioButtonsWidgetComponent } from './radio-buttons/radio-buttons.widget';
import { DropdownWidgetComponent } from './dropdown/dropdown.widget';
import { TypeaheadWidgetComponent } from './typeahead/typeahead.widget';
import { FileViewerWidgetComponent } from './file-viewer/file-viewer.widget';
import { DYNAMIC_TABLE_WIDGET_DIRECTIVES } from './dynamic-table';
import { AttachFileWidgetComponent, AttachFileWidgetDialogComponent, AttachFolderWidgetComponent } from './content-widget';
export * from './content-widget/public-api';
export * from './document/content.widget';
export * from './content-widget/index';
export * from './document/document.widget';
export * from './people/people.widget';
export * from './radio-buttons/radio-buttons.widget';
export * from './functional-group/functional-group.widget';
export * from './typeahead/typeahead.widget';
export * from './dropdown/dropdown.widget';
export * from './file-viewer/file-viewer.widget';
export * from './dynamic-table/index';
export * from './upload/upload.widget';
export const WIDGET_DIRECTIVES = [
AttachFileWidgetComponent,
AttachFolderWidgetComponent,
AttachFileWidgetDialogComponent,
ContentWidgetComponent,
DocumentWidgetComponent,
DropdownWidgetComponent,
...DYNAMIC_TABLE_WIDGET_DIRECTIVES,
FileViewerWidgetComponent,
FunctionalGroupWidgetComponent,
PeopleWidgetComponent,
RadioButtonsWidgetComponent,
TypeaheadWidgetComponent,
UploadWidgetComponent
];

View File

@ -17,13 +17,20 @@
/* eslint-disable @angular-eslint/component-selector */
import { FormService, WidgetComponent } from '@alfresco/adf-core';
import { ErrorWidgetComponent, FormService, WidgetComponent } from '@alfresco/adf-core';
import { Component, OnInit, ViewEncapsulation } from '@angular/core';
import { TaskFormService } from '../../services/task-form.service';
import { ProcessDefinitionService } from '../../services/process-definition.service';
import { CommonModule } from '@angular/common';
import { TranslateModule } from '@ngx-translate/core';
import { MatRadioModule } from '@angular/material/radio';
import { FormsModule } from '@angular/forms';
import { MatTooltipModule } from '@angular/material/tooltip';
@Component({
selector: 'radio-buttons-widget',
standalone: true,
imports: [CommonModule, TranslateModule, MatRadioModule, FormsModule, MatTooltipModule, ErrorWidgetComponent],
templateUrl: './radio-buttons.widget.html',
styleUrls: ['./radio-buttons.widget.scss'],
host: {

View File

@ -34,7 +34,7 @@ describe('TypeaheadWidgetComponent', () => {
beforeEach(() => {
TestBed.configureTestingModule({
imports: [CoreTestingModule]
imports: [CoreTestingModule, TypeaheadWidgetComponent]
});
translationService = TestBed.inject(TranslateService);
taskFormService = TestBed.inject(TaskFormService);

View File

@ -17,14 +17,22 @@
/* eslint-disable @angular-eslint/component-selector */
import { FormService, FormFieldOption, WidgetComponent } from '@alfresco/adf-core';
import { FormService, FormFieldOption, WidgetComponent, ErrorWidgetComponent } from '@alfresco/adf-core';
import { ENTER, ESCAPE } from '@angular/cdk/keycodes';
import { Component, OnInit, ViewEncapsulation } from '@angular/core';
import { TaskFormService } from '../../services/task-form.service';
import { ProcessDefinitionService } from '../../services/process-definition.service';
import { CommonModule } from '@angular/common';
import { TranslateModule } from '@ngx-translate/core';
import { MatFormFieldModule } from '@angular/material/form-field';
import { FormsModule } from '@angular/forms';
import { MatAutocompleteModule } from '@angular/material/autocomplete';
import { MatInputModule } from '@angular/material/input';
@Component({
selector: 'typeahead-widget',
standalone: true,
imports: [CommonModule, TranslateModule, MatFormFieldModule, FormsModule, MatAutocompleteModule, ErrorWidgetComponent, MatInputModule],
templateUrl: './typeahead.widget.html',
styleUrls: ['./typeahead.widget.scss'],
host: {

View File

@ -74,7 +74,7 @@ describe('UploadWidgetComponent', () => {
beforeEach(() => {
TestBed.configureTestingModule({
imports: [CoreTestingModule]
imports: [CoreTestingModule, UploadWidgetComponent]
});
});

View File

@ -17,14 +17,21 @@
/* eslint-disable @angular-eslint/component-selector */
import { ThumbnailService, FormService, ContentLinkModel, WidgetComponent } from '@alfresco/adf-core';
import { ThumbnailService, FormService, ContentLinkModel, WidgetComponent, ErrorWidgetComponent } from '@alfresco/adf-core';
import { Component, ElementRef, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';
import { Observable, from } from 'rxjs';
import { ProcessContentService } from '../../services/process-content.service';
import { mergeMap, map } from 'rxjs/operators';
import { CommonModule } from '@angular/common';
import { TranslateModule } from '@ngx-translate/core';
import { MatListModule } from '@angular/material/list';
import { MatButtonModule } from '@angular/material/button';
import { MatIconModule } from '@angular/material/icon';
@Component({
selector: 'upload-widget',
standalone: true,
imports: [CommonModule, TranslateModule, MatListModule, MatButtonModule, MatIconModule, ErrorWidgetComponent],
templateUrl: './upload.widget.html',
styleUrls: ['./upload.widget.scss'],
host: {

View File

@ -1,60 +0,0 @@
/*!
* @license
* Copyright © 2005-2024 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 { NgModule } from '@angular/core';
import { MatAutocompleteModule } from '@angular/material/autocomplete';
import { MatButtonModule } from '@angular/material/button';
import { MatCardModule } from '@angular/material/card';
import { MatCheckboxModule } from '@angular/material/checkbox';
import { MatChipsModule } from '@angular/material/chips';
import { MatNativeDateModule, MatOptionModule, MatRippleModule } from '@angular/material/core';
import { MAT_FORM_FIELD_DEFAULT_OPTIONS } from '@angular/material/form-field';
import { MatDatepickerModule } from '@angular/material/datepicker';
import { MatDialogModule } from '@angular/material/dialog';
import { MatGridListModule } from '@angular/material/grid-list';
import { MatIconModule } from '@angular/material/icon';
import { MatInputModule } from '@angular/material/input';
import { MatListModule } from '@angular/material/list';
import { MatMenuModule } from '@angular/material/menu';
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
import { MatRadioModule } from '@angular/material/radio';
import { MatSelectModule } from '@angular/material/select';
import { MatSlideToggleModule } from '@angular/material/slide-toggle';
import { MatTableModule } from '@angular/material/table';
import { MatTabsModule } from '@angular/material/tabs';
import { MatTooltipModule } from '@angular/material/tooltip';
@NgModule({
providers: [
{ provide: MAT_FORM_FIELD_DEFAULT_OPTIONS, useValue: { floatLabel: 'never' } }
],
imports: [
MatAutocompleteModule, MatButtonModule, MatCardModule, MatDialogModule,
MatCheckboxModule, MatDatepickerModule, MatGridListModule, MatIconModule, MatInputModule,
MatListModule, MatOptionModule, MatRadioModule, MatSelectModule, MatSlideToggleModule, MatTableModule,
MatTabsModule, MatProgressSpinnerModule, MatNativeDateModule, MatRippleModule, MatTooltipModule,
MatChipsModule, MatMenuModule
],
exports: [
MatAutocompleteModule, MatButtonModule, MatCardModule, MatDialogModule,
MatCheckboxModule, MatDatepickerModule, MatGridListModule, MatIconModule, MatInputModule,
MatListModule, MatOptionModule, MatRadioModule, MatSelectModule, MatSlideToggleModule, MatTableModule,
MatTabsModule, MatProgressSpinnerModule, MatNativeDateModule, MatRippleModule, MatTooltipModule,
MatChipsModule, MatMenuModule
]
})
export class MaterialModule {}

View File

@ -1,29 +0,0 @@
/*!
* @license
* Copyright © 2005-2024 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 { NgModule } from '@angular/core';
import { PeopleComponent } from './components/people/people.component';
import { PeopleListComponent } from './components/people-list/people-list.component';
import { PeopleSearchComponent } from './components/people-search/people-search.component';
import { PeopleSearchFieldComponent } from './components/people-search-field/people-search-field.component';
import { PeopleSelectorComponent } from './components/people-selector/people-selector.component';
@NgModule({
imports: [PeopleComponent, PeopleSearchComponent, PeopleSearchFieldComponent, PeopleSelectorComponent, PeopleListComponent],
exports: [PeopleComponent, PeopleSearchComponent, PeopleSearchFieldComponent, PeopleSelectorComponent, PeopleListComponent]
})
export class PeopleModule {}

View File

@ -15,12 +15,23 @@
* limitations under the License.
*/
import { PeopleComponent } from './components/people/people.component';
import { PeopleSearchComponent } from './components/people-search/people-search.component';
import { PeopleSearchFieldComponent } from './components/people-search-field/people-search-field.component';
import { PeopleSelectorComponent } from './components/people-selector/people-selector.component';
import { PeopleListComponent } from './components/people-list/people-list.component';
export * from './components/people/people.component';
export * from './components/people-list/people-list.component';
export * from './components/people-search/people-search.component';
export * from './components/people-search-field/people-search-field.component';
export * from './components/people-selector/people-selector.component';
export * from './interfaces/perform-search-callback.interface';
export * from './people.module';
export const PEOPLE_DIRECTIVES = [
PeopleComponent,
PeopleSearchComponent,
PeopleSearchFieldComponent,
PeopleSelectorComponent,
PeopleListComponent
] as const;

View File

@ -15,6 +15,9 @@
* limitations under the License.
*/
import { ProcessCommentsComponent } from './process-comments.component';
export * from './process-comments.component';
export * from './services/comment-process.service';
export * from './process-comments.module';
export const PROCESS_COMMENTS_DIRECTIVES = [ProcessCommentsComponent] as const;

View File

@ -1,25 +0,0 @@
/*!
* @license
* Copyright © 2005-2024 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 { NgModule } from '@angular/core';
import { ProcessCommentsComponent } from './process-comments.component';
@NgModule({
imports: [ProcessCommentsComponent],
exports: [ProcessCommentsComponent]
})
export class ProcessCommentsModule {}

View File

@ -18,9 +18,9 @@
import { Component } from '@angular/core';
import { ComponentFixture, fakeAsync, TestBed } from '@angular/core/testing';
import { of, throwError } from 'rxjs';
import { ProcessService } from './../services/process.service';
import { ProcessService } from '../../services/process.service';
import { DownloadService } from '@alfresco/adf-core';
import { ProcessTestingModule } from '../../testing/process.testing.module';
import { ProcessTestingModule } from '../../../testing/process.testing.module';
import { ProcessInstanceAuditInfoRepresentation } from '@alfresco/js-api';
@Component({

View File

@ -19,7 +19,7 @@
import { DownloadService } from '@alfresco/adf-core';
import { Directive, EventEmitter, Input, OnChanges, Output } from '@angular/core';
import { ProcessService } from './../services/process.service';
import { ProcessService } from '../../services/process.service';
const JSON_FORMAT: string = 'json';
const PDF_FORMAT: string = 'pdf';
@ -27,13 +27,13 @@ const PDF_FORMAT: string = 'pdf';
@Directive({
// eslint-disable-next-line @angular-eslint/directive-selector
selector: 'button[adf-process-audit]',
standalone: true,
host: {
role: 'button',
'(click)': 'onClickAudit()'
}
})
export class ProcessAuditDirective implements OnChanges {
/** ID of the process. */
@Input('process-id')
processId: string;
@ -58,9 +58,7 @@ export class ProcessAuditDirective implements OnChanges {
@Output()
error: EventEmitter<any> = new EventEmitter<any>();
constructor(private downloadService: DownloadService,
private processListService: ProcessService) {
}
constructor(private downloadService: DownloadService, private processListService: ProcessService) {}
ngOnChanges(): void {
if (!this.isValidType()) {
@ -88,11 +86,13 @@ export class ProcessAuditDirective implements OnChanges {
}
this.clicked.emit({ format: this.format, value: blob, fileName: this.fileName });
},
(err) => this.error.emit(err));
(err) => this.error.emit(err)
);
} else {
this.processListService.fetchProcessAuditJsonById(this.processId).subscribe(
(res) => this.clicked.emit({ format: this.format, value: res, fileName: this.fileName }),
(err) => this.error.emit(err));
(err) => this.error.emit(err)
);
}
}
@ -107,5 +107,4 @@ export class ProcessAuditDirective implements OnChanges {
isPdfFormat() {
return this.format === PDF_FORMAT;
}
}

View File

@ -17,12 +17,12 @@
import { CUSTOM_ELEMENTS_SCHEMA, SimpleChange } from '@angular/core';
import { from, of, throwError } from 'rxjs';
import { AppsProcessService } from '../../app-list/services/apps-process.service';
import { ProcessFilterService } from '../services/process-filter.service';
import { AppsProcessService } from '../../../services/apps-process.service';
import { ProcessFilterService } from '../../services/process-filter.service';
import { ProcessFiltersComponent } from './process-filters.component';
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { By } from '@angular/platform-browser';
import { ProcessTestingModule } from '../../testing/process.testing.module';
import { ProcessTestingModule } from '../../../testing/process.testing.module';
import { NavigationStart, Router } from '@angular/router';
import { RouterTestingModule } from '@angular/router/testing';
import { ProcessInstanceFilterRepresentation, UserProcessInstanceFilterRepresentation } from '@alfresco/js-api';

View File

@ -18,15 +18,20 @@
import { Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, ViewEncapsulation } from '@angular/core';
import { ProcessInstanceFilterRepresentation, UserProcessInstanceFilterRepresentation } from '@alfresco/js-api';
import { Subject } from 'rxjs';
import { ProcessFilterService } from './../services/process-filter.service';
import { AppsProcessService } from '../../app-list/services/apps-process.service';
import { IconModel } from '../../app-list/icon.model';
import { ProcessFilterService } from '../../services/process-filter.service';
import { AppsProcessService } from '../../../services/apps-process.service';
import { IconModel } from '../../../app-list/icon.model';
import { NavigationStart, Router } from '@angular/router';
import { filter, takeUntil } from 'rxjs/operators';
import { Location } from '@angular/common';
import { CommonModule, Location } from '@angular/common';
import { TranslateModule } from '@ngx-translate/core';
import { MatButtonModule } from '@angular/material/button';
import { IconComponent } from '@alfresco/adf-core';
@Component({
selector: 'adf-process-instance-filters',
standalone: true,
imports: [CommonModule, TranslateModule, MatButtonModule, IconComponent],
templateUrl: './process-filters.component.html',
styleUrls: ['./process-filters.component.scss'],
encapsulation: ViewEncapsulation.None

View File

@ -1,4 +1,4 @@
<div *ngIf="!processInstanceDetails">{{ 'ADF_PROCESS_LIST.DETAILS.MESSAGES.NONE'|translate }}</div>
<div *ngIf="!processInstanceDetails">{{ 'ADF_PROCESS_LIST.DETAILS.MESSAGES.NONE' | translate }}</div>
<mat-card *ngIf="processInstanceDetails">
<mat-card-header>
<mat-card-title>{{ getProcessNameOrDescription('medium') }}</mat-card-title>
@ -6,15 +6,15 @@
<mat-card-content>
<adf-process-instance-header
#processInstanceHeader
[processInstance]="processInstanceDetails"
(showProcessDiagram)="onShowProcessDiagram()">
[processInstance]="processInstanceDetails">
</adf-process-instance-header>
<button
class="adf-in-medias-res-button"
mat-button id="show-diagram-button"
id="show-diagram-button"
type="button"
mat-button mat-raised-button
mat-button
mat-raised-button
[disabled]="!isRunning()"
(click)="onShowProcessDiagram()">{{ 'ADF_PROCESS_LIST.DETAILS.BUTTON.SHOW_DIAGRAM' | translate }}</button>
@ -34,7 +34,7 @@
<mat-card>
<mat-card-content>
<adf-process-instance-comments #activitiComments
<adf-process-instance-comments
[readOnly]="false"
[processInstanceId]="processInstanceDetails.id">
</adf-process-instance-comments>

View File

@ -19,14 +19,12 @@ import { NO_ERRORS_SCHEMA, SimpleChange } from '@angular/core';
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { By } from '@angular/platform-browser';
import { of } from 'rxjs';
import { CommentProcessService } from '../../process-comments/services/comment-process.service';
import { TaskListModule } from '../../task-list/task-list.module';
import { exampleProcess, exampleProcessNoName, mockRunningProcess, processEnded } from './../../mock';
import { mockProcessInstanceComments } from './../../mock/process/process-comments.mock';
import { ProcessService } from './../services/process.service';
import { CommentProcessService } from '../../../process-comments/services/comment-process.service';
import { exampleProcess, exampleProcessNoName, mockRunningProcess, processEnded } from '../../../mock';
import { mockProcessInstanceComments } from '../../../mock/process/process-comments.mock';
import { ProcessService } from '../../services/process.service';
import { ProcessInstanceDetailsComponent } from './process-instance-details.component';
import { ProcessTestingModule } from '../../testing/process.testing.module';
import { FormModule } from '../../form';
import { ProcessTestingModule } from '../../../testing/process.testing.module';
import { HarnessLoader } from '@angular/cdk/testing';
import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed';
import { MatCardHarness } from '@angular/material/card/testing';
@ -40,7 +38,7 @@ describe('ProcessInstanceDetailsComponent', () => {
beforeEach(() => {
TestBed.configureTestingModule({
imports: [ProcessTestingModule, FormModule, TaskListModule],
imports: [ProcessTestingModule, ProcessInstanceDetailsComponent],
schemas: [NO_ERRORS_SCHEMA]
});
fixture = TestBed.createComponent(ProcessInstanceDetailsComponent);

View File

@ -15,16 +15,30 @@
* limitations under the License.
*/
import { DatePipe } from '@angular/common';
import { CommonModule, DatePipe } from '@angular/common';
import { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges, ViewChild } from '@angular/core';
import { TaskDetailsEvent } from '../../task-list';
import { ProcessService } from './../services/process.service';
import { ProcessInstanceHeaderComponent } from './process-instance-header.component';
import { ProcessInstanceTasksComponent } from './process-instance-tasks.component';
import { TaskDetailsEvent } from '../../../task-list';
import { ProcessService } from '../../services/process.service';
import { ProcessInstanceHeaderComponent } from '../process-instance-header/process-instance-header.component';
import { ProcessInstanceTasksComponent } from '../process-instance-tasks/process-instance-tasks.component';
import { ProcessInstanceRepresentation } from '@alfresco/js-api';
import { TranslateModule } from '@ngx-translate/core';
import { MatCardModule } from '@angular/material/card';
import { MatButtonModule } from '@angular/material/button';
import { ProcessCommentsComponent } from '../../../process-comments';
@Component({
selector: 'adf-process-instance-details',
standalone: true,
imports: [
CommonModule,
TranslateModule,
MatCardModule,
MatButtonModule,
ProcessCommentsComponent,
ProcessInstanceTasksComponent,
ProcessInstanceHeaderComponent
],
templateUrl: './process-instance-details.component.html',
styleUrls: ['./process-instance-details.component.css']
})

View File

@ -17,9 +17,9 @@
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { AppConfigService } from '@alfresco/adf-core';
import { exampleProcess } from '../../mock';
import { exampleProcess } from '../../../mock';
import { ProcessInstanceHeaderComponent } from './process-instance-header.component';
import { ProcessTestingModule } from '../../testing/process.testing.module';
import { ProcessTestingModule } from '../../../testing/process.testing.module';
describe('ProcessInstanceHeaderComponent', () => {
let component: ProcessInstanceHeaderComponent;

View File

@ -21,13 +21,18 @@ import {
CardViewItem,
CardViewBaseItemModel,
CardViewTextItemModel,
TranslationService
TranslationService,
CardViewModule
} from '@alfresco/adf-core';
import { Component, Input, OnChanges } from '@angular/core';
import { ProcessInstanceRepresentation } from '@alfresco/js-api';
import { CommonModule } from '@angular/common';
import { MatCardModule } from '@angular/material/card';
@Component({
selector: 'adf-process-instance-header',
standalone: true,
imports: [CommonModule, MatCardModule, CardViewModule],
templateUrl: './process-instance-header.component.html',
styleUrls: ['./process-instance-header.component.css']
})

View File

@ -19,10 +19,10 @@ import { SimpleChange } from '@angular/core';
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { By } from '@angular/platform-browser';
import { of } from 'rxjs';
import { taskDetailsMock } from '../../mock';
import { ProcessService } from './../services/process.service';
import { taskDetailsMock } from '../../../mock';
import { ProcessService } from '../../services/process.service';
import { ProcessInstanceTasksComponent } from './process-instance-tasks.component';
import { ProcessTestingModule } from '../../testing/process.testing.module';
import { ProcessTestingModule } from '../../../testing/process.testing.module';
import { HarnessLoader } from '@angular/cdk/testing';
import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed';
import { MatListItemHarness } from '@angular/material/list/testing';

View File

@ -15,17 +15,25 @@
* limitations under the License.
*/
import { DatePipe } from '@angular/common';
import { CommonModule, DatePipe } from '@angular/common';
import { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges, ViewChild, OnDestroy } from '@angular/core';
import { MatDialog } from '@angular/material/dialog';
import { MatDialog, MatDialogModule } from '@angular/material/dialog';
import { Observable, Observer, Subject } from 'rxjs';
import { TaskDetailsEvent } from '../../task-list';
import { ProcessService } from './../services/process.service';
import { TaskDetailsEvent } from '../../../task-list';
import { ProcessService } from '../../services/process.service';
import { share, takeUntil } from 'rxjs/operators';
import { ProcessInstanceRepresentation, TaskRepresentation } from '@alfresco/js-api';
import { MatButtonModule } from '@angular/material/button';
import { TranslateModule } from '@ngx-translate/core';
import { MatChipsModule } from '@angular/material/chips';
import { MatListModule } from '@angular/material/list';
import { MatIconModule } from '@angular/material/icon';
import { StartFormComponent } from '../../../form';
@Component({
selector: 'adf-process-instance-tasks',
standalone: true,
imports: [CommonModule, MatButtonModule, TranslateModule, MatChipsModule, MatListModule, MatIconModule, MatDialogModule, StartFormComponent],
templateUrl: './process-instance-tasks.component.html',
styleUrls: ['./process-instance-tasks.component.css']
})

View File

@ -30,9 +30,9 @@ import {
DataCellEvent,
ObjectDataColumn
} from '@alfresco/adf-core';
import { fakeProcessInstance, fakeProcessInstancesWithNoName, fakeProcessInstancesEmpty, fakeProcessColumnSchema } from '../../mock';
import { ProcessService } from '../services/process.service';
import { ProcessTestingModule } from '../../testing/process.testing.module';
import { fakeProcessInstance, fakeProcessInstancesWithNoName, fakeProcessInstancesEmpty, fakeProcessColumnSchema } from '../../../mock';
import { ProcessService } from '../../services/process.service';
import { ProcessTestingModule } from '../../../testing/process.testing.module';
import { HarnessLoader } from '@angular/cdk/testing';
import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed';
import { MatProgressSpinnerHarness } from '@angular/material/progress-spinner/testing';

View File

@ -28,10 +28,12 @@ import {
PaginationModel,
UserPreferencesService,
DataCellEvent,
DEFAULT_PAGINATION
DEFAULT_PAGINATION,
DataTableModule,
EmptyContentComponent
} from '@alfresco/adf-core';
import { AfterContentInit, Component, ContentChild, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';
import { ProcessService } from '../services/process.service';
import { ProcessService } from '../../services/process.service';
import { BehaviorSubject } from 'rxjs';
import { finalize } from 'rxjs/operators';
import {
@ -40,6 +42,9 @@ import {
ProcessInstanceQueryRepresentationState,
ResultListDataRepresentationProcessInstanceRepresentation
} from '@alfresco/js-api';
import { CommonModule } from '@angular/common';
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
import { TranslateModule } from '@ngx-translate/core';
const PRESET_KEY = 'adf-process-list.presets';
@ -63,6 +68,8 @@ export const processPresetsDefaultModel = {
@Component({
selector: 'adf-process-instance-list',
standalone: true,
imports: [CommonModule, DataTableModule, MatProgressSpinnerModule, EmptyContentComponent, TranslateModule],
styleUrls: ['./process-list.component.css'],
templateUrl: './process-list.component.html'
})

View File

@ -31,8 +31,7 @@
matInput
[formControl]="processDefinitionInput"
[matAutocomplete]="auto"
id="processDefinitionName"
#inputAutocomplete>
id="processDefinitionName">
<div class="adf-process-input-autocomplete">
<mat-autocomplete
#auto="matAutocomplete"

View File

@ -18,15 +18,15 @@
import { SimpleChange } from '@angular/core';
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { AppConfigService } from '@alfresco/adf-core';
import { AppsProcessService } from '../../app-list/services/apps-process.service';
import { AppsProcessService } from '../../../services/apps-process.service';
import { of, throwError } from 'rxjs';
import { MatSelectChange } from '@angular/material/select';
import { ProcessService } from '../services/process.service';
import { newProcess, taskFormMock, testProcessDef, testMultipleProcessDefs, testProcessDefWithForm, testProcessDefinitions } from '../../mock';
import { ProcessService } from '../../services/process.service';
import { newProcess, taskFormMock, testProcessDef, testMultipleProcessDefs, testProcessDefWithForm, testProcessDefinitions } from '../../../mock';
import { StartProcessInstanceComponent } from './start-process.component';
import { ProcessTestingModule } from '../../testing/process.testing.module';
import { deployedApps } from '../../mock/apps-list.mock';
import { ActivitiContentService } from '../../form/services/activiti-alfresco.service';
import { ProcessTestingModule } from '../../../testing/process.testing.module';
import { deployedApps } from '../../../mock/apps-list.mock';
import { ActivitiContentService } from '../../../form/services/activiti-alfresco.service';
import { HarnessLoader } from '@angular/cdk/testing';
import { MatFormFieldHarness } from '@angular/material/form-field/testing';
import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed';

View File

@ -16,15 +16,15 @@
*/
import { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges, ViewChild, ViewEncapsulation, OnDestroy } from '@angular/core';
import { AppConfigService, AppConfigValues, FormValues, LocalizedDatePipe } from '@alfresco/adf-core';
import { AppsProcessService } from '../../app-list/services/apps-process.service';
import { ProcessService } from './../services/process.service';
import { UntypedFormControl, Validators, AbstractControl } from '@angular/forms';
import { AppConfigService, AppConfigValues, EmptyContentComponent, FormValues, LocalizedDatePipe } from '@alfresco/adf-core';
import { AppsProcessService } from '../../../services/apps-process.service';
import { ProcessService } from '../../services/process.service';
import { UntypedFormControl, Validators, AbstractControl, FormsModule, ReactiveFormsModule } from '@angular/forms';
import { Observable, Subject, forkJoin } from 'rxjs';
import { map, takeUntil } from 'rxjs/operators';
import { MatAutocompleteTrigger } from '@angular/material/autocomplete';
import { MatSelectChange } from '@angular/material/select';
import { StartFormComponent } from '../../form';
import { MatAutocompleteModule, MatAutocompleteTrigger } from '@angular/material/autocomplete';
import { MatSelectChange, MatSelectModule } from '@angular/material/select';
import { StartFormComponent } from '../../../form';
import {
AppDefinitionRepresentation,
Node,
@ -33,8 +33,15 @@ import {
ProcessDefinitionRepresentation,
RestVariable
} from '@alfresco/js-api';
import { ActivitiContentService } from '../../form/services/activiti-alfresco.service';
import { ActivitiContentService } from '../../../form/services/activiti-alfresco.service';
import { getTime } from 'date-fns';
import { CommonModule } from '@angular/common';
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
import { TranslateModule } from '@ngx-translate/core';
import { MatFormFieldModule } from '@angular/material/form-field';
import { MatButtonModule } from '@angular/material/button';
import { MatIconModule } from '@angular/material/icon';
import { MatInputModule } from '@angular/material/input';
const MAX_LENGTH = 255;
const DATE_TIME_IDENTIFIER_REG_EXP = new RegExp('%{datetime}', 'i');
@ -42,6 +49,22 @@ const PROCESS_DEFINITION_IDENTIFIER_REG_EXP = new RegExp('%{processdefinition}',
@Component({
selector: 'adf-start-process',
standalone: true,
imports: [
CommonModule,
MatProgressSpinnerModule,
TranslateModule,
MatFormFieldModule,
MatSelectModule,
FormsModule,
ReactiveFormsModule,
MatAutocompleteModule,
MatButtonModule,
MatIconModule,
MatInputModule,
EmptyContentComponent,
StartFormComponent
],
templateUrl: './start-process.component.html',
styleUrls: ['./start-process.component.scss'],
encapsulation: ViewEncapsulation.None

View File

@ -1,68 +0,0 @@
/*!
* @license
* Copyright © 2005-2024 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 { CommonModule } from '@angular/common';
import { NgModule } from '@angular/core';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { CoreModule } from '@alfresco/adf-core';
import { MaterialModule } from '../material.module';
import { ProcessCommentsModule } from '../process-comments/process-comments.module';
import { TaskListModule } from '../task-list/task-list.module';
import { PeopleModule } from '../people/people.module';
import { ContentWidgetModule } from '../form/widgets/content-widget/content-widget.module';
import { ProcessAuditDirective } from './components/process-audit.directive';
import { ProcessFiltersComponent } from './components/process-filters.component';
import { ProcessInstanceDetailsComponent } from './components/process-instance-details.component';
import { ProcessInstanceHeaderComponent } from './components/process-instance-header.component';
import { ProcessInstanceTasksComponent } from './components/process-instance-tasks.component';
import { ProcessInstanceListComponent } from './components/process-list.component';
import { StartProcessInstanceComponent } from './components/start-process.component';
import { FormModule } from '../form/form.module';
@NgModule({
imports: [
CommonModule,
MaterialModule,
FormsModule,
ReactiveFormsModule,
CoreModule,
TaskListModule,
PeopleModule,
ContentWidgetModule,
ProcessCommentsModule,
FormModule
],
declarations: [
ProcessInstanceListComponent,
ProcessFiltersComponent,
ProcessInstanceDetailsComponent,
ProcessAuditDirective,
ProcessInstanceHeaderComponent,
ProcessInstanceTasksComponent,
StartProcessInstanceComponent
],
exports: [
ProcessInstanceListComponent,
ProcessFiltersComponent,
ProcessInstanceDetailsComponent,
ProcessAuditDirective,
ProcessInstanceHeaderComponent,
ProcessInstanceTasksComponent,
StartProcessInstanceComponent
]
})
export class ProcessListModule {}

Some files were not shown because too many files have changed in this diff Show More