[ACS-10117] Deprecate ADF Storybook and custom Docker builds (#11207)

This commit is contained in:
dominikiwanekhyland
2025-09-18 15:13:01 +02:00
committed by GitHub
parent 4964ae94c5
commit 591934db0e
133 changed files with 2860 additions and 12298 deletions
@@ -90,7 +90,9 @@ adf-cloud-app-details {
}
outline: none;
transition: transform 280ms cubic-bezier(0.4, 0, 0.2, 1), box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);
transition:
transform 280ms cubic-bezier(0.4, 0, 0.2, 1),
box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);
min-height: 200px;
flex-direction: column;
box-sizing: border-box;
@@ -99,7 +101,10 @@ adf-cloud-app-details {
max-width: unset;
&:hover {
box-shadow: 0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 2px rgba(0, 0, 0, 0.12), 0 5px 5px -3px rgba(0, 0, 0, 0.2);
box-shadow:
0 8px 10px 1px rgba(0, 0, 0, 0.14),
0 3px 14px 2px rgba(0, 0, 0, 0.12),
0 5px 5px -3px rgba(0, 0, 0, 0.2);
cursor: pointer;
transform: scale(1.015);
}
@@ -1,57 +0,0 @@
/*!
* @license
* Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { applicationConfig, Meta, moduleMetadata, StoryFn } from '@storybook/angular';
import { AppDetailsCloudComponent } from './app-details-cloud.component';
import { ProcessServicesCloudStoryModule } from '../../../testing/process-services-cloud-story.module';
import { fakeApplicationInstance } from '../../mock/app-model.mock';
import { importProvidersFrom } from '@angular/core';
export default {
component: AppDetailsCloudComponent,
title: 'Process Services Cloud/App List Cloud/App Details Cloud',
decorators: [
moduleMetadata({
imports: [AppDetailsCloudComponent]
}),
applicationConfig({
providers: [importProvidersFrom(ProcessServicesCloudStoryModule)]
})
],
argTypes: {
applicationInstance: {
control: 'object',
table: {
type: { summary: 'ApplicationInstanceModel' }
}
},
selectedApp: {
action: 'selectedApp',
description: 'Emitted when an app entry is clicked.',
table: { category: 'Actions' }
}
},
args: {
applicationInstance: fakeApplicationInstance[0]
}
} as Meta<AppDetailsCloudComponent>;
const template: StoryFn<AppDetailsCloudComponent> = (args) => ({
props: args
});
export const AppDetailsCloud = template.bind({});
@@ -21,6 +21,7 @@ import { CommonModule } from '@angular/common';
import { MatIconModule } from '@angular/material/icon';
import { MatCardModule } from '@angular/material/card';
/** @deprecated this component will be removed because it's unused https://hyland.atlassian.net/browse/ACS-10178 */
@Component({
selector: 'adf-cloud-app-details',
imports: [CommonModule, MatIconModule, MatCardModule],
@@ -1,59 +0,0 @@
/*!
* @license
* Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { applicationConfig, Meta, moduleMetadata, StoryFn } from '@storybook/angular';
import { ProcessServicesCloudStoryModule } from '../../../testing/process-services-cloud-story.module';
import { AppListCloudComponent } from './app-list-cloud.component';
import { importProvidersFrom } from '@angular/core';
export default {
component: AppListCloudComponent,
title: 'Process Services Cloud/App List Cloud/App List Cloud',
decorators: [
moduleMetadata({
imports: [AppListCloudComponent]
}),
applicationConfig({
providers: [importProvidersFrom(ProcessServicesCloudStoryModule)]
})
],
argTypes: {
layoutType: {
control: 'radio',
options: ['GRID', 'LIST'],
description: 'Defines the layout of the apps.',
table: {
type: { summary: 'string' },
defaultValue: { summary: 'GRID' }
}
},
appClick: {
action: 'appClick',
description: 'Emitted when an app entry is clicked.',
table: { category: 'Actions' }
}
},
args: {
layoutType: 'GRID'
}
} as Meta<AppListCloudComponent>;
const template: StoryFn<AppListCloudComponent> = (args) => ({
props: args
});
export const AppListCloud = template.bind({});
@@ -33,6 +33,7 @@ export const LAYOUT_LIST: string = 'LIST';
export const LAYOUT_GRID: string = 'GRID';
export const DEPLOYED_STATUS: string = 'DEPLOYED';
/** @deprecated this component will be removed because it's unused https://hyland.atlassian.net/browse/ACS-10178 */
@Component({
selector: 'adf-cloud-app-list',
imports: [
@@ -15,8 +15,8 @@
* limitations under the License.
*/
export * from './components/app-list-cloud/app-list-cloud.component';
export * from './components/app-details-cloud/app-details-cloud.component';
export * from './services/apps-process-cloud.service';
export * from './models/application-instance.model';
export * from './app-list-cloud.module';
export * from './components/app-list-cloud/app-list-cloud.component';
export * from './components/app-details-cloud/app-details-cloud.component';
@@ -1,66 +0,0 @@
/*!
* @license
* Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { applicationConfig, Meta, moduleMetadata, StoryFn } from '@storybook/angular';
import { ProcessServicesCloudStoryModule } from '../../testing/process-services-cloud-story.module';
import { mockFilterProperty } from '../mock/date-range-filter.mock';
import { DateRangeFilterComponent } from './date-range-filter.component';
import { importProvidersFrom } from '@angular/core';
export default {
component: DateRangeFilterComponent,
title: 'Process Services Cloud/Process Common/Date Range Filter',
decorators: [
moduleMetadata({
imports: [DateRangeFilterComponent]
}),
applicationConfig({
providers: [importProvidersFrom(ProcessServicesCloudStoryModule)]
})
],
argTypes: {
processFilterProperty: {
control: 'object',
table: {
type: { summary: 'ApplicationInstanceModel' }
}
},
options: {
control: 'object',
table: {
type: { summary: 'DateCloudFilterType[]' }
}
},
dateChanged: {
action: 'dateChanged',
table: { category: 'Actions' }
},
dateTypeChange: {
action: 'dateTypeChange',
table: { category: 'Actions' }
}
},
args: {
processFilterProperty: mockFilterProperty
}
} as Meta<DateRangeFilterComponent>;
const template: StoryFn<DateRangeFilterComponent> = (args) => ({
props: args
});
export const DateRangeFilter = template.bind({});
@@ -1,61 +0,0 @@
/*!
* @license
* Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { applicationConfig, Meta, moduleMetadata, StoryFn } from '@storybook/angular';
import { FormDefinitionSelectorCloudComponent } from './form-definition-selector-cloud.component';
import { ProcessServicesCloudStoryModule } from '../../testing/process-services-cloud-story.module';
import { FormDefinitionSelectorCloudService } from '../services/form-definition-selector-cloud.service';
import { FormDefinitionSelectorCloudServiceMock } from '../mocks/form-definition-selector-cloud.service.mock';
import { importProvidersFrom } from '@angular/core';
export default {
component: FormDefinitionSelectorCloudComponent,
title: 'Process Services Cloud/Form Cloud/Form Definition Selector Cloud',
decorators: [
moduleMetadata({
imports: [FormDefinitionSelectorCloudComponent],
providers: [{ provide: FormDefinitionSelectorCloudService, useClass: FormDefinitionSelectorCloudServiceMock }]
}),
applicationConfig({
providers: [importProvidersFrom(ProcessServicesCloudStoryModule)]
})
],
argTypes: {
appName: {
control: 'text',
description: 'Name of the application. If specified, this shows the users who have access to the app.',
table: {
type: { summary: 'string' },
defaultValue: { summary: '' }
}
},
selectForm: {
action: 'selectForm',
description: 'Emitted when a form is selected.',
table: { category: 'Actions' }
}
},
args: {
appName: ''
}
} as Meta<FormDefinitionSelectorCloudComponent>;
const template: StoryFn<FormDefinitionSelectorCloudComponent> = (args) => ({
props: args
});
export const FormDefinitionSelectorCloud = template.bind({});
@@ -23,6 +23,7 @@ import { FormRepresentation } from '../../services/form-fields.interfaces';
import { CommonModule } from '@angular/common';
import { TranslatePipe } from '@ngx-translate/core';
/** @deprecated this component will be removed because it's unused https://hyland.atlassian.net/browse/ACS-10178 */
@Component({
selector: 'adf-cloud-form-definition-selector',
imports: [CommonModule, TranslatePipe, MatSelectModule],
@@ -1,101 +0,0 @@
/*!
* @license
* Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { FormFieldOption, FormModel, FormValues } from '@alfresco/adf-core';
import { UploadApi } from '@alfresco/js-api';
import { Observable, of } from 'rxjs';
import { map, switchMap } from 'rxjs/operators';
import { FormContent } from '../../services/form-fields.interfaces';
import { TaskDetailsCloudModel } from '../../task/public-api';
import { taskDetailsContainer } from '../../task/task-header/mocks/task-details-cloud.mock';
import { fakeCloudForm } from '../mocks/cloud-form.mock';
import { TaskVariableCloud } from '../models/task-variable-cloud.model';
import { FormCloudServiceInterface } from '../services/form-cloud.service.interface';
export class FormCloudServiceMock implements FormCloudServiceInterface {
uploadApi: UploadApi;
getTaskForm(appName: string, taskId: string, version?: number): Observable<any> {
return this.getTask(appName, taskId).pipe(
switchMap((task) => this.getForm(appName, task.formKey, version).pipe(
map((form: FormContent) => {
const flattenForm = {
...form.formRepresentation,
...form.formRepresentation.formDefinition,
taskId: task.id,
taskName: task.name,
processDefinitionId: task.processDefinitionId,
processInstanceId: task.processInstanceId
};
delete flattenForm.formDefinition;
return flattenForm;
})
))
);
}
getTask(_appName: string, taskId: string): Observable<TaskDetailsCloudModel> {
return of(taskDetailsContainer[taskId]);
}
getForm(_appName: string, _formKey: string, _version?: number): Observable<FormContent> {
return of(fakeCloudForm);
}
getTaskVariables(_appName: string, _taskId: string): Observable<TaskVariableCloud[]> {
return of([new TaskVariableCloud({ name: 'name1', value: 5, type: 'text', id: '52' })]);
}
saveTaskForm(
_appName: string,
taskId: string,
_processInstanceId: string,
_formId: string,
_values: FormValues
): Observable<TaskDetailsCloudModel> {
return of(taskDetailsContainer[taskId]);
}
completeTaskForm(
_appName: string,
taskId: string,
_processInstanceId: string,
_formId: string,
_formValues: FormValues,
_outcome: string,
_version: number
): Observable<TaskDetailsCloudModel> {
return of(taskDetailsContainer[taskId]);
}
createTemporaryRawRelatedContent(_file: any, _nodeId: string, _contentHost: string): Observable<any> {
throw new Error('Method not implemented.');
}
getDropDownJsonData(_url: string): Observable<any> {
throw new Error('Method not implemented.');
}
parseForm(_json: any, _data?: TaskVariableCloud[], _readOnly: boolean = false): FormModel {
throw new Error('Method not implemented.');
}
getRestWidgetData(_formName: string, _widgetId: string, _body: Map<string, string>): Observable<FormFieldOption[]> {
throw new Error('Method not implemented.');
}
}
@@ -1,36 +0,0 @@
/*!
* @license
* Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { Injectable } from '@angular/core';
import { Observable, of } from 'rxjs';
import { FormRepresentation } from '../../services/form-fields.interfaces';
import { FormDefinitionSelectorCloudServiceInterface } from '../services/form-definition-selector-cloud.service.interface';
import { mockFormRepresentations } from './form-representation.mock';
@Injectable({
providedIn: 'root'
})
export class FormDefinitionSelectorCloudServiceMock implements FormDefinitionSelectorCloudServiceInterface {
getForms(_appName: string): Observable<FormRepresentation[]> {
return of(mockFormRepresentations.map(response => response.formRepresentation));
}
getStandAloneTaskForms(_appName: string): Observable<FormRepresentation[]> {
return of(mockFormRepresentations.map(response => response.formRepresentation).filter((form: any) => form.standalone ? form : undefined));
}
}
@@ -19,7 +19,6 @@ import { Observable } from 'rxjs';
import { FormRepresentation } from '../../services/form-fields.interfaces';
export interface FormDefinitionSelectorCloudServiceInterface {
getForms(appName: string): Observable<FormRepresentation[]>;
getStandAloneTaskForms(appName: string): Observable<FormRepresentation[]>;
}
@@ -22,6 +22,8 @@ import { BaseCloudService } from '../../services/base-cloud.service';
import { FormRepresentation } from '../../services/form-fields.interfaces';
import { FormDefinitionSelectorCloudServiceInterface } from './form-definition-selector-cloud.service.interface';
/** @deprecated this service will be removed because it's component is unused https://hyland.atlassian.net/browse/ACS-10178 */
@Injectable({
providedIn: 'root'
})
@@ -1,180 +0,0 @@
/*!
* @license
* Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { applicationConfig, Meta, moduleMetadata, StoryFn } from '@storybook/angular';
import { GroupCloudComponent } from './group-cloud.component';
import { ProcessServicesCloudStoryModule } from '../../testing/process-services-cloud-story.module';
import { IdentityGroupService } from '../services/identity-group.service';
import { IdentityGroupServiceMock, mockFoodGroups, mockMeatChicken, mockVegetableAubergine } from '../mock/group-cloud.mock';
import { importProvidersFrom } from '@angular/core';
export default {
component: GroupCloudComponent,
title: 'Process Services Cloud/Group Cloud/Group Cloud',
decorators: [
moduleMetadata({
imports: [GroupCloudComponent]
}),
applicationConfig({
providers: [{ provide: IdentityGroupService, useClass: IdentityGroupServiceMock }, importProvidersFrom(ProcessServicesCloudStoryModule)]
})
],
argTypes: {
appName: {
control: 'text',
description: 'Name of the application. If specified this shows the groups who have access to the app.',
table: {
type: { summary: 'string' }
}
},
title: {
control: 'text',
description: 'Title of the field.',
table: {
type: { summary: 'string' }
}
},
mode: {
control: 'radio',
options: ['single', 'multiple'],
description: 'Group selection mode.',
table: {
type: { summary: 'ComponentSelectionMode' },
defaultValue: { summary: 'single' }
}
},
preSelectGroups: {
control: 'object',
description:
'Array of groups to be pre-selected. This pre-selects all groups in multi selection mode and only the first group of the array in single selection mode.',
table: {
type: { summary: 'IdentityGroupModel[]' },
defaultValue: { summary: '[]' }
}
},
validate: {
control: 'boolean',
description:
'This flag enables the validation on the preSelectGroups passed as input.\n\n' +
'In case the flag is true the components call the identity service to verify the validity of the information passed as input.\n\n' +
'Otherwise, no check will be done.',
table: {
type: { summary: 'boolean' },
defaultValue: { summary: 'false' }
}
},
readOnly: {
control: 'boolean',
description: 'Show the info in readonly mode.',
table: {
type: { summary: 'boolean' },
defaultValue: { summary: 'false' }
}
},
required: {
control: 'boolean',
description: 'Mark this field as required.',
table: {
type: { summary: 'boolean' },
defaultValue: { summary: 'false' }
}
},
groupChipsCtrl: {
control: 'object',
description: 'FormControl to list of group.',
table: {
type: { summary: 'FormControl' },
defaultValue: { summary: "new FormControl({ value: '', disabled: false })" },
category: 'Form Controls'
}
},
searchGroupsControl: {
control: 'object',
description: 'FormControl to search the group.',
table: {
type: { summary: 'FormControl' },
defaultValue: { summary: "new FormControl({ value: '', disabled: false })" },
category: 'Form Controls'
}
},
roles: {
control: 'object',
description: 'Role names of the groups to be listed.',
table: {
type: { summary: 'string[]' },
defaultValue: { summary: '[]' }
}
},
selectGroup: {
action: 'selectGroup',
description: 'Emitted when a group is selected.',
table: { category: 'Actions' }
},
removeGroup: {
action: 'removeGroup',
description: 'Emitted when a group is removed.',
table: { category: 'Actions' }
},
changedGroups: {
action: 'changedGroups',
description: 'Emitted when a group selection changes.',
table: { category: 'Actions' }
},
warning: {
action: 'warning',
description: 'Emitted when an warning occurs.',
table: { category: 'Actions' }
}
},
args: {
appName: 'app',
title: 'Groups',
mode: 'single',
preSelectGroups: [],
validate: false,
readOnly: false,
required: false,
roles: []
}
} as Meta<GroupCloudComponent>;
const template: StoryFn<GroupCloudComponent> = (args) => ({
props: args
});
export const DefaultGroupCloud = template.bind({});
export const ValidPreselectedGroups = template.bind({});
ValidPreselectedGroups.args = {
validate: true,
mode: 'multiple',
preSelectGroups: mockFoodGroups
};
export const MandatoryPreselectedGroups = template.bind({});
MandatoryPreselectedGroups.args = {
validate: true,
mode: 'multiple',
preSelectGroups: [mockVegetableAubergine, { ...mockMeatChicken, readonly: true }]
};
export const InvalidPreselectedGroups = template.bind({});
InvalidPreselectedGroups.args = {
validate: true,
mode: 'multiple',
preSelectGroups: [{ id: 'invalid-group', name: 'Invalid Group' }]
};
@@ -15,23 +15,9 @@
* limitations under the License.
*/
import { Injectable } from '@angular/core';
import { Observable, EMPTY, of } from 'rxjs';
import { IdentityGroupModel } from '../models/identity-group.model';
import { IdentityGroupService } from '@alfresco/adf-process-services-cloud';
export const mockVegetableAubergine: IdentityGroupModel = { id: 'aubergine', name: 'Vegetable Aubergine' };
export const mockMeatChicken: IdentityGroupModel = { id: 'chicken', name: 'Meat Chicken' };
export const mockFoodGroups = [mockVegetableAubergine, mockMeatChicken];
@Injectable()
export class IdentityGroupServiceMock extends IdentityGroupService {
search(name: string): Observable<IdentityGroupModel[]> {
if (name.trim() === '') {
return EMPTY;
}
return of(mockFoodGroups.filter((group) => group.name.toUpperCase().includes(name.toUpperCase())));
}
}
@@ -392,4 +392,4 @@
"ASSIGNEE": "معين له",
"ASSIGNMENT_TYPE": "نوع التعيين"
}
}
}
@@ -392,4 +392,4 @@
"ASSIGNEE": "Pověřená osoba",
"ASSIGNMENT_TYPE": "Typ přidělení"
}
}
}
@@ -392,4 +392,4 @@
"ASSIGNEE": "Modtager",
"ASSIGNMENT_TYPE": "Tildelingstype"
}
}
}
@@ -392,4 +392,4 @@
"ASSIGNEE": "Vastuuhenkilö",
"ASSIGNMENT_TYPE": "Määrityksen tyyppi"
}
}
}
@@ -392,4 +392,4 @@
"ASSIGNEE": "担当者",
"ASSIGNMENT_TYPE": "割り当てタイプ"
}
}
}
@@ -392,4 +392,4 @@
"ASSIGNEE": "Tilordnet",
"ASSIGNMENT_TYPE": "Tilordningstype"
}
}
}
@@ -392,4 +392,4 @@
"ASSIGNEE": "Toegewezen persoon",
"ASSIGNMENT_TYPE": "Toewijzingstype"
}
}
}
@@ -392,4 +392,4 @@
"ASSIGNEE": "Destinatário",
"ASSIGNMENT_TYPE": "Tipo de atribuição"
}
}
}
@@ -392,4 +392,4 @@
"ASSIGNEE": "Исполнитель",
"ASSIGNMENT_TYPE": "Тип задания"
}
}
}
@@ -392,4 +392,4 @@
"ASSIGNEE": "Tilldelad användare",
"ASSIGNMENT_TYPE": "Uppgiftstyp"
}
}
}
@@ -392,4 +392,4 @@
"ASSIGNEE": "被指派者",
"ASSIGNMENT_TYPE": "指派类型"
}
}
}
@@ -1,212 +0,0 @@
/*!
* @license
* Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { applicationConfig, Meta, moduleMetadata, StoryFn } from '@storybook/angular';
import { PeopleCloudComponent } from './people-cloud.component';
import { ProcessServicesCloudStoryModule } from '../../testing/process-services-cloud-story.module';
import { IdentityUserService } from '../services/identity-user.service';
import { IdentityUserServiceMock, mockFoodUsers, mockKielbasaSausage, mockShepherdsPie, mockYorkshirePudding } from '../mock/people-cloud.mock';
import { importProvidersFrom } from '@angular/core';
export default {
component: PeopleCloudComponent,
title: 'Process Services Cloud/People Cloud/People Cloud',
decorators: [
moduleMetadata({
imports: [PeopleCloudComponent]
}),
applicationConfig({
providers: [{ provide: IdentityUserService, useClass: IdentityUserServiceMock }, importProvidersFrom(ProcessServicesCloudStoryModule)]
})
],
argTypes: {
appName: {
control: 'text',
description: 'Name of the application. If specified, this shows the users who have access to the app.',
table: {
type: { summary: 'string' }
}
},
mode: {
control: 'radio',
options: ['single', 'multiple'],
description: 'User selection mode.',
table: {
type: { summary: 'ComponentSelectionMode' },
defaultValue: { summary: 'single' }
}
},
roles: {
control: 'object',
description: 'Role names of the users to be listed.',
table: {
type: { summary: 'string[]' },
defaultValue: { summary: '[]' }
}
},
validate: {
control: 'boolean',
description:
'This flag enables the validation on the preSelectUsers passed as input.\n\n' +
'In case the flag is true the components call the identity service to verify the validity of the information passed as input.\n\n' +
'Otherwise, no check will be done.',
table: {
type: { summary: 'boolean' },
defaultValue: { summary: 'false' }
}
},
readOnly: {
control: 'boolean',
description: 'Show the info in readonly mode.',
table: {
type: { summary: 'boolean' },
defaultValue: { summary: 'false' }
}
},
required: {
control: 'boolean',
description: 'Mark this field as required.',
table: {
type: { summary: 'boolean' },
defaultValue: { summary: 'false' }
}
},
preSelectUsers: {
control: 'object',
description:
'Array of users to be pre-selected. All users in the array are pre-selected in multi selection mode, but only the first user is pre-selected in single selection mode. Mandatory properties are: id, email, username',
table: {
type: { summary: 'IdentityUserModel[]' },
defaultValue: { summary: '[]' }
}
},
excludedUsers: {
control: 'object',
description: 'Array of users to be excluded. Mandatory properties are: id, email, username',
table: {
type: { summary: 'IdentityUserModel[]' },
defaultValue: { summary: '[]' }
}
},
groupsRestriction: {
control: 'object',
description: 'Array of groups to restrict user searches. Mandatory property is group name',
table: {
type: { summary: 'string[]' },
defaultValue: { summary: '[]' }
}
},
userChipsCtrl: {
control: 'object',
description: 'FormControl to list of users.',
table: {
type: { summary: 'FormControl' },
defaultValue: { summary: "new FormControl({ value: '', disabled: false })" },
category: 'Form Controls'
}
},
searchUserCtrl: {
control: 'object',
description: 'FormControl to search the user.',
table: {
type: { summary: 'FormControl' },
defaultValue: { summary: "new FormControl({ value: '', disabled: false })" },
category: 'Form Controls'
}
},
title: {
control: 'text',
description: 'Title of the field.',
table: {
type: { summary: 'string' }
}
},
selectUser: {
action: 'selectUser',
description: 'Emitted when a user is selected.',
table: { category: 'Actions' }
},
removeUser: {
action: 'removeUser',
description: 'Emitted when a selected user is removed in multi selection mode.',
table: { category: 'Actions' }
},
changedUsers: {
action: 'changedUsers',
description: 'Emitted when a user selection changes.',
table: { category: 'Actions' }
},
warning: {
action: 'warning',
description: 'Emitted when an warning occurs.',
table: { category: 'Actions' }
}
},
args: {
appName: 'app',
mode: 'single',
roles: [],
validate: false,
readOnly: false,
required: false,
preSelectUsers: [],
excludedUsers: [],
groupsRestriction: []
}
} as Meta<PeopleCloudComponent>;
const template: StoryFn<PeopleCloudComponent> = (args) => ({
props: args
});
export const DefaultPeopleCloud = template.bind({});
export const ValidPreselectedUsers = template.bind({});
ValidPreselectedUsers.args = {
validate: true,
mode: 'multiple',
preSelectUsers: mockFoodUsers
};
export const MandatoryPreselectedUsers = template.bind({});
MandatoryPreselectedUsers.args = {
validate: true,
mode: 'multiple',
preSelectUsers: [{ ...mockKielbasaSausage, readonly: true }, mockShepherdsPie]
};
export const InvalidPreselectedUsers = template.bind({});
InvalidPreselectedUsers.args = {
validate: true,
mode: 'multiple',
preSelectUsers: [{ id: 'invalid-user', username: 'Invalid User', firstName: 'Invalid', lastName: 'User', email: 'invalid@xyz.com' }]
};
export const ExcludedUsers = template.bind({});
ExcludedUsers.args = {
excludedUsers: [mockKielbasaSausage, mockYorkshirePudding]
};
export const NoUsers = template.bind({});
NoUsers.args = {
excludedUsers: mockFoodUsers
};
export const InvalidOrEmptyAppName = template.bind({});
InvalidOrEmptyAppName.args = {
appName: null
};
@@ -1,67 +0,0 @@
/*!
* @license
* Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { Injectable } from '@angular/core';
import { Observable, of, Subject, throwError } from 'rxjs';
import { ProcessInstanceCloud } from '../start-process/models/process-instance-cloud.model';
import { ProcessDefinitionCloud } from '../../models/process-definition-cloud.model';
import { ApplicationVersionModel } from '../../models/application-version.model';
import { processInstancePlaceholdersCloudMock, processInstanceDetailsCloudMock } from './process-instance-details-cloud.mock';
import { fakeProcessDefinitions } from '../start-process/mock/start-process.component.mock';
import { mockAppVersions } from '../process-filters/mock/process-filters-cloud.mock';
import { ProcessCloudService } from '@alfresco/adf-process-services-cloud';
@Injectable()
export class ProcessCloudServiceMock extends ProcessCloudService {
dataChangesDetected = new Subject<ProcessInstanceCloud>();
getProcessInstanceById(appName: string, processInstanceId: string): Observable<ProcessInstanceCloud> {
if (appName === 'app-placeholders' && processInstanceId) {
return of(processInstancePlaceholdersCloudMock);
}
if (appName && processInstanceId) {
return of(processInstanceDetailsCloudMock);
} else {
return throwError('AppName/ProcessInstanceId not configured');
}
}
getProcessDefinitions(appName: string): Observable<ProcessDefinitionCloud[]> {
if (appName || appName === '') {
return of(fakeProcessDefinitions);
} else {
return throwError('AppName not configured');
}
}
getApplicationVersions(appName: string): Observable<ApplicationVersionModel[]> {
if (appName) {
return of(mockAppVersions);
} else {
return throwError('AppName not configured');
}
}
cancelProcess(appName: string, processInstanceId: string): Observable<ProcessInstanceCloud> {
if (appName && processInstanceId) {
return of();
} else {
return throwError('App name and process id not configured');
}
}
}
@@ -28,15 +28,3 @@ export const processInstanceDetailsCloudMock: ProcessInstanceCloud = {
startDate: new Date(1552152187080),
status: 'RUNNING'
};
export const processInstancePlaceholdersCloudMock: ProcessInstanceCloud = {
appName: 'app-placeholders',
businessKey: '',
id: '00fcc4ab-4290-11e9-b133-0a586460016a',
initiator: 'devopsuser',
lastModified: new Date(2022, 1, 1, 1, 30, 40),
name: '',
parentId: '',
startDate: new Date(1552152187080),
status: 'RUNNING'
};
@@ -1,82 +0,0 @@
/*!
* @license
* Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { applicationConfig, Meta, moduleMetadata, StoryFn } from '@storybook/angular';
import { ProcessServicesCloudStoryModule } from '../../../testing/process-services-cloud-story.module';
import { ProcessHeaderCloudComponent } from './process-header-cloud.component';
import { ProcessCloudServiceMock } from '../../mock/process-cloud.service.mock';
import { ProcessCloudService } from '../../services/process-cloud.service';
import { importProvidersFrom } from '@angular/core';
export default {
component: ProcessHeaderCloudComponent,
title: 'Process Services Cloud/Process Cloud/Process Header Cloud/Process Header Cloud',
decorators: [
moduleMetadata({
imports: [ProcessHeaderCloudComponent]
}),
applicationConfig({
providers: [{ provide: ProcessCloudService, useClass: ProcessCloudServiceMock }, importProvidersFrom(ProcessServicesCloudStoryModule)]
})
],
argTypes: {
appName: {
control: 'text',
description: '(Required) The name of the application.',
defaultValue: '',
table: {
type: { summary: 'string' },
defaultValue: { summary: '' }
}
},
processInstanceId: {
control: 'text',
description: '(Required) The id of the process instance.',
table: {
type: { summary: 'string' }
}
}
}
} as Meta<ProcessHeaderCloudComponent>;
const template: StoryFn<ProcessHeaderCloudComponent> = (args) => ({
props: args
});
export const DefaultProcessHeaderCloud = template.bind({});
DefaultProcessHeaderCloud.args = {
appName: 'app',
processInstanceId: 'mock-process-id'
};
export const NoParentAndBusinessAndName = template.bind({});
NoParentAndBusinessAndName.args = {
appName: 'app-placeholders',
processInstanceId: 'mock-process-id'
};
export const InvalidOrMissingAppName = template.bind({});
InvalidOrMissingAppName.args = {
appName: undefined,
processInstanceId: 'mock-process-id'
};
export const InvalidOrMissingProcessInstanceID = template.bind({});
InvalidOrMissingProcessInstanceID.args = {
appName: 'app',
processInstanceId: undefined
};
@@ -1,159 +0,0 @@
/*!
* @license
* Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { Injectable } from '@angular/core';
import { CardViewArrayItem } from '@alfresco/adf-core';
import { from, Observable, of, Subject, throwError } from 'rxjs';
import { DEFAULT_TASK_PRIORITIES, TaskPriorityOption } from '../models/task.model';
import { TaskDetailsCloudModel, TASK_ASSIGNED_STATE, TASK_CREATED_STATE } from '../models/task-details-cloud.model';
import { taskDetailsContainer } from '../task-header/mocks/task-details-cloud.mock';
import { ProcessDefinitionCloud } from '../../models/process-definition-cloud.model';
import { TaskCloudService } from '@alfresco/adf-process-services-cloud';
import { AdfHttpClient } from '@alfresco/adf-core/api';
@Injectable()
export class TaskCloudServiceMock extends TaskCloudService {
currentUserMock = 'AssignedTaskUser';
dataChangesDetected$ = new Subject();
constructor(adfHttpClient: AdfHttpClient) {
super(adfHttpClient);
}
getTaskById(_appName: string, taskId: string): Observable<TaskDetailsCloudModel> {
return of(taskDetailsContainer[taskId]);
}
getCandidateUsers(_appName: string, taskId: string): Observable<string[]> {
if (taskId === 'mock-no-candidate-users') {
return of([]);
}
return of(['user1', 'user2']);
}
getCandidateGroups(_appName: string, taskId: string): Observable<string[]> {
if (taskId === 'mock-no-candidate-groups') {
return of([]);
}
return of(['group1', 'group2']);
}
getPriorityLabel(priority: number): string {
const priorityItem = this.priorities.find((item) => item.value === priority.toString()) || this.priorities[0];
return priorityItem.label;
}
get priorities(): TaskPriorityOption[] {
return this.appConfigService.get('adf-cloud-priority-values') || DEFAULT_TASK_PRIORITIES;
}
isTaskEditable(taskDetails: TaskDetailsCloudModel) {
return taskDetails.status === TASK_ASSIGNED_STATE && this.isAssignedToMe(taskDetails.assignee);
}
isAssigneePropertyClickable(
taskDetails: TaskDetailsCloudModel,
candidateUsers: CardViewArrayItem[],
candidateGroups: CardViewArrayItem[]
): boolean {
let isClickable = false;
const states = [TASK_ASSIGNED_STATE];
if (candidateUsers?.length || candidateGroups?.length) {
isClickable = states.includes(taskDetails.status);
}
return isClickable;
}
updateTask(_appName: string, taskId: string): Observable<TaskDetailsCloudModel> {
return of(taskDetailsContainer[taskId]);
}
canCompleteTask(taskDetails: TaskDetailsCloudModel): boolean {
return taskDetails && taskDetails.status === TASK_ASSIGNED_STATE && this.isAssignedToMe(taskDetails.assignee);
}
canClaimTask(taskDetails: TaskDetailsCloudModel): boolean {
return taskDetails && taskDetails.status === TASK_CREATED_STATE;
}
protected isAssignedToMe(assignee: string): boolean {
return assignee === this.currentUserMock;
}
completeTask(appName: string, taskId: string): Observable<TaskDetailsCloudModel> {
if ((appName || appName === '') && taskId) {
window.alert('Complete task mock');
return from([]);
} else {
return throwError(() => new Error('AppName/TaskId not configured'));
}
}
canUnclaimTask(taskDetails: TaskDetailsCloudModel): boolean {
const currentUser = this.currentUserMock;
return taskDetails && taskDetails.status === TASK_ASSIGNED_STATE && taskDetails.assignee === currentUser;
}
claimTask(appName: string, taskId: string): Observable<TaskDetailsCloudModel> {
if ((appName || appName === '') && taskId) {
window.alert('Claim task mock');
return from([]);
} else {
return throwError(() => new Error('AppName/TaskId not configured'));
}
}
unclaimTask(appName: string, taskId: string): Observable<TaskDetailsCloudModel> {
if ((appName || appName === '') && taskId) {
window.alert('Unclaim task mock');
return from([]);
} else {
return throwError(() => new Error('AppName/TaskId not configured'));
}
}
createNewTask(): Observable<TaskDetailsCloudModel> {
window.alert('Create new task mock');
return from([]);
}
getProcessDefinitions(appName: string): Observable<ProcessDefinitionCloud[]> {
if (appName || appName === '') {
window.alert('Get process definitions mock');
return from([]);
} else {
return throwError(() => new Error('AppName not configured'));
}
}
assign(appName: string, taskId: string): Observable<TaskDetailsCloudModel> {
if (appName && taskId) {
window.alert('Assign mock');
return from([]);
} else {
return throwError(() => new Error('AppName/TaskId not configured'));
}
}
}
@@ -1,176 +0,0 @@
/*!
* @license
* Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { applicationConfig, Meta, moduleMetadata, StoryFn } from '@storybook/angular';
import { FormCloudService } from '../../../../form/public-api';
import { TaskCloudService } from '../../../services/task-cloud.service';
import { TaskFormCloudComponent } from './task-form-cloud.component';
import { TaskCloudServiceMock } from '../../../mock/task-cloud.service.mock';
import { FormCloudServiceMock } from '../../../../form/mocks/form-cloud.service.mock';
import { ProcessServicesCloudStoryModule } from '../../../../testing/process-services-cloud-story.module';
import { importProvidersFrom } from '@angular/core';
export default {
component: TaskFormCloudComponent,
title: 'Process Services Cloud/Task Cloud/Task Form/Task Form Cloud',
decorators: [
moduleMetadata({
imports: [TaskFormCloudComponent],
providers: [
{ provide: TaskCloudService, useClass: TaskCloudServiceMock },
{ provide: FormCloudService, useClass: FormCloudServiceMock }
]
}),
applicationConfig({
providers: [importProvidersFrom(ProcessServicesCloudStoryModule)]
})
],
argTypes: {
appName: {
control: 'text',
description: 'App id to fetch corresponding form and values.',
defaultValue: '',
table: {
type: { summary: 'string' },
defaultValue: { summary: '' }
}
},
taskId: {
control: 'text',
description: 'Task id to fetch corresponding form and values.',
table: {
type: { summary: 'string' }
}
},
showTitle: {
control: 'boolean',
description: 'Toggle rendering of the form title.',
defaultValue: true,
table: {
type: { summary: 'boolean' },
defaultValue: { summary: 'true' }
}
},
showRefreshButton: {
control: 'boolean',
description: 'Toggle rendering of the `Refresh` button.',
defaultValue: false,
table: {
type: { summary: 'boolean' },
defaultValue: { summary: 'false' }
}
},
showValidationIcon: {
control: 'boolean',
description: 'Toggle rendering of the `Validation` icon.',
defaultValue: true,
table: {
type: { summary: 'boolean' },
defaultValue: { summary: 'true' }
}
},
showCancelButton: {
control: 'boolean',
description: 'Toggle rendering of the `Cancel` button.',
defaultValue: true,
table: {
type: { summary: 'boolean' },
defaultValue: { summary: 'true' }
}
},
showCompleteButton: {
control: 'boolean',
description: 'Toggle rendering of the `Complete` button.',
defaultValue: true,
table: {
type: { summary: 'boolean' },
defaultValue: { summary: 'true' }
}
},
readOnly: {
control: 'boolean',
description: 'Toggle readonly state of the task.',
defaultValue: false,
table: {
type: { summary: 'boolean' },
defaultValue: { summary: 'false' }
}
},
formSaved: {
action: 'formSaved',
description: 'Emitted when the form is saved.',
table: { category: 'Actions' }
},
formCompleted: {
action: 'formCompleted',
description: 'Emitted when the form is submitted with the `Complete` outcome.',
table: { category: 'Actions' }
},
taskCompleted: {
action: 'taskCompleted',
description: 'Emitted when the task is completed.',
table: { category: 'Actions' }
},
taskClaimed: {
action: 'taskClaimed',
description: 'Emitted when the task is claimed.',
table: { category: 'Actions' }
},
taskUnclaimed: {
action: 'taskUnclaimed',
description: 'mitted when the task is unclaimed.',
table: { category: 'Actions' }
},
cancelClick: {
action: 'cancelClick',
description: 'Emitted when the cancel button is clicked.',
table: { category: 'Actions' }
},
formContentClicked: {
action: 'formContentClicked',
description: 'Emitted when form content is clicked.',
table: { category: 'Actions' }
},
error: {
action: 'error',
description: 'Emitted when any error occurs.',
table: { category: 'Actions' }
}
}
} as Meta<TaskFormCloudComponent>;
const template: StoryFn<TaskFormCloudComponent> = (args) => ({
props: args
});
export const DefaultTaskFormCloud = template.bind({});
DefaultTaskFormCloud.args = {
appName: 'app',
taskId: 'mock-task-with-form'
};
export const InvalidOrMissingApp = template.bind({});
InvalidOrMissingApp.args = {
...DefaultTaskFormCloud.args,
appName: undefined
};
export const InvalidOrMissingTaskId = template.bind({});
InvalidOrMissingTaskId.args = {
...DefaultTaskFormCloud.args,
taskId: undefined
};
@@ -1,137 +0,0 @@
/*!
* @license
* Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { applicationConfig, Meta, moduleMetadata, StoryFn } from '@storybook/angular';
import { TaskHeaderCloudComponent } from './task-header-cloud.component';
import { TaskCloudService } from '../../services/task-cloud.service';
import { TaskCloudServiceMock } from '../../mock/task-cloud.service.mock';
import { ProcessServicesCloudStoryModule } from '../../../testing/process-services-cloud-story.module';
import { importProvidersFrom } from '@angular/core';
export default {
component: TaskHeaderCloudComponent,
title: 'Process Services Cloud/Task Cloud/Task Header Cloud/Task Header Cloud',
decorators: [
moduleMetadata({
imports: [TaskHeaderCloudComponent],
providers: [{ provide: TaskCloudService, useClass: TaskCloudServiceMock }]
}),
applicationConfig({
providers: [importProvidersFrom(ProcessServicesCloudStoryModule)]
})
],
argTypes: {
appName: {
control: 'text',
description: '(Required) The name of the application.',
defaultValue: '',
table: {
type: { summary: 'string' },
defaultValue: { summary: '' }
}
},
taskId: {
control: 'text',
description: '(Required) The id of the task.',
table: {
type: { summary: 'string' }
}
},
showTitle: {
control: 'boolean',
description: 'Show/Hide the task title.',
defaultValue: true,
table: {
type: { summary: 'boolean' },
defaultValue: { summary: 'true' }
}
},
claim: {
action: 'claim',
description: 'Emitted when the task is claimed.',
table: { category: 'Actions' }
},
unclaim: {
action: 'unclaim',
description: 'Emitted when the task is unclaimed (ie, requeued).',
table: { category: 'Actions' }
},
error: {
action: 'error',
description: 'Emitted when the given task has errors.',
table: { category: 'Actions' }
}
}
} as Meta<TaskHeaderCloudComponent>;
const template: StoryFn<TaskHeaderCloudComponent> = (args) => ({
props: args
});
export const AssignedAndEditable = template.bind({});
AssignedAndEditable.args = {
appName: 'app',
taskId: 'mock-assigned-task'
};
export const CompletedAndReadonly = template.bind({});
CompletedAndReadonly.args = {
...AssignedAndEditable.args,
taskId: 'mock-completed-task'
};
export const Suspended = template.bind({});
Suspended.args = {
...AssignedAndEditable.args,
taskId: 'mock-suspended-task'
};
export const WithParentId = template.bind({});
WithParentId.args = {
...AssignedAndEditable.args,
taskId: 'mock-parent-task-id'
};
export const WithoutAssignee = template.bind({});
WithoutAssignee.args = {
...AssignedAndEditable.args,
taskId: 'mock-created-task'
};
export const NotClaimableByUser = template.bind({});
NotClaimableByUser.args = {
...AssignedAndEditable.args,
taskId: 'mock-no-candidate-users'
};
export const TaskNotClaimableByGroupUser = template.bind({});
TaskNotClaimableByGroupUser.args = {
...AssignedAndEditable.args,
taskId: 'mock-no-candidate-groups'
};
export const InvalidForMissingApp = template.bind({});
InvalidForMissingApp.args = {
...AssignedAndEditable.args,
appName: undefined
};
export const InvalidForMissingTaskId = template.bind({});
InvalidForMissingTaskId.args = {
...AssignedAndEditable.args,
taskId: undefined
};
@@ -180,80 +180,3 @@ export const suspendedTaskDetailsCloudMock: TaskDetailsCloudModel = {
lastModifiedTo: null,
lastModifiedFrom: null
};
export const noCandidateUsersTaskDetailsCloudMock: TaskDetailsCloudModel = {
appName: 'mock-app-name',
appVersion: 1,
id: 'mock-task-id',
assignee: '',
name: 'This is a new task',
description: 'This is the description ',
createdDate: new Date(1545048055900),
dueDate: new Date(1545091200000),
claimedDate: null,
priority: 5,
category: null,
processDefinitionId: null,
processInstanceId: null,
status: 'CREATED',
owner: 'ownerUser',
candidateUsers: null,
parentTaskId: null,
formKey: null,
lastModified: new Date(1545048055900),
lastModifiedTo: null,
lastModifiedFrom: null,
standalone: false
};
export const noCandidateGroupsTaskDetailsCloudMock: TaskDetailsCloudModel = {
appName: 'mock-app-name',
appVersion: 1,
id: 'mock-task-id',
assignee: '',
name: 'This is a new task',
description: 'This is the description ',
createdDate: new Date(1545048055900),
dueDate: new Date(1545091200000),
claimedDate: null,
priority: 5,
category: null,
processDefinitionId: null,
processInstanceId: null,
status: 'CREATED',
owner: 'ownerUser',
candidateGroups: null,
parentTaskId: null,
formKey: null,
lastModified: new Date(1545048055900),
lastModifiedTo: null,
lastModifiedFrom: null,
standalone: false
};
export const taskWithFormDetailsMock: TaskDetailsCloudModel = {
appName: 'mock-app-name',
assignee: 'AssignedTaskUser',
completedDate: null,
createdDate: new Date(1555419255340),
dueDate: new Date(1558419255340),
description: null,
formKey: '4',
priority: 1,
parentTaskId: 'bd6b1741-6046-11e9-80f0-0a586460040d',
id: 'bd6b1741-6046-11e9-80f0-0a586460040d',
name: 'Task1',
owner: 'fakeAdmin',
status: 'ASSIGNED'
};
export const taskDetailsContainer = {
'mock-assigned-task': assignedTaskDetailsCloudMock,
'mock-completed-task': completedTaskDetailsCloudMock,
'mock-created-task': createdStateTaskDetailsCloudMock,
'mock-parent-task-id': taskDetailsWithParentTaskIdMock,
'mock-suspended-task': suspendedTaskDetailsCloudMock,
'mock-no-candidate-users': noCandidateUsersTaskDetailsCloudMock,
'mock-no-candidate-groups': noCandidateGroupsTaskDetailsCloudMock,
'mock-task-with-form': taskWithFormDetailsMock
};
@@ -1,36 +0,0 @@
/*!
* @license
* Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { NgModule } from '@angular/core';
import { AuthModule, CoreModule, provideTranslations } from '@alfresco/adf-core';
import { TranslateModule } from '@ngx-translate/core';
import { ProcessServicesCloudModule } from '../process-services-cloud.module';
import { provideAnimations } from '@angular/platform-browser/animations';
@NgModule({
imports: [
AuthModule.forRoot(),
TranslateModule.forRoot(),
CoreModule.forRoot(),
ProcessServicesCloudModule.forRoot()
],
providers: [
provideTranslations('adf-process-services-cloud', 'assets/adf-process-services-cloud'),
provideAnimations()
]
})
export class ProcessServicesCloudStoryModule { }