[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
152 changed files with 798 additions and 855 deletions

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

@@ -15,17 +15,23 @@
* limitations under the License.
*/
import { ADF_DATE_FORMATS, AdfDateFnsAdapter, DateFnsUtils } from '@alfresco/adf-core';
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 },
@@ -73,7 +79,7 @@ export class DateEditorComponent implements OnInit {
} else if (newDateValue?.value) {
this.row.value[this.column.id] = `${DateFnsUtils.formatDate(newDateValue?.value, 'yyyy-MM-dd')}T00:00:00.000Z`;
this.table.flushValue();
} else {
} else {
this.row.value[this.column.id] = '';
}
}

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,12 +43,9 @@ 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);
fixture = TestBed.createComponent(FileViewerWidgetComponent);

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 {}

View File

@@ -16,16 +16,32 @@
*/
// component
export * from './components/process-filters.component';
export * from './components/process-instance-details.component';
export * from './components/process-audit.directive';
export * from './components/process-instance-header.component';
export * from './components/process-instance-tasks.component';
export * from './components/process-list.component';
export * from './components/start-process.component';
import { ProcessInstanceListComponent } from './components/process-list/process-list.component';
import { ProcessFiltersComponent } from './components/process-filters/process-filters.component';
import { ProcessInstanceDetailsComponent } from './components/process-instance-details/process-instance-details.component';
import { ProcessInstanceHeaderComponent } from './components/process-instance-header/process-instance-header.component';
import { ProcessInstanceTasksComponent } from './components/process-instance-tasks/process-instance-tasks.component';
import { StartProcessInstanceComponent } from './components/start-process/start-process.component';
import { ProcessAuditDirective } from './components/process-audit/process-audit.directive';
export * from './components/process-filters/process-filters.component';
export * from './components/process-instance-details/process-instance-details.component';
export * from './components/process-audit/process-audit.directive';
export * from './components/process-instance-header/process-instance-header.component';
export * from './components/process-instance-tasks/process-instance-tasks.component';
export * from './components/process-list/process-list.component';
export * from './components/start-process/start-process.component';
// services
export * from './services/process.service';
export * from './services/process-filter.service';
export * from './process-list.module';
export const PROCESS_LIST_DIRECTIVES = [
ProcessAuditDirective,
ProcessInstanceListComponent,
ProcessFiltersComponent,
ProcessInstanceDetailsComponent,
ProcessInstanceHeaderComponent,
ProcessInstanceTasksComponent,
StartProcessInstanceComponent
] 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 { ProcessUserInfoComponent } from './process-user-info.component';
@NgModule({
imports: [ProcessUserInfoComponent],
exports: [ProcessUserInfoComponent]
})
export class ProcessUserInfoModule {}

View File

@@ -15,6 +15,7 @@
* limitations under the License.
*/
export * from './process-user-info.component';
import { ProcessUserInfoComponent } from './process-user-info.component';
export * from './process-user-info.module';
export * from './process-user-info.component';
export const PROCESS_USER_INFO_DIRECTIVES = [ProcessUserInfoComponent] as const;

View File

@@ -15,56 +15,46 @@
* limitations under the License.
*/
import { CommonModule } from '@angular/common';
import { NgModule, ModuleWithProviders } from '@angular/core';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { CoreModule, EmptyContentComponent, FormRenderingService, provideTranslations } from '@alfresco/adf-core';
import { MaterialModule } from './material.module';
import { ProcessListModule } from './process-list/process-list.module';
import { TaskListModule } from './task-list/task-list.module';
import { ProcessCommentsModule } from './process-comments/process-comments.module';
import { PeopleModule } from './people/people.module';
import { FormModule } from './form/form.module';
import { FormRenderingService, provideTranslations } from '@alfresco/adf-core';
import { ProcessFormRenderingService } from './form/process-form-rendering.service';
import { TaskCommentsModule } from './task-comments/task-comments.module';
import { ProcessUserInfoModule } from './process-user-info/process-user-info.module';
import { ATTACHMENT_DIRECTIVES } from './attachment';
import { APPS_LIST_DIRECTIVES } from './app-list';
import { PEOPLE_DIRECTIVES } from './people';
import { PROCESS_COMMENTS_DIRECTIVES } from './process-comments';
import { PROCESS_LIST_DIRECTIVES } from './process-list';
import { TASK_LIST_DIRECTIVES } from './task-list';
import { FORM_DIRECTIVES } from './form';
import { TASK_COMMENTS_DIRECTIVES } from './task-comments';
import { PROCESS_USER_INFO_DIRECTIVES } from './process-user-info';
import { MAT_FORM_FIELD_DEFAULT_OPTIONS } from '@angular/material/form-field';
@NgModule({
imports: [
CoreModule,
CommonModule,
ProcessCommentsModule,
FormsModule,
ReactiveFormsModule,
MaterialModule,
ProcessListModule,
TaskListModule,
TaskCommentsModule,
...PROCESS_COMMENTS_DIRECTIVES,
...PROCESS_LIST_DIRECTIVES,
...TASK_LIST_DIRECTIVES,
...TASK_COMMENTS_DIRECTIVES,
...APPS_LIST_DIRECTIVES,
ProcessUserInfoModule,
...PROCESS_USER_INFO_DIRECTIVES,
...ATTACHMENT_DIRECTIVES,
PeopleModule,
FormModule,
EmptyContentComponent
...PEOPLE_DIRECTIVES,
...FORM_DIRECTIVES
],
providers: [
provideTranslations('adf-process-services', 'assets/adf-process-services'),
{ provide: MAT_FORM_FIELD_DEFAULT_OPTIONS, useValue: { floatLabel: 'never' } }
],
providers: [provideTranslations('adf-process-services', 'assets/adf-process-services')],
exports: [
CommonModule,
ProcessCommentsModule,
FormsModule,
ReactiveFormsModule,
ProcessListModule,
TaskListModule,
TaskCommentsModule,
...PROCESS_COMMENTS_DIRECTIVES,
...PROCESS_LIST_DIRECTIVES,
...TASK_LIST_DIRECTIVES,
...TASK_COMMENTS_DIRECTIVES,
...APPS_LIST_DIRECTIVES,
ProcessUserInfoModule,
...PROCESS_USER_INFO_DIRECTIVES,
...ATTACHMENT_DIRECTIVES,
PeopleModule,
FormModule
...PEOPLE_DIRECTIVES,
...FORM_DIRECTIVES
]
})
export class ProcessModule {
@@ -78,10 +68,4 @@ export class ProcessModule {
]
};
}
static forChild(): ModuleWithProviders<ProcessModule> {
return {
ngModule: ProcessModule
};
}
}

View File

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

View File

@@ -17,7 +17,7 @@
import { Component, Input, ViewEncapsulation } from '@angular/core';
import { ADF_COMMENTS_SERVICE, CommentsModule } from '@alfresco/adf-core';
import { TaskCommentsService } from './services/task-comments.service';
import { TaskCommentsService } from './task-comments.service';
import { CommonModule } from '@angular/common';
@Component({

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 { TaskCommentsComponent } from './task-comments.component';
@NgModule({
imports: [TaskCommentsComponent],
exports: [TaskCommentsComponent]
})
export class TaskCommentsModule {}

View File

@@ -20,7 +20,7 @@ import { ActivitiCommentsApi } from '@alfresco/js-api';
import { Injectable } from '@angular/core';
import { from, Observable } from 'rxjs';
import { map } from 'rxjs/operators';
import { PeopleProcessService } from '../../common/services/people-process.service';
import { PeopleProcessService } from '../common/services/people-process.service';
@Injectable({
providedIn: 'root'

View File

@@ -17,8 +17,8 @@
import { AttachFormComponent } from './attach-form.component';
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { ProcessTestingModule } from '../../testing/process.testing.module';
import { TaskListService } from './../services/tasklist.service';
import { ProcessTestingModule } from '../../../testing/process.testing.module';
import { TaskListService } from '../../services/tasklist.service';
import { of } from 'rxjs';
import { By } from '@angular/platform-browser';
@@ -30,7 +30,7 @@ describe('AttachFormComponent', () => {
beforeEach(() => {
TestBed.configureTestingModule({
imports: [ProcessTestingModule]
imports: [ProcessTestingModule, AttachFormComponent]
});
fixture = TestBed.createComponent(AttachFormComponent);
component = fixture.componentInstance;

View File

@@ -16,14 +16,23 @@
*/
import { Component, EventEmitter, Input, OnChanges, OnInit, Output } from '@angular/core';
import { Form } from '../models/form.model';
import { TaskListService } from './../services/tasklist.service';
import { UntypedFormControl, Validators } from '@angular/forms';
import { ModelService } from '../../form/services/model.service';
import { TaskFormService } from '../../form/services/task-form.service';
import { Form } from '../../models/form.model';
import { TaskListService } from '../../services/tasklist.service';
import { ReactiveFormsModule, UntypedFormControl, Validators } from '@angular/forms';
import { ModelService } from '../../../form/services/model.service';
import { TaskFormService } from '../../../form/services/task-form.service';
import { CommonModule } from '@angular/common';
import { MatCardModule } from '@angular/material/card';
import { TranslateModule } from '@ngx-translate/core';
import { MatFormFieldModule } from '@angular/material/form-field';
import { MatSelectModule } from '@angular/material/select';
import { MatButtonModule } from '@angular/material/button';
import { FormComponent } from '../../../form';
@Component({
selector: 'adf-attach-form',
standalone: true,
imports: [CommonModule, MatCardModule, TranslateModule, MatFormFieldModule, MatSelectModule, ReactiveFormsModule, MatButtonModule, FormComponent],
templateUrl: './attach-form.component.html',
styleUrls: ['./attach-form.component.scss']
})

View File

@@ -18,8 +18,8 @@
import { SimpleChange } from '@angular/core';
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { ChecklistComponent } from './checklist.component';
import { ProcessTestingModule } from '../../testing/process.testing.module';
import { TaskListService } from './../services/tasklist.service';
import { ProcessTestingModule } from '../../../testing/process.testing.module';
import { TaskListService } from '../../services/tasklist.service';
import { of } from 'rxjs';
import { TaskRepresentation } from '@alfresco/js-api';

View File

@@ -16,12 +16,34 @@
*/
import { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges, ViewChild } from '@angular/core';
import { MatDialog } from '@angular/material/dialog';
import { TaskListService } from './../services/tasklist.service';
import { MatDialog, MatDialogModule } from '@angular/material/dialog';
import { TaskListService } from '../../services/tasklist.service';
import { TaskRepresentation } from '@alfresco/js-api';
import { CommonModule } from '@angular/common';
import { TranslateModule } from '@ngx-translate/core';
import { MatChipsModule } from '@angular/material/chips';
import { MatButtonModule } from '@angular/material/button';
import { MatTooltipModule } from '@angular/material/tooltip';
import { MatIconModule } from '@angular/material/icon';
import { MatFormFieldModule } from '@angular/material/form-field';
import { MatInputModule } from '@angular/material/input';
import { FormsModule } from '@angular/forms';
@Component({
selector: 'adf-checklist',
standalone: true,
imports: [
CommonModule,
TranslateModule,
MatChipsModule,
MatButtonModule,
MatTooltipModule,
MatIconModule,
MatDialogModule,
MatFormFieldModule,
MatInputModule,
FormsModule
],
templateUrl: './checklist.component.html',
styleUrls: ['./checklist.component.scss']
})

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