@alfresco/adf-process-services 9.1.0-16879056836 → 9.1.0-16936569382
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adf-process-services.mjs","sources":["../../../../lib/process-services/src/lib/process-list/services/process.service.ts","../../../../lib/process-services/src/lib/process-list/components/process-list/process-list.component.ts","../../../../lib/process-services/src/lib/process-list/components/process-list/process-list.component.html","../../../../lib/process-services/src/lib/process-list/services/process-filter.service.ts","../../../../lib/process-services/src/lib/services/apps-process.service.ts","../../../../lib/process-services/src/lib/app-list/icon.model.ts","../../../../lib/process-services/src/lib/process-list/components/process-filters/process-filters.component.ts","../../../../lib/process-services/src/lib/process-list/components/process-filters/process-filters.component.html","../../../../lib/process-services/src/lib/process-list/components/process-instance-header/process-instance-header.component.ts","../../../../lib/process-services/src/lib/process-list/components/process-instance-header/process-instance-header.component.html","../../../../lib/process-services/src/lib/task-list/models/form.model.ts","../../../../lib/process-services/src/lib/task-list/services/tasklist.service.ts","../../../../lib/process-services/src/lib/task-list/components/task-form/claim-task.directive.ts","../../../../lib/process-services/src/lib/task-list/components/task-form/unclaim-task.directive.ts","../../../../lib/process-services/src/lib/services/people-process.service.ts","../../../../lib/process-services/src/lib/task-list/components/task-standalone/task-standalone.component.ts","../../../../lib/process-services/src/lib/task-list/components/task-standalone/task-standalone.component.html","../../../../lib/process-services/src/lib/form/services/model.service.ts","../../../../lib/process-services/src/lib/form/form-list/form-list.component.ts","../../../../lib/process-services/src/lib/form/form-list/form-list.component.html","../../../../lib/process-services/src/lib/form/form-custom-outcomes.component.ts","../../../../lib/process-services/src/lib/form/services/ecm-model.service.ts","../../../../lib/process-services/src/lib/form/services/editor.service.ts","../../../../lib/process-services/src/lib/form/services/task.service.ts","../../../../lib/process-services/src/lib/form/services/task-form.service.ts","../../../../lib/process-services/src/lib/form/model/form-definition.model.ts","../../../../lib/process-services/src/lib/form/form.component.ts","../../../../lib/process-services/src/lib/form/form.component.html","../../../../lib/process-services/src/lib/form/start-form/start-form.component.ts","../../../../lib/process-services/src/lib/form/start-form/start-form.component.html","../../../../lib/process-services/src/lib/form/services/process-content.service.ts","../../../../lib/process-services/src/lib/form/widgets/upload/upload.widget.ts","../../../../lib/process-services/src/lib/form/widgets/upload/upload.widget.html","../../../../lib/process-services/src/lib/form/widgets/document/content.widget.ts","../../../../lib/process-services/src/lib/form/widgets/document/content.widget.html","../../../../lib/process-services/src/lib/form/widgets/document/document.widget.ts","../../../../lib/process-services/src/lib/form/widgets/document/document.widget.html","../../../../lib/process-services/src/lib/form/widgets/people/people.widget.ts","../../../../lib/process-services/src/lib/form/widgets/people/people.widget.html","../../../../lib/process-services/src/lib/form/widgets/functional-group/functional-group.widget.ts","../../../../lib/process-services/src/lib/form/widgets/functional-group/functional-group.widget.html","../../../../lib/process-services/src/lib/form/services/process-definition.service.ts","../../../../lib/process-services/src/lib/form/widgets/radio-buttons/radio-buttons.widget.ts","../../../../lib/process-services/src/lib/form/widgets/radio-buttons/radio-buttons.widget.html","../../../../lib/process-services/src/lib/form/widgets/dropdown/dropdown.widget.ts","../../../../lib/process-services/src/lib/form/widgets/dropdown/dropdown.widget.html","../../../../lib/process-services/src/lib/form/widgets/typeahead/typeahead.widget.ts","../../../../lib/process-services/src/lib/form/widgets/typeahead/typeahead.widget.html","../../../../lib/process-services/src/lib/form/widgets/file-viewer/file-viewer.widget.ts","../../../../lib/process-services/src/lib/form/widgets/file-viewer/file-viewer.widget.html","../../../../lib/process-services/src/lib/form/events/validate-dynamic-table-row.event.ts","../../../../lib/process-services/src/lib/form/widgets/dynamic-table/editors/models/date-cell-validator-model.ts","../../../../lib/process-services/src/lib/form/widgets/dynamic-table/editors/models/dynamic-row-validation-summary.model.ts","../../../../lib/process-services/src/lib/form/widgets/dynamic-table/editors/models/number-cell-validator.model.ts","../../../../lib/process-services/src/lib/form/widgets/dynamic-table/editors/models/required-cell-validator.model.ts","../../../../lib/process-services/src/lib/form/widgets/dynamic-table/editors/models/dynamic-table.widget.model.ts","../../../../lib/process-services/src/lib/form/widgets/dynamic-table/editors/dropdown/dropdown.editor.ts","../../../../lib/process-services/src/lib/form/widgets/dynamic-table/editors/dropdown/dropdown.editor.html","../../../../lib/process-services/src/lib/form/widgets/dynamic-table/editors/amount/amount.editor.ts","../../../../lib/process-services/src/lib/form/widgets/dynamic-table/editors/amount/amount.editor.html","../../../../lib/process-services/src/lib/form/widgets/dynamic-table/editors/boolean/boolean.editor.ts","../../../../lib/process-services/src/lib/form/widgets/dynamic-table/editors/boolean/boolean.editor.html","../../../../lib/process-services/src/lib/form/widgets/dynamic-table/editors/date/date.editor.ts","../../../../lib/process-services/src/lib/form/widgets/dynamic-table/editors/date/date.editor.html","../../../../lib/process-services/src/lib/form/widgets/dynamic-table/editors/datetime/datetime.editor.ts","../../../../lib/process-services/src/lib/form/widgets/dynamic-table/editors/datetime/datetime.editor.html","../../../../lib/process-services/src/lib/form/widgets/dynamic-table/editors/text/text.editor.ts","../../../../lib/process-services/src/lib/form/widgets/dynamic-table/editors/text/text.editor.html","../../../../lib/process-services/src/lib/form/widgets/dynamic-table/editors/row-editor/row.editor.ts","../../../../lib/process-services/src/lib/form/widgets/dynamic-table/editors/row-editor/row.editor.html","../../../../lib/process-services/src/lib/form/widgets/dynamic-table/dynamic-table.widget.ts","../../../../lib/process-services/src/lib/form/widgets/dynamic-table/dynamic-table.widget.html","../../../../lib/process-services/src/lib/form/widgets/dynamic-table/editors/models/dynamic-table-row.model.ts","../../../../lib/process-services/src/lib/form/widgets/dynamic-table/public-api.ts","../../../../lib/process-services/src/lib/form/widgets/dynamic-table/index.ts","../../../../lib/process-services/src/lib/form/services/external-alfresco-api.service.ts","../../../../lib/process-services/src/lib/form/widgets/content-widget/attach-file-widget-dialog.component.ts","../../../../lib/process-services/src/lib/form/widgets/content-widget/attach-file-widget-dialog.component.html","../../../../lib/process-services/src/lib/form/widgets/content-widget/attach-file-widget-dialog.service.ts","../../../../lib/process-services/src/lib/form/services/activiti-alfresco.service.ts","../../../../lib/process-services/src/lib/form/widgets/content-widget/attach-file-widget.component.ts","../../../../lib/process-services/src/lib/form/widgets/content-widget/attach-file-widget.component.html","../../../../lib/process-services/src/lib/form/widgets/content-widget/attach-folder-widget.component.ts","../../../../lib/process-services/src/lib/form/widgets/content-widget/attach-folder-widget.component.html","../../../../lib/process-services/src/lib/form/widgets/content-widget/attach-file-widget-dialog-component.interface.ts","../../../../lib/process-services/src/lib/form/widgets/content-widget/public-api.ts","../../../../lib/process-services/src/lib/form/widgets/content-widget/index.ts","../../../../lib/process-services/src/lib/form/widgets/public-api.ts","../../../../lib/process-services/src/lib/form/widgets/index.ts","../../../../lib/process-services/src/lib/form/services/index.ts","../../../../lib/process-services/src/lib/form/process-form-rendering.service.ts","../../../../lib/process-services/src/lib/form/public-api.ts","../../../../lib/process-services/src/lib/form/index.ts","../../../../lib/process-services/src/lib/task-list/components/task-form/task-form.component.ts","../../../../lib/process-services/src/lib/task-list/components/task-form/task-form.component.html","../../../../lib/process-services/src/lib/task-list/components/attach-form/attach-form.component.ts","../../../../lib/process-services/src/lib/task-list/components/attach-form/attach-form.component.html","../../../../lib/process-services/src/lib/task-list/components/checklist/checklist.component.ts","../../../../lib/process-services/src/lib/task-list/components/checklist/checklist.component.html","../../../../lib/process-services/src/lib/task-list/services/task-filter.service.ts","../../../../lib/process-services/src/lib/task-list/components/task-filters/task-filters.component.ts","../../../../lib/process-services/src/lib/task-list/components/task-filters/task-filters.component.html","../../../../lib/process-services/src/lib/task-list/models/task-preset.model.ts","../../../../lib/process-services/src/lib/task-list/components/task-list/task-list.component.ts","../../../../lib/process-services/src/lib/task-list/components/task-list/task-list.component.html","../../../../lib/process-services/src/lib/people/helpers/get-display-user.ts","../../../../lib/process-services/src/lib/people/components/people-list/people-list.component.ts","../../../../lib/process-services/src/lib/people/components/people-list/people-list.component.html","../../../../lib/process-services/src/lib/people/components/people-search-field/people-search-field.component.ts","../../../../lib/process-services/src/lib/people/components/people-search-field/people-search-field.component.html","../../../../lib/process-services/src/lib/people/components/people-search/people-search.component.ts","../../../../lib/process-services/src/lib/people/components/people-search/people-search.component.html","../../../../lib/process-services/src/lib/people/components/people/people.component.ts","../../../../lib/process-services/src/lib/people/components/people/people.component.html","../../../../lib/process-services/src/lib/people/components/people-selector/people-selector.component.ts","../../../../lib/process-services/src/lib/people/components/people-selector/people-selector.component.html","../../../../lib/process-services/src/lib/people/interfaces/perform-search-callback.interface.ts","../../../../lib/process-services/src/lib/people/public-api.ts","../../../../lib/process-services/src/lib/people/index.ts","../../../../lib/process-services/src/lib/task-list/validators/task-description.validator.ts","../../../../lib/process-services/src/lib/task-list/components/task-header/task-header.component.ts","../../../../lib/process-services/src/lib/task-list/components/task-header/task-header.component.html","../../../../lib/process-services/src/lib/services/task-comments.service.ts","../../../../lib/process-services/src/lib/task-comments/task-comments.component.ts","../../../../lib/process-services/src/lib/task-comments/task-comments.component.html","../../../../lib/process-services/src/lib/task-comments/index.ts","../../../../lib/process-services/src/lib/task-list/components/task-details/task-details.component.ts","../../../../lib/process-services/src/lib/task-list/components/task-details/task-details.component.html","../../../../lib/process-services/src/lib/task-list/components/start-task/start-task.component.ts","../../../../lib/process-services/src/lib/task-list/components/start-task/start-task.component.html","../../../../lib/process-services/src/lib/task-list/services/process-upload.service.ts","../../../../lib/process-services/src/lib/task-list/services/task-upload.service.ts","../../../../lib/process-services/src/lib/task-list/models/task-details.event.ts","../../../../lib/process-services/src/lib/task-list/models/user-event.model.ts","../../../../lib/process-services/src/lib/task-list/models/user-group.model.ts","../../../../lib/process-services/src/lib/task-list/public-api.ts","../../../../lib/process-services/src/lib/task-list/index.ts","../../../../lib/process-services/src/lib/process-list/components/process-instance-tasks/process-instance-tasks.component.ts","../../../../lib/process-services/src/lib/process-list/components/process-instance-tasks/process-instance-tasks.component.html","../../../../lib/process-services/src/lib/process-comments/services/comment-process.service.ts","../../../../lib/process-services/src/lib/process-comments/process-comments.component.ts","../../../../lib/process-services/src/lib/process-comments/process-comments.component.html","../../../../lib/process-services/src/lib/process-comments/index.ts","../../../../lib/process-services/src/lib/process-list/components/process-instance-details/process-instance-details.component.ts","../../../../lib/process-services/src/lib/process-list/components/process-instance-details/process-instance-details.component.html","../../../../lib/process-services/src/lib/process-list/components/start-process/start-process.component.ts","../../../../lib/process-services/src/lib/process-list/components/start-process/start-process.component.html","../../../../lib/process-services/src/lib/process-list/components/process-audit/process-audit.directive.ts","../../../../lib/process-services/src/lib/process-list/public-api.ts","../../../../lib/process-services/src/lib/process-list/index.ts","../../../../lib/process-services/src/lib/app-list/apps-list.component.ts","../../../../lib/process-services/src/lib/app-list/apps-list.component.html","../../../../lib/process-services/src/lib/app-list/select-apps-dialog/select-apps-dialog.component.ts","../../../../lib/process-services/src/lib/app-list/select-apps-dialog/select-apps-dialog.component.html","../../../../lib/process-services/src/lib/app-list/public-api.ts","../../../../lib/process-services/src/lib/app-list/index.ts","../../../../lib/process-services/src/lib/attachment/task-attachment-list/task-attachment-list.component.ts","../../../../lib/process-services/src/lib/attachment/task-attachment-list/task-attachment-list.component.html","../../../../lib/process-services/src/lib/attachment/process-attachment-list/process-attachment-list.component.ts","../../../../lib/process-services/src/lib/attachment/process-attachment-list/process-attachment-list.component.html","../../../../lib/process-services/src/lib/attachment/create-process-attachment/create-process-attachment.component.ts","../../../../lib/process-services/src/lib/attachment/create-process-attachment/create-process-attachment.component.html","../../../../lib/process-services/src/lib/attachment/create-task-attachment/create-task-attachment.component.ts","../../../../lib/process-services/src/lib/attachment/create-task-attachment/create-task-attachment.component.html","../../../../lib/process-services/src/lib/attachment/public-api.ts","../../../../lib/process-services/src/lib/attachment/index.ts","../../../../lib/process-services/src/lib/process.module.ts","../../../../lib/process-services/src/lib/compat/types.ts","../../../../lib/process-services/src/public-api.ts","../../../../lib/process-services/src/adf-process-services.ts"],"sourcesContent":["/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DateFnsUtils, FormValues } from '@alfresco/adf-core';\nimport { inject, Injectable } from '@angular/core';\nimport {\n FormDefinitionRepresentation,\n ProcessDefinitionsApi,\n ProcessInstanceAuditInfoRepresentation,\n ProcessInstanceQueryRepresentation,\n ProcessInstanceRepresentation,\n ProcessInstancesApi,\n ProcessInstanceVariablesApi,\n RestVariable,\n ResultListDataRepresentationProcessInstanceRepresentation,\n TasksApi,\n ProcessDefinitionRepresentation,\n TaskRepresentation\n} from '@alfresco/js-api';\nimport { AlfrescoApiService } from '@alfresco/adf-content-services';\nimport { from, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { DatePipe } from '@angular/common';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ProcessService {\n private alfrescoApiService = inject(AlfrescoApiService);\n\n private _tasksApi: TasksApi;\n get tasksApi(): TasksApi {\n return (this._tasksApi ||= new TasksApi(this.alfrescoApiService.getInstance()));\n }\n\n private _processDefinitionsApi: ProcessDefinitionsApi;\n get processDefinitionsApi(): ProcessDefinitionsApi {\n return (this._processDefinitionsApi ||= new ProcessDefinitionsApi(this.alfrescoApiService.getInstance()));\n }\n\n private _processInstancesApi: ProcessInstancesApi;\n get processInstancesApi(): ProcessInstancesApi {\n return (this._processInstancesApi ||= new ProcessInstancesApi(this.alfrescoApiService.getInstance()));\n }\n\n private _processInstanceVariablesApi: ProcessInstanceVariablesApi;\n get processInstanceVariablesApi(): ProcessInstanceVariablesApi {\n return (this._processInstanceVariablesApi ||= new ProcessInstanceVariablesApi(this.alfrescoApiService.getInstance()));\n }\n\n /**\n * Gets process instances for a filter and optionally a process definition.\n *\n * @param requestNode Filter for instances\n * @param processDefinitionKey Limits returned instances to a process definition\n * @returns List of process instances\n */\n getProcessInstances(\n requestNode: ProcessInstanceQueryRepresentation,\n processDefinitionKey?: string\n ): Observable<ResultListDataRepresentationProcessInstanceRepresentation> {\n return from(this.processInstancesApi.getProcessInstances(requestNode)).pipe(\n map((res) => {\n if (processDefinitionKey) {\n res.data = res.data.filter((process) => process.processDefinitionKey === processDefinitionKey);\n }\n return res;\n })\n );\n }\n\n /**\n * Gets processes for a filter and optionally a process definition.\n *\n * @param requestNode Filter for instances\n * @param processDefinitionKey Limits returned instances to a process definition\n * @returns List of processes\n */\n getProcesses(\n requestNode: ProcessInstanceQueryRepresentation,\n processDefinitionKey?: string\n ): Observable<ResultListDataRepresentationProcessInstanceRepresentation> {\n return this.getProcessInstances(requestNode, processDefinitionKey).pipe(\n map((response) => {\n response.data = (response.data || []).map((instance) => {\n instance.name = this.getProcessNameOrDescription(instance, 'medium');\n return instance;\n });\n return response;\n })\n );\n }\n\n /**\n * Fetches the Process Audit information as a PDF.\n *\n * @param processId ID of the target process\n * @returns Binary PDF data\n */\n fetchProcessAuditPdfById(processId: string): Observable<Blob> {\n return from(this.processInstancesApi.getProcessAuditPdf(processId));\n }\n\n /**\n * Fetches the Process Audit information in a JSON format.\n *\n * @param processId ID of the target process\n * @returns JSON data\n */\n fetchProcessAuditJsonById(processId: string): Observable<ProcessInstanceAuditInfoRepresentation> {\n return from(this.processInstancesApi.getTaskAuditLog(processId));\n }\n\n /**\n * Gets Process Instance metadata.\n *\n * @param processInstanceId ID of the target process\n * @returns Metadata for the instance\n */\n getProcess(processInstanceId: string): Observable<ProcessInstanceRepresentation> {\n return from(this.processInstancesApi.getProcessInstance(processInstanceId)).pipe(map(this.toJson));\n }\n\n /**\n * Gets the start form definition for a given process.\n *\n * @param processId Process definition ID\n * @returns Form definition\n */\n getStartFormDefinition(processId: string): Observable<any> {\n return from(this.processDefinitionsApi.getProcessDefinitionStartForm(processId)).pipe(map(this.toJson));\n }\n\n /**\n * Gets the start form instance for a given process.\n *\n * @param processId Process definition ID\n * @returns Form definition\n */\n getStartFormInstance(processId: string): Observable<FormDefinitionRepresentation> {\n return from(this.processInstancesApi.getProcessInstanceStartForm(processId)).pipe(map(this.toJson));\n }\n\n /**\n * Creates a JSON representation of form data.\n *\n * @param res Object representing form data\n * @returns JSON data\n */\n private toJson(res: any) {\n if (res) {\n return res || {};\n }\n return {};\n }\n\n /**\n * Gets task instances for a process instance.\n *\n * @param processInstanceId ID of the process instance\n * @param state Task state filter (can be \"active\" or \"completed\")\n * @returns Array of task instance details\n */\n getProcessTasks(processInstanceId: string, state?: string): Observable<TaskRepresentation[]> {\n const taskOpts = state\n ? {\n processInstanceId,\n state\n }\n : {\n processInstanceId\n };\n return from(this.tasksApi.listTasks(taskOpts)).pipe(\n map(this.extractData),\n map((tasks) =>\n tasks.map((task: any) => {\n task.created = DateFnsUtils.formatDate(new Date(task.created), 'YYYY-MM-DD');\n return task;\n })\n )\n );\n }\n\n /**\n * Gets process definitions associated with an app.\n *\n * @param appId ID of a target app\n * @returns Array of process definitions\n */\n getProcessDefinitions(appId?: number): Observable<ProcessDefinitionRepresentation[]> {\n const opts = appId\n ? {\n latest: true,\n appDefinitionId: appId\n }\n : {\n latest: true\n };\n return from(this.processDefinitionsApi.getProcessDefinitions(opts)).pipe(map(this.extractData));\n }\n\n /**\n * Starts a process based on a process definition, name, form values or variables.\n *\n * @param processDefinitionId Process definition ID\n * @param name Process name\n * @param outcome Process outcome\n * @param startFormValues Values for the start form\n * @param variables Array of process instance variables\n * @returns Details of the process instance just started\n */\n startProcess(\n processDefinitionId: string,\n name: string,\n outcome?: string,\n startFormValues?: FormValues,\n variables?: RestVariable[]\n ): Observable<ProcessInstanceRepresentation> {\n const startRequest: any = {\n name,\n processDefinitionId\n };\n if (outcome) {\n startRequest.outcome = outcome;\n }\n if (startFormValues) {\n startRequest.values = startFormValues;\n }\n if (variables) {\n startRequest.variables = variables;\n }\n return from(this.processInstancesApi.startNewProcessInstance(startRequest));\n }\n\n /**\n * Cancels a process instance.\n *\n * @param processInstanceId ID of process to cancel\n * @returns Null response notifying when the operation is complete\n */\n cancelProcess(processInstanceId: string): Observable<void> {\n return from(this.processInstancesApi.deleteProcessInstance(processInstanceId));\n }\n\n /**\n * Gets the variables for a process instance.\n *\n * @param processInstanceId ID of the target process\n * @returns Array of instance variable info\n */\n getProcessInstanceVariables(processInstanceId: string): Observable<RestVariable[]> {\n return from(this.processInstanceVariablesApi.getProcessInstanceVariables(processInstanceId));\n }\n\n /**\n * Creates or updates variables for a process instance.\n *\n * @param processInstanceId ID of the target process\n * @param variables Variables to update\n * @returns Array of instance variable info\n */\n createOrUpdateProcessInstanceVariables(processInstanceId: string, variables: RestVariable[]): Observable<RestVariable[]> {\n return from(this.processInstanceVariablesApi.createOrUpdateProcessInstanceVariables(processInstanceId, variables));\n }\n\n /**\n * Deletes a variable for a process instance.\n *\n * @param processInstanceId ID of the target process\n * @param variableName Name of the variable to delete\n * @returns Null response notifying when the operation is complete\n */\n deleteProcessInstanceVariable(processInstanceId: string, variableName: string): Observable<void> {\n return from(this.processInstanceVariablesApi.deleteProcessInstanceVariable(processInstanceId, variableName));\n }\n\n private extractData(res: any) {\n return res.data || {};\n }\n\n private getProcessNameOrDescription(processInstance: ProcessInstanceRepresentation, dateFormat: string): string {\n let name = '';\n\n if (processInstance) {\n name = processInstance.name || processInstance.processDefinitionName + ' - ' + this.getFormatDate(processInstance.started, dateFormat);\n }\n\n return name;\n }\n\n private getFormatDate(value: Date, dateFormat: string) {\n const datePipe = new DatePipe('en-US');\n\n try {\n return datePipe.transform(value, dateFormat);\n } catch (err) {\n return '';\n }\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n DataTableSchema,\n DataRowEvent,\n DataTableAdapter,\n CustomEmptyContentTemplateDirective,\n CustomLoadingContentTemplateDirective,\n DataRow,\n DataColumn,\n AppConfigService,\n PaginatedComponent,\n PaginationModel,\n UserPreferencesService,\n DataCellEvent,\n DEFAULT_PAGINATION,\n EmptyContentComponent,\n DataTableComponent,\n LoadingContentTemplateDirective,\n NoContentTemplateDirective,\n ObjectDataRow\n} from '@alfresco/adf-core';\nimport { AfterContentInit, Component, ContentChild, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\nimport { ProcessService } from '../../services/process.service';\nimport { BehaviorSubject } from 'rxjs';\nimport { finalize } from 'rxjs/operators';\nimport {\n ProcessInstanceQueryRepresentation,\n ProcessInstanceQueryRepresentationSort,\n ProcessInstanceQueryRepresentationState,\n ResultListDataRepresentationProcessInstanceRepresentation\n} from '@alfresco/js-api';\nimport { CommonModule } from '@angular/common';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { TranslatePipe } from '@ngx-translate/core';\n\nconst PRESET_KEY = 'adf-process-list.presets';\n\nexport const processPresetsDefaultModel = {\n default: [\n {\n key: 'name',\n type: 'text',\n title: 'ADF_PROCESS_LIST.PROPERTIES.NAME',\n sortable: true\n },\n {\n key: 'created',\n type: 'text',\n title: 'ADF_PROCESS_LIST.PROPERTIES.CREATED',\n cssClass: 'hidden',\n sortable: true\n }\n ]\n};\n\n@Component({\n selector: 'adf-process-instance-list',\n imports: [\n CommonModule,\n MatProgressSpinnerModule,\n EmptyContentComponent,\n TranslatePipe,\n DataTableComponent,\n LoadingContentTemplateDirective,\n NoContentTemplateDirective\n ],\n styleUrls: ['./process-list.component.css'],\n templateUrl: './process-list.component.html'\n})\nexport class ProcessInstanceListComponent extends DataTableSchema implements OnChanges, AfterContentInit, PaginatedComponent {\n @ContentChild(CustomEmptyContentTemplateDirective)\n customEmptyContent: CustomEmptyContentTemplateDirective;\n\n @ContentChild(CustomLoadingContentTemplateDirective)\n customLoadingContent: CustomLoadingContentTemplateDirective;\n\n /** The id of the app. */\n @Input()\n appId: number;\n\n /** The Definition Id of the process. */\n @Input()\n processDefinitionId: string;\n\n /** The id of the process instance. */\n @Input()\n processInstanceId: string;\n\n /** Defines the state of the processes. */\n @Input()\n state: ProcessInstanceQueryRepresentationState;\n\n /**\n * Defines the sort ordering of the list.\n */\n @Input()\n sort: ProcessInstanceQueryRepresentationSort;\n\n /** The page number of the processes to fetch. */\n @Input()\n page: number = 0;\n\n /** The number of processes to fetch in each page. */\n @Input()\n size: number = DEFAULT_PAGINATION.maxItems;\n\n /** Data source to define the datatable. */\n @Input()\n data: DataTableAdapter;\n\n /** Toggles multiple row selection, which renders checkboxes at the beginning of each row */\n @Input()\n multiselect: boolean = false;\n\n /**\n * Row selection mode. Can be none, `single` or `multiple`. For `multiple` mode,\n * you can use Cmd (macOS) or Ctrl (Win) modifier key to toggle selection for\n * multiple rows.\n */\n @Input()\n selectionMode: string = 'single'; // none|single|multiple\n\n /** Toggles default selection of the first row */\n @Input()\n selectFirstRow: boolean = true;\n\n /** Toggles the sticky header mode. */\n @Input()\n stickyHeader: boolean = false;\n\n /** Toggles custom context menu for the component. */\n @Input()\n showContextMenu: boolean = false;\n\n /** Enables column resizing for datatable */\n @Input()\n isResizingEnabled = false;\n\n /** Enables blur when resizing datatable columns */\n @Input()\n blurOnResize = true;\n\n /** Emitted before the context menu is displayed for a row. */\n @Output()\n showRowContextMenu = new EventEmitter<DataCellEvent>();\n\n /**\n * Resolver function is used to show dynamic complex column objects\n * see the docs to learn how to configure a resolverFn.\n */\n @Input()\n resolverFn: (row: DataRow, col: DataColumn) => any = null;\n\n /** Emitted when a row in the process list is clicked. */\n @Output()\n rowClick = new EventEmitter<string>();\n\n /** Emitted when the list of process instances has been loaded successfully from the server. */\n // eslint-disable-next-line @angular-eslint/no-output-native\n @Output()\n success = new EventEmitter<ResultListDataRepresentationProcessInstanceRepresentation>();\n\n /** Emitted when an error occurs while loading the list of process instances from the server. */\n // eslint-disable-next-line @angular-eslint/no-output-native\n @Output()\n error = new EventEmitter<any>();\n\n /** Emitted when rows are selected/unselected */\n @Output()\n rowsSelected = new EventEmitter<ObjectDataRow[]>();\n\n requestNode: ProcessInstanceQueryRepresentation;\n currentInstanceId: string;\n isLoading: boolean = true;\n rows: any[] = [];\n sorting: any[] = ['created', 'desc'];\n pagination: BehaviorSubject<PaginationModel>;\n\n constructor(private processService: ProcessService, private userPreferences: UserPreferencesService, appConfig: AppConfigService) {\n super(appConfig, PRESET_KEY, processPresetsDefaultModel);\n this.size = this.userPreferences.paginationSize;\n\n this.pagination = new BehaviorSubject<PaginationModel>({\n maxItems: this.size,\n skipCount: 0,\n totalItems: 0\n });\n }\n\n ngAfterContentInit() {\n this.createDatatableSchema();\n\n if (this.data?.getColumns().length === 0) {\n this.data.setColumns(this.columns);\n }\n\n if (this.appId != null) {\n this.reload();\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (this.isPropertyChanged(changes)) {\n if (this.isSortChanged(changes)) {\n this.sorting = this.sort ? this.sort.split('-') : this.sorting;\n }\n this.reload();\n }\n\n const presetColumnChanges = changes['presetColumn'];\n if (presetColumnChanges && !presetColumnChanges.firstChange) {\n this.columns = this.mergeJsonAndHtmlSchema();\n }\n }\n\n reload() {\n this.requestNode = this.createRequestNode();\n this.load(this.requestNode);\n }\n\n /**\n * Select the first instance of a list if present\n */\n selectFirst() {\n if (this.selectFirstRow) {\n if (!this.isListEmpty()) {\n const dataRow = this.rows[0];\n dataRow.isSelected = true;\n this.currentInstanceId = dataRow['id'];\n } else {\n this.currentInstanceId = null;\n }\n }\n }\n\n /**\n * Get the id of the current instance\n *\n * @returns instance id\n */\n getCurrentId(): string {\n return this.currentInstanceId;\n }\n\n /**\n * Check if the list is empty\n *\n * @returns `true` if list is empty, otherwise `false`\n */\n isListEmpty(): boolean {\n return !this.rows || this.rows.length === 0;\n }\n\n /**\n * Emit the event rowClick passing the current task id when the row is clicked\n *\n * @param event input event\n */\n onRowClick(event: DataRowEvent) {\n const item = event;\n\n this.currentInstanceId = item.value.getValue('id');\n this.rowClick.emit(this.currentInstanceId);\n }\n\n onRowCheckboxToggle(event: CustomEvent) {\n this.rowsSelected.emit([...event.detail.selection]);\n }\n\n /**\n * Emit the event rowClick passing the current task id when pressed the Enter key on the selected row\n *\n * @param event keyboard event\n */\n onRowKeyUp(event: CustomEvent<any>) {\n if (event.detail.keyboardEvent.key === 'Enter') {\n event.preventDefault();\n\n this.currentInstanceId = event.detail.row.getValue('id');\n this.rowClick.emit(this.currentInstanceId);\n }\n }\n\n onShowRowContextMenu(event: DataCellEvent) {\n this.showRowContextMenu.emit(event);\n }\n\n updatePagination(params: PaginationModel) {\n const needsReload = params.maxItems || params.skipCount;\n\n this.size = params.maxItems;\n this.page = this.currentPage(params.skipCount, params.maxItems);\n\n if (needsReload) {\n this.reload();\n }\n }\n\n currentPage(skipCount: number, maxItems: number): number {\n return skipCount && maxItems ? Math.floor(skipCount / maxItems) : 0;\n }\n\n private createRequestNode(): ProcessInstanceQueryRepresentation {\n return {\n appDefinitionId: this.appId,\n processDefinitionId: this.processDefinitionId,\n processInstanceId: this.processInstanceId,\n state: this.state,\n sort: this.sort,\n page: this.page,\n size: this.size,\n start: 0\n };\n }\n\n private isSortChanged(changes: SimpleChanges): boolean {\n const actualSort = changes['sort'];\n return actualSort?.currentValue && actualSort.currentValue !== actualSort.previousValue;\n }\n\n private isPropertyChanged(changes: SimpleChanges): boolean {\n let changed: boolean = false;\n\n const appId = changes['appId'];\n const processDefinitionId = changes['processDefinitionId'];\n const processInstanceId = changes['processInstanceId'];\n const state = changes['state'];\n const sort = changes['sort'];\n const page = changes['page'];\n const size = changes['size'];\n\n if (appId?.currentValue) {\n changed = true;\n } else if (processDefinitionId) {\n changed = true;\n } else if (processInstanceId) {\n changed = true;\n } else if (state?.currentValue) {\n changed = true;\n } else if (sort?.currentValue) {\n changed = true;\n } else if (page && page?.currentValue !== page.previousValue) {\n changed = true;\n } else if (size && size.currentValue !== size.previousValue) {\n changed = true;\n }\n return changed;\n }\n\n private load(requestNode: ProcessInstanceQueryRepresentation) {\n this.isLoading = true;\n this.processService\n .getProcesses(requestNode)\n .pipe(finalize(() => (this.isLoading = false)))\n .subscribe(\n (response) => {\n this.rows = response.data;\n this.selectFirst();\n this.success.emit(response);\n this.pagination.next({\n count: (response.data || []).length,\n maxItems: this.size,\n skipCount: this.page * this.size,\n totalItems: response.total\n });\n },\n (error) => {\n this.error.emit(error);\n }\n );\n }\n}\n","<adf-datatable\n [data]=\"data\"\n [rows]=\"rows\"\n [columns]=\"columns\"\n [sorting]=\"sorting\"\n [loading]=\"isLoading\"\n [isResizingEnabled]=\"isResizingEnabled\"\n [blurOnResize]=\"blurOnResize\"\n [stickyHeader]=\"stickyHeader\"\n [selectionMode]=\"selectionMode\"\n [multiselect]=\"multiselect\"\n [resolverFn]=\"resolverFn\"\n [contextMenu]=\"showContextMenu\"\n (showRowContextMenu)=\"onShowRowContextMenu($event)\"\n (rowClick)=\"onRowClick($event)\"\n (row-keyup)=\"onRowKeyUp($any($event))\"\n (row-select)=\"onRowCheckboxToggle($any($event))\"\n (row-unselect)=\"onRowCheckboxToggle($any($event))\"\n>\n <adf-loading-content-template>\n <ng-template>\n <mat-progress-spinner\n *ngIf=\"!customLoadingContent\"\n class=\"adf-process-list-loading-margin\"\n color=\"primary\"\n mode=\"indeterminate\" />\n <ng-content select=\"adf-custom-loading-content-template\" />\n </ng-template>\n </adf-loading-content-template>\n <adf-no-content-template>\n <ng-template>\n <adf-empty-content *ngIf=\"!customEmptyContent\"\n icon=\"assessment\"\n [title]=\"(requestNode ? 'ADF_PROCESS_LIST.LIST.TITLE' : 'ADF_PROCESS_LIST.FILTERS.MESSAGES.NONE') | translate\"\n [subtitle]=\"'ADF_PROCESS_LIST.LIST.SUBTITLE'| translate\" />\n <ng-content select=\"adf-custom-empty-content-template\" />\n </ng-template>\n </adf-no-content-template>\n</adf-datatable>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AlfrescoApiService } from '@alfresco/adf-content-services';\nimport { Injectable } from '@angular/core';\nimport { Observable, from, forkJoin } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport {\n ResultListDataRepresentationUserProcessInstanceFilterRepresentation,\n UserFiltersApi,\n UserProcessInstanceFilterRepresentation\n} from '@alfresco/js-api';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ProcessFilterService {\n private _userFiltersApi: UserFiltersApi;\n get userFiltersApi(): UserFiltersApi {\n this._userFiltersApi = this._userFiltersApi ?? new UserFiltersApi(this.alfrescoApiService.getInstance());\n return this._userFiltersApi;\n }\n\n constructor(private alfrescoApiService: AlfrescoApiService) {}\n\n /**\n * Gets all filters defined for a Process App.\n *\n * @param appId ID of the target app\n * @returns Array of filter details\n */\n getProcessFilters(appId: number): Observable<UserProcessInstanceFilterRepresentation[]> {\n return from(this.callApiProcessFilters(appId)).pipe(\n map((response) => {\n const filters = [];\n response.data.forEach((filter) => {\n if (!this.isFilterAlreadyExisting(filters, filter.name)) {\n filters.push(filter);\n }\n });\n return filters;\n })\n );\n }\n\n /**\n * Retrieves the process filter by ID.\n *\n * @param filterId ID of the filter\n * @param appId ID of the target app\n * @returns Details of the filter\n */\n getProcessFilterById(filterId: number, appId?: number): Observable<UserProcessInstanceFilterRepresentation> {\n return from(this.callApiProcessFilters(appId)).pipe(map((response) => response.data.find((filter) => filter.id === filterId)));\n }\n\n /**\n * Retrieves the process filter by name.\n *\n * @param filterName Name of the filter\n * @param appId ID of the target app\n * @returns Details of the filter\n */\n getProcessFilterByName(filterName: string, appId?: number): Observable<UserProcessInstanceFilterRepresentation> {\n return from(this.callApiProcessFilters(appId)).pipe(map((response) => response.data.find((filter) => filter.name === filterName)));\n }\n\n /**\n * Creates and returns the default filters for an app.\n *\n * @param appId ID of the target app\n * @returns Default filters just created\n */\n createDefaultFilters(appId: number): Observable<UserProcessInstanceFilterRepresentation[]> {\n const runningFilter = this.getRunningFilterInstance(appId, 0);\n const runningObservable = this.addProcessFilter(runningFilter);\n\n const completedFilter = this.getCompletedFilterInstance(appId, 1);\n const completedObservable = this.addProcessFilter(completedFilter);\n\n const allFilter = this.getAllFilterInstance(appId, 2);\n const allObservable = this.addProcessFilter(allFilter);\n\n return new Observable((observer) => {\n forkJoin([runningObservable, completedObservable, allObservable]).subscribe((res) => {\n const filters: UserProcessInstanceFilterRepresentation[] = [];\n res.forEach((filter) => {\n if (!this.isFilterAlreadyExisting(filters, filter.name)) {\n if (filter.name === runningFilter.name) {\n filters.push({ ...filter, filter: runningFilter.filter, appId });\n } else if (filter.name === completedFilter.name) {\n filters.push({ ...filter, filter: completedFilter.filter, appId });\n } else if (filter.name === allFilter.name) {\n filters.push({ ...filter, filter: allFilter.filter, appId });\n }\n }\n });\n observer.next(filters);\n observer.complete();\n });\n });\n }\n\n /**\n * Checks if a filter with the given name already exists in the list of filters.\n *\n * @param filters - An array of objects representing the existing filters.\n * @param filterName - The name of the filter to check for existence.\n * @returns - True if a filter with the specified name already exists, false otherwise.\n */\n isFilterAlreadyExisting(filters: Partial<{ name: string }>[], filterName: string): boolean {\n return filters.some((existingFilter) => existingFilter.name === filterName);\n }\n\n /**\n * Creates and returns a filter that matches \"running\" process instances.\n *\n * @param appId ID of the target app\n * @param index of the filter (optional)\n * @returns Filter just created\n */\n getRunningFilterInstance(appId: number, index?: number): UserProcessInstanceFilterRepresentation {\n return {\n name: 'Running',\n appId,\n recent: true,\n icon: 'glyphicon-random',\n filter: { sort: 'created-desc', name: '', state: 'running' },\n index\n };\n }\n\n /**\n * Adds a filter.\n *\n * @param filter The filter to add\n * @returns The filter just added\n */\n addProcessFilter(filter: UserProcessInstanceFilterRepresentation): Observable<UserProcessInstanceFilterRepresentation> {\n return from(this.userFiltersApi.createUserProcessInstanceFilter(filter));\n }\n\n /**\n * Calls `getUserProcessInstanceFilters` from the Alfresco JS API.\n *\n * @param appId ID of the target app\n * @returns List of filter details\n */\n callApiProcessFilters(appId?: number): Promise<ResultListDataRepresentationUserProcessInstanceFilterRepresentation> {\n if (appId) {\n return this.userFiltersApi.getUserProcessInstanceFilters({ appId });\n } else {\n return this.userFiltersApi.getUserProcessInstanceFilters();\n }\n }\n\n getCompletedFilterInstance(appId: number, index?: number): UserProcessInstanceFilterRepresentation {\n return {\n name: 'Completed',\n appId,\n recent: false,\n icon: 'glyphicon-ok-sign',\n filter: { sort: 'created-desc', name: '', state: 'completed' },\n index\n };\n }\n\n getAllFilterInstance(appId: number, index?: number): UserProcessInstanceFilterRepresentation {\n return {\n name: 'All',\n appId,\n recent: true,\n icon: 'glyphicon-th',\n filter: { sort: 'created-desc', name: '', state: 'all' },\n index\n };\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Injectable } from '@angular/core';\nimport { RuntimeAppDefinitionsApi, AppDefinitionRepresentation } from '@alfresco/js-api';\nimport { Observable, from } from 'rxjs';\nimport { AlfrescoApiService } from '@alfresco/adf-content-services';\nimport { map } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AppsProcessService {\n private _appsApi: RuntimeAppDefinitionsApi;\n get appsApi(): RuntimeAppDefinitionsApi {\n this._appsApi = this._appsApi ?? new RuntimeAppDefinitionsApi(this.apiService.getInstance());\n return this._appsApi;\n }\n\n constructor(private apiService: AlfrescoApiService) {}\n\n /**\n * Gets a list of deployed apps for this user.\n *\n * @returns The list of deployed apps\n */\n getDeployedApplications(): Observable<AppDefinitionRepresentation[]> {\n return from(this.appsApi.getAppDefinitions()).pipe(map((response) => response.data || []));\n }\n\n /**\n * Gets a list of deployed apps for this user, where the app name is `name`.\n *\n * @param name Name of the app\n * @returns The list of deployed apps\n */\n getDeployedApplicationsByName(name: string): Observable<AppDefinitionRepresentation> {\n return this.getDeployedApplications().pipe(map((response) => response.find((app) => app.name === name)));\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst DEFAULT_TASKS_APP_MATERIAL_ICON: string = 'favorite_border';\n\n/* spellchecker: disable */\nexport class IconModel {\n private iconsMDL: Map<string, string>;\n private supportedIconTypes = ['glyphicon', 'fa' /*Font awesome*/];\n\n private sharedIconsMap = [\n ['asterisk', 'ac_unit'],\n ['plus', 'add'],\n ['euro', 'euro_symbol'],\n ['cloud', 'cloud'],\n ['envelope', 'mail'],\n ['pencil', 'create'],\n ['glass', 'local_bar'],\n ['music', 'music_note'],\n ['search', 'search'],\n ['heart', 'favorite'],\n ['heart-empty', 'favorite_border'],\n ['star', 'star'],\n ['star-empty', 'star_border'],\n ['user', 'person'],\n ['film', 'movie_creation'],\n ['th-large', 'view_comfy'],\n ['th', 'dashboard'],\n ['th-list', 'list'],\n ['ok', 'done'],\n ['remove', 'cancel'],\n ['zoom-in', 'zoom_in'],\n ['zoom-out', 'zoom_out'],\n ['off', 'highlight_off'],\n ['signal', 'signal_cellular_4_bar'],\n ['cog', 'settings'],\n ['trash', 'delete'],\n ['home', 'home'],\n ['file', 'insert_drive_file'],\n ['time', 'access_time'],\n ['road', 'map'],\n ['download-alt', 'file_download'],\n ['download', 'file_download'],\n ['upload', 'file_upload'],\n ['inbox', 'inbox'],\n ['play-circle', 'play_circle_outline'],\n ['repeat', 'refresh'],\n ['refresh', 'sync'],\n ['list-alt', 'event_note'],\n ['lock', 'lock_outline'],\n ['flag', 'assistant_photo'],\n ['headphones', 'headset'],\n ['volume-up', 'volume_up'],\n ['tag', 'local_offer'],\n ['tags', 'local_offer'],\n ['book', 'library_books'],\n ['bookmark', 'collections_bookmark'],\n ['print', 'local_printshop'],\n ['camera', 'local_see'],\n ['list', 'view_list'],\n ['facetime-video', 'video_call'],\n ['picture', 'photo'],\n ['map-marker', 'add_location'],\n ['adjust', 'brightness_4'],\n ['tint', 'invert_colors'],\n ['edit', 'edit'],\n ['share', 'share'],\n ['check', 'assignment_turned_in'],\n ['move', 'open_with'],\n ['play', 'play_arrow'],\n ['eject', 'eject'],\n ['plus-sign', 'add_circle'],\n ['minus-sign', 'remove_circle'],\n ['remove-sign', 'cancel'],\n ['ok-sign', 'check_circle'],\n ['question-sign', 'help'],\n ['info-sign', 'info'],\n ['screenshot', 'flare'],\n ['remove-circle', 'cancel'],\n ['ok-circle', 'add_circle'],\n ['ban-circle', 'block'],\n ['share-alt', 'redo'],\n ['exclamation-sign', 'error'],\n ['gift', 'giftcard'],\n ['leaf', 'spa'],\n ['fire', 'whatshot'],\n ['eye-open', 'remove_red_eye'],\n ['eye-close', 'remove_red_eye'],\n ['warning-sign', 'warning'],\n ['plane', 'airplanemode_active'],\n ['calendar', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['random', 'shuffle'],\n ['comment', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['magnet', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['retweet', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['shopping-cart', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['folder-close', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['folder-open', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['hdd', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['bullhorn', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['bell', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['certificate', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['thumbs-up', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['thumbs-down', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['hand-left', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['globe', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['wrench', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['tasks', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['filter', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['briefcase', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['dashboard', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['paperclip', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['link', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['phone', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['pushpin', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['usd', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['gbp', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['sort', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['flash', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['record', 'radio_button_checked'],\n ['save', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['open', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['saved', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['send', 'send'],\n ['floppy-disk', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['credit-card', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['cutlery', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['earphone', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['phone-alt', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['tower', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['stats', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['cloud-download', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['cloud-upload', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['tree-conifer', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['tree-deciduous', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['align-left', 'format_align_left']\n ];\n\n constructor() {\n this.initIconsMDL();\n }\n\n mapGlyphiconToMaterialDesignIcons(icon: string) {\n return this.iconsMDL.get(icon) ? this.iconsMDL.get(icon) : DEFAULT_TASKS_APP_MATERIAL_ICON;\n }\n\n /**\n * Map all the bootstrap glyphicon icons with Material design material icon\n */\n initIconsMDL() {\n this.iconsMDL = new Map<string, string>();\n\n this.supportedIconTypes.forEach(iconType => {\n this.sharedIconsMap.forEach(([iconKey, iconValue]) => {\n this.iconsMDL.set(`${iconType}-${iconKey}`, iconValue);\n });\n });\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, DestroyRef, EventEmitter, inject, Input, OnChanges, OnInit, Output, SimpleChanges, ViewEncapsulation } from '@angular/core';\nimport { ProcessInstanceFilterRepresentation, UserProcessInstanceFilterRepresentation } from '@alfresco/js-api';\nimport { ProcessFilterService } from '../../services/process-filter.service';\nimport { AppsProcessService } from '../../../services/apps-process.service';\nimport { IconModel } from '../../../app-list/icon.model';\nimport { NavigationStart, Router } from '@angular/router';\nimport { filter } from 'rxjs/operators';\nimport { CommonModule, Location } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { IconComponent } from '@alfresco/adf-core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'adf-process-instance-filters',\n imports: [CommonModule, TranslatePipe, MatButtonModule, IconComponent],\n templateUrl: './process-filters.component.html',\n styleUrls: ['./process-filters.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class ProcessFiltersComponent implements OnInit, OnChanges {\n /**\n * The parameters to filter the task filter. If there is no match then the default one\n * (ie, the first filter in the list) is selected.\n */\n @Input()\n filterParam: UserProcessInstanceFilterRepresentation;\n\n /** Emitted when a filter is being clicked from the UI. */\n @Output()\n filterClicked = new EventEmitter<UserProcessInstanceFilterRepresentation>();\n\n /** Emitted when the list of filters has been successfully loaded from the server. */\n @Output()\n success = new EventEmitter<ProcessInstanceFilterRepresentation[]>();\n\n /** Emitted when an error occurs. */\n @Output()\n error = new EventEmitter<any>();\n\n /** Display filters available to the current user for the application with the specified ID. */\n @Input()\n appId: number;\n\n /** Display filters available to the current user for the application with the specified name. */\n @Input()\n appName: string;\n\n /** Toggle to show or hide the filter's icon. */\n @Input()\n showIcon = true;\n\n /** Emitted when a filter is being selected based on the filterParam input. */\n @Output()\n filterSelected = new EventEmitter<UserProcessInstanceFilterRepresentation>();\n\n currentFilter: ProcessInstanceFilterRepresentation;\n\n filters: UserProcessInstanceFilterRepresentation[] = [];\n active = false;\n isProcessRoute: boolean;\n isProcessActive: boolean;\n\n private iconsMDL: IconModel;\n\n private readonly destroyRef = inject(DestroyRef);\n\n constructor(\n private processFilterService: ProcessFilterService,\n private appsProcessService: AppsProcessService,\n private router: Router,\n private location: Location\n ) {}\n\n ngOnInit() {\n this.iconsMDL = new IconModel();\n this.router.events\n .pipe(\n filter((event) => event instanceof NavigationStart),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe((navigationStart: NavigationStart) => {\n const activeRoute = navigationStart.url;\n this.isProcessActive = activeRoute.includes('processes');\n });\n const currentRoute = this.location.path();\n this.isProcessRoute = currentRoute.includes('processes');\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const appId = changes['appId'];\n const appName = changes['appName'];\n const filterParam = changes['filterParam'];\n\n if (appId && (appId.currentValue || appId.currentValue === null)) {\n this.getFiltersByAppId(appId.currentValue);\n } else if (appName?.currentValue) {\n this.getFiltersByAppName(appName.currentValue);\n } else if (filterParam && filterParam.currentValue !== filterParam.previousValue) {\n this.selectProcessFilter(filterParam.currentValue);\n }\n }\n\n isActiveRoute(filterActive: ProcessInstanceFilterRepresentation): boolean {\n return (this.isProcessActive || this.isProcessRoute) && this.currentFilter === filterActive;\n }\n\n /**\n * Return the filter list filtered by appId\n *\n * @param appId - optional\n */\n getFiltersByAppId(appId?: number) {\n this.processFilterService.getProcessFilters(appId).subscribe(\n (res) => {\n if (res.length === 0 && this.isFilterListEmpty()) {\n this.processFilterService.createDefaultFilters(appId).subscribe(\n (resDefault) => {\n this.resetFilter();\n this.filters = resDefault;\n this.selectProcessFilter(this.filterParam);\n this.success.emit(resDefault);\n },\n (errDefault) => {\n this.error.emit(errDefault);\n }\n );\n } else {\n this.resetFilter();\n this.filters = res;\n this.selectProcessFilter(this.filterParam);\n this.success.emit(res);\n }\n },\n (err) => {\n this.error.emit(err);\n }\n );\n }\n\n /**\n * Return the filter list filtered by appName\n *\n * @param appName application name\n */\n getFiltersByAppName(appName: string): void {\n this.appsProcessService.getDeployedApplicationsByName(appName).subscribe(\n (application) => {\n this.getFiltersByAppId(application.id);\n this.selectProcessFilter(this.filterParam);\n },\n (err) => {\n this.error.emit(err);\n }\n );\n }\n\n /**\n * Pass the selected filter as next\n *\n * @param filterModel filter model\n */\n selectFilter(filterModel: ProcessInstanceFilterRepresentation) {\n this.currentFilter = filterModel;\n this.active = true;\n this.filterClicked.emit(filterModel);\n }\n\n /**\n * Select the first filter of a list if present\n *\n * @param filterParam filter parameter\n */\n selectProcessFilter(filterParam: UserProcessInstanceFilterRepresentation): void {\n if (filterParam) {\n const newFilter = this.filters.find(\n (processFilter, index) =>\n filterParam.index === index ||\n filterParam.id === processFilter.id ||\n (filterParam.name && filterParam.name.toLocaleLowerCase() === processFilter.name.toLocaleLowerCase())\n );\n this.currentFilter = newFilter;\n\n if (newFilter) {\n this.filterSelected.emit(newFilter);\n }\n }\n }\n\n /**\n * Select the Running filter\n *\n * @deprecated in 3.9.0, Use the filterParam Input() with a running filter instance instead\n */\n selectRunningFilter() {\n this.selectProcessFilter(this.processFilterService.getRunningFilterInstance(null));\n }\n\n /**\n * Get the current task\n *\n * @returns process instance filter\n */\n getCurrentFilter(): ProcessInstanceFilterRepresentation {\n return this.currentFilter;\n }\n\n /**\n * Check if the filter list is empty\n *\n * @returns `true` if filter list is empty, otherwise `false`\n */\n isFilterListEmpty(): boolean {\n return this.filters === undefined || (this.filters && this.filters.length === 0);\n }\n\n /**\n * Get the material icons equivalent of the glyphicon icon\n *\n * @param icon glyphicon name\n * @returns material icons equivalent of the icon\n */\n getFilterIcon(icon: string): string {\n return this.iconsMDL.mapGlyphiconToMaterialDesignIcons(icon);\n }\n\n /**\n * Reset the filters properties\n */\n private resetFilter() {\n this.filters = [];\n this.currentFilter = undefined;\n }\n}\n","<div *ngFor=\"let filter of filters\" class=\"adf-filters__entry\" [class.adf-active]=\"isActiveRoute(filter)\">\n <button\n (click)=\"selectFilter(filter)\"\n [attr.aria-label]=\"filter.name | translate\"\n [id]=\"filter.id\"\n [attr.data-automation-id]=\"filter.name + '_filter'\"\n mat-button\n class=\"adf-filter-action-button adf-full-width\">\n <adf-icon data-automation-id=\"adf-filter-icon\" *ngIf=\"showIcon\" [value]=\"getFilterIcon(filter.icon)\" />\n <span data-automation-id=\"adf-filter-label\" class=\"adf-filter-action-button__label\">{{ filter.name | translate }}</span>\n </button>\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AppConfigService,\n CardViewBaseItemModel,\n CardViewComponent,\n CardViewDateItemModel,\n CardViewItem,\n CardViewTextItemModel,\n TranslationService\n} from '@alfresco/adf-core';\nimport { Component, Input, OnChanges } from '@angular/core';\nimport { ProcessInstanceRepresentation } from '@alfresco/js-api';\nimport { CommonModule } from '@angular/common';\nimport { MatCardModule } from '@angular/material/card';\n\n@Component({\n selector: 'adf-process-instance-header',\n imports: [CommonModule, MatCardModule, CardViewComponent],\n templateUrl: './process-instance-header.component.html',\n styleUrls: ['./process-instance-header.component.css']\n})\nexport class ProcessInstanceHeaderComponent implements OnChanges {\n /** (**required**) Full details of the process instance to display information about. */\n @Input({ required: true })\n processInstance: ProcessInstanceRepresentation;\n\n properties: CardViewItem[];\n dateFormat: string;\n dateLocale: string;\n\n constructor(private translationService: TranslationService, private appConfig: AppConfigService) {\n this.dateFormat = this.appConfig.get('dateValues.defaultDateFormat');\n this.dateLocale = this.appConfig.get('dateValues.defaultDateLocale');\n }\n\n ngOnChanges() {\n this.refreshData();\n }\n\n refreshData(): void {\n if (this.processInstance) {\n const defaultProperties = this.initDefaultProperties();\n const filteredProperties: string[] = this.appConfig.get('adf-process-instance-header.presets.properties');\n this.properties = defaultProperties.filter((cardItem) => this.isValidSelection(filteredProperties, cardItem));\n }\n }\n\n getProcessStatus(): string {\n if (this.processInstance) {\n return this.isRunning() ? 'Running' : 'Completed';\n }\n return 'Unknown';\n }\n\n getStartedByFullName(): string {\n let fullName = '';\n if (this.processInstance?.startedBy) {\n fullName += this.processInstance.startedBy.firstName || '';\n fullName += fullName ? ' ' : '';\n fullName += this.processInstance.startedBy.lastName || '';\n }\n return fullName;\n }\n\n isRunning(): boolean {\n return this.processInstance && !this.processInstance.ended;\n }\n\n private initDefaultProperties(): any[] {\n return [\n new CardViewTextItemModel({\n label: 'ADF_PROCESS_LIST.PROPERTIES.STATUS',\n value: this.getProcessStatus(),\n key: 'status'\n }),\n new CardViewDateItemModel({\n label: 'ADF_PROCESS_LIST.PROPERTIES.END_DATE',\n value: this.processInstance.ended,\n format: this.dateFormat,\n locale: this.dateLocale,\n key: 'ended',\n default: this.translationService.instant('ADF_PROCESS_LIST.PROPERTIES.END_DATE_DEFAULT')\n }),\n new CardViewTextItemModel({\n label: 'ADF_PROCESS_LIST.PROPERTIES.CATEGORY',\n value: this.processInstance.processDefinitionCategory,\n key: 'category',\n default: this.translationService.instant('ADF_PROCESS_LIST.PROPERTIES.CATEGORY_DEFAULT')\n }),\n new CardViewTextItemModel({\n label: 'ADF_PROCESS_LIST.PROPERTIES.BUSINESS_KEY',\n value: this.processInstance.businessKey,\n key: 'businessKey',\n default: this.translationService.instant('ADF_PROCESS_LIST.PROPERTIES.BUSINESS_KEY_DEFAULT')\n }),\n new CardViewTextItemModel({\n label: 'ADF_PROCESS_LIST.PROPERTIES.CREATED_BY',\n value: this.getStartedByFullName(),\n key: 'createdBy',\n default: this.translationService.instant('ADF_PROCESS_LIST.PROPERTIES.CREATED_BY_DEFAULT')\n }),\n new CardViewDateItemModel({\n label: 'ADF_PROCESS_LIST.PROPERTIES.CREATED',\n value: this.processInstance.started,\n format: this.dateFormat,\n locale: this.dateLocale,\n key: 'created'\n }),\n new CardViewTextItemModel({ label: 'ADF_PROCESS_LIST.PROPERTIES.ID', value: this.processInstance.id, key: 'id' }),\n new CardViewTextItemModel({\n label: 'ADF_PROCESS_LIST.PROPERTIES.DESCRIPTION',\n value: this.processInstance.processDefinitionDescription,\n key: 'description',\n default: this.translationService.instant('ADF_PROCESS_LIST.PROPERTIES.DESCRIPTION_DEFAULT')\n })\n ];\n }\n\n private isValidSelection(filteredProperties: string[], cardItem: CardViewBaseItemModel): boolean {\n return filteredProperties ? filteredProperties.indexOf(cardItem.key) >= 0 : true;\n }\n}\n","<mat-card appearance=\"outlined\" *ngIf=\"processInstance\" class=\"adf-card-container\">\n <mat-card-content>\n <adf-card-view [properties]=\"properties\" />\n </mat-card-content>\n</mat-card>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * This object represent of the Form.\n */\nexport class Form {\n\n id: number;\n name: string;\n\n constructor(id: number, name: string) {\n this.name = name;\n this.id = id;\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { inject, Injectable } from '@angular/core';\nimport { Observable, from, of } from 'rxjs';\nimport { map, catchError, flatMap, filter } from 'rxjs/operators';\nimport { Form } from '../models/form.model';\nimport {\n TaskUpdateRepresentation,\n ModelsApi,\n TaskActionsApi,\n TasksApi,\n ChecklistsApi,\n ResultListDataRepresentationTaskRepresentation,\n TaskQueryRepresentation,\n UserTaskFilterRepresentation,\n TaskRepresentation\n} from '@alfresco/js-api';\nimport { AlfrescoApiService } from '@alfresco/adf-content-services';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TaskListService {\n protected apiService = inject(AlfrescoApiService);\n\n private _modelsApi: ModelsApi;\n get modelsApi(): ModelsApi {\n this._modelsApi = this._modelsApi ?? new ModelsApi(this.apiService.getInstance());\n return this._modelsApi;\n }\n\n private _tasksApi: TasksApi;\n get tasksApi(): TasksApi {\n this._tasksApi = this._tasksApi ?? new TasksApi(this.apiService.getInstance());\n return this._tasksApi;\n }\n\n private _taskActionsApi: TaskActionsApi;\n get taskActionsApi(): TaskActionsApi {\n this._taskActionsApi = this._taskActionsApi ?? new TaskActionsApi(this.apiService.getInstance());\n return this._taskActionsApi;\n }\n\n private _checklistsApi: ChecklistsApi;\n get checklistsApi(): ChecklistsApi {\n this._checklistsApi = this._checklistsApi ?? new ChecklistsApi(this.apiService.getInstance());\n return this._checklistsApi;\n }\n\n /**\n * Gets all the filters in the list that belong to a task.\n *\n * @param taskId ID of the target task\n * @param filterList List of filters to search through\n * @returns Filters belonging to the task\n */\n getFilterForTaskById(taskId: string, filterList: UserTaskFilterRepresentation[]): Observable<UserTaskFilterRepresentation> {\n return from(filterList).pipe(\n flatMap((data) => this.isTaskRelatedToFilter(taskId, data)),\n filter((data) => data != null)\n );\n }\n\n /**\n * Checks if a taskId is filtered with the given filter.\n *\n * @param taskId ID of the target task\n * @param filterModel The filter you want to check\n * @returns The filter if it is related or null otherwise\n */\n isTaskRelatedToFilter(taskId: string, filterModel: UserTaskFilterRepresentation): Observable<UserTaskFilterRepresentation> {\n const requestNodeForFilter = new TaskQueryRepresentation({\n appDefinitionId: filterModel.appId,\n assignment: filterModel.filter.assignment,\n state: filterModel.filter.state,\n sort: filterModel.filter.sort\n });\n return from(this.tasksApi.listTasks(requestNodeForFilter)).pipe(\n map((res) => (res.data.find((element) => element.id === taskId) ? filterModel : null))\n );\n }\n\n /**\n * Gets all the tasks matching the supplied query.\n *\n * @param requestNode Query to search for tasks\n * @returns List of tasks\n */\n getTasks(requestNode: TaskQueryRepresentation): Observable<ResultListDataRepresentationTaskRepresentation> {\n return from(this.tasksApi.listTasks(requestNode));\n }\n\n /**\n * Gets tasks matching a query and state value.\n *\n * @param requestNode Query to search for tasks\n * @returns List of tasks\n */\n findTasksByState(requestNode: TaskQueryRepresentation): Observable<ResultListDataRepresentationTaskRepresentation> {\n return this.getTasks(requestNode).pipe(catchError(() => of(new ResultListDataRepresentationTaskRepresentation({ data: [] }))));\n }\n\n /**\n * Gets details for a task.\n *\n * @param taskId ID of the target task.\n * @returns Task details\n */\n getTaskDetails(taskId: string): Observable<TaskRepresentation> {\n return from(this.tasksApi.getTask(taskId));\n }\n\n /**\n * Gets the checklist for a task.\n *\n * @param id ID of the target task\n * @returns Array of checklist task details\n */\n getTaskChecklist(id: string): Observable<TaskRepresentation[]> {\n return from(this.checklistsApi.getChecklist(id)).pipe(map((response) => response.data));\n }\n\n /**\n * Gets all available reusable forms.\n *\n * @returns Array of form details\n */\n getFormList(): Observable<Form[]> {\n const opts = {\n filter: 'myReusableForms', // String | filter\n sort: 'modifiedDesc', // String | sort\n modelType: 2 // Integer | modelType\n };\n\n return from(this.modelsApi.getModels(opts)).pipe(map((response) => response.data.map((form) => new Form(form.id, form.name))));\n }\n\n /**\n * Attaches a form to a task.\n *\n * @param taskId ID of the target task\n * @param formId ID of the form to add\n * @returns Null response notifying when the operation is complete\n */\n attachFormToATask(taskId: string, formId: number): Observable<any> {\n return from(this.taskActionsApi.attachForm(taskId, { formId }));\n }\n\n /**\n * Adds a subtask (ie, a checklist task) to a parent task.\n *\n * @param task The task to add\n * @returns The subtask that was added\n */\n addTask(task: TaskRepresentation): Observable<TaskRepresentation> {\n return from(this.checklistsApi.addSubtask(task.parentTaskId, task));\n }\n\n /**\n * Deletes a subtask (ie, a checklist task) from a parent task.\n *\n * @param taskId The task to delete\n * @returns Null response notifying when the operation is complete\n */\n deleteTask(taskId: string): Observable<any> {\n return from(this.tasksApi.deleteTask(taskId));\n }\n\n /**\n * Deletes a form from a task.\n *\n * @param taskId Task id related to form\n * @returns Null response notifying when the operation is complete\n */\n deleteForm(taskId: string): Observable<any> {\n return from(this.taskActionsApi.removeForm(taskId));\n }\n\n /**\n * Gives completed status to a task.\n *\n * @param taskId ID of the target task\n * @returns Null response notifying when the operation is complete\n */\n completeTask(taskId: string) {\n return from(this.taskActionsApi.completeTask(taskId));\n }\n\n /**\n * Creates a new standalone task.\n *\n * @param task Details of the new task\n * @returns Details of the newly created task\n */\n createNewTask(task: TaskRepresentation): Observable<TaskRepresentation> {\n return from(this.tasksApi.createNewTask(task));\n }\n\n /**\n * Assigns a task to a user or group.\n *\n * @param taskId The task to assign\n * @param requestNode User or group to assign the task to\n * @returns Details of the assigned task\n */\n assignTask(taskId: string, requestNode: any): Observable<TaskRepresentation> {\n const assignee = { assignee: requestNode.id };\n return from(this.taskActionsApi.assignTask(taskId, assignee));\n }\n\n /**\n * Assigns a task to a user.\n *\n * @param taskId ID of the task to assign\n * @param userId ID of the user to assign the task to\n * @returns Details of the assigned task\n */\n assignTaskByUserId(taskId: string, userId: string): Observable<TaskRepresentation> {\n const assignee = { assignee: userId };\n\n return from(this.taskActionsApi.assignTask(taskId, assignee));\n }\n\n /**\n * Claims a task for the current user.\n *\n * @param taskId ID of the task to claim\n * @returns Details of the claimed task\n */\n claimTask(taskId: string): Observable<TaskRepresentation> {\n return from(this.taskActionsApi.claimTask(taskId));\n }\n\n /**\n * Un-claims a task for the current user.\n *\n * @param taskId ID of the task to unclaim\n * @returns Null response notifying when the operation is complete\n */\n unclaimTask(taskId: string): Observable<TaskRepresentation> {\n return from(this.taskActionsApi.unclaimTask(taskId));\n }\n\n /**\n * Updates the details (name, description, due date) for a task.\n *\n * @param taskId ID of the task to update\n * @param updated Data to update the task (as a `TaskUpdateRepresentation` instance).\n * @returns Updated task details\n */\n updateTask(taskId: string, updated: TaskUpdateRepresentation): Observable<TaskRepresentation> {\n return from(this.tasksApi.updateTask(taskId, updated));\n }\n\n /**\n * Fetches the Task Audit information in PDF format.\n *\n * @param taskId ID of the target task\n * @returns Binary PDF data\n */\n fetchTaskAuditPdfById(taskId: string): Observable<Blob> {\n return from(this.tasksApi.getTaskAuditPdf(taskId));\n }\n\n /**\n * Fetch the Task Audit information in JSON format\n *\n * @param taskId ID of the target task\n * @returns JSON data\n */\n fetchTaskAuditJsonById(taskId: string): Observable<any> {\n return from(this.tasksApi.getTaskAuditLog(taskId));\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Directive, Input, Output, EventEmitter, HostListener, OnInit } from '@angular/core';\nimport { TaskListService } from '../../services/tasklist.service';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[adf-claim-task]'\n})\nexport class ClaimTaskDirective implements OnInit {\n /** (Required) The id of the task. */\n @Input()\n taskId: string;\n\n /** Emitted when the task is claimed. */\n @Output()\n success = new EventEmitter<any>();\n\n /** Emitted when the task cannot be claimed. */\n @Output()\n error = new EventEmitter<any>();\n\n invalidParams: string[] = [];\n\n constructor(private taskListService: TaskListService) {}\n\n @HostListener('click')\n onClick() {\n try {\n this.claimTask();\n } catch (error) {\n this.error.emit(error);\n }\n }\n\n ngOnInit() {\n this.validateInputs();\n }\n\n validateInputs() {\n if (!this.isTaskValid()) {\n this.invalidParams.push('taskId');\n }\n\n if (this.invalidParams.length) {\n throw new Error(`Attribute ${this.invalidParams.join(', ')} is required`);\n }\n }\n\n isTaskValid(): boolean {\n return this.taskId && this.taskId.length > 0;\n }\n\n private claimTask() {\n this.taskListService.claimTask(this.taskId).subscribe(\n () => {\n this.success.emit(this.taskId);\n },\n (error) => this.error.emit(error)\n );\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Directive, HostListener, Input, Output, EventEmitter, OnInit } from '@angular/core';\nimport { TaskListService } from '../../services/tasklist.service';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[adf-unclaim-task]'\n})\nexport class UnclaimTaskDirective implements OnInit {\n /** (Required) The id of the task. */\n @Input()\n taskId: string;\n\n /** Emitted when the task is released. */\n @Output()\n success = new EventEmitter<any>();\n\n /** Emitted when the task cannot be released. */\n @Output()\n error = new EventEmitter<any>();\n\n invalidParams: string[] = [];\n\n constructor(private taskListService: TaskListService) {}\n\n @HostListener('click')\n onClick() {\n try {\n this.unclaimTask();\n } catch (error) {\n this.error.emit(error);\n }\n }\n\n ngOnInit() {\n this.validateInputs();\n }\n\n validateInputs() {\n if (!this.isTaskValid()) {\n this.invalidParams.push('taskId');\n }\n if (this.invalidParams.length) {\n throw new Error(`Attribute ${this.invalidParams.join(', ')} is required`);\n }\n }\n\n isTaskValid(): boolean {\n return this.taskId && this.taskId.length > 0;\n }\n\n private unclaimTask() {\n this.taskListService.unclaimTask(this.taskId).subscribe(\n () => {\n this.success.emit(this.taskId);\n },\n (error) => this.error.emit(error)\n );\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Observable, from } from 'rxjs';\nimport { GroupModel } from '@alfresco/adf-core';\nimport { map } from 'rxjs/operators';\nimport { AlfrescoApiService } from '@alfresco/adf-content-services';\nimport { TaskActionsApi, UsersApi, ActivitiGroupsApi, UserProfileApi, UserRepresentation, LightUserRepresentation } from '@alfresco/js-api';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PeopleProcessService {\n private _taskActionsApi: TaskActionsApi;\n get taskActionsApi(): TaskActionsApi {\n this._taskActionsApi = this._taskActionsApi ?? new TaskActionsApi(this.apiService.getInstance());\n return this._taskActionsApi;\n }\n\n private _userApi: UsersApi;\n get userApi(): UsersApi {\n this._userApi = this._userApi ?? new UsersApi(this.apiService.getInstance());\n return this._userApi;\n }\n\n private _groupsApi: ActivitiGroupsApi;\n get groupsApi(): ActivitiGroupsApi {\n this._groupsApi = this._groupsApi ?? new ActivitiGroupsApi(this.apiService.getInstance());\n return this._groupsApi;\n }\n\n private _profileApi: UserProfileApi;\n get profileApi(): UserProfileApi {\n this._profileApi = this._profileApi ?? new UserProfileApi(this.apiService.getInstance());\n return this._profileApi;\n }\n\n constructor(private apiService: AlfrescoApiService) {}\n\n /**\n * Gets information about the current user.\n *\n * @returns User information object\n */\n getCurrentUserInfo(): Observable<UserRepresentation> {\n return from(this.profileApi.getProfile());\n }\n\n /**\n * Gets the current user's profile image as a URL.\n *\n * @returns URL string\n */\n getCurrentUserProfileImage(): string {\n return this.profileApi.getProfilePictureUrl();\n }\n\n /**\n * Gets a list of groups in a workflow.\n *\n * @param filter Filter to select specific groups\n * @param groupId Group ID for the search\n * @returns Array of groups\n */\n getWorkflowGroups(filter: string, groupId?: string): Observable<GroupModel[]> {\n const option: any = { filter };\n if (groupId) {\n option.groupId = groupId;\n }\n return from(this.groupsApi.getGroups(option)).pipe(map((response: any) => response.data || []));\n }\n\n /**\n * Gets information about users across all tasks.\n *\n * @param taskId ID of the task\n * @param searchWord Filter text to search for\n * @param groupId group id\n * @returns Array of user information objects\n */\n getWorkflowUsers(taskId?: string, searchWord?: string, groupId?: number): Observable<LightUserRepresentation[]> {\n const option = { excludeTaskId: taskId, filter: searchWord, groupId };\n\n return from(this.userApi.getUsers(option)).pipe(map((response) => response.data || []));\n }\n /**\n * Gets the profile picture URL for the specified user.\n *\n * @param userId The target user\n * @returns Profile picture URL\n */\n getUserImage(userId: string): string {\n return this.userApi.getUserProfilePictureUrl(userId);\n }\n\n /**\n * Sets a user to be involved with a task.\n *\n * @param taskId ID of the target task\n * @param idToInvolve ID of the user to involve\n * @returns Empty response when the update completes\n */\n involveUserWithTask(taskId: string, idToInvolve: string): Observable<LightUserRepresentation[]> {\n return from(this.taskActionsApi.involveUser(taskId, { userId: idToInvolve }));\n }\n\n /**\n * Removes a user who is currently involved with a task.\n *\n * @param taskId ID of the target task\n * @param idToRemove ID of the user to remove\n * @returns Empty response when the update completes\n */\n removeInvolvedUser(taskId: string, idToRemove: string): Observable<LightUserRepresentation[]> {\n return from(this.taskActionsApi.removeInvolvedUser(taskId, { userId: idToRemove }));\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'adf-task-standalone',\n imports: [CommonModule, TranslatePipe, MatCardModule, MatButtonModule],\n templateUrl: './task-standalone.component.html',\n styleUrls: ['./task-standalone.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class TaskStandaloneComponent {\n /** Name of the task. */\n @Input()\n taskName: string;\n\n /** Id of the task. */\n @Input()\n taskId: string;\n\n /** If true then Task completed message is shown and `Complete` and `Cancel` buttons are hidden. */\n @Input()\n isCompleted = false;\n\n /** Toggles rendering of the `Complete` button. */\n @Input()\n hasCompletePermission = true;\n\n /** Toggles rendering of the `Cancel` button. */\n @Input()\n hideCancelButton = true;\n\n /** Emitted when the \"Cancel\" button is clicked. */\n @Output()\n cancel = new EventEmitter<void>();\n\n /** Emitted when the form associated with the task is completed. */\n @Output()\n complete = new EventEmitter<void>();\n\n /** Emitted when the form associated with the form task is attached. */\n @Output()\n showAttachForm = new EventEmitter<void>();\n\n onCancelButtonClick(): void {\n this.cancel.emit();\n }\n\n onCompleteButtonClick(): void {\n this.complete.emit();\n }\n\n hasCompleteButton(): boolean {\n return this.hasCompletePermission && !this.isCompleted;\n }\n\n hasCancelButton(): boolean {\n return !this.hideCancelButton && !this.isCompleted;\n }\n\n hasAttachFormButton(): boolean {\n return !this.isCompleted;\n }\n\n onShowAttachForm() {\n this.showAttachForm.emit();\n }\n}\n","<mat-card appearance=\"raised\" class=\"adf-message-card\">\n <mat-card-content>\n <div class=\"adf-no-form-message-container\">\n <div class=\"adf-no-form-message-list\">\n <div *ngIf=\"!isCompleted; else completedMessage\" class=\"adf-no-form-message\">\n <span id=\"adf-no-form-message\">{{'ADF_TASK_LIST.STANDALONE_TASK.NO_FORM_MESSAGE' | translate}}</span>\n </div>\n <ng-template #completedMessage>\n <div id=\"adf-completed-form-message\" class=\"adf-no-form-message\">\n <p>{{'ADF_TASK_LIST.STANDALONE_TASK.COMPLETE_TASK_MESSAGE' | translate : {taskName : taskName} }}</p>\n </div>\n <div class=\"adf-no-form-submessage\">\n {{'ADF_TASK_LIST.STANDALONE_TASK.COMPLETE_TASK_SUB_MESSAGE' | translate}}\n </div>\n </ng-template>\n </div>\n </div>\n </mat-card-content>\n\n <mat-card-actions class=\"adf-no-form-mat-card-actions\">\n <button mat-button *ngIf=\"hasAttachFormButton()\" id=\"adf-no-form-attach-form-button\" (click)=\"onShowAttachForm()\">{{ 'ADF_TASK_LIST.START_TASK.FORM.LABEL.ATTACHFORM' | translate }}</button>\n <div class=\"adf-no-form-mat-card-actions-container\">\n <button mat-button *ngIf=\"hasCancelButton()\" id=\"adf-no-form-cancel-button\" (click)=\"onCancelButtonClick()\">{{ 'ADF_TASK_LIST.START_TASK.FORM.ACTION.CANCEL' | translate }}</button>\n <button mat-button *ngIf=\"hasCompleteButton()\" id=\"adf-no-form-complete-button\" color=\"primary\" (click)=\"onCompleteButtonClick()\">{{ 'ADF_TASK_LIST.DETAILS.BUTTON.COMPLETE' | translate }}</button>\n </div>\n </mat-card-actions>\n</mat-card>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AlfrescoApiService } from '@alfresco/adf-content-services';\nimport { Injectable } from '@angular/core';\nimport { Observable, from, throwError } from 'rxjs';\nimport { ModelsApi } from '@alfresco/js-api';\nimport { catchError, map } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ModelService {\n static UNKNOWN_ERROR_MESSAGE: string = 'Unknown error';\n static GENERIC_ERROR_MESSAGE: string = 'Server error';\n\n private _modelsApi: ModelsApi;\n get modelsApi(): ModelsApi {\n this._modelsApi = this._modelsApi ?? new ModelsApi(this.apiService.getInstance());\n return this._modelsApi;\n }\n\n constructor(private apiService: AlfrescoApiService) {}\n\n /**\n * Create a Form.\n *\n * @param formName Name of the new form\n * @returns The new form\n */\n createForm(formName: string): Observable<any> {\n const dataModel = {\n name: formName,\n description: '',\n modelType: 2,\n stencilSet: 0\n };\n\n return from(this.modelsApi.createModel(dataModel));\n }\n\n /**\n * Gets all the forms.\n *\n * @returns List of form models\n */\n getForms(): Observable<any> {\n const opts = {\n modelType: 2\n };\n\n return from(this.modelsApi.getModels(opts)).pipe(\n map(this.toJsonArray),\n catchError((err) => this.handleError(err))\n );\n }\n\n /**\n * Creates a JSON array representation of form data.\n *\n * @param res Object representing form data\n * @returns JSON data\n */\n toJsonArray(res: any) {\n return res?.data || [];\n }\n\n /**\n * Searches for a form by name.\n *\n * @param name The form name to search for\n * @returns Form model(s) matching the search name\n */\n searchFrom(name: string): Observable<any> {\n const opts = {\n modelType: 2\n };\n\n return from(this.modelsApi.getModels(opts)).pipe(\n map((forms) => forms.data.find((formData) => formData.name === name)),\n catchError((err) => this.handleError(err))\n );\n }\n\n /**\n * Gets the form definition with a given name.\n *\n * @param name The form name\n * @returns Form definition\n */\n getFormDefinitionByName(name: string): Observable<any> {\n const opts = {\n filter: 'myReusableForms',\n filterText: name,\n modelType: 2\n };\n\n return from(this.modelsApi.getModels(opts)).pipe(\n map(this.getFormId),\n catchError((err) => this.handleError(err))\n );\n }\n\n /**\n * Gets the ID of a form.\n *\n * @param form Object representing a form\n * @returns ID string\n */\n getFormId(form: any): string {\n let result = null;\n\n if (form?.data?.length > 0) {\n result = form.data[0].id;\n }\n\n return result;\n }\n /**\n * Reports an error message.\n *\n * @param error Data object with optional `message` and `status` fields for the error\n * @returns Error message\n */\n private handleError(error: any): Observable<any> {\n let errMsg = ModelService.UNKNOWN_ERROR_MESSAGE;\n if (error) {\n errMsg = error.message ? error.message : error.status ? `${error.status} - ${error.statusText}` : ModelService.GENERIC_ERROR_MESSAGE;\n }\n return throwError(errMsg);\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, Input, OnChanges, ViewEncapsulation } from '@angular/core';\nimport { ModelService } from '../services/model.service';\nimport { CommonModule } from '@angular/common';\nimport { DataColumnComponent, DataColumnListComponent, DataTableComponent } from '@alfresco/adf-core';\n\n@Component({\n selector: 'adf-form-list',\n imports: [CommonModule, DataTableComponent, DataColumnListComponent, DataColumnComponent],\n templateUrl: './form-list.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class FormListComponent implements OnChanges {\n /** The array that contains the information to show inside the list. */\n @Input()\n forms: any[] = [];\n\n constructor(protected modelService: ModelService) {}\n\n ngOnChanges() {\n this.getForms();\n }\n\n isEmpty(): boolean {\n return this.forms && this.forms.length === 0;\n }\n\n getForms() {\n this.modelService.getForms().subscribe((forms) => {\n this.forms.push(...forms);\n });\n }\n}\n","<adf-datatable *ngIf=\"!isEmpty()\"\n [rows]=\"forms\">\n <data-columns>\n <data-column key=\"name\" type=\"text\" title=\"Name\" class=\"adf-ellipsis-cell\" [sortable]=\"true\" />\n <data-column key=\"lastUpdatedByFullName\" type=\"text\" title=\"User\" class=\"adf-ellipsis-cell\" [sortable]=\"true\" />\n <data-column key=\"lastUpdated\" type=\"date\" format=\"shortDate\" title=\"Date\" />\n </data-columns>\n</adf-datatable>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'adf-form-custom-outcomes',\n template: '<ng-content />'\n})\nexport class FormCustomOutcomesComponent {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AlfrescoApiService } from '@alfresco/adf-content-services';\nimport { FormModel } from '@alfresco/adf-core';\nimport { EventEmitter, Injectable } from '@angular/core';\nimport { Observable, from } from 'rxjs';\nimport { map, catchError } from 'rxjs/operators';\nimport { CustomModelApi } from '@alfresco/js-api';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class EcmModelService {\n public static MODEL_NAMESPACE: string = 'activitiForms';\n public static MODEL_NAME: string = 'activitiFormsModel';\n public static TYPE_MODEL: string = 'cm:folder';\n\n error = new EventEmitter<any>();\n\n private _customModelApi: CustomModelApi;\n get customModelApi(): CustomModelApi {\n this._customModelApi = this._customModelApi ?? new CustomModelApi(this.apiService.getInstance());\n return this._customModelApi;\n }\n\n constructor(private apiService: AlfrescoApiService) {}\n\n public createEcmTypeForActivitiForm(formName: string, form: FormModel): Observable<any> {\n return new Observable((observer) => {\n this.searchActivitiEcmModel().subscribe(\n (model) => {\n if (!model) {\n this.createActivitiEcmModel(formName, form).subscribe((typeForm) => {\n observer.next(typeForm);\n observer.complete();\n });\n } else {\n this.saveFomType(formName, form).subscribe((typeForm) => {\n observer.next(typeForm);\n observer.complete();\n });\n }\n },\n (err) => this.handleError(err)\n );\n });\n }\n\n searchActivitiEcmModel() {\n return this.getEcmModels().pipe(\n map((ecmModels: any) => ecmModels.list.entries.find((model) => model.entry.name === EcmModelService.MODEL_NAME))\n );\n }\n\n createActivitiEcmModel(formName: string, form: FormModel): Observable<any> {\n return new Observable((observer) => {\n this.createEcmModel(EcmModelService.MODEL_NAME, EcmModelService.MODEL_NAMESPACE).subscribe(\n () => {\n this.activeEcmModel(EcmModelService.MODEL_NAME).subscribe(\n () => {\n this.createEcmTypeWithProperties(formName, form).subscribe((typeCreated) => {\n observer.next(typeCreated);\n observer.complete();\n });\n },\n (err) => this.handleError(err)\n );\n },\n (err) => this.handleError(err)\n );\n });\n }\n\n saveFomType(formName: string, form: FormModel): Observable<any> {\n return new Observable((observer) => {\n this.searchEcmType(formName, EcmModelService.MODEL_NAME).subscribe(\n (ecmType) => {\n if (!ecmType) {\n this.createEcmTypeWithProperties(formName, form).subscribe((typeCreated) => {\n observer.next(typeCreated);\n observer.complete();\n });\n } else {\n observer.next(ecmType);\n observer.complete();\n }\n },\n (err) => this.handleError(err)\n );\n });\n }\n\n public createEcmTypeWithProperties(formName: string, form: FormModel): Observable<any> {\n return new Observable((observer) => {\n this.createEcmType(formName, EcmModelService.MODEL_NAME, EcmModelService.TYPE_MODEL).subscribe(\n (typeCreated) => {\n this.addPropertyToAType(EcmModelService.MODEL_NAME, formName, form).subscribe(\n () => {\n observer.next(typeCreated);\n observer.complete();\n },\n (err) => this.handleError(err)\n );\n },\n (err) => this.handleError(err)\n );\n });\n }\n\n public searchEcmType(typeName: string, modelName: string): Observable<any> {\n return this.getEcmType(modelName).pipe(\n map((customTypes: any) => customTypes.list.entries.find((type) => type.entry.prefixedName === typeName || type.entry.title === typeName))\n );\n }\n\n public activeEcmModel(modelName: string): Observable<any> {\n return from(this.customModelApi.activateCustomModel(modelName)).pipe(\n map(this.toJson),\n catchError((err) => this.handleError(err))\n );\n }\n\n public createEcmModel(modelName: string, nameSpace: string): Observable<any> {\n return from(this.customModelApi.createCustomModel('DRAFT', '', modelName, modelName, nameSpace)).pipe(\n map(this.toJson),\n catchError((err) => this.handleError(err))\n );\n }\n\n public getEcmModels(): Observable<any> {\n return from(this.customModelApi.getAllCustomModel()).pipe(\n map(this.toJson),\n catchError((err) => this.handleError(err))\n );\n }\n\n public getEcmType(modelName: string): Observable<any> {\n return from(this.customModelApi.getAllCustomType(modelName)).pipe(\n map(this.toJson),\n catchError((err) => this.handleError(err))\n );\n }\n\n public createEcmType(typeName: string, modelName: string, parentType: string): Observable<any> {\n const name = this.cleanNameType(typeName);\n\n return from(this.customModelApi.createCustomType(modelName, name, parentType, typeName, '')).pipe(\n map(this.toJson),\n catchError((err) => this.handleError(err))\n );\n }\n\n public addPropertyToAType(modelName: string, typeName: string, formFields: any) {\n const name = this.cleanNameType(typeName);\n\n const properties = [];\n if (formFields?.values) {\n for (const key in formFields.values) {\n if (key) {\n properties.push({\n name: key,\n title: key,\n description: key,\n dataType: 'd:text',\n multiValued: false,\n mandatory: false,\n mandatoryEnforced: false\n });\n }\n }\n }\n\n return from(this.customModelApi.addPropertyToType(modelName, name, properties)).pipe(\n map(this.toJson),\n catchError((err) => this.handleError(err))\n );\n }\n\n cleanNameType(name: string): string {\n let cleanName = name;\n if (name.indexOf(':') !== -1) {\n cleanName = name.split(':')[1];\n }\n return cleanName.replace(/[^a-zA-Z ]/g, '');\n }\n\n toJson(res: any) {\n return res || {};\n }\n\n private handleError(err: any): any {\n this.error.next(err);\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AlfrescoApiService } from '@alfresco/adf-content-services';\nimport { Injectable } from '@angular/core';\nimport { Observable, from, throwError } from 'rxjs';\nimport { FormModelsApi, FormRepresentation } from '@alfresco/js-api';\nimport { catchError, map } from 'rxjs/operators';\nimport { FormDefinitionModel } from '../model/form-definition.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class EditorService {\n static UNKNOWN_ERROR_MESSAGE: string = 'Unknown error';\n static GENERIC_ERROR_MESSAGE: string = 'Server error';\n\n private _editorApi: FormModelsApi;\n get editorApi(): FormModelsApi {\n this._editorApi = this._editorApi ?? new FormModelsApi(this.apiService.getInstance());\n return this._editorApi;\n }\n\n constructor(private apiService: AlfrescoApiService) {}\n\n /**\n * Saves a form.\n *\n * @param formId ID of the form to save\n * @param formModel Model data for the form\n * @returns Data for the saved form\n */\n saveForm(formId: number, formModel: FormDefinitionModel): Observable<FormRepresentation> {\n return from(this.editorApi.saveForm(formId, formModel));\n }\n\n /**\n * Gets a form definition.\n *\n * @param formId ID of the target form\n * @returns Form definition\n */\n getFormDefinitionById(formId: number): Observable<any> {\n return from(this.editorApi.getForm(formId)).pipe(\n map(this.toJson),\n catchError((err) => this.handleError(err))\n );\n }\n\n /**\n * Creates a JSON representation of form data.\n *\n * @param res Object representing form data\n * @returns JSON data\n */\n toJson(res: any) {\n if (res) {\n return res || {};\n }\n return {};\n }\n\n /**\n * Reports an error message.\n *\n * @param error Data object with optional `message` and `status` fields for the error\n * @returns Error message\n */\n private handleError(error: any): Observable<any> {\n let errMsg = EditorService.UNKNOWN_ERROR_MESSAGE;\n if (error) {\n errMsg = error.message ? error.message : error.status ? `${error.status} - ${error.statusText}` : EditorService.GENERIC_ERROR_MESSAGE;\n }\n return throwError(errMsg);\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AlfrescoApiService } from '@alfresco/adf-content-services';\nimport { Injectable } from '@angular/core';\nimport { Observable, from, throwError } from 'rxjs';\nimport { TaskRepresentation, TasksApi } from '@alfresco/js-api';\nimport { catchError, map } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TaskService {\n static UNKNOWN_ERROR_MESSAGE: string = 'Unknown error';\n static GENERIC_ERROR_MESSAGE: string = 'Server error';\n\n private _taskApi: TasksApi;\n get taskApi(): TasksApi {\n this._taskApi = this._taskApi ?? new TasksApi(this.apiService.getInstance());\n return this._taskApi;\n }\n\n constructor(private apiService: AlfrescoApiService) {}\n\n /**\n * Gets a task.\n *\n * @param taskId Task Id\n * @returns Task info\n */\n getTask(taskId: string): Observable<TaskRepresentation> {\n return from(this.taskApi.getTask(taskId)).pipe(\n map(this.toJson),\n catchError((err) => this.handleError(err))\n );\n }\n\n /**\n * Creates a JSON representation of form data.\n *\n * @param res Object representing form data\n * @returns JSON data\n */\n toJson(res: any) {\n if (res) {\n return res || {};\n }\n return {};\n }\n\n /**\n * Reports an error message.\n *\n * @param error Data object with optional `message` and `status` fields for the error\n * @returns Error message\n */\n private handleError(error: any): Observable<any> {\n let errMsg = TaskService.UNKNOWN_ERROR_MESSAGE;\n if (error) {\n errMsg = error.message ? error.message : error.status ? `${error.status} - ${error.statusText}` : TaskService.GENERIC_ERROR_MESSAGE;\n }\n return throwError(errMsg);\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AlfrescoApiService } from '@alfresco/adf-content-services';\nimport { FormFieldOption, FormValues, TaskProcessVariableModel } from '@alfresco/adf-core';\nimport { Injectable } from '@angular/core';\nimport { from, Observable, throwError } from 'rxjs';\nimport { CompleteFormRepresentation, SaveFormRepresentation, TaskFormsApi } from '@alfresco/js-api';\nimport { catchError, map } from 'rxjs/operators';\nimport { DynamicTableColumnOption } from '../widgets/dynamic-table/editors/models/dynamic-table-column-option.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TaskFormService {\n static UNKNOWN_ERROR_MESSAGE: string = 'Unknown error';\n static GENERIC_ERROR_MESSAGE: string = 'Server error';\n\n private _taskFormsApi: TaskFormsApi;\n get taskFormsApi(): TaskFormsApi {\n this._taskFormsApi = this._taskFormsApi ?? new TaskFormsApi(this.apiService.getInstance());\n return this._taskFormsApi;\n }\n\n constructor(private apiService: AlfrescoApiService) {}\n\n /**\n * Saves a task form.\n *\n * @param taskId Task Id\n * @param formValues Form Values\n * @returns Null response when the operation is complete\n */\n saveTaskForm(taskId: string, formValues: FormValues): Observable<any> {\n const saveFormRepresentation = { values: formValues } as SaveFormRepresentation;\n\n return from(this.taskFormsApi.saveTaskForm(taskId, saveFormRepresentation)).pipe(catchError((err) => this.handleError(err)));\n }\n\n /**\n * Completes a Task Form.\n *\n * @param taskId Task Id\n * @param formValues Form Values\n * @param outcome Form Outcome\n * @returns Null response when the operation is complete\n */\n completeTaskForm(taskId: string, formValues: FormValues, outcome?: string): Observable<any> {\n const completeFormRepresentation = { values: formValues } as CompleteFormRepresentation;\n if (outcome) {\n completeFormRepresentation.outcome = outcome;\n }\n\n return from(this.taskFormsApi.completeTaskForm(taskId, completeFormRepresentation)).pipe(catchError((err) => this.handleError(err)));\n }\n\n /**\n * Gets a form related to a task.\n *\n * @param taskId ID of the target task\n * @returns Form definition\n */\n getTaskForm(taskId: string): Observable<any> {\n return from(this.taskFormsApi.getTaskForm(taskId)).pipe(\n map(this.toJson),\n catchError((err) => this.handleError(err))\n );\n }\n\n /**\n * Gets values of fields populated by a REST backend.\n *\n * @param taskId Task identifier\n * @param field Field identifier\n * @returns Field values\n */\n getRestFieldValues(taskId: string, field: string): Observable<FormFieldOption[]> {\n return from(this.taskFormsApi.getRestFieldValues(taskId, field)).pipe(catchError((err) => this.handleError(err)));\n }\n\n /**\n * Gets column values of fields populated by a REST backend.\n *\n * @param taskId Task identifier\n * @param field Field identifier\n * @param column Column identifier\n * @returns Field values\n */\n getRestFieldValuesColumn(taskId: string, field: string, column?: string): Observable<DynamicTableColumnOption[]> {\n return from(this.taskFormsApi.getRestFieldColumnValues(taskId, field, column)).pipe(catchError((err) => this.handleError(err)));\n }\n\n getTaskProcessVariable(taskId: string): Observable<TaskProcessVariableModel[]> {\n return from(this.taskFormsApi.getTaskFormVariables(taskId)).pipe(\n map((res) => this.toJson(res)),\n catchError((err) => this.handleError(err))\n );\n }\n\n /**\n * Creates a JSON representation of form data.\n *\n * @param res Object representing form data\n * @returns JSON data\n */\n toJson(res: any) {\n if (res) {\n return res || {};\n }\n return {};\n }\n\n /**\n * Reports an error message.\n *\n * @param error Data object with optional `message` and `status` fields for the error\n * @returns Error message\n */\n private handleError(error: any): Observable<any> {\n let errMsg = TaskFormService.UNKNOWN_ERROR_MESSAGE;\n if (error) {\n errMsg = error.message ? error.message : error.status ? `${error.status} - ${error.statusText}` : TaskFormService.GENERIC_ERROR_MESSAGE;\n }\n return throwError(errMsg);\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FormSaveRepresentation } from '@alfresco/js-api';\n\nexport class FormDefinitionModel extends FormSaveRepresentation {\n reusable: boolean = false;\n newVersion: boolean = false;\n formRepresentation: any;\n formImageBase64: string = '';\n\n constructor(id: string, name: any, lastUpdatedByFullName: string, lastUpdated: string, metadata: any) {\n super();\n this.formRepresentation = {\n id,\n name,\n description: '',\n version: 1,\n lastUpdatedBy: 1,\n lastUpdatedByFullName,\n lastUpdated,\n stencilSetId: 0,\n referenceId: null,\n formDefinition: {\n fields: [{\n name: 'Label',\n type: 'container',\n fieldType: 'ContainerRepresentation',\n numberOfColumns: 2,\n required: false,\n readOnly: false,\n sizeX: 2,\n sizeY: 1,\n row: -1,\n col: -1,\n fields: {1: this.metadataToFields(metadata)}\n }],\n gridsterForm: false,\n javascriptEvents: [],\n metadata: {},\n outcomes: [],\n className: '',\n style: '',\n tabs: [],\n variables: []\n }\n };\n }\n\n private metadataToFields(metadata: any): any[] {\n const fields = [];\n if (metadata) {\n metadata.forEach((property) => {\n if (property) {\n const field = {\n type: 'text',\n id: property.name,\n name: property.name,\n required: false,\n readOnly: false,\n sizeX: 1,\n sizeY: 1,\n row: -1,\n col: -1,\n colspan: 1,\n params: {\n existingColspan: 1,\n maxColspan: 2\n },\n layout: {\n colspan: 1,\n row: -1,\n column: -1\n }\n };\n fields.push(field);\n }\n });\n }\n\n return fields;\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ChangeDetectorRef,\n Component,\n DestroyRef,\n EventEmitter,\n inject,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewEncapsulation\n} from '@angular/core';\nimport {\n ContentLinkModel,\n FormatSpacePipe,\n FormBaseComponent,\n FormErrorEvent,\n FormEvent,\n FormFieldModel,\n FormModel,\n FormOutcomeEvent,\n FormOutcomeModel,\n FormRendererComponent,\n FormService,\n FormValues,\n TaskProcessVariableModel,\n WidgetVisibilityService\n} from '@alfresco/adf-core';\nimport { from, Observable, of } from 'rxjs';\nimport { switchMap } from 'rxjs/operators';\nimport { EcmModelService } from './services/ecm-model.service';\nimport { ModelService } from './services/model.service';\nimport { EditorService } from './services/editor.service';\nimport { TaskService } from './services/task.service';\nimport { TaskFormService } from './services/task-form.service';\nimport { NodesApiService } from '@alfresco/adf-content-services';\nimport { FormDefinitionModel } from './model/form-definition.model';\nimport { CommonModule } from '@angular/common';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'adf-form',\n imports: [CommonModule, MatCardModule, MatButtonModule, MatIconModule, TranslatePipe, FormRendererComponent, FormatSpacePipe],\n templateUrl: './form.component.html',\n styleUrls: ['./form.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class FormComponent extends FormBaseComponent implements OnInit, OnChanges {\n protected formService = inject(FormService);\n protected taskFormService = inject(TaskFormService);\n protected taskService = inject(TaskService);\n protected editorService = inject(EditorService);\n protected modelService = inject(ModelService);\n protected visibilityService = inject(WidgetVisibilityService);\n protected ecmModelService = inject(EcmModelService);\n protected nodeService = inject(NodesApiService);\n private cdRef = inject(ChangeDetectorRef);\n\n /** Task id to fetch corresponding form and values. */\n @Input()\n taskId: string;\n\n /** Content Services node ID for the form metadata. */\n @Input()\n nodeId: string;\n\n /** The id of the form definition to load and display with custom values. */\n @Input()\n formId: number;\n\n /** Name of the form definition to load and display with custom values. */\n @Input()\n formName: string;\n\n /** Toggle saving of form metadata. */\n @Input()\n saveMetadata: boolean = false;\n\n /** Custom form values map to be used with the rendered form. */\n @Input()\n data: FormValues;\n\n /** The form will set a prefixed space for invisible fields. */\n @Input()\n enableFixedSpacedForm: boolean = true;\n\n /** Emitted when the form is submitted with the `Save` or custom outcomes. */\n @Output()\n formSaved = new EventEmitter<FormModel>();\n\n /** Emitted when the form is submitted with the `Complete` outcome. */\n @Output()\n formCompleted = new EventEmitter<FormModel>();\n\n /** Emitted when form content is clicked. */\n @Output()\n formContentClicked = new EventEmitter<ContentLinkModel>();\n\n /** Emitted when the form is loaded or reloaded. */\n @Output()\n formLoaded = new EventEmitter<FormModel>();\n\n /** Emitted when form values are refreshed due to a data property change. */\n @Output()\n formDataRefreshed = new EventEmitter<FormModel>();\n\n debugMode: boolean = false;\n\n private readonly destroyRef = inject(DestroyRef);\n\n constructor() {\n super();\n }\n\n ngOnInit() {\n this.formService.formContentClicked.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((content) => this.formContentClicked.emit(content));\n\n this.formService.validateForm.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((validateFormEvent) => {\n if (validateFormEvent.errorsField.length > 0) {\n this.formError.next(validateFormEvent.errorsField);\n this.cdRef.detectChanges();\n }\n });\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const taskId = changes['taskId'];\n if (taskId?.currentValue) {\n this.getFormByTaskId(taskId.currentValue);\n return;\n }\n\n const formId = changes['formId'];\n if (formId?.currentValue) {\n this.getFormDefinitionByFormId(formId.currentValue);\n return;\n }\n\n const formName = changes['formName'];\n if (formName?.currentValue) {\n this.getFormDefinitionByFormName(formName.currentValue);\n return;\n }\n\n const nodeId = changes['nodeId'];\n if (nodeId?.currentValue) {\n this.loadFormForEcmNode(nodeId.currentValue);\n return;\n }\n\n const data = changes['data'];\n if (data?.currentValue) {\n this.refreshFormData();\n return;\n }\n }\n\n /**\n * Invoked when user clicks form refresh button.\n */\n onRefreshClicked() {\n this.loadForm();\n }\n\n loadForm() {\n if (this.taskId) {\n this.getFormByTaskId(this.taskId);\n return;\n }\n\n if (this.formId) {\n this.getFormDefinitionByFormId(this.formId);\n return;\n }\n\n if (this.formName) {\n this.getFormDefinitionByFormName(this.formName);\n return;\n }\n }\n\n findProcessVariablesByTaskId(taskId: string): Observable<TaskProcessVariableModel[]> {\n return this.taskService.getTask(taskId).pipe(\n switchMap((task) => {\n if (this.isAProcessTask(task)) {\n return this.taskFormService.getTaskProcessVariable(taskId);\n } else {\n return of([]);\n }\n })\n );\n }\n\n isAProcessTask(taskRepresentation) {\n return taskRepresentation.processDefinitionId && taskRepresentation.processDefinitionDeploymentId !== 'null';\n }\n\n getFormByTaskId(taskId: string): Promise<FormModel> {\n return new Promise<FormModel>((resolve) => {\n this.findProcessVariablesByTaskId(taskId).subscribe((taskProcessVariables) => {\n this.taskFormService.getTaskForm(taskId).subscribe(\n (form) => {\n const parsedForm = this.parseForm(form);\n this.visibilityService.refreshVisibility(parsedForm, taskProcessVariables);\n parsedForm.validateForm();\n this.form = parsedForm;\n this.onFormLoaded(this.form);\n resolve(this.form);\n },\n (error) => {\n this.handleError(error);\n resolve(null);\n }\n );\n });\n });\n }\n\n getFormDefinitionByFormId(formId: number) {\n this.editorService.getFormDefinitionById(formId).subscribe(\n (form) => {\n this.formName = form.name;\n this.form = this.parseForm(form);\n this.visibilityService.refreshVisibility(this.form);\n this.form.validateForm();\n this.onFormLoaded(this.form);\n },\n (error) => {\n this.handleError(error);\n }\n );\n }\n\n getFormDefinitionByFormName(formName: string) {\n this.modelService.getFormDefinitionByName(formName).subscribe(\n (id) => {\n this.editorService.getFormDefinitionById(id).subscribe(\n (form) => {\n this.form = this.parseForm(form);\n this.visibilityService.refreshVisibility(this.form);\n this.form.validateForm();\n this.onFormLoaded(this.form);\n },\n (error) => {\n this.handleError(error);\n }\n );\n },\n (error) => {\n this.handleError(error);\n }\n );\n }\n\n saveTaskForm() {\n if (this.form?.taskId) {\n this.taskFormService.saveTaskForm(this.form.taskId, this.form.values).subscribe(\n () => {\n this.onTaskSaved(this.form);\n this.storeFormAsMetadata();\n },\n (error) => this.onTaskSavedError(this.form, error)\n );\n }\n }\n\n completeTaskForm(outcome?: string) {\n if (this.form?.taskId) {\n this.taskFormService.completeTaskForm(this.form.taskId, this.form.values, outcome).subscribe(\n () => {\n this.onTaskCompleted(this.form);\n this.storeFormAsMetadata();\n },\n (error) => this.onTaskCompletedError(this.form, error)\n );\n }\n }\n\n handleError(err: any): any {\n this.error.emit(err);\n }\n\n parseForm(formRepresentationJSON: any): FormModel {\n if (formRepresentationJSON) {\n const form = new FormModel(formRepresentationJSON, this.data, this.readOnly, this.formService, this.enableFixedSpacedForm);\n if (!formRepresentationJSON.fields) {\n form.outcomes = this.getFormDefinitionOutcomes(form);\n }\n if (this.fieldValidators?.length > 0) {\n form.fieldValidators = this.fieldValidators;\n }\n return form;\n }\n return null;\n }\n\n /**\n * Get custom set of outcomes for a Form Definition.\n *\n * @param form Form definition model.\n * @returns list of form outcomes\n */\n getFormDefinitionOutcomes(form: FormModel): FormOutcomeModel[] {\n return [new FormOutcomeModel(form, { id: FormModel.SAVE_OUTCOME, name: FormOutcomeModel.SAVE_ACTION, isSystem: true })];\n }\n\n checkVisibility(field: FormFieldModel) {\n if (field?.form) {\n this.visibilityService.refreshVisibility(field.form);\n }\n }\n\n loadFormFromActiviti(nodeType: string): any {\n this.modelService.searchFrom(nodeType).subscribe(\n (form) => {\n if (!form) {\n this.createFormFromANode(nodeType).subscribe((formMetadata) => {\n this.loadFormFromFormId(formMetadata.id);\n });\n } else {\n this.loadFormFromFormId(form.id);\n }\n },\n (error) => {\n this.handleError(error);\n }\n );\n }\n\n /**\n * Creates a Form with a field for each metadata property.\n *\n * @param formName Name of the new form\n * @returns The new form\n */\n createFormFromANode(formName: string): Observable<any> {\n return new Observable((observer) => {\n this.modelService.createForm(formName).subscribe(\n (form) => {\n this.ecmModelService.searchEcmType(formName, EcmModelService.MODEL_NAME).subscribe(\n (customType) => {\n const formDefinitionModel = new FormDefinitionModel(\n form.id,\n form.name,\n form.lastUpdatedByFullName,\n form.lastUpdated,\n customType.entry.properties\n );\n from(this.editorService.saveForm(form.id, formDefinitionModel)).subscribe(\n (formData) => {\n observer.next(formData);\n observer.complete();\n },\n (err) => this.handleError(err)\n );\n },\n (err) => this.handleError(err)\n );\n },\n (err) => this.handleError(err)\n );\n });\n }\n\n protected storeFormAsMetadata() {\n if (this.saveMetadata) {\n this.ecmModelService.createEcmTypeForActivitiForm(this.formName, this.form).subscribe(\n (type) => {\n this.nodeService.createNodeMetadata(\n type.nodeType || type.entry.prefixedName,\n EcmModelService.MODEL_NAMESPACE,\n this.form.values,\n this.path,\n this.nameNode\n );\n },\n (error) => {\n this.handleError(error);\n }\n );\n }\n }\n\n protected onFormLoaded(form: FormModel) {\n this.formLoaded.emit(form);\n this.formService.formLoaded.next(new FormEvent(form));\n }\n\n protected onFormDataRefreshed(form: FormModel) {\n this.formDataRefreshed.emit(form);\n this.formService.formDataRefreshed.next(new FormEvent(form));\n }\n\n protected onTaskSaved(form: FormModel) {\n this.formSaved.emit(form);\n this.formService.taskSaved.next(new FormEvent(form));\n }\n\n protected onTaskSavedError(form: FormModel, error: any) {\n this.handleError(error);\n this.formService.taskSavedError.next(new FormErrorEvent(form, error));\n }\n\n protected onTaskCompleted(form: FormModel) {\n this.formCompleted.emit(form);\n this.formService.taskCompleted.next(new FormEvent(form));\n }\n\n protected onTaskCompletedError(form: FormModel, error: any) {\n this.handleError(error);\n this.formService.taskCompletedError.next(new FormErrorEvent(form, error));\n }\n\n protected onExecuteOutcome(outcome: FormOutcomeModel): boolean {\n const args = new FormOutcomeEvent(outcome);\n\n this.formService.executeOutcome.next(args);\n if (args.defaultPrevented) {\n return false;\n }\n\n this.executeOutcome.emit(args);\n return !args.defaultPrevented;\n }\n\n private refreshFormData() {\n this.form = this.parseForm(this.form.json);\n this.onFormLoaded(this.form);\n this.onFormDataRefreshed(this.form);\n }\n\n private loadFormForEcmNode(nodeId: string): void {\n this.nodeService.getNodeMetadata(nodeId).subscribe((data) => {\n this.data = data.metadata;\n this.loadFormFromActiviti(data.nodeType);\n }, this.handleError);\n }\n\n private loadFormFromFormId(formId: number) {\n this.formId = formId;\n this.loadForm();\n }\n}\n","<div *ngIf=\"!hasForm()\">\n <ng-content select=\"[empty-form]\" />\n</div>\n\n<div *ngIf=\"hasForm()\" class=\"adf-form-container\">\n <mat-card appearance=\"outlined\" class=\"adf-form-card\">\n <mat-card-header>\n <mat-card-title>\n <h4>\n <div *ngIf=\"showValidationIcon\" class=\"adf-form-validation-button\">\n <i id=\"adf-valid-form-icon\" class=\"material-icons\"\n *ngIf=\"form.isValid; else no_valid_form\">check_circle</i>\n <ng-template #no_valid_form>\n <i id=\"adf-invalid-form-icon\" class=\"material-icons adf-invalid-color\">error</i>\n </ng-template>\n </div>\n <div *ngIf=\"showRefreshButton\" class=\"adf-form-reload-button\">\n <button mat-icon-button (click)=\"onRefreshClicked()\">\n <mat-icon>refresh</mat-icon>\n </button>\n </div>\n <span *ngIf=\"isTitleEnabled()\" class=\"adf-form-title\" [title]=\"form.taskName\">\n {{form.taskName}}\n <ng-container *ngIf=\"!form.taskName\">\n {{'FORM.FORM_RENDERER.NAMELESS_TASK' | translate}}\n </ng-container>\n </span>\n </h4>\n </mat-card-title>\n </mat-card-header>\n <mat-card-content class=\"adf-form-card-content\">\n <adf-form-renderer [formDefinition]=\"form\" />\n </mat-card-content>\n <mat-card-actions *ngIf=\"form.hasOutcomes()\" class=\"adf-form-mat-card-actions\" align=\"end\">\n <ng-content select=\"adf-form-custom-outcomes\" />\n <button [id]=\"'adf-form-'+ outcome.name | formatSpace\" *ngFor=\"let outcome of form.outcomes\"\n [color]=\"getColorForOutcome(outcome.name)\" mat-button [disabled]=\"!isOutcomeButtonEnabled(outcome)\"\n [class.adf-form-hide-button]=\"!isOutcomeButtonVisible(outcome, form.readOnly)\"\n (click)=\"onOutcomeClicked(outcome)\">\n {{outcome.name | translate | uppercase }}\n </button>\n </mat-card-actions>\n </mat-card>\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n Component,\n ElementRef,\n EventEmitter,\n inject,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { FormComponent } from '../form.component';\nimport { ContentLinkModel, FormOutcomeModel, FormRendererComponent } from '@alfresco/adf-core';\nimport { ProcessService } from '../../process-list/services/process.service';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n selector: 'adf-start-form',\n imports: [CommonModule, TranslatePipe, MatButtonModule, MatCardModule, FormRendererComponent, MatIconModule],\n templateUrl: './start-form.component.html',\n styleUrls: ['./start-form.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class StartFormComponent extends FormComponent implements OnChanges, OnInit {\n public processService = inject(ProcessService);\n\n /** Definition ID of the process to start, this parameter can not be use in combination with processId */\n @Input()\n processDefinitionId: string;\n\n /** Process ID of the process to start, this parameter can not be use in combination with processDefinitionId */\n @Input()\n processId: string;\n\n /** Should form outcome buttons be shown? */\n @Input()\n showOutcomeButtons: boolean = true;\n\n /** Should the refresh button be shown? */\n @Input()\n showRefreshButton: boolean = true;\n\n /** Is the form read-only (ie, can't be edited)? */\n @Input()\n readOnlyForm: boolean = false;\n\n /** Emitted when the user clicks one of the outcome buttons that completes the form. */\n @Output()\n outcomeClick = new EventEmitter<any>();\n\n /** Emitted when a field of the form is clicked. */\n @Output()\n formContentClicked = new EventEmitter<ContentLinkModel>();\n\n @ViewChild('outcomesContainer')\n outcomesContainer: ElementRef = null;\n\n constructor() {\n super();\n this.showTitle = false;\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const processDefinitionId = changes['processDefinitionId'];\n if (processDefinitionId?.currentValue) {\n this.processDefinitionId = processDefinitionId.currentValue;\n this.visibilityService.cleanProcessVariable();\n this.getStartFormDefinition(this.processDefinitionId);\n return;\n }\n\n const data = changes['data'];\n if (data?.currentValue) {\n this.parseRefreshVisibilityValidateForm(this.form.json);\n return;\n }\n\n const processId = changes['processId'];\n if (processId?.currentValue) {\n this.visibilityService.cleanProcessVariable();\n this.loadStartForm(processId.currentValue);\n return;\n }\n }\n\n loadStartForm(processId: string) {\n this.processService.getProcess(processId).subscribe((instance) => {\n this.processService.getStartFormInstance(processId).subscribe(\n (form) => {\n this.formName = form.name;\n if (instance.variables) {\n form.processVariables = instance.variables;\n }\n this.parseRefreshVisibilityValidateForm(form);\n },\n (error) => this.handleError(error)\n );\n });\n }\n\n getStartFormDefinition(processId: string) {\n this.processService.getStartFormDefinition(processId).subscribe(\n (form) => {\n this.formName = form.processDefinitionName;\n this.parseRefreshVisibilityValidateForm(form);\n },\n (error) => this.handleError(error)\n );\n }\n\n parseRefreshVisibilityValidateForm(form) {\n this.form = this.parseForm(form);\n this.visibilityService.refreshVisibility(this.form);\n this.form.validateForm();\n this.form.readOnly = this.readOnlyForm;\n this.onFormLoaded(this.form);\n }\n\n isOutcomeButtonVisible(outcome: FormOutcomeModel, isFormReadOnly: boolean): boolean {\n if (outcome?.isSystem && (outcome.name === FormOutcomeModel.SAVE_ACTION || outcome.name === FormOutcomeModel.COMPLETE_ACTION)) {\n return false;\n } else if (outcome?.name === FormOutcomeModel.START_PROCESS_ACTION) {\n return true;\n }\n return super.isOutcomeButtonVisible(outcome, isFormReadOnly);\n }\n\n saveTaskForm() {\n // do nothing\n }\n\n onRefreshClicked() {\n if (this.processDefinitionId) {\n this.visibilityService.cleanProcessVariable();\n this.getStartFormDefinition(this.processDefinitionId);\n } else if (this.processId) {\n this.visibilityService.cleanProcessVariable();\n this.loadStartForm(this.processId);\n }\n }\n\n completeTaskForm(outcome?: string) {\n this.outcomeClick.emit(outcome);\n }\n}\n","<div class=\"adf-start-form-container\" *ngIf=\"hasForm()\">\n <mat-card class=\"adf-start-form-card\">\n <mat-card-header class=\"adf-start-form-header\">\n <mat-card-title>\n <h2 *ngIf=\"isTitleEnabled()\" class=\"mdl-card__title-text\">{{form.taskName}}</h2>\n </mat-card-title>\n </mat-card-header>\n <mat-card-content class=\"adf-start-form-content\">\n <adf-form-renderer [formDefinition]=\"form\" />\n </mat-card-content>\n <mat-card-content class=\"adf-start-form-actions\" *ngIf=\"showOutcomeButtons && form.hasOutcomes()\"\n #outcomesContainer>\n <ng-content select=\"[adf-form-custom-button], [form-custom-button]\" />\n\n <button *ngFor=\"let outcome of form.outcomes\"\n mat-button\n class=\"adf-start-form-actions-button\"\n [attr.data-automation-id]=\"'adf-form-' + outcome.name | lowercase\"\n [disabled]=\"!isOutcomeButtonEnabled(outcome)\"\n [class.mdl-button--colored]=\"!outcome.isSystem\"\n [class.adf-form-hide-button]=\"!isOutcomeButtonVisible(outcome, form.readOnly)\"\n (click)=\"onOutcomeClicked(outcome)\">\n {{ outcome.name | uppercase | translate | uppercase }}\n </button>\n </mat-card-content>\n <mat-card-actions *ngIf=\"showRefreshButton\">\n <button mat-button\n (click)=\"onRefreshClicked()\">\n <mat-icon>refresh</mat-icon>\n </button>\n </mat-card-actions>\n </mat-card>\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AlfrescoApiService } from '@alfresco/adf-content-services';\nimport { Injectable } from '@angular/core';\nimport {\n ActivitiContentApi,\n RelatedContentRepresentation,\n ResultListDataRepresentationRelatedProcessTask,\n ResultListDataRepresentationRelatedContentRepresentation\n} from '@alfresco/js-api';\nimport { Observable, from, throwError } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ProcessContentService {\n static UNKNOWN_ERROR_MESSAGE: string = 'Unknown error';\n static GENERIC_ERROR_MESSAGE: string = 'Server error';\n\n private _contentApi: ActivitiContentApi;\n get contentApi(): ActivitiContentApi {\n this._contentApi = this._contentApi ?? new ActivitiContentApi(this.apiService.getInstance());\n return this._contentApi;\n }\n\n constructor(private apiService: AlfrescoApiService) {}\n\n /**\n * Create temporary related content from an uploaded file.\n *\n * @param file File to use for content\n * @returns The created content data\n */\n createTemporaryRawRelatedContent(file: any): Observable<RelatedContentRepresentation> {\n return from(this.contentApi.createTemporaryRawRelatedContent(file)).pipe(catchError((err) => this.handleError(err)));\n }\n\n /**\n * Gets the metadata for a related content item.\n *\n * @param contentId ID of the content item\n * @returns Metadata for the content\n */\n getFileContent(contentId: number): Observable<RelatedContentRepresentation> {\n return from(this.contentApi.getContent(contentId)).pipe(catchError((err) => this.handleError(err)));\n }\n\n /**\n * Gets raw binary content data for a related content file.\n *\n * @param contentId ID of the related content\n * @returns Binary data of the related content\n */\n getFileRawContent(contentId: number): Observable<Blob> {\n return from(this.contentApi.getRawContent(contentId)).pipe(catchError((err) => this.handleError(err)));\n }\n\n /**\n * Gets the preview for a related content file.\n *\n * @param contentId ID of the related content\n * @returns Binary data of the content preview\n */\n getContentPreview(contentId: number): Observable<Blob> {\n return new Observable((observer) => {\n this.contentApi.getRawContent(contentId).then(\n (result) => {\n observer.next(result);\n observer.complete();\n },\n () => {\n this.contentApi.getRawContent(contentId).then(\n (data) => {\n observer.next(data);\n observer.complete();\n },\n (err) => {\n observer.error(err);\n observer.complete();\n }\n );\n }\n );\n });\n }\n\n /**\n * Gets a URL for direct access to a related content file.\n *\n * @param contentId ID of the related content\n * @returns URL to access the content\n */\n getFileRawContentUrl(contentId: number): string {\n return this.contentApi.getRawContentUrl(contentId);\n }\n\n /**\n * Gets the thumbnail for a related content file.\n *\n * @param contentId ID of the related content\n * @returns Binary data of the thumbnail image\n */\n getContentThumbnail(contentId: number): Observable<Blob> {\n return from(this.contentApi.getRawContent(contentId, 'thumbnail')).pipe(catchError((err) => this.handleError(err)));\n }\n\n /**\n * Gets the preview rendition for a related content file.\n *\n * @param contentId ID of the related content\n * @returns Binary data of the related content\n */\n getContentRenditionTypePreview(contentId: number): Observable<Blob> {\n return from(this.contentApi.getRawContent(contentId, 'preview')).pipe(catchError((err) => this.handleError(err)));\n }\n\n /**\n * Gets related content items for a task instance.\n *\n * @param taskId ID of the target task\n * @param opts Options supported by JS-API\n * @returns Metadata for the content\n */\n getTaskRelatedContent(taskId: string, opts?: any): Observable<ResultListDataRepresentationRelatedContentRepresentation> {\n return from(this.contentApi.getRelatedContentForTask(taskId, opts)).pipe(catchError((err) => this.handleError(err)));\n }\n\n /**\n * Gets related content items for a process instance.\n *\n * @param processId ID of the target process\n * @param opts Options supported by JS-API\n * @returns Metadata for the content\n */\n getProcessRelatedContent(processId: string, opts?: any): Observable<ResultListDataRepresentationRelatedContentRepresentation> {\n return from(this.contentApi.getRelatedContentForProcessInstance(processId, opts)).pipe(catchError((err) => this.handleError(err)));\n }\n\n /**\n * Deletes related content.\n *\n * @param contentId Identifier of the content to delete\n * @returns Null response that notifies when the deletion is complete\n */\n deleteRelatedContent(contentId: number): Observable<any> {\n return from(this.contentApi.deleteContent(contentId)).pipe(catchError((err) => this.handleError(err)));\n }\n\n /**\n * Associates an uploaded file with a process instance.\n *\n * @param processInstanceId ID of the target process instance\n * @param content File to associate\n * @param opts Options supported by JS-API\n * @returns Details of created content\n */\n createProcessRelatedContent(processInstanceId: string, content: any, opts?: any): Observable<RelatedContentRepresentation> {\n return from(this.contentApi.createRelatedContentOnProcessInstance(processInstanceId, content, opts)).pipe(\n catchError((err) => this.handleError(err))\n );\n }\n\n /**\n * Associates an uploaded file with a task instance.\n *\n * @param taskId ID of the target task\n * @param file File to associate\n * @param opts Options supported by JS-API\n * @returns Details of created content\n */\n createTaskRelatedContent(taskId: string, file: any, opts?: any): Observable<RelatedContentRepresentation> {\n return from(this.contentApi.createRelatedContentOnTask(taskId, file, opts)).pipe(catchError((err) => this.handleError(err)));\n }\n\n /**\n * Lists processes and tasks on workflow started with provided document\n *\n * @param sourceId - id of the document that workflow or task has been started with\n * @param source - source of the document that workflow or task has been started with\n * @param size - size of the entries to get\n * @param page - page number\n * @returns Promise<ResultListDataRepresentationRelatedProcessTask>\n */\n getProcessesAndTasksOnContent(\n sourceId: string,\n source: string,\n size?: number,\n page?: number\n ): Observable<ResultListDataRepresentationRelatedProcessTask> {\n return from(this.contentApi.getProcessesAndTasksOnContent(sourceId, source, size, page)).pipe(catchError((err) => this.handleError(err)));\n }\n\n /**\n * Creates a JSON representation of data.\n *\n * @param res Object representing data\n * @returns JSON object\n */\n toJson(res: any) {\n if (res) {\n return res || {};\n }\n return {};\n }\n\n /**\n * Creates a JSON array representation of data.\n *\n * @param res Object representing data\n * @returns JSON array object\n */\n toJsonArray(res: any) {\n if (res) {\n return res.data || [];\n }\n return [];\n }\n\n /**\n * Reports an error message.\n *\n * @param error Data object with optional `message` and `status` fields for the error\n * @returns Callback when an error occurs\n */\n handleError(error: any): Observable<any> {\n let errMsg = ProcessContentService.UNKNOWN_ERROR_MESSAGE;\n if (error) {\n errMsg = error.message\n ? error.message\n : error.status\n ? `${error.status} - ${error.statusText}`\n : ProcessContentService.GENERIC_ERROR_MESSAGE;\n }\n return throwError(errMsg);\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/component-selector */\n\nimport { ThumbnailService, FormService, ContentLinkModel, WidgetComponent, ErrorWidgetComponent } from '@alfresco/adf-core';\nimport { Component, ElementRef, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { Observable, from } from 'rxjs';\nimport { ProcessContentService } from '../../services/process-content.service';\nimport { mergeMap, map } from 'rxjs/operators';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatListModule } from '@angular/material/list';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n selector: 'upload-widget',\n imports: [CommonModule, TranslatePipe, MatListModule, MatButtonModule, MatIconModule, ErrorWidgetComponent],\n templateUrl: './upload.widget.html',\n styleUrls: ['./upload.widget.scss'],\n host: {\n '(click)': 'event($event)',\n '(blur)': 'event($event)',\n '(change)': 'event($event)',\n '(focus)': 'event($event)',\n '(focusin)': 'event($event)',\n '(focusout)': 'event($event)',\n '(input)': 'event($event)',\n '(invalid)': 'event($event)',\n '(select)': 'event($event)'\n },\n encapsulation: ViewEncapsulation.None\n})\nexport class UploadWidgetComponent extends WidgetComponent implements OnInit {\n hasFile: boolean;\n displayText: string;\n multipleOption: string = '';\n mimeTypeIcon: string;\n\n @ViewChild('uploadFiles')\n fileInput: ElementRef;\n\n constructor(public formService: FormService, private thumbnailService: ThumbnailService, public processContentService: ProcessContentService) {\n super(formService);\n }\n\n ngOnInit() {\n if (this.field?.value?.length > 0) {\n this.hasFile = true;\n }\n this.getMultipleFileParam();\n }\n\n removeFile(file: any) {\n if (this.field) {\n this.removeElementFromList(file);\n }\n }\n\n onFileChanged(event: any) {\n const files = event.target.files;\n let filesSaved = [];\n\n if (this.field?.json.value) {\n filesSaved = [...this.field.json.value];\n }\n\n if (files && files.length > 0) {\n from(files)\n .pipe(mergeMap((file) => this.uploadRawContent(file)))\n .subscribe(\n (res) => filesSaved.push(res),\n () => {},\n () => {\n this.field.value = filesSaved;\n this.field.json.value = filesSaved;\n this.hasFile = true;\n }\n );\n }\n }\n\n private uploadRawContent(file): Observable<any> {\n return this.processContentService.createTemporaryRawRelatedContent(file).pipe(\n map((response: any) => {\n response.contentBlob = file;\n return response;\n })\n );\n }\n\n getMultipleFileParam() {\n if (this.field?.params?.multiple) {\n this.multipleOption = this.field.params.multiple ? 'multiple' : '';\n }\n }\n\n private removeElementFromList(file: any) {\n const index = this.field.value.indexOf(file);\n\n if (index !== -1) {\n this.field.value.splice(index, 1);\n this.field.json.value = this.field.value;\n this.field.updateForm();\n }\n\n this.hasFile = this.field.value.length > 0;\n\n if (!this.hasFile) {\n this.field.value = null;\n this.field.json.value = null;\n }\n }\n\n getIcon(mimeType: string): string {\n return this.thumbnailService.getMimeTypeIcon(mimeType);\n }\n\n fileClicked(contentLinkModel: any): void {\n const file = new ContentLinkModel(contentLinkModel);\n let fetch = this.processContentService.getContentPreview(file.id);\n if (file.isTypeImage() || file.isTypePdf()) {\n fetch = this.processContentService.getFileRawContent(file.id);\n }\n fetch.subscribe((blob: Blob) => {\n file.contentBlob = blob;\n this.formService.formContentClicked.next(file);\n });\n }\n}\n","<div class=\"adf-upload-widget {{field.className}}\" [class.adf-invalid]=\"!field.isValid\" [class.adf-readonly]=\"field.readOnly\">\n <label class=\"adf-label\" [attr.for]=\"field.id\"\n >{{field.name | translate }}<span class=\"adf-asterisk\" [style.visibility]=\"isRequired() ? 'visible' : 'hidden'\">*</span></label\n >\n <div class=\"adf-upload-widget-container\">\n <div>\n <mat-list *ngIf=\"hasFile\">\n <mat-list-item class=\"adf-upload-files-row\" *ngFor=\"let file of field.value\">\n <img\n matListItemLine\n class=\"adf-upload-widget__icon\"\n [id]=\"'file-'+file.id+'-icon'\"\n [src]=\"getIcon(file.mimeType)\"\n [alt]=\"mimeTypeIcon\"\n (click)=\"fileClicked(file)\"\n (keyup.enter)=\"fileClicked(file)\"\n role=\"button\"\n tabindex=\"0\"\n />\n <span\n matListItemLine\n id=\"{{'file-'+file.id}}\"\n (click)=\"fileClicked(file)\"\n (keyup.enter)=\"fileClicked(file)\"\n role=\"button\"\n tabindex=\"0\"\n class=\"adf-file\"\n >{{file.name}}</span\n >\n <button\n *ngIf=\"!field.readOnly\"\n mat-icon-button\n [id]=\"'file-'+file.id+'-remove'\"\n (click)=\"removeFile(file);\"\n (keyup.enter)=\"removeFile(file);\"\n >\n <mat-icon class=\"mat-24\">highlight_off</mat-icon>\n </button>\n </mat-list-item>\n </mat-list>\n </div>\n\n <div *ngIf=\"(!hasFile || multipleOption) && !field.readOnly\">\n <button mat-raised-button color=\"primary\" (click)=\"uploadFiles.click()\">\n {{ 'FORM.FIELD.UPLOAD' | translate }}<mat-icon>file_upload</mat-icon>\n <input #uploadFiles [multiple]=\"multipleOption\" type=\"file\" [id]=\"field.id\" (change)=\"onFileChanged($event)\" />\n </button>\n </div>\n </div>\n <error-widget [error]=\"field.validationSummary\" />\n <error-widget *ngIf=\"isInvalidFieldRequired()\" required=\"{{ 'FORM.FIELD.REQUIRED' | translate }}\" />\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { UrlService, ContentLinkModel, FormService, DownloadService } from '@alfresco/adf-core';\nimport { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges, ViewEncapsulation } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ProcessContentService } from '../../services/process-content.service';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'adf-content',\n imports: [CommonModule, TranslatePipe, MatCardModule, MatIconModule, MatButtonModule],\n templateUrl: './content.widget.html',\n styleUrls: ['./content.widget.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class ContentWidgetComponent implements OnChanges {\n /** The content id to show. */\n @Input()\n id: string;\n\n /** Toggles showing document content. */\n @Input()\n showDocumentContent: boolean = true;\n\n /** Emitted when the content is clicked. */\n @Output()\n contentClick = new EventEmitter();\n\n /** Emitted when the thumbnail has loaded. */\n @Output()\n thumbnailLoaded: EventEmitter<any> = new EventEmitter<any>();\n\n /** Emitted when the content has loaded. */\n @Output()\n contentLoaded: EventEmitter<any> = new EventEmitter<any>();\n\n /** Emitted when an error occurs. */\n @Output()\n error: EventEmitter<any> = new EventEmitter<any>();\n\n content: ContentLinkModel;\n\n constructor(\n protected formService: FormService,\n private downloadService: DownloadService,\n private urlService: UrlService,\n private processContentService: ProcessContentService\n ) {}\n\n ngOnChanges(changes: SimpleChanges) {\n const contentId = changes['id'];\n if (contentId?.currentValue) {\n this.loadContent(contentId.currentValue);\n }\n }\n\n loadContent(id: number) {\n this.processContentService.getFileContent(id).subscribe(\n (response: ContentLinkModel) => {\n this.content = new ContentLinkModel(response);\n this.contentLoaded.emit(this.content);\n this.loadThumbnailUrl(this.content);\n },\n (error) => {\n this.error.emit(error);\n }\n );\n }\n\n loadThumbnailUrl(content: ContentLinkModel) {\n if (this.content.isThumbnailSupported()) {\n let observable: Observable<any>;\n\n if (this.content.isTypeImage()) {\n observable = this.processContentService.getFileRawContent(content.id);\n } else {\n observable = this.processContentService.getContentThumbnail(content.id);\n }\n\n if (observable) {\n observable.subscribe(\n (response: Blob) => {\n this.content.thumbnailUrl = this.urlService.createTrustedUrl(response);\n this.thumbnailLoaded.emit(this.content.thumbnailUrl);\n },\n (error) => {\n this.error.emit(error);\n }\n );\n }\n }\n }\n\n openViewer(content: ContentLinkModel): void {\n let fetch = this.processContentService.getContentRenditionTypePreview(content.id);\n if (content.isTypeImage() || content.isTypePdf()) {\n fetch = this.processContentService.getFileRawContent(content.id);\n }\n fetch.subscribe(\n (blob: Blob) => {\n content.contentBlob = blob;\n this.contentClick.emit(content);\n this.formService.formContentClicked.next(content);\n },\n (error) => {\n this.error.emit(error);\n }\n );\n }\n\n /**\n * Invoke content download.\n *\n * @param content content link model\n */\n download(content: ContentLinkModel): void {\n this.processContentService.getFileRawContent(content.id).subscribe(\n (blob: Blob) => this.downloadService.downloadBlob(blob, content.name),\n (error) => {\n this.error.emit(error);\n }\n );\n }\n}\n","<mat-card appearance=\"outlined\" class=\"adf-content-container\" *ngIf=\"content\">\n <mat-card-content *ngIf=\"showDocumentContent\">\n <div *ngIf=\"content.isThumbnailSupported()\" >\n <img id=\"thumbnailPreview\" class=\"adf-img-upload-widget\" [src]=\"content.thumbnailUrl\" alt=\"{{content.name}}\">\n </div>\n <div *ngIf=\"!content.isThumbnailSupported()\">\n <mat-icon>image</mat-icon>\n <div id=\"unsupported-thumbnail\" class=\"adf-content-widget-preview-text\">{{ 'FORM.PREVIEW.IMAGE_NOT_AVAILABLE' | translate }}\n </div>\n </div>\n <div class=\"mdl-card__supporting-text upload-widget__content-text\">{{content.name | translate }}</div>\n </mat-card-content>\n\n <mat-card-actions>\n <button mat-icon-button id=\"view\" (click)=\"openViewer(content)\">\n <mat-icon class=\"mat-24\">zoom_in</mat-icon>\n </button>\n <button mat-icon-button id=\"download\" (click)=\"download(content)\">\n <mat-icon class=\"mat-24\">file_download</mat-icon>\n </button>\n </mat-card-actions>\n</mat-card>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, OnInit, ViewEncapsulation } from '@angular/core';\nimport { FormService, WidgetComponent } from '@alfresco/adf-core';\nimport { CommonModule } from '@angular/common';\nimport { ContentWidgetComponent } from './content.widget';\n\n@Component({\n selector: 'adf-form-document-widget',\n imports: [CommonModule, ContentWidgetComponent],\n templateUrl: './document.widget.html',\n host: {\n '(click)': 'event($event)',\n '(blur)': 'event($event)',\n '(change)': 'event($event)',\n '(focus)': 'event($event)',\n '(focusin)': 'event($event)',\n '(focusout)': 'event($event)',\n '(input)': 'event($event)',\n '(invalid)': 'event($event)',\n '(select)': 'event($event)'\n },\n encapsulation: ViewEncapsulation.None\n})\nexport class DocumentWidgetComponent extends WidgetComponent implements OnInit {\n fileId: string = null;\n hasFile: boolean = false;\n\n constructor(public formService: FormService) {\n super(formService);\n }\n\n ngOnInit() {\n if (this.field) {\n const file = this.field.value;\n\n if (file) {\n this.fileId = file.id;\n this.hasFile = true;\n } else {\n this.fileId = null;\n this.hasFile = false;\n }\n }\n }\n}\n","<div class=\"adf-form-document-widget {{field.className}}\">\n <ng-container *ngIf=\"hasFile\">\n <adf-content [id]=\"fileId\" [showDocumentContent]=\"true\" />\n </ng-container>\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/component-selector */\n\nimport { ErrorWidgetComponent, FormService, InitialUsernamePipe, WidgetComponent } from '@alfresco/adf-core';\nimport { Component, ElementRef, EventEmitter, OnInit, Output, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { ReactiveFormsModule, UntypedFormControl } from '@angular/forms';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatIconModule } from '@angular/material/icon';\nimport { Observable, of } from 'rxjs';\nimport { catchError, distinctUntilChanged, map, switchMap } from 'rxjs/operators';\nimport { PeopleProcessService } from '../../../services/people-process.service';\nimport { LightUserRepresentation } from '@alfresco/js-api';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\n\n@Component({\n selector: 'people-widget',\n imports: [\n CommonModule,\n TranslatePipe,\n MatFormFieldModule,\n MatInputModule,\n MatChipsModule,\n MatIconModule,\n ReactiveFormsModule,\n MatAutocompleteModule,\n InitialUsernamePipe,\n ErrorWidgetComponent\n ],\n templateUrl: './people.widget.html',\n styleUrls: ['./people.widget.scss'],\n host: {\n '(click)': 'event($event)',\n '(blur)': 'event($event)',\n '(change)': 'event($event)',\n '(focus)': 'event($event)',\n '(focusin)': 'event($event)',\n '(focusout)': 'event($event)',\n '(input)': 'event($event)',\n '(invalid)': 'event($event)',\n '(select)': 'event($event)'\n },\n encapsulation: ViewEncapsulation.None\n})\nexport class PeopleWidgetComponent extends WidgetComponent implements OnInit {\n @ViewChild('inputValue', { static: true })\n input: ElementRef;\n\n /** Emitted when a valid user has been highlighted */\n @Output()\n peopleSelected: EventEmitter<number> = new EventEmitter();\n\n selectedUsers: LightUserRepresentation[] = [];\n multiSelect = false;\n groupId: number;\n\n searchTerm = new UntypedFormControl();\n searchTerms$: Observable<any> = this.searchTerm.valueChanges;\n\n users$: Observable<LightUserRepresentation[]> = this.searchTerms$.pipe(\n distinctUntilChanged(),\n switchMap((searchTerm) => {\n if (!searchTerm) {\n return of([]);\n }\n const value = searchTerm.email ? this.getDisplayName(searchTerm) : searchTerm;\n return this.peopleProcessService.getWorkflowUsers(undefined, value, this.groupId).pipe(catchError(() => of([])));\n }),\n map((list) => {\n const value = this.searchTerm.value.email ? this.getDisplayName(this.searchTerm.value) : this.searchTerm.value;\n this.checkUserAndValidateForm(list, value);\n return list;\n })\n );\n\n constructor(public formService: FormService, public peopleProcessService: PeopleProcessService) {\n super(formService);\n }\n\n ngOnInit() {\n if (this.field) {\n if (this.field.value) {\n Array.isArray(this.field.value) ? this.selectedUsers.push(...this.field.value) : this.selectedUsers.push(this.field.value);\n }\n const params = this.field.params;\n if (params?.restrictWithGroup) {\n const restrictWithGroup = params.restrictWithGroup;\n this.groupId = restrictWithGroup.id;\n }\n if (params?.multiple) {\n this.multiSelect = params.multiple;\n this.field.value = this.selectedUsers;\n }\n }\n }\n\n checkUserAndValidateForm(list: LightUserRepresentation[], value: string): void {\n const isValidUser = this.isValidUser(list, value);\n if (isValidUser || value === '') {\n this.field.validationSummary.message = '';\n this.field.validate();\n this.field.form.validateForm();\n } else {\n this.field.validationSummary.message = 'FORM.FIELD.VALIDATOR.INVALID_VALUE';\n this.field.markAsInvalid();\n this.field.form.markAsInvalid();\n }\n }\n\n isValidUser(users: LightUserRepresentation[], name: string): boolean {\n if (users) {\n return !!users.find((user) => this.getDisplayName(user).toLocaleLowerCase() === name.toLocaleLowerCase());\n }\n return false;\n }\n\n getDisplayName(model: LightUserRepresentation) {\n if (model) {\n const displayName = `${model.firstName || ''} ${model.lastName || ''}`;\n return displayName.trim();\n }\n return '';\n }\n\n onRemove(user: LightUserRepresentation) {\n const index = this.selectedUsers.indexOf(user);\n if (index >= 0) {\n this.selectedUsers.splice(index, 1);\n this.field.value = this.selectedUsers;\n }\n }\n\n onItemSelect(user: LightUserRepresentation) {\n if (this.multiSelect) {\n if (!this.isUserAlreadySelected(user)) {\n this.selectedUsers.push(user);\n }\n this.field.value = this.selectedUsers;\n } else {\n this.selectedUsers = [user];\n this.field.value = user;\n }\n\n this.peopleSelected.emit(user?.id || undefined);\n this.input.nativeElement.value = '';\n this.searchTerm.setValue('');\n }\n\n isUserAlreadySelected(user: LightUserRepresentation): boolean {\n if (this.selectedUsers?.length > 0) {\n const result = this.selectedUsers.find((selectedUser) => selectedUser.id === user.id);\n\n return !!result;\n }\n return false;\n }\n}\n","<div class=\"adf-people-widget {{field.className}}\"\n [class.adf-invalid]=\"!field.isValid && isTouched()\"\n [class.adf-readonly]=\"field.readOnly\"\n id=\"people-widget-content\">\n <label class=\"adf-label\" [attr.for]=\"field.id\">{{field.name | translate }}<span class=\"adf-asterisk\" [style.visibility]=\"isRequired() ? 'visible' : 'hidden'\">*</span></label>\n <mat-form-field\n class=\"adf-people-widget-field\">\n <mat-chip-grid #chipGrid [attr.aria-label]=\"'ADF_PROCESS_LIST.START_PROCESS.FORM.LABEL.SELECTED_PEOPLE' | translate\">\n <mat-chip-row\n *ngFor=\"let user of selectedUsers\"\n (removed)=\"onRemove(user)\"\n [disabled]=\"field.readOnly\"\n [attr.data-automation-id]=\"'adf-people-widget-chip-' + user.id\"\n class=\"adf-people-widget-field-chip\">\n {{ getDisplayName(user) }}\n <button matChipRemove [attr.aria-label]=\"'remove ' + user.firstName\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-chip-row>\n <input #inputValue\n matInput\n class=\"adf-input\"\n [matChipInputFor]=\"chipGrid\"\n data-automation-id=\"adf-people-search-input\"\n type=\"text\"\n [disabled]=\"!multiSelect && selectedUsers.length > 0 || field.readOnly\"\n [id]=\"field.id\"\n [formControl]=\"searchTerm\"\n [placeholder]=\"selectedUsers.length > 0 ? '' : field.placeholder\"\n [matAutocomplete]=\"auto\"\n (blur)=\"markAsTouched()\"\n [title]=\"field.tooltip\">\n </mat-chip-grid>\n\n <mat-autocomplete class=\"adf-people-widget-list\"\n #auto=\"matAutocomplete\"\n (optionSelected)=\"onItemSelect($event.option.value)\"\n [displayWith]=\"getDisplayName\">\n <mat-option *ngFor=\"let user of users$ | async; let i = index\" [value]=\"user\" [disabled]=\"isUserAlreadySelected(user)\">\n <div class=\"adf-people-widget-row\" id=\"adf-people-widget-user-{{i}}\">\n <div [outerHTML]=\"user | usernameInitials:'adf-people-widget-pic'\"></div>\n <div *ngIf=\"user.pictureId\" class=\"adf-people-widget-image-row\">\n <img id=\"adf-people-widget-pic-{{i}}\" class=\"adf-people-widget-image\"\n [alt]=\"getDisplayName(user)\" [src]=\"peopleProcessService.getUserImage(user.id.toString())\"/>\n </div>\n <span class=\"adf-people-label-name\">{{getDisplayName(user)}}</span>\n </div>\n </mat-option>\n </mat-autocomplete>\n </mat-form-field>\n <error-widget [error]=\"field.validationSummary\" />\n <error-widget *ngIf=\"isInvalidFieldRequired() && isTouched()\" required=\"{{ 'FORM.FIELD.REQUIRED' | translate }}\" />\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/component-selector */\n\nimport { Component, ElementRef, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { ErrorWidgetComponent, FormService, GroupModel, WidgetComponent } from '@alfresco/adf-core';\nimport { catchError, debounceTime, distinctUntilChanged, switchMap, tap } from 'rxjs/operators';\nimport { merge, of } from 'rxjs';\nimport { ReactiveFormsModule, UntypedFormControl } from '@angular/forms';\nimport { PeopleProcessService } from '../../../services/people-process.service';\nimport { CommonModule } from '@angular/common';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n selector: 'functional-group-widget',\n imports: [\n CommonModule,\n MatFormFieldModule,\n TranslatePipe,\n MatInputModule,\n ReactiveFormsModule,\n MatAutocompleteModule,\n ErrorWidgetComponent,\n MatChipsModule,\n MatIconModule\n ],\n templateUrl: './functional-group.widget.html',\n styleUrls: ['./functional-group.widget.scss'],\n host: {\n '(click)': 'event($event)',\n '(blur)': 'event($event)',\n '(change)': 'event($event)',\n '(focus)': 'event($event)',\n '(focusin)': 'event($event)',\n '(focusout)': 'event($event)',\n '(input)': 'event($event)',\n '(invalid)': 'event($event)',\n '(select)': 'event($event)'\n },\n encapsulation: ViewEncapsulation.None\n})\nexport class FunctionalGroupWidgetComponent extends WidgetComponent implements OnInit {\n minTermLength: number = 1;\n groupId: string;\n searchTerm = new UntypedFormControl();\n groups$ = merge(this.searchTerm.valueChanges).pipe(\n distinctUntilChanged(),\n tap((search: GroupModel | string) => {\n const isValid = typeof search !== 'string';\n const empty = search === '';\n this.validateGroup(isValid, empty);\n }),\n debounceTime(300),\n switchMap((searchTerm) => {\n if (typeof searchTerm !== 'string' || searchTerm.length < this.minTermLength) {\n return of([]);\n }\n return this.peopleProcessService.getWorkflowGroups(searchTerm, this.groupId).pipe(catchError(() => of([])));\n })\n );\n selectedGroups: GroupModel[] = [];\n multiSelect = false;\n\n @ViewChild('inputValue', { static: true })\n input: ElementRef;\n\n constructor(public peopleProcessService: PeopleProcessService, public formService: FormService, public elementRef: ElementRef) {\n super(formService);\n }\n\n ngOnInit() {\n if (this.field) {\n if (this.field.value) {\n Array.isArray(this.field.value) ? this.selectedGroups.push(...this.field.value) : this.selectedGroups.push(this.field.value);\n }\n if (this.field.readOnly) {\n this.searchTerm.disable();\n }\n\n const params = this.field.params;\n if (params?.restrictWithGroup) {\n const restrictWithGroup = params.restrictWithGroup;\n this.groupId = restrictWithGroup.id;\n }\n if (params?.multiple) {\n this.multiSelect = params.multiple;\n this.field.value = this.selectedGroups;\n }\n\n if (this.field.value?.name) {\n this.searchTerm.setValue(this.field.value.name);\n }\n }\n }\n\n updateOption(option?: GroupModel) {\n if (option) {\n if (this.multiSelect) {\n if (!this.isGroupAlreadySelected(option)) {\n this.field.value = this.selectedGroups;\n } else {\n return;\n }\n } else {\n this.field.value = option;\n }\n this.selectedGroups.push(option);\n } else {\n this.field.value = null;\n }\n\n this.searchTerm.setValue('');\n this.input.nativeElement.value = '';\n this.field.updateForm();\n }\n\n validateGroup(valid: boolean, empty: boolean) {\n const isEmpty = !this.field.required && (empty || valid);\n const hasValue = this.field.required && valid;\n\n if (hasValue || isEmpty) {\n this.field.validationSummary.message = '';\n this.field.validate();\n this.field.form.validateForm();\n } else {\n this.field.validationSummary.message = 'FORM.FIELD.VALIDATOR.INVALID_VALUE';\n this.field.markAsInvalid();\n this.field.form.markAsInvalid();\n }\n }\n\n getDisplayName(model: GroupModel | string) {\n if (model) {\n return typeof model === 'string' ? model : model.name;\n }\n return '';\n }\n\n onRemove(group: GroupModel): void {\n const index = this.selectedGroups.indexOf(group);\n if (index >= 0) {\n this.selectedGroups.splice(index, 1);\n this.field.value = this.selectedGroups;\n }\n }\n\n isGroupAlreadySelected(group: GroupModel): boolean {\n return this.selectedGroups?.some((selectedGroup) => selectedGroup.id === group.id);\n }\n}\n","<div\n class=\"adf-group-widget {{field.className}}\"\n [class.is-dirty]=\"!!field.value\"\n [class.adf-invalid]=\"!field.isValid && isTouched()\"\n [class.adf-readonly]=\"field.readOnly\"\n id=\"functional-group-div\"\n>\n <label class=\"adf-label\" [attr.for]=\"field.id\"\n >{{field.name | translate }}<span class=\"adf-asterisk\" [style.visibility]=\"isRequired() ? 'visible' : 'hidden'\">*</span></label\n >\n <mat-form-field class=\"adf-group-widget-field\">\n <mat-chip-grid #chipGrid>\n <mat-chip-row\n *ngFor=\"let group of selectedGroups\"\n (removed)=\"onRemove(group)\"\n [disabled]=\"field.readOnly\"\n [attr.data-automation-id]=\"'adf-group-widget-chip-' + group.id\"\n class=\"adf-group-widget-field-chip\"\n >\n {{ getDisplayName(group) }}\n <button matChipRemove [attr.aria-label]=\"'remove ' + group.name\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-chip-row>\n <input\n matInput\n class=\"adf-input\"\n type=\"text\"\n data-automation-id=\"adf-group-search-input\"\n [matChipInputFor]=\"chipGrid\"\n [id]=\"field.id\"\n [formControl]=\"searchTerm\"\n [disabled]=\"!multiSelect && selectedGroups.length > 0 || field.readOnly\"\n [placeholder]=\"field.placeholder\"\n (blur)=\"markAsTouched()\"\n [matAutocomplete]=\"auto\"\n #inputValue\n />\n </mat-chip-grid>\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"updateOption($event.option.value)\" [displayWith]=\"getDisplayName\">\n <mat-option\n *ngFor=\"let item of groups$ | async; let i = index\"\n id=\"adf-group-widget-user-{{i}}\"\n [id]=\"field.id +'-'+item.id\"\n [value]=\"item\"\n [disabled]=\"isGroupAlreadySelected(item)\"\n >\n <span id=\"adf-group-label-name\">{{item.name}}</span>\n </mat-option>\n </mat-autocomplete>\n </mat-form-field>\n <error-widget [error]=\"field.validationSummary\" />\n <error-widget *ngIf=\"isInvalidFieldRequired() && isTouched()\" required=\"{{ 'FORM.FIELD.REQUIRED' | translate }}\" />\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AlfrescoApiService } from '@alfresco/adf-content-services';\nimport { FormFieldOption } from '@alfresco/adf-core';\nimport { Injectable } from '@angular/core';\nimport { Observable, from, throwError } from 'rxjs';\nimport { ProcessDefinitionsApi } from '@alfresco/js-api';\nimport { catchError } from 'rxjs/operators';\nimport { DynamicTableColumnOption } from '../widgets/dynamic-table/editors/models/dynamic-table-column-option.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ProcessDefinitionService {\n static UNKNOWN_ERROR_MESSAGE: string = 'Unknown error';\n static GENERIC_ERROR_MESSAGE: string = 'Server error';\n\n private _processDefinitionsApi: ProcessDefinitionsApi;\n get processDefinitionsApi(): ProcessDefinitionsApi {\n this._processDefinitionsApi = this._processDefinitionsApi ?? new ProcessDefinitionsApi(this.apiService.getInstance());\n return this._processDefinitionsApi;\n }\n\n constructor(private apiService: AlfrescoApiService) {}\n\n /**\n * Gets values of fields populated by a REST backend using a process ID.\n *\n * @param processDefinitionId Process identifier\n * @param field Field identifier\n * @returns Field values\n */\n getRestFieldValuesByProcessId(processDefinitionId: string, field: string): Observable<FormFieldOption[]> {\n return from(this.processDefinitionsApi.getRestFieldValues(processDefinitionId, field)).pipe(catchError((err) => this.handleError(err)));\n }\n\n /**\n * Gets column values of fields populated by a REST backend using a process ID.\n *\n * @param processDefinitionId Process identifier\n * @param field Field identifier\n * @param column Column identifier\n * @returns Field values\n */\n getRestFieldValuesColumnByProcessId(processDefinitionId: string, field: string, column?: string): Observable<DynamicTableColumnOption[]> {\n return from(this.processDefinitionsApi.getRestTableFieldValues(processDefinitionId, field, column)).pipe(\n catchError((err) => this.handleError(err))\n );\n }\n\n /**\n * Creates a JSON representation of form data.\n *\n * @param res Object representing form data\n * @returns JSON data\n */\n toJson(res: any) {\n if (res) {\n return res || {};\n }\n return {};\n }\n\n /**\n * Reports an error message.\n *\n * @param error Data object with optional `message` and `status` fields for the error\n * @returns Error message\n */\n private handleError(error: any): Observable<any> {\n let errMsg = ProcessDefinitionService.UNKNOWN_ERROR_MESSAGE;\n if (error) {\n errMsg = error.message\n ? error.message\n : error.status\n ? `${error.status} - ${error.statusText}`\n : ProcessDefinitionService.GENERIC_ERROR_MESSAGE;\n }\n return throwError(errMsg);\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/component-selector */\n\nimport { ErrorWidgetComponent, FormService, WidgetComponent } from '@alfresco/adf-core';\nimport { Component, OnInit, ViewEncapsulation } from '@angular/core';\nimport { TaskFormService } from '../../services/task-form.service';\nimport { ProcessDefinitionService } from '../../services/process-definition.service';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n selector: 'radio-buttons-widget',\n imports: [CommonModule, TranslatePipe, MatRadioModule, FormsModule, ErrorWidgetComponent],\n templateUrl: './radio-buttons.widget.html',\n styleUrls: ['./radio-buttons.widget.scss'],\n host: {\n '(click)': 'event($event)',\n '(blur)': 'event($event)',\n '(change)': 'event($event)',\n '(focus)': 'event($event)',\n '(focusin)': 'event($event)',\n '(focusout)': 'event($event)',\n '(input)': 'event($event)',\n '(invalid)': 'event($event)',\n '(select)': 'event($event)'\n },\n encapsulation: ViewEncapsulation.None\n})\nexport class RadioButtonsWidgetComponent extends WidgetComponent implements OnInit {\n constructor(\n public formService: FormService,\n private taskFormService: TaskFormService,\n private processDefinitionService: ProcessDefinitionService\n ) {\n super(formService);\n }\n\n ngOnInit() {\n if (this.isValidRestConfig() && !this.isReadOnlyForm()) {\n if (this.field.form.taskId) {\n this.getOptionsByTaskId();\n } else {\n this.getOptionsByProcessDefinitionId();\n }\n }\n }\n\n getOptionsByTaskId() {\n this.taskFormService.getRestFieldValues(this.field.form.taskId, this.field.id).subscribe((formFieldOption) => {\n this.field.options = formFieldOption || [];\n this.field.updateForm();\n });\n }\n\n getOptionsByProcessDefinitionId() {\n this.processDefinitionService\n .getRestFieldValuesByProcessId(this.field.form.processDefinitionId, this.field.id)\n .subscribe((formFieldOption) => {\n this.field.options = formFieldOption || [];\n this.field.updateForm();\n });\n }\n\n onOptionClick(optionSelected: any) {\n this.field.value = optionSelected;\n this.fieldChanged.emit(this.field);\n }\n\n private isRestType(): boolean {\n return this.field?.optionType === 'rest';\n }\n\n private isReadOnlyForm(): boolean {\n return !!this.field?.form?.readOnly;\n }\n\n private hasRestUrl(): boolean {\n return !!this.field?.restUrl;\n }\n\n private isValidRestConfig(): boolean {\n return this.isRestType() && this.hasRestUrl();\n }\n}\n","<div class=\"adf-radio-buttons-widget {{field.className}}\" [class.adf-readonly]=\"field.readOnly\" [id]=\"field.id\">\n <div class=\"adf-radio-button-container\">\n <label class=\"adf-label\" [attr.for]=\"field.id\"\n >{{field.name | translate }}<span class=\"adf-asterisk\" [style.visibility]=\"isRequired() ? 'visible' : 'hidden'\">*</span></label\n >\n <mat-radio-group class=\"adf-radio-group\" [(ngModel)]=\"field.value\" [disabled]=\"field.readOnly\">\n <mat-radio-button\n [title]=\"field.tooltip\"\n [id]=\"field.id + '-' + opt.id\"\n [name]=\"field.id\"\n [value]=\"opt.id\"\n [checked]=\"field.value === opt.id\"\n (change)=\"onOptionClick(opt.id)\"\n color=\"primary\"\n class=\"adf-radio-button\"\n *ngFor=\"let opt of field.options\"\n >\n {{opt.name}}\n </mat-radio-button>\n </mat-radio-group>\n </div>\n <error-widget [error]=\"field.validationSummary\" />\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/component-selector */\n\nimport { Component, DestroyRef, inject, OnInit, ViewEncapsulation } from '@angular/core';\nimport {\n FormService,\n FormFieldOption,\n WidgetComponent,\n ErrorWidgetComponent,\n ErrorMessageModel,\n FormFieldModel,\n ReactiveFormWidget\n} from '@alfresco/adf-core';\nimport { ProcessDefinitionService } from '../../services/process-definition.service';\nimport { TaskFormService } from '../../services/task-form.service';\nimport { CommonModule } from '@angular/common';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { AbstractControl, FormControl, ReactiveFormsModule, ValidationErrors, ValidatorFn } from '@angular/forms';\nimport { filter } from 'rxjs/operators';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'dropdown-widget',\n imports: [CommonModule, TranslatePipe, MatFormFieldModule, MatSelectModule, ReactiveFormsModule, ErrorWidgetComponent],\n templateUrl: './dropdown.widget.html',\n styleUrls: ['./dropdown.widget.scss'],\n host: {\n '(click)': 'event($event)',\n '(blur)': 'event($event)',\n '(change)': 'event($event)',\n '(focus)': 'event($event)',\n '(focusin)': 'event($event)',\n '(focusout)': 'event($event)',\n '(input)': 'event($event)',\n '(invalid)': 'event($event)',\n '(select)': 'event($event)'\n },\n encapsulation: ViewEncapsulation.None\n})\nexport class DropdownWidgetComponent extends WidgetComponent implements OnInit, ReactiveFormWidget {\n public formService = inject(FormService);\n public taskFormService = inject(TaskFormService);\n public processDefinitionService = inject(ProcessDefinitionService);\n private readonly destroyRef = inject(DestroyRef);\n\n dropdownControl = new FormControl<FormFieldOption | string>(undefined);\n\n get isReadOnlyType(): boolean {\n return this.field.type === 'readonly';\n }\n\n get isReadOnlyField(): boolean {\n return this.field.readOnly;\n }\n\n private get isRestType(): boolean {\n return this.field?.optionType === 'rest';\n }\n\n private get hasRestUrl(): boolean {\n return !!this.field?.restUrl;\n }\n\n private get isValidRestConfig(): boolean {\n return this.isRestType && this.hasRestUrl;\n }\n\n ngOnInit() {\n if (this.isValidRestConfig && !this.isReadOnlyForm()) {\n if (this.field.form.taskId) {\n this.getValuesByTaskId();\n } else {\n this.getValuesByProcessDefinitionId();\n }\n }\n\n this.setFormControlValue();\n this.updateFormControlState();\n this.subscribeToInputChanges();\n this.handleErrors();\n }\n\n updateReactiveFormControl(): void {\n this.updateFormControlState();\n this.handleErrors();\n }\n\n getValuesByTaskId() {\n this.taskFormService.getRestFieldValues(this.field.form.taskId, this.field.id).subscribe((formFieldOption) => {\n const options = [];\n if (this.field.emptyOption) {\n options.push(this.field.emptyOption);\n }\n this.field.options = options.concat(formFieldOption || []);\n this.field.updateForm();\n });\n }\n\n getValuesByProcessDefinitionId() {\n this.processDefinitionService\n .getRestFieldValuesByProcessId(this.field.form.processDefinitionId, this.field.id)\n .subscribe((formFieldOption) => {\n const options = [];\n if (this.field.emptyOption) {\n options.push(this.field.emptyOption);\n }\n this.field.options = options.concat(formFieldOption || []);\n this.field.updateForm();\n });\n }\n\n private isReadOnlyForm(): boolean {\n return !!this.field?.form?.readOnly;\n }\n\n private subscribeToInputChanges(): void {\n this.dropdownControl.valueChanges\n .pipe(\n filter(() => !!this.field),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe((value) => {\n this.setOptionValue(value, this.field);\n this.handleErrors();\n this.onFieldChanged(this.field);\n });\n }\n\n private setFormControlValue(): void {\n this.dropdownControl.setValue(this.getOptionValue(this.field?.value), { emitEvent: false });\n }\n\n private updateFormControlState(): void {\n this.dropdownControl.setValidators(this.isRequired() && this.field?.isVisible ? [this.customRequiredValidator(this.field)] : []);\n this.field?.readOnly || this.readOnly\n ? this.dropdownControl.disable({ emitEvent: false })\n : this.dropdownControl.enable({ emitEvent: false });\n\n this.dropdownControl.updateValueAndValidity({ emitEvent: false });\n }\n\n private handleErrors() {\n if (!this.field) {\n return;\n }\n\n if (this.dropdownControl.valid) {\n this.field.validationSummary = new ErrorMessageModel('');\n this.field.markAsValid();\n return;\n }\n\n if (this.dropdownControl.invalid && this.dropdownControl.errors.required) {\n this.field.validationSummary = new ErrorMessageModel({ message: 'FORM.FIELD.REQUIRED' });\n this.field.markAsInvalid();\n }\n }\n\n private setOptionValue(option: string | FormFieldOption, field: FormFieldModel) {\n if (typeof option === 'string') {\n field.value = option;\n return;\n }\n if (option.id === 'empty' || option.name !== field.value) {\n field.value = option.id;\n return;\n }\n\n field.value = option.name;\n }\n\n private getOptionValue(value?: string | FormFieldOption) {\n if (this.field?.readOnly || this.readOnly) {\n return value;\n }\n\n if (typeof value === 'string') {\n return this.field.options.find((option) => option.id === value || option.name === value);\n }\n\n return value as FormFieldOption | undefined;\n }\n\n private customRequiredValidator(field: FormFieldModel): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const isEmptyInputValue = (value: any) => value == null || ((typeof value === 'string' || Array.isArray(value)) && value.length === 0);\n const isEqualToEmptyValue = (value: any) =>\n field.hasEmptyValue &&\n (value === field.emptyOption.id ||\n value === field.emptyOption.name ||\n (value.id === field.emptyOption.id && value.name === field.emptyOption.name));\n\n return isEmptyInputValue(control.value) || isEqualToEmptyValue(control.value) ? { required: true } : null;\n };\n }\n}\n","<div\n class=\"adf-dropdown-widget {{field.className}}\"\n [class.adf-invalid]=\"dropdownControl.invalid && dropdownControl.touched\"\n [class.adf-readonly]=\"field.readOnly\"\n>\n <label class=\"adf-label\" [attr.for]=\"field.id\"\n >{{field.name | translate }}<span class=\"adf-asterisk\" [style.visibility]=\"isRequired() ? 'visible' : 'hidden'\">*</span></label\n >\n <mat-form-field>\n <mat-select class=\"adf-select\" [id]=\"field.id\" [formControl]=\"dropdownControl\">\n <mat-option *ngFor=\"let opt of field.options\" [value]=\"opt\" [id]=\"opt.id\">{{opt.name}}</mat-option>\n <mat-option id=\"readonlyOption\" *ngIf=\"dropdownControl.disabled\" [value]=\"field.value\">{{field.value}}</mat-option>\n </mat-select>\n </mat-form-field>\n <ng-container *ngIf=\"!isReadOnlyField && dropdownControl.touched\">\n <error-widget [error]=\"field.validationSummary\" />\n </ng-container>\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/component-selector */\n\nimport { FormService, FormFieldOption, WidgetComponent, ErrorWidgetComponent } from '@alfresco/adf-core';\nimport { ENTER, ESCAPE } from '@angular/cdk/keycodes';\nimport { Component, OnInit, ViewEncapsulation } from '@angular/core';\nimport { TaskFormService } from '../../services/task-form.service';\nimport { ProcessDefinitionService } from '../../services/process-definition.service';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { FormsModule } from '@angular/forms';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatInputModule } from '@angular/material/input';\n\n@Component({\n selector: 'typeahead-widget',\n imports: [CommonModule, TranslatePipe, MatFormFieldModule, FormsModule, MatAutocompleteModule, ErrorWidgetComponent, MatInputModule],\n templateUrl: './typeahead.widget.html',\n styleUrls: ['./typeahead.widget.scss'],\n host: {\n '(click)': 'event($event)',\n '(blur)': 'event($event)',\n '(change)': 'event($event)',\n '(focus)': 'event($event)',\n '(focusin)': 'event($event)',\n '(focusout)': 'event($event)',\n '(input)': 'event($event)',\n '(invalid)': 'event($event)',\n '(select)': 'event($event)'\n },\n encapsulation: ViewEncapsulation.None\n})\nexport class TypeaheadWidgetComponent extends WidgetComponent implements OnInit {\n minTermLength: number = 1;\n value: string;\n oldValue: string;\n options: FormFieldOption[] = [];\n\n constructor(\n public formService: FormService,\n private taskFormService: TaskFormService,\n private processDefinitionService: ProcessDefinitionService\n ) {\n super(formService);\n }\n\n ngOnInit() {\n if (this.field.form.taskId && this.field.restUrl) {\n this.getValuesByTaskId();\n } else if (this.field.form.processDefinitionId && this.field.restUrl) {\n this.getValuesByProcessDefinitionId();\n }\n if (this.isReadOnlyType()) {\n this.value = this.field.value;\n }\n }\n\n getValuesByTaskId() {\n this.taskFormService.getRestFieldValues(this.field.form.taskId, this.field.id).subscribe((formFieldOption) => {\n const options = formFieldOption || [];\n this.field.options = options;\n\n const fieldValue = this.field.value;\n if (fieldValue) {\n const toSelect = options.find((item) => item.id === fieldValue || item.name.toLocaleLowerCase() === fieldValue.toLocaleLowerCase());\n if (toSelect) {\n this.value = toSelect.name;\n }\n }\n this.onFieldChanged(this.field);\n this.field.updateForm();\n });\n }\n\n getValuesByProcessDefinitionId() {\n this.processDefinitionService\n .getRestFieldValuesByProcessId(this.field.form.processDefinitionId, this.field.id)\n .subscribe((formFieldOption) => {\n const options = formFieldOption || [];\n this.field.options = options;\n\n const fieldValue = this.field.value;\n if (fieldValue) {\n const toSelect = options.find((item) => item.id === fieldValue);\n if (toSelect) {\n this.value = toSelect.name;\n }\n }\n this.onFieldChanged(this.field);\n this.field.updateForm();\n });\n }\n\n getOptions(): FormFieldOption[] {\n const val = this.value.trim().toLocaleLowerCase();\n return this.field.options.filter((item) => {\n const name = item.name.toLocaleLowerCase();\n return name.indexOf(val) > -1;\n });\n }\n\n isValidOptionName(optionName: string): boolean {\n const option = this.field.options.find((item) => item.name && item.name.toLocaleLowerCase() === optionName.toLocaleLowerCase());\n return !!option;\n }\n\n onKeyUp(event: KeyboardEvent) {\n if (this.value && this.value.trim().length >= this.minTermLength && this.oldValue !== this.value) {\n if (event.keyCode !== ESCAPE && event.keyCode !== ENTER) {\n if (this.value.length >= this.minTermLength) {\n this.options = this.getOptions();\n this.oldValue = this.value;\n if (this.isValidOptionName(this.value)) {\n this.field.value = this.options[0].id;\n }\n }\n }\n }\n if (this.isValueDefined() && this.value.trim().length === 0) {\n this.oldValue = this.value;\n this.options = [];\n }\n }\n\n onItemSelect(item: FormFieldOption) {\n if (item) {\n this.field.value = item.id;\n this.value = item.name;\n this.onFieldChanged(this.field);\n }\n }\n\n validate() {\n this.field.value = this.value;\n }\n\n isValueDefined() {\n return this.value !== null && this.value !== undefined;\n }\n\n isReadOnlyType(): boolean {\n return this.field.type === 'readonly';\n }\n}\n","<div class=\"adf-typeahead-widget-container\">\n <div class=\"adf-typeahead-widget {{field.className}}\"\n [class.is-dirty]=\"value\"\n [class.adf-invalid]=\"!field.isValid\"\n [class.adf-readonly]=\"field.readOnly\"\n id=\"typehead-div\">\n <mat-form-field>\n <label class=\"adf-label\" [attr.for]=\"field.id\">{{field.name | translate }}</label>\n <input matInput class=\"adf-input\"\n type=\"text\"\n [id]=\"field.id\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"validate()\"\n (keyup)=\"onKeyUp($event)\"\n [disabled]=\"field.readOnly\"\n data-automation-id=\"adf-typeahed-search-input\"\n placeholder=\"{{field.placeholder}}\"\n [matAutocomplete]=\"auto\">\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"onItemSelect($event.option.value)\">\n <mat-option *ngFor=\"let item of options; let i = index\" id=\"adf-typeahed-widget-user-{{i}}\" [value]=\"item\">\n <span id=\"adf-typeahed-label-name\">{{item.name}}</span>\n </mat-option>\n </mat-autocomplete>\n </mat-form-field>\n\n <error-widget [error]=\"field.validationSummary\" />\n <error-widget *ngIf=\"isInvalidFieldRequired()\" required=\"{{ 'FORM.FIELD.REQUIRED' | translate }}\" />\n </div>\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseViewerWidgetComponent, ErrorWidgetComponent, FormService } from '@alfresco/adf-core';\nimport { Component, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { AlfrescoViewerComponent } from '@alfresco/adf-content-services';\n\n/* eslint-disable @angular-eslint/component-selector */\n\n@Component({\n selector: 'file-viewer-widget',\n imports: [CommonModule, TranslatePipe, AlfrescoViewerComponent, ErrorWidgetComponent],\n templateUrl: './file-viewer.widget.html',\n styleUrls: ['./file-viewer.widget.scss'],\n host: {\n '(click)': 'event($event)',\n '(blur)': 'event($event)',\n '(change)': 'event($event)',\n '(focus)': 'event($event)',\n '(focusin)': 'event($event)',\n '(focusout)': 'event($event)',\n '(input)': 'event($event)',\n '(invalid)': 'event($event)',\n '(select)': 'event($event)'\n },\n encapsulation: ViewEncapsulation.None\n})\nexport class FileViewerWidgetComponent extends BaseViewerWidgetComponent {\n constructor(formService: FormService) {\n super(formService);\n }\n}\n","<div class=\"adf-file-viewer-widget {{field.className}}\" [class.adf-invalid]=\"!field.isValid\" [class.adf-readonly]=\"field.readOnly\">\n <label class=\"adf-label\" [attr.for]=\"field.id\"\n >{{field.name | translate }}<span class=\"adf-asterisk\" [style.visibility]=\"isRequired() ? 'visible' : 'hidden'\">*</span></label\n >\n <adf-alfresco-viewer [nodeId]=\"field.value\" [showViewer]=\"field.value\" [allowGoBack]=\"false\" />\n <error-widget [error]=\"field.validationSummary\" />\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FormFieldModel, FormFieldEvent, FormModel } from '@alfresco/adf-core';\nimport { DynamicRowValidationSummary } from '../widgets/dynamic-table/editors/models/dynamic-row-validation-summary.model';\nimport { DynamicTableRow } from '../widgets/dynamic-table/editors/models/dynamic-table-row.model';\n\nexport class ValidateDynamicTableRowEvent extends FormFieldEvent {\n\n isValid = true;\n\n constructor(form: FormModel,\n field: FormFieldModel,\n public row: DynamicTableRow,\n public summary: DynamicRowValidationSummary) {\n super(form, field);\n }\n\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/component-selector */\n\nimport { CellValidator } from './cell-validator.model';\nimport { DynamicRowValidationSummary } from './dynamic-row-validation-summary.model';\nimport { DynamicTableColumn } from './dynamic-table-column.model';\nimport { DynamicTableRow } from './dynamic-table-row.model';\nimport { isValid } from 'date-fns';\n\nexport class DateCellValidator implements CellValidator {\n static DATE_TYPE = 'Date';\n\n private supportedTypes: string[] = [DateCellValidator.DATE_TYPE];\n\n isSupported(column: DynamicTableColumn): boolean {\n return !!(column?.editable && this.supportedTypes.indexOf(column?.type) > -1);\n }\n\n validate(row: DynamicTableRow, column: DynamicTableColumn, summary?: DynamicRowValidationSummary): boolean {\n if (this.isSupported(column)) {\n const value = row?.value[column.id];\n\n if (value) {\n const dateValue = new Date(value);\n\n if (isValid(dateValue)) {\n return true;\n }\n\n if (summary) {\n summary.isValid = false;\n summary.message = `Invalid '${column.name}' format.`;\n }\n\n return false;\n } else {\n return !column.required;\n }\n }\n\n return true;\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ErrorMessageModel } from '@alfresco/adf-core';\n\nexport class DynamicRowValidationSummary extends ErrorMessageModel {\n isValid: boolean;\n\n constructor(json?: any) {\n super(json);\n\n this.isValid = json?.isValid;\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/component-selector */\n\nimport { CellValidator } from './cell-validator.model';\nimport { DynamicRowValidationSummary } from './dynamic-row-validation-summary.model';\nimport { DynamicTableColumn } from './dynamic-table-column.model';\nimport { DynamicTableRow } from './dynamic-table-row.model';\n\nexport class NumberCellValidator implements CellValidator {\n private supportedTypes: string[] = ['Number', 'Amount'];\n\n isSupported(column: DynamicTableColumn): boolean {\n return column?.required && this.supportedTypes.indexOf(column.type) > -1;\n }\n\n isNumber(value: any): boolean {\n if (value === null || value === undefined || value === '') {\n return false;\n }\n\n return !isNaN(+value);\n }\n\n validate(row: DynamicTableRow, column: DynamicTableColumn, summary?: DynamicRowValidationSummary): boolean {\n if (this.isSupported(column)) {\n const value = row.value[column.id];\n if (value === null || value === undefined || value === '' || this.isNumber(value)) {\n return true;\n }\n\n if (summary) {\n summary.isValid = false;\n summary.message = `Field '${column.name}' must be a number.`;\n }\n return false;\n }\n return true;\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/component-selector */\n\nimport { CellValidator } from './cell-validator.model';\nimport { DynamicRowValidationSummary } from './dynamic-row-validation-summary.model';\nimport { DynamicTableColumn } from './dynamic-table-column.model';\nimport { DynamicTableRow } from './dynamic-table-row.model';\n\nexport class RequiredCellValidator implements CellValidator {\n private supportedTypes: string[] = ['String', 'Number', 'Amount', 'Date', 'Dropdown'];\n\n isSupported(column: DynamicTableColumn): boolean {\n return column?.required && this.supportedTypes.indexOf(column.type) > -1;\n }\n\n validate(row: DynamicTableRow, column: DynamicTableColumn, summary?: DynamicRowValidationSummary): boolean {\n if (this.isSupported(column)) {\n const value = row.value[column.id];\n if (column.required) {\n if (value === null || value === undefined || value === '') {\n if (summary) {\n summary.isValid = false;\n summary.message = `Field '${column.name}' is required.`;\n }\n return false;\n }\n }\n }\n\n return true;\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ValidateDynamicTableRowEvent } from '../../../../events/validate-dynamic-table-row.event';\nimport { FormService, FormFieldModel, FormWidgetModel } from '@alfresco/adf-core';\nimport { CellValidator } from './cell-validator.model';\nimport { DateCellValidator } from './date-cell-validator-model';\nimport { DynamicRowValidationSummary } from './dynamic-row-validation-summary.model';\nimport { DynamicTableColumn } from './dynamic-table-column.model';\nimport { DynamicTableRow } from './dynamic-table-row.model';\nimport { NumberCellValidator } from './number-cell-validator.model';\nimport { RequiredCellValidator } from './required-cell-validator.model';\n\nexport class DynamicTableModel extends FormWidgetModel {\n field: FormFieldModel;\n columns: DynamicTableColumn[] = [];\n visibleColumns: DynamicTableColumn[] = [];\n rows: DynamicTableRow[] = [];\n\n private _selectedRow: DynamicTableRow;\n private readonly _validators: CellValidator[] = [];\n\n get selectedRow(): DynamicTableRow {\n return this._selectedRow;\n }\n\n set selectedRow(value: DynamicTableRow) {\n if (this._selectedRow && this._selectedRow === value) {\n this._selectedRow.selected = false;\n this._selectedRow = null;\n return;\n }\n\n this.rows.forEach((row) => (row.selected = false));\n\n this._selectedRow = value;\n\n if (value) {\n this._selectedRow.selected = true;\n }\n }\n\n constructor(field: FormFieldModel, private formService: FormService) {\n super(field.form, field.json);\n this.field = field;\n\n if (field.json) {\n const columns = this.getColumns(field);\n if (columns) {\n this.columns = columns;\n this.visibleColumns = this.columns.filter((col) => col.visible);\n }\n\n if (field.json.value) {\n this.rows = field.json.value.map((obj) => ({ selected: false, value: obj } as DynamicTableRow));\n }\n }\n\n this._validators = [new RequiredCellValidator(), new DateCellValidator(), new NumberCellValidator()];\n }\n\n private getColumns(field: FormFieldModel): DynamicTableColumn[] {\n if (field?.json) {\n let definitions = field.json.columnDefinitions;\n if (!definitions && field.json.params?.field) {\n definitions = field.json.params.field.columnDefinitions;\n }\n\n if (definitions) {\n return definitions.map((obj) => obj as DynamicTableColumn);\n }\n }\n return null;\n }\n\n flushValue() {\n if (this.field) {\n this.field.value = this.rows.map((r) => r.value);\n this.field.updateForm();\n }\n }\n\n moveRow(row: DynamicTableRow, offset: number) {\n const oldIndex = this.rows.indexOf(row);\n if (oldIndex > -1) {\n let newIndex = oldIndex + offset;\n\n if (newIndex < 0) {\n newIndex = 0;\n } else if (newIndex >= this.rows.length) {\n newIndex = this.rows.length;\n }\n\n const arr = this.rows.slice();\n arr.splice(oldIndex, 1);\n arr.splice(newIndex, 0, row);\n this.rows = arr;\n\n this.flushValue();\n }\n }\n\n deleteRow(row: DynamicTableRow) {\n if (row) {\n if (this.selectedRow === row) {\n this.selectedRow = null;\n }\n const idx = this.rows.indexOf(row);\n if (idx > -1) {\n this.rows.splice(idx, 1);\n this.flushValue();\n }\n }\n }\n\n addRow(row: DynamicTableRow) {\n if (row) {\n this.rows.push(row);\n // this.selectedRow = row;\n }\n }\n\n validateRow(row: DynamicTableRow): DynamicRowValidationSummary {\n const summary = new DynamicRowValidationSummary({\n isValid: true,\n message: null\n });\n\n const event = new ValidateDynamicTableRowEvent(this.form, this.field, row, summary);\n this.formService.validateDynamicTableRow.next(event);\n\n if (event.defaultPrevented || !summary.isValid) {\n return summary;\n }\n\n if (row) {\n for (const col of this.columns) {\n for (const validator of this._validators) {\n if (!validator.validate(row, col, summary)) {\n return summary;\n }\n }\n }\n }\n\n return summary;\n }\n\n getCellValue(row: DynamicTableRow, column: DynamicTableColumn): any {\n const rowValue = row.value[column.id];\n\n if (column.type === 'Dropdown') {\n if (rowValue) {\n return rowValue.name;\n }\n }\n\n if (column.type === 'Boolean') {\n return !!rowValue;\n }\n\n if (column.type === 'Date') {\n if (rowValue) {\n return new Date(rowValue.split('T')[0]);\n }\n }\n\n return rowValue || '';\n }\n\n getDisplayText(column: DynamicTableColumn): string {\n let columnName = column.name;\n if (column.type === 'Amount') {\n const currency = column.amountCurrency || '$';\n columnName = `${column.name} (${currency})`;\n }\n return columnName;\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/component-selector */\n\nimport { FormService, FormFieldModel } from '@alfresco/adf-core';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { DynamicTableColumnOption } from '../models/dynamic-table-column-option.model';\nimport { DynamicTableColumn } from '../models/dynamic-table-column.model';\nimport { DynamicTableRow } from '../models/dynamic-table-row.model';\nimport { DynamicTableModel } from '../models/dynamic-table.widget.model';\nimport { ProcessDefinitionService } from '../../../../services/process-definition.service';\nimport { TaskFormService } from '../../../../services/task-form.service';\nimport { CommonModule } from '@angular/common';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n selector: 'adf-dropdown-editor',\n imports: [CommonModule, MatFormFieldModule, MatSelectModule, FormsModule],\n templateUrl: './dropdown.editor.html',\n styleUrls: ['./dropdown.editor.scss']\n})\nexport class DropdownEditorComponent implements OnInit {\n value: any = null;\n options: DynamicTableColumnOption[] = [];\n\n @Input()\n table: DynamicTableModel;\n\n @Input()\n row: DynamicTableRow;\n\n @Input()\n column: DynamicTableColumn;\n\n constructor(\n public formService: FormService,\n private taskFormService: TaskFormService,\n private processDefinitionService: ProcessDefinitionService\n ) {}\n\n ngOnInit() {\n const field = this.table.field;\n if (field) {\n if (this.column.optionType === 'rest') {\n if (this.table.form?.taskId) {\n this.getValuesByTaskId(field);\n } else {\n this.getValuesByProcessDefinitionId(field);\n }\n } else {\n this.options = this.column.options || [];\n this.value = this.table.getCellValue(this.row, this.column);\n }\n }\n }\n\n getValuesByTaskId(field: FormFieldModel) {\n this.taskFormService.getRestFieldValuesColumn(field.form.taskId, field.id, this.column.id).subscribe((dynamicTableColumnOption) => {\n this.column.options = dynamicTableColumnOption || [];\n this.options = this.column.options;\n this.value = this.table.getCellValue(this.row, this.column);\n });\n }\n\n getValuesByProcessDefinitionId(field: FormFieldModel) {\n this.processDefinitionService\n .getRestFieldValuesColumnByProcessId(field.form.processDefinitionId, field.id, this.column.id)\n .subscribe((dynamicTableColumnOption) => {\n this.column.options = dynamicTableColumnOption || [];\n this.options = this.column.options;\n this.value = this.table.getCellValue(this.row, this.column);\n });\n }\n\n onValueChanged(row: DynamicTableRow, column: DynamicTableColumn, event: any) {\n let value: any = event.value;\n value = column.options.find((opt) => opt.name === value);\n row.value[column.id] = value;\n }\n}\n","<div class=\"dropdown-editor\">\n <label [attr.for]=\"column.id\">{{column.name}}</label>\n <mat-form-field>\n <mat-select\n floatPlaceholder=\"never\"\n class=\"adf-dropdown-editor-select\"\n [id]=\"column.id\"\n [(ngModel)]=\"value\"\n [required]=\"column.required\"\n [disabled]=\"!column.editable\"\n (selectionChange)=\"onValueChanged(row, column, $event)\">\n <mat-option />\n <mat-option *ngFor=\"let opt of options\" [value]=\"opt.name\" [id]=\"opt.id\">{{opt.name}}</mat-option>\n </mat-select>\n </mat-form-field>\n <span *ngFor=\"let opt of options\" id=\"testme\">{{opt | json}}</span>\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/component-selector */\n\nimport { Component, Input, OnInit } from '@angular/core';\nimport { DynamicTableColumn } from '../models/dynamic-table-column.model';\nimport { DynamicTableRow } from '../models/dynamic-table-row.model';\nimport { DynamicTableModel } from '../models/dynamic-table.widget.model';\nimport { CommonModule } from '@angular/common';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\n\n@Component({\n selector: 'adf-amount-editor',\n imports: [CommonModule, MatFormFieldModule, MatInputModule],\n templateUrl: './amount.editor.html',\n styleUrls: ['./amount.editor.scss']\n})\nexport class AmountEditorComponent implements OnInit {\n @Input()\n table: DynamicTableModel;\n\n @Input()\n row: DynamicTableRow;\n\n @Input()\n column: DynamicTableColumn;\n\n displayName: string;\n\n ngOnInit() {\n this.displayName = this.table.getDisplayText(this.column);\n }\n\n onValueChanged(row: DynamicTableRow, column: DynamicTableColumn, event: any) {\n const value: number = Number(event.target.value);\n row.value[column.id] = value;\n }\n}\n","<div class=\"adf-amount-editor\">\n <mat-form-field>\n <label [attr.for]=\"column.id\">{{displayName}}</label>\n <input matInput\n type=\"number\"\n [value]=\"table.getCellValue(row, column)\"\n (keyup)=\"onValueChanged(row, column, $event)\"\n [required]=\"column.required\"\n [disabled]=\"!column.editable\"\n [id]=\"column.id\">\n </mat-form-field>\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/component-selector */\n\nimport { Component, Input } from '@angular/core';\nimport { DynamicTableColumn } from '../models/dynamic-table-column.model';\nimport { DynamicTableRow } from '../models/dynamic-table-row.model';\nimport { DynamicTableModel } from '../models/dynamic-table.widget.model';\nimport { CommonModule } from '@angular/common';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\n\n@Component({\n selector: 'adf-boolean-editor',\n imports: [CommonModule, MatCheckboxModule],\n templateUrl: './boolean.editor.html',\n styleUrls: ['./boolean.editor.scss']\n})\nexport class BooleanEditorComponent {\n @Input()\n table: DynamicTableModel;\n\n @Input()\n row: DynamicTableRow;\n\n @Input()\n column: DynamicTableColumn;\n\n onValueChanged(row: DynamicTableRow, column: DynamicTableColumn, event: any) {\n const value: boolean = event.checked;\n row.value[column.id] = value;\n }\n}\n"," <label [attr.for]=\"column.id\">\n <mat-checkbox\n color=\"primary\"\n [id]=\"column.id\"\n [checked]=\"table.getCellValue(row, column)\"\n [required]=\"column.required\"\n [disabled]=\"!column.editable\"\n (change)=\"onValueChanged(row, column, $event)\">\n <span class=\"adf-checkbox-label\">{{column.name}}</span>\n </mat-checkbox>\n</label>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ADF_DATE_FORMATS, AdfDateFnsAdapter, DateFnsUtils } from '@alfresco/adf-core';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { DateAdapter, MAT_DATE_FORMATS } from '@angular/material/core';\nimport { MatDatepickerInputEvent, MatDatepickerModule } from '@angular/material/datepicker';\nimport { DynamicTableColumn } from '../models/dynamic-table-column.model';\nimport { DynamicTableRow } from '../models/dynamic-table-row.model';\nimport { DynamicTableModel } from '../models/dynamic-table.widget.model';\nimport { isValid } from 'date-fns';\nimport { CommonModule } from '@angular/common';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n selector: 'adf-date-editor',\n imports: [CommonModule, MatFormFieldModule, MatDatepickerModule, MatInputModule, FormsModule],\n templateUrl: './date.editor.html',\n providers: [\n { provide: MAT_DATE_FORMATS, useValue: ADF_DATE_FORMATS },\n { provide: DateAdapter, useClass: AdfDateFnsAdapter }\n ],\n styleUrls: ['./date.editor.scss']\n})\nexport class DateEditorComponent implements OnInit {\n DATE_FORMAT: string = 'DD-MM-YYYY';\n\n @Input()\n value: Date;\n\n @Input()\n table: DynamicTableModel;\n\n @Input()\n row: DynamicTableRow;\n\n @Input()\n column: DynamicTableColumn;\n\n minDate: Date;\n maxDate: Date;\n\n constructor(private dateAdapter: DateAdapter<Date>) {}\n\n ngOnInit() {\n const dateAdapter = this.dateAdapter as AdfDateFnsAdapter;\n dateAdapter.displayFormat = this.DATE_FORMAT;\n\n this.value = this.table.getCellValue(this.row, this.column) as Date;\n }\n\n onDateChanged(newDateValue: MatDatepickerInputEvent<Date> | string) {\n if (typeof newDateValue === 'string') {\n const newValue = DateFnsUtils.parseDate(newDateValue, this.DATE_FORMAT);\n\n if (isValid(newValue)) {\n this.row.value[this.column.id] = `${DateFnsUtils.formatDate(newValue, 'yyyy-MM-dd')}T00:00:00.000Z`;\n this.table.flushValue();\n } else {\n this.row.value[this.column.id] = newDateValue;\n }\n } else if (newDateValue?.value) {\n this.row.value[this.column.id] = `${DateFnsUtils.formatDate(newDateValue?.value, 'yyyy-MM-dd')}T00:00:00.000Z`;\n this.table.flushValue();\n } else {\n this.row.value[this.column.id] = '';\n }\n }\n}\n","<div>\n <mat-form-field class=\"adf-date-editor\">\n <label [attr.for]=\"column.id\">{{column.name}} ({{DATE_FORMAT}})</label>\n <input matInput\n id=\"dateInput\"\n type=\"text\"\n [matDatepicker]=\"datePicker\"\n [(ngModel)]=\"value\"\n [id]=\"column.id\"\n [required]=\"column.required\"\n [disabled]=\"!column.editable\"\n (focusout)=\"onDateChanged($any($event).target.value)\"\n (dateChange)=\"onDateChanged($event)\">\n <mat-datepicker-toggle *ngIf=\"column.editable\" matSuffix [for]=\"datePicker\" class=\"adf-date-editor-button\" />\n </mat-form-field>\n <mat-datepicker #datePicker [touchUi]=\"true\" />\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ADF_DATETIME_FORMATS, ADF_DATE_FORMATS, AdfDateFnsAdapter, AdfDateTimeFnsAdapter, DateFnsUtils } from '@alfresco/adf-core';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { DateAdapter, MAT_DATE_FORMATS } from '@angular/material/core';\nimport { DynamicTableColumn } from '../models/dynamic-table-column.model';\nimport { DynamicTableRow } from '../models/dynamic-table-row.model';\nimport { DynamicTableModel } from '../models/dynamic-table.widget.model';\nimport { DatetimeAdapter, MAT_DATETIME_FORMATS, MatDatetimepickerInputEvent, MatDatetimepickerModule } from '@mat-datetimepicker/core';\nimport { CommonModule } from '@angular/common';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n selector: 'adf-datetime-editor',\n imports: [CommonModule, MatFormFieldModule, MatInputModule, MatDatetimepickerModule, FormsModule],\n templateUrl: './datetime.editor.html',\n providers: [\n { provide: MAT_DATE_FORMATS, useValue: ADF_DATE_FORMATS },\n { provide: MAT_DATETIME_FORMATS, useValue: ADF_DATETIME_FORMATS },\n { provide: DateAdapter, useClass: AdfDateFnsAdapter },\n { provide: DatetimeAdapter, useClass: AdfDateTimeFnsAdapter }\n ],\n styleUrls: ['./datetime.editor.scss']\n})\nexport class DateTimeEditorComponent implements OnInit {\n DATE_TIME_FORMAT: string = 'DD/MM/YYYY HH:mm';\n\n @Input()\n value: Date;\n\n @Input()\n table: DynamicTableModel;\n\n @Input()\n row: DynamicTableRow;\n\n @Input()\n column: DynamicTableColumn;\n\n minDate: Date;\n maxDate: Date;\n\n constructor(private dateAdapter: DateAdapter<Date>) {}\n\n ngOnInit() {\n const momentDateAdapter = this.dateAdapter as AdfDateFnsAdapter;\n momentDateAdapter.displayFormat = this.DATE_TIME_FORMAT;\n\n this.value = this.table.getCellValue(this.row, this.column) as Date;\n }\n\n onDateChanged(newDateValue: MatDatetimepickerInputEvent<Date> | string) {\n if (typeof newDateValue === 'string') {\n const newValue = DateFnsUtils.parseDate(newDateValue, this.DATE_TIME_FORMAT);\n this.value = newValue;\n this.row.value[this.column.id] = newValue.toISOString();\n this.table.flushValue();\n } else if (newDateValue.value) {\n const newValue = DateFnsUtils.formatDate(newDateValue.value, this.DATE_TIME_FORMAT);\n this.row.value[this.column.id] = newValue;\n this.value = newDateValue.value;\n this.table.flushValue();\n } else {\n this.row.value[this.column.id] = '';\n }\n }\n}\n","<div>\n <mat-form-field class=\"adf-date-editor\">\n <label [attr.for]=\"column.id\">{{column.name}} {{DATE_TIME_FORMAT}}</label>\n <input matInput\n [matDatetimepicker]=\"datetimePicker\"\n [(ngModel)]=\"value\"\n [id]=\"column.id\"\n [required]=\"column.required\"\n [disabled]=\"!column.editable\"\n (focusout)=\"onDateChanged($any($event).target.value)\"\n (dateChange)=\"onDateChanged($event)\">\n <mat-datetimepicker-toggle\n matSuffix\n [for]=\"datetimePicker\"\n class=\"adf-date-editor-button\" />\n </mat-form-field>\n <mat-datetimepicker\n #datetimePicker\n type=\"datetime\"\n [openOnFocus]=\"true\"\n [timeInterval]=\"5\" />\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/component-selector */\n\nimport { Component, Input, OnInit } from '@angular/core';\nimport { DynamicTableColumn } from '../models/dynamic-table-column.model';\nimport { DynamicTableRow } from '../models/dynamic-table-row.model';\nimport { DynamicTableModel } from '../models/dynamic-table.widget.model';\nimport { CommonModule } from '@angular/common';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\n\n@Component({\n selector: 'adf-text-editor',\n imports: [CommonModule, MatFormFieldModule, MatInputModule],\n templateUrl: './text.editor.html',\n styleUrls: ['./text.editor.scss']\n})\nexport class TextEditorComponent implements OnInit {\n @Input()\n table: DynamicTableModel;\n\n @Input()\n row: DynamicTableRow;\n\n @Input()\n column: DynamicTableColumn;\n\n displayName: string;\n\n ngOnInit() {\n this.displayName = this.table.getDisplayText(this.column);\n }\n\n onValueChanged(row: DynamicTableRow, column: DynamicTableColumn, event: any) {\n const value: any = event.target.value;\n row.value[column.id] = value;\n }\n}\n","<div class=\"adf-text-editor\">\n <mat-form-field>\n <label [attr.for]=\"column.id\">{{displayName}}</label>\n <input matInput\n type=\"text\"\n [value]=\"table.getCellValue(row, column)\"\n (keyup)=\"onValueChanged(row, column, $event)\"\n [required]=\"column.required\"\n [disabled]=\"!column.editable\"\n [id]=\"column.id\">\n </mat-form-field>\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/component-selector */\n\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { DynamicRowValidationSummary } from '../models/dynamic-row-validation-summary.model';\nimport { DynamicTableColumn } from '../models/dynamic-table-column.model';\nimport { DynamicTableRow } from '../models/dynamic-table-row.model';\nimport { DynamicTableModel } from '../models/dynamic-table.widget.model';\nimport { CommonModule } from '@angular/common';\nimport { DropdownEditorComponent } from '../dropdown/dropdown.editor';\nimport { DateEditorComponent } from '../date/date.editor';\nimport { DateTimeEditorComponent } from '../datetime/datetime.editor';\nimport { BooleanEditorComponent } from '../boolean/boolean.editor';\nimport { AmountEditorComponent } from '../amount/amount.editor';\nimport { TextEditorComponent } from '../text/text.editor';\nimport { ErrorWidgetComponent } from '@alfresco/adf-core';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'row-editor',\n imports: [\n CommonModule,\n DropdownEditorComponent,\n DateEditorComponent,\n DateTimeEditorComponent,\n BooleanEditorComponent,\n AmountEditorComponent,\n TextEditorComponent,\n ErrorWidgetComponent,\n MatButtonModule\n ],\n templateUrl: './row.editor.html',\n styleUrls: ['./row.editor.css']\n})\nexport class RowEditorComponent {\n @Input()\n table: DynamicTableModel;\n\n @Input()\n row: DynamicTableRow;\n\n @Input()\n column: DynamicTableColumn;\n\n @Output()\n save: EventEmitter<any> = new EventEmitter<any>();\n\n @Output()\n cancel: EventEmitter<any> = new EventEmitter<any>();\n\n validationSummary: DynamicRowValidationSummary;\n\n constructor() {\n this.validationSummary = new DynamicRowValidationSummary({ isValid: true, message: '' });\n }\n\n onCancelChanges() {\n this.cancel.emit({\n table: this.table,\n row: this.row,\n column: this.column\n });\n }\n\n onSaveChanges() {\n this.validate();\n if (this.isValid()) {\n this.save.emit({\n table: this.table,\n row: this.row,\n column: this.column\n });\n }\n }\n\n private isValid(): boolean {\n return this.validationSummary?.isValid;\n }\n\n private validate() {\n this.validationSummary = this.table.validateRow(this.row);\n }\n}\n","<div class=\"row-editor mdl-shadow--2dp\"\n [class.row-editor__invalid]=\"!validationSummary.isValid\">\n <div class=\"mdl-grid\" *ngFor=\"let column of table.columns\">\n <div class=\"mdl-cell mdl-cell--6-col\" [ngSwitch]=\"column.type\">\n <div *ngSwitchCase=\"'Dropdown'\">\n <adf-dropdown-editor\n [table]=\"table\"\n [row]=\"row\"\n [column]=\"column\" />\n </div>\n <div *ngSwitchCase=\"'Date'\">\n <adf-date-editor\n [table]=\"table\"\n [row]=\"row\"\n [column]=\"column\" />\n </div>\n <div *ngSwitchCase=\"'Datetime'\">\n <adf-datetime-editor\n [table]=\"table\"\n [row]=\"row\"\n [column]=\"column\" />\n </div>\n <div *ngSwitchCase=\"'Boolean'\">\n <adf-boolean-editor\n [table]=\"table\"\n [row]=\"row\"\n [column]=\"column\" />\n </div>\n <div *ngSwitchCase=\"'Amount'\">\n <adf-amount-editor\n [table]=\"table\"\n [row]=\"row\"\n [column]=\"column\" />\n </div>\n <div *ngSwitchDefault>\n <adf-text-editor\n [table]=\"table\"\n [row]=\"row\"\n [column]=\"column\" />\n </div>\n </div>\n </div>\n <error-widget [error]=\"validationSummary\" />\n <div>\n <button mat-button (click)=\"onCancelChanges()\">Cancel</button>\n <button mat-button (click)=\"onSaveChanges()\">Save</button>\n </div>\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/component-selector */\n\nimport { WidgetVisibilityService, WidgetComponent, FormService, ErrorWidgetComponent } from '@alfresco/adf-core';\nimport { ChangeDetectorRef, Component, ElementRef, OnInit, ViewEncapsulation } from '@angular/core';\nimport { DynamicTableColumn } from './editors/models/dynamic-table-column.model';\nimport { DynamicTableRow } from './editors/models/dynamic-table-row.model';\nimport { DynamicTableModel } from './editors/models/dynamic-table.widget.model';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { RowEditorComponent } from './editors/row-editor/row.editor';\n\n@Component({\n selector: 'dynamic-table-widget',\n imports: [CommonModule, TranslatePipe, MatCheckboxModule, MatButtonModule, MatIconModule, RowEditorComponent, ErrorWidgetComponent],\n templateUrl: './dynamic-table.widget.html',\n styleUrls: ['./dynamic-table.widget.scss'],\n host: {\n '(click)': 'event($event)',\n '(blur)': 'event($event)',\n '(change)': 'event($event)',\n '(focus)': 'event($event)',\n '(focusin)': 'event($event)',\n '(focusout)': 'event($event)',\n '(input)': 'event($event)',\n '(invalid)': 'event($event)',\n '(select)': 'event($event)'\n },\n encapsulation: ViewEncapsulation.None\n})\nexport class DynamicTableWidgetComponent extends WidgetComponent implements OnInit {\n content: DynamicTableModel;\n\n editMode: boolean = false;\n editRow: DynamicTableRow = null;\n\n private selectArrayCode = [32, 0, 13];\n\n constructor(\n public formService: FormService,\n public elementRef: ElementRef,\n private visibilityService: WidgetVisibilityService,\n private cd: ChangeDetectorRef\n ) {\n super(formService);\n }\n\n ngOnInit() {\n if (this.field) {\n this.content = new DynamicTableModel(this.field, this.formService);\n this.visibilityService.refreshVisibility(this.field.form);\n if (this.field.type === 'readonly') {\n this.readOnly = true;\n }\n }\n }\n\n forceFocusOnAddButton() {\n if (this.content) {\n this.cd.detectChanges();\n const buttonAddRow = this.elementRef.nativeElement.querySelector('#' + this.content.id + '-add-row') as HTMLButtonElement;\n if (this.isDynamicTableReady(buttonAddRow)) {\n buttonAddRow.focus();\n }\n }\n }\n\n private isDynamicTableReady(buttonAddRow: HTMLButtonElement) {\n return this.field && !this.editMode && buttonAddRow;\n }\n\n isValid() {\n let valid = true;\n\n if (this.content?.field) {\n valid = this.content.field.isValid;\n }\n\n return valid;\n }\n\n onRowClicked(row: DynamicTableRow) {\n if (this.content) {\n this.content.selectedRow = row;\n }\n }\n\n onKeyPressed($event: KeyboardEvent, row: DynamicTableRow) {\n if (this.content && this.isEnterOrSpacePressed($event.keyCode)) {\n this.content.selectedRow = row;\n }\n }\n\n private isEnterOrSpacePressed(keyCode: number) {\n return this.selectArrayCode.indexOf(keyCode) !== -1;\n }\n\n hasSelection(): boolean {\n return !!this.content?.selectedRow;\n }\n\n moveSelectionUp(): boolean {\n if (this.content && !this.readOnly) {\n this.content.moveRow(this.content.selectedRow, -1);\n return true;\n }\n return false;\n }\n\n moveSelectionDown(): boolean {\n if (this.content && !this.readOnly) {\n this.content.moveRow(this.content.selectedRow, 1);\n return true;\n }\n return false;\n }\n\n deleteSelection(): boolean {\n if (this.content && !this.readOnly) {\n this.content.deleteRow(this.content.selectedRow);\n return true;\n }\n return false;\n }\n\n addNewRow(): boolean {\n if (this.content && !this.readOnly) {\n this.editRow = {\n isNew: true,\n selected: false,\n value: {}\n };\n this.editMode = true;\n return true;\n }\n return false;\n }\n\n editSelection(): boolean {\n if (this.content && !this.readOnly) {\n this.editRow = this.copyRow(this.content.selectedRow);\n this.editMode = true;\n return true;\n }\n return false;\n }\n\n getCellValue(row: DynamicTableRow, column: DynamicTableColumn): any {\n if (this.content) {\n const cellValue = this.content.getCellValue(row, column);\n if (column.type === 'Amount') {\n return (column.amountCurrency || '$') + ' ' + (cellValue || 0);\n }\n return cellValue;\n }\n return null;\n }\n\n onSaveChanges() {\n if (this.content) {\n if (this.editRow.isNew) {\n const row = this.copyRow(this.editRow);\n this.content.selectedRow = null;\n this.content.addRow(row);\n this.editRow.isNew = false;\n } else {\n this.content.selectedRow.value = this.copyObject(this.editRow.value);\n }\n this.content.flushValue();\n }\n this.editMode = false;\n this.forceFocusOnAddButton();\n }\n\n onCancelChanges() {\n this.editMode = false;\n this.editRow = null;\n this.forceFocusOnAddButton();\n }\n\n copyRow(row: DynamicTableRow): DynamicTableRow {\n return { value: this.copyObject(row.value) } as DynamicTableRow;\n }\n\n private copyObject(obj: any): any {\n let result = obj;\n\n if (typeof obj === 'object' && obj !== null && obj !== undefined) {\n result = Object.assign({}, obj);\n Object.keys(obj).forEach((key) => {\n if (typeof obj[key] === 'object') {\n result[key] = this.copyObject(obj[key]);\n }\n });\n }\n\n return result;\n }\n}\n","<div class=\"adf-dynamic-table-scrolling {{field.className}}\" [class.adf-invalid]=\"!isValid()\">\n <div class=\"adf-label\">{{content.name | translate }}<span class=\"adf-asterisk\" [style.visibility]=\"isRequired() ? 'visible' : 'hidden'\">*</span></div>\n\n <div *ngIf=\"!editMode\">\n <div class=\"adf-table-container\">\n <table class=\"adf-full-width adf-dynamic-table\" id=\"dynamic-table-{{content.id}}\">\n <thead>\n <tr>\n <th *ngFor=\"let column of content.visibleColumns\">{{column.name}}</th>\n </tr>\n </thead>\n <tbody>\n <tr\n *ngFor=\"let row of content.rows; let idx = index\"\n role=\"button\"\n tabindex=\"0\"\n id=\"{{content.id}}-row-{{idx}}\"\n [class.adf-dynamic-table-widget__row-selected]=\"row.selected\"\n (keyup)=\"onKeyPressed($event, row)\"\n >\n <td\n *ngFor=\"let column of content.visibleColumns\"\n tabindex=\"0\"\n role=\"button\"\n (keyup.enter)=\"onRowClicked(row)\"\n (click)=\"onRowClicked(row)\"\n >\n <span *ngIf=\"column.type !== 'Boolean' else checkbox\"> {{ getCellValue(row, column) }} </span>\n <ng-template #checkbox>\n <mat-checkbox disabled [checked]=\"getCellValue(row, column)\" />\n </ng-template>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n\n <div *ngIf=\"!readOnly\">\n <button mat-button\n data-automation-id=\"dynamic-table-button-move-up\"\n [disabled]=\"!hasSelection()\"\n (click)=\"moveSelectionUp()\">\n <mat-icon>arrow_upward</mat-icon>\n </button>\n <button mat-button\n data-automation-id=\"dynamic-table-button-move-down\"\n [disabled]=\"!hasSelection()\"\n (click)=\"moveSelectionDown()\">\n <mat-icon>arrow_downward</mat-icon>\n </button>\n <button mat-button\n data-automation-id=\"dynamic-table-button-add-row\"\n [disabled]=\"field.readOnly\"\n id=\"{{content.id}}-add-row\"\n (click)=\"addNewRow()\">\n <mat-icon>add_circle_outline</mat-icon>\n </button>\n <button mat-button\n data-automation-id=\"dynamic-table-button-remove\"\n [disabled]=\"!hasSelection()\"\n (click)=\"deleteSelection()\">\n <mat-icon>remove_circle_outline</mat-icon>\n </button>\n <button mat-button\n data-automation-id=\"dynamic-table-button-edit\"\n [disabled]=\"!hasSelection()\"\n (click)=\"editSelection()\">\n <mat-icon>edit</mat-icon>\n </button>\n </div>\n </div>\n\n <row-editor *ngIf=\"editMode\" [table]=\"content\" [row]=\"editRow\" (save)=\"onSaveChanges()\" (cancel)=\"onCancelChanges()\" />\n <error-widget [error]=\"field.validationSummary\" />\n <error-widget *ngIf=\"isInvalidFieldRequired()\" required=\"{{ 'FORM.FIELD.REQUIRED' | translate }}\" />\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/component-selector */\n\nexport interface DynamicTableRow {\n isNew: boolean;\n selected: boolean;\n value: any;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DropdownEditorComponent } from './editors/dropdown/dropdown.editor';\nimport { AmountEditorComponent } from './editors/amount/amount.editor';\nimport { BooleanEditorComponent } from './editors/boolean/boolean.editor';\nimport { DateEditorComponent } from './editors/date/date.editor';\nimport { RowEditorComponent } from './editors/row-editor/row.editor';\nimport { TextEditorComponent } from './editors/text/text.editor';\nimport { DateTimeEditorComponent } from './editors/datetime/datetime.editor';\nimport { DynamicTableWidgetComponent } from './dynamic-table.widget';\n\nexport * from './editors/dropdown/dropdown.editor';\nexport * from './editors/amount/amount.editor';\nexport * from './editors/boolean/boolean.editor';\nexport * from './editors/date/date.editor';\nexport * from './editors/datetime/datetime.editor';\nexport * from './editors/row-editor/row.editor';\nexport * from './editors/text/text.editor';\nexport * from './editors/models/dynamic-table-row.model';\nexport * from './dynamic-table.widget';\n\nexport const DYNAMIC_TABLE_WIDGET_DIRECTIVES = [\n DynamicTableWidgetComponent,\n DropdownEditorComponent,\n AmountEditorComponent,\n BooleanEditorComponent,\n DateEditorComponent,\n DateTimeEditorComponent,\n RowEditorComponent,\n TextEditorComponent\n] as const;\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './public-api';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Injectable } from '@angular/core';\nimport { AlfrescoApi } from '@alfresco/js-api';\nimport { AlfrescoApiService } from '@alfresco/adf-content-services';\n\n@Injectable({ providedIn: 'root' })\nexport class ExternalAlfrescoApiService extends AlfrescoApiService {\n init(ecmHost: string, contextRoot: string) {\n const domainPrefix = this.createPrefixFromHost(ecmHost);\n\n const config = {\n provider: 'ECM',\n hostEcm: ecmHost,\n authType: 'BASIC',\n contextRoot,\n domainPrefix\n };\n this.setup(config);\n this.alfrescoApiInitialized.next(true);\n }\n\n private setup(config) {\n if (this.alfrescoApi) {\n this.alfrescoApi.setConfig(config);\n } else {\n this.alfrescoApi = new AlfrescoApi(config);\n }\n }\n\n private createPrefixFromHost(url: string): string {\n const match = url.match(/:\\/\\/(www[0-9]?\\.)?(.[^/:]+)/i);\n let result = null;\n if (match != null && match.length > 2 && typeof match[2] === 'string' && match[2].length > 0) {\n result = match[2];\n }\n return result;\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, DestroyRef, inject, Inject, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { AuthenticationService, LoginDialogPanelComponent, TranslationService } from '@alfresco/adf-core';\nimport { AttachFileWidgetDialogComponentData } from './attach-file-widget-dialog-component.interface';\nimport {\n AlfrescoApiService,\n ContentNodeSelectorPanelComponent,\n DocumentListService,\n SearchService,\n SitesService\n} from '@alfresco/adf-content-services';\nimport { ExternalAlfrescoApiService } from '../../services/external-alfresco-api.service';\nimport { Node } from '@alfresco/js-api';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'adf-attach-file-widget-dialog',\n imports: [CommonModule, MatDialogModule, LoginDialogPanelComponent, MatButtonModule, TranslatePipe, ContentNodeSelectorPanelComponent],\n templateUrl: './attach-file-widget-dialog.component.html',\n styleUrls: ['./attach-file-widget-dialog.component.scss'],\n encapsulation: ViewEncapsulation.None,\n providers: [\n AuthenticationService,\n DocumentListService,\n SitesService,\n SearchService,\n { provide: AlfrescoApiService, useClass: ExternalAlfrescoApiService }\n ]\n})\nexport class AttachFileWidgetDialogComponent implements OnInit {\n @ViewChild('adfLoginPanel')\n loginPanel: LoginDialogPanelComponent;\n\n title: string;\n action: string;\n buttonActionName: string;\n chosenNode: Node[];\n\n private readonly destroyRef = inject(DestroyRef);\n\n constructor(\n private translation: TranslationService,\n @Inject(MAT_DIALOG_DATA) public data: AttachFileWidgetDialogComponentData,\n private externalApiService: AlfrescoApiService,\n private authenticationService: AuthenticationService,\n private matDialogRef: MatDialogRef<AttachFileWidgetDialogComponent>\n ) {\n (externalApiService as ExternalAlfrescoApiService).init(data.ecmHost, data.context);\n this.action = data.actionName ? data.actionName.toUpperCase() : 'CHOOSE';\n this.buttonActionName = `ATTACH-FILE.ACTIONS.${this.action}`;\n this.updateTitle('DROPDOWN.MY_FILES_OPTION');\n }\n\n ngOnInit() {\n this.authenticationService.onLogin.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => this.registerAndClose());\n\n if (this.isLoggedIn()) {\n this.registerAndClose();\n }\n }\n isLoggedIn(): boolean {\n return !!this.externalApiService.getInstance()?.isLoggedIn();\n }\n\n performLogin() {\n this.loginPanel.submitForm();\n }\n\n close() {\n this.data.selected.complete();\n }\n\n onSelect(nodeList: Node[]) {\n this.chosenNode = nodeList;\n }\n\n onSiteChange(siteTitle: string) {\n this.updateTitle(siteTitle);\n }\n\n onClick() {\n this.data.selected.next(this.chosenNode);\n this.data.selected.complete();\n }\n\n updateTitle(siteTitle: string) {\n if (this.action === 'CHOOSE' && siteTitle) {\n this.title = this.getTitleTranslation(this.action, siteTitle);\n }\n }\n\n getTitleTranslation(action: string, name?: string): string {\n return this.translation.instant(`ATTACH-FILE.ACTIONS.${action}_ITEM`, { name: this.translation.instant(name) });\n }\n\n hasNodeSelected(): boolean {\n return this.chosenNode?.length > 0;\n }\n\n private registerAndClose() {\n if (this.data) {\n this.data.registerExternalHost?.(this.data.accountIdentifier, this.externalApiService);\n\n if (this.data.loginOnly) {\n this.data.selected?.complete();\n this.matDialogRef.close();\n }\n }\n }\n}\n","<header\n mat-dialog-title\n data-automation-id=\"content-node-selector-title\">\n <span *ngIf=\"isLoggedIn(); else loginTitle\">{{title}}</span>\n <ng-template #loginTitle>{{data.title}}</ng-template>\n</header>\n\n<mat-dialog-content class=\"adf-login-dialog-content\">\n <adf-login-dialog-panel id=\"attach-file-login-panel\" #adfLoginPanel *ngIf=\"!isLoggedIn()\" />\n <adf-content-node-selector-panel *ngIf=\"isLoggedIn()\"\n id=\"attach-file-content-node\"\n [currentFolderId]=\"data?.currentFolderId\"\n [isSelectionValid]=\"data?.isSelectionValid\"\n [showFilesInResult]=\"data?.showFilesInResult\"\n (select)=\"onSelect($event)\"\n (siteChange)=\"onSiteChange($event)\" />\n</mat-dialog-content>\n\n<mat-dialog-actions class=\"adf-login-dialog-actions\" align=\"end\">\n <button\n mat-button\n (click)=\"close()\"\n data-automation-id=\"attach-file-dialog-actions-cancel\">{{ 'ATTACH-FILE.ACTIONS.CANCEL' | translate }}\n </button>\n\n <button *ngIf=\"!isLoggedIn()\"\n mat-button\n (click)=\"performLogin()\"\n data-automation-id=\"attach-file-dialog-actions-login\">{{ 'ATTACH-FILE.ACTIONS.LOGIN' | translate }}\n </button>\n\n <button *ngIf=\"isLoggedIn()\"\n mat-button\n [disabled]=\"!hasNodeSelected()\"\n class=\"adf-choose-action\"\n (click)=\"onClick()\"\n data-automation-id=\"attach-file-dialog-actions-choose\">{{ buttonActionName | translate }}\n </button>\n\n</mat-dialog-actions>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AlfrescoApiService } from '@alfresco/adf-content-services';\nimport { MatDialog } from '@angular/material/dialog';\nimport { EventEmitter, Injectable, Output } from '@angular/core';\nimport { TranslationService } from '@alfresco/adf-core';\nimport { Observable, of, Subject } from 'rxjs';\nimport { AttachFileWidgetDialogComponentData } from './attach-file-widget-dialog-component.interface';\nimport { AlfrescoEndpointRepresentation, Node, ContentApi } from '@alfresco/js-api';\nimport { AttachFileWidgetDialogComponent } from './attach-file-widget-dialog.component';\nimport { switchMap } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport class AttachFileWidgetDialogService {\n /** Emitted when an error occurs. */\n @Output()\n error = new EventEmitter<any>();\n\n private externalApis: { [key: string]: AlfrescoApiService } = {};\n\n constructor(private dialog: MatDialog, private translation: TranslationService) {}\n\n /**\n * Opens a dialog to choose a file to upload.\n *\n * @param repository Alfresco endpoint that represents the content service\n * @param currentFolderId Upload file from specific folder\n * @param accountIdentifier account identifier\n * @returns Information about the chosen file(s)\n */\n openLogin(repository: AlfrescoEndpointRepresentation, currentFolderId = '-my-', accountIdentifier?: string): Observable<Node[]> {\n const { title, ecmHost, selected, registerExternalHost } = this.constructPayload(repository);\n const data: AttachFileWidgetDialogComponentData = {\n title,\n selected,\n ecmHost,\n currentFolderId,\n isSelectionValid: (entry: Node) => entry.isFile,\n showFilesInResult: true,\n registerExternalHost,\n accountIdentifier\n };\n\n this.openLoginDialog(data, 'adf-attach-file-widget-dialog', '630px');\n return selected;\n }\n\n downloadURL(repository: AlfrescoEndpointRepresentation, sourceId: string): Observable<string> {\n const { accountIdentifier } = this.constructPayload(repository);\n\n if (this.externalApis[accountIdentifier]?.getInstance()) {\n const contentApi = new ContentApi(this.externalApis[accountIdentifier].getInstance());\n\n if (this.externalApis[accountIdentifier].getInstance().isLoggedIn()) {\n return of(contentApi.getContentUrl(sourceId));\n }\n }\n\n return this.showExternalHostLoginDialog(repository).pipe(\n switchMap(() => {\n const contentApi = new ContentApi(this.externalApis[accountIdentifier].getInstance());\n return of(contentApi.getContentUrl(sourceId));\n })\n );\n }\n\n addService(accountIdentifier: string, apiService: AlfrescoApiService) {\n if (!this.externalApis[accountIdentifier]) {\n this.externalApis[accountIdentifier] = apiService;\n }\n }\n\n /** Closes the currently open dialog. */\n close() {\n this.dialog.closeAll();\n }\n\n private openLoginDialog(data: AttachFileWidgetDialogComponentData, currentPanelClass: string, chosenWidth: string) {\n this.dialog.open(AttachFileWidgetDialogComponent, { data, panelClass: currentPanelClass, width: chosenWidth });\n }\n\n private showExternalHostLoginDialog(repository: AlfrescoEndpointRepresentation): Observable<AlfrescoApiService> {\n const data = {\n ...this.constructPayload(repository),\n loginOnly: true\n };\n return this.dialog.open(AttachFileWidgetDialogComponent, { data, panelClass: 'adf-attach-file-widget-dialog', width: '630px' }).afterClosed();\n }\n\n private constructPayload(repository: AlfrescoEndpointRepresentation) {\n const accountIdentifier = 'alfresco-' + repository.id + '-' + repository.name;\n const ecmHost = repository.repositoryUrl.replace('/alfresco', '');\n const selected = new Subject<Node[]>();\n selected.subscribe({\n complete: this.close.bind(this)\n });\n const title = this.getLoginTitleTranslation(ecmHost);\n const registerExternalHost = this.addService.bind(this);\n return { ecmHost, accountIdentifier, selected, title, registerExternalHost };\n }\n\n private getLoginTitleTranslation(ecmHost: string): string {\n return this.translation.instant(`ATTACH-FILE.DIALOG.LOGIN`, { ecmHost });\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AlfrescoApiService, SitesService } from '@alfresco/adf-content-services';\nimport { ExternalContent } from '@alfresco/adf-core';\nimport { Injectable } from '@angular/core';\nimport {\n IntegrationAlfrescoOnPremiseApi,\n Node,\n RelatedContentRepresentation,\n ActivitiContentApi,\n AlfrescoEndpointRepresentation,\n AlfrescoContentRepresentation\n} from '@alfresco/js-api';\nimport { Observable, from, throwError } from 'rxjs';\nimport { map, catchError } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ActivitiContentService {\n static UNKNOWN_ERROR_MESSAGE: string = 'Unknown error';\n static GENERIC_ERROR_MESSAGE: string = 'Server error';\n\n private _integrationAlfrescoOnPremiseApi: IntegrationAlfrescoOnPremiseApi;\n get integrationAlfrescoOnPremiseApi(): IntegrationAlfrescoOnPremiseApi {\n this._integrationAlfrescoOnPremiseApi =\n this._integrationAlfrescoOnPremiseApi ?? new IntegrationAlfrescoOnPremiseApi(this.apiService.getInstance());\n return this._integrationAlfrescoOnPremiseApi;\n }\n\n private _contentApi: ActivitiContentApi;\n get contentApi(): ActivitiContentApi {\n this._contentApi = this._contentApi ?? new ActivitiContentApi(this.apiService.getInstance());\n return this._contentApi;\n }\n\n constructor(private apiService: AlfrescoApiService, private sitesService: SitesService) {}\n\n /**\n * Returns a list of child nodes below the specified folder\n *\n * @param accountId account id\n * @param folderId folder id\n * @returns list of external content instances\n */\n getAlfrescoNodes(accountId: string, folderId: string): Observable<AlfrescoContentRepresentation[]> {\n const accountShortId = accountId.replace('alfresco-', '');\n return from(this.integrationAlfrescoOnPremiseApi.getContentInFolder(accountShortId, folderId)).pipe(\n map((res) => res?.data || []),\n catchError((err) => this.handleError(err))\n );\n }\n\n /**\n * Returns a list of all the repositories configured\n *\n * @param tenantId tenant id\n * @param includeAccount include accounts\n * @returns list of endpoints\n */\n getAlfrescoRepositories(tenantId?: string, includeAccount?: boolean): Observable<AlfrescoEndpointRepresentation[]> {\n const opts = {\n tenantId,\n includeAccounts: includeAccount ? includeAccount : true\n };\n return from(this.integrationAlfrescoOnPremiseApi.getRepositories(opts)).pipe(\n map((res) => res?.data || []),\n catchError((err) => this.handleError(err))\n );\n }\n\n /**\n * Returns a list of child nodes below the specified folder\n *\n * @param accountId account id\n * @param node node details\n * @param siteId site id\n * @returns link to external content\n */\n linkAlfrescoNode(accountId: string, node: ExternalContent, siteId: string): Observable<RelatedContentRepresentation> {\n return from(\n this.contentApi.createTemporaryRelatedContent({\n link: true,\n name: node.title,\n simpleType: node.simpleType,\n source: accountId,\n sourceId: node.id + '@' + siteId\n })\n ).pipe(\n map((res) => res || {}),\n catchError((err) => this.handleError(err))\n );\n }\n\n applyAlfrescoNode(node: Node, siteId: string, accountId: string): Observable<RelatedContentRepresentation> {\n const currentSideId = siteId ? siteId : this.sitesService.getSiteNameFromNodePath(node);\n const params: RelatedContentRepresentation = {\n source: accountId,\n mimeType: node?.content?.mimeType,\n sourceId: node.id + ';' + node.properties?.['cm:versionLabel'] + '@' + currentSideId,\n name: node.name,\n link: node.isLink\n };\n return from(this.contentApi.createTemporaryRelatedContent(params)).pipe(\n map((res) => res || {}),\n catchError((err) => this.handleError(err))\n );\n }\n\n private handleError(error: any): Observable<never> {\n let errMsg = ActivitiContentService.UNKNOWN_ERROR_MESSAGE;\n if (error) {\n errMsg = error.message\n ? error.message\n : error.status\n ? `${error.status} - ${error.statusText}`\n : ActivitiContentService.GENERIC_ERROR_MESSAGE;\n }\n return throwError(errMsg);\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/component-selector */\n\nimport { Component, DestroyRef, inject, isDevMode, OnInit, ViewEncapsulation } from '@angular/core';\nimport { AppConfigService, AppConfigValues, DownloadService, ErrorWidgetComponent, FormService, ThumbnailService } from '@alfresco/adf-core';\nimport { AlfrescoIconComponent, ContentNodeDialogService, ContentService } from '@alfresco/adf-content-services';\nimport { AlfrescoEndpointRepresentation, Node, NodeChildAssociation, RelatedContentRepresentation } from '@alfresco/js-api';\nimport { from, of, zip } from 'rxjs';\nimport { mergeMap } from 'rxjs/operators';\nimport { AttachFileWidgetDialogService } from './attach-file-widget-dialog.service';\nimport { UploadWidgetComponent } from '../upload/upload.widget';\nimport { ProcessContentService } from '../../services/process-content.service';\nimport { ActivitiContentService } from '../../services/activiti-alfresco.service';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatListModule } from '@angular/material/list';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'attach-widget',\n imports: [CommonModule, TranslatePipe, MatIconModule, MatButtonModule, MatMenuModule, MatListModule, ErrorWidgetComponent, AlfrescoIconComponent],\n templateUrl: './attach-file-widget.component.html',\n styleUrls: ['./attach-file-widget.component.scss'],\n host: {\n '(click)': 'event($event)',\n '(blur)': 'event($event)',\n '(change)': 'event($event)',\n '(focus)': 'event($event)',\n '(focusin)': 'event($event)',\n '(focusout)': 'event($event)',\n '(input)': 'event($event)',\n '(invalid)': 'event($event)',\n '(select)': 'event($event)'\n },\n encapsulation: ViewEncapsulation.None\n})\nexport class AttachFileWidgetComponent extends UploadWidgetComponent implements OnInit {\n typeId = 'AttachFileWidgetComponent';\n repositoryList: AlfrescoEndpointRepresentation[] = [];\n isStartProcessPage = false;\n\n private tempFilesList = [];\n\n private readonly destroyRef = inject(DestroyRef);\n\n constructor(\n public formService: FormService,\n public thumbnails: ThumbnailService,\n public processContentService: ProcessContentService,\n private activitiContentService: ActivitiContentService,\n private contentService: ContentService,\n private contentDialog: ContentNodeDialogService,\n private appConfigService: AppConfigService,\n private downloadService: DownloadService,\n private router: Router,\n private activatedRoute: ActivatedRoute,\n private attachDialogService: AttachFileWidgetDialogService\n ) {\n super(formService, thumbnails, processContentService);\n }\n\n ngOnInit() {\n super.ngOnInit();\n this.isStartProcessPage = this.router.url.split('?')[0].includes('start-process');\n if (Array.isArray(this.field.value) && this.isFileSourceConfigured()) {\n this.tempFilesList.push(...this.field.value);\n }\n\n this.activitiContentService.getAlfrescoRepositories().subscribe((repoList) => {\n this.repositoryList = repoList;\n });\n\n this.formService.taskSaved.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((formSaved) => {\n if (formSaved.form.id === this.field.form.id) {\n this.tempFilesList = [];\n }\n });\n }\n\n isFileSourceConfigured(): boolean {\n return !!this.field.params?.fileSource;\n }\n\n isMultipleSourceUpload(): boolean {\n return !this.field.readOnly && this.isFileSourceConfigured() && !this.isOnlyLocalSourceSelected();\n }\n\n isAllFileSourceSelected(): boolean {\n return this.field.params?.fileSource?.serviceId === 'all-file-sources' && !this.field.params.link;\n }\n\n isOnlyLocalSourceSelected(): boolean {\n return this.field.params?.fileSource?.serviceId === 'local-file';\n }\n\n isSimpleUploadButton(): boolean {\n return (this.isUploadButtonVisible() && !this.isFileSourceConfigured()) || this.isOnlyLocalSourceSelected();\n }\n\n isUploadButtonVisible(): boolean {\n return (!this.hasFile || this.multipleOption) && !this.field.readOnly;\n }\n\n isDefinedSourceFolder(): boolean {\n return !!this.field.params?.fileSource?.selectedFolder;\n }\n\n isTemporaryFile(file: { name?: string }): boolean {\n return this.tempFilesList.findIndex((elem) => elem.name === file.name) >= 0;\n }\n\n getNodeFromTempFile(file: { name?: string }): NodeChildAssociation {\n return this.tempFilesList.find((elem) => elem.name === file.name);\n }\n\n openSelectDialogFromFileSource() {\n const params = this.field.params;\n const repository = this.repositoryList.find((repo) => repo.name === params?.fileSource?.name);\n if (repository && this.isExternalHost(repository)) {\n this.uploadFileFromExternalCS(repository, params?.fileSource?.selectedFolder?.pathId);\n } else {\n this.contentDialog.openFileBrowseDialogByFolderId(params.fileSource.selectedFolder.pathId).subscribe((selections: Node[]) => {\n this.tempFilesList.push(...selections);\n this.updateNodesParams();\n this.uploadFileFromCS(\n selections,\n this.field.params.fileSource.selectedFolder.accountId,\n this.field.params.fileSource.selectedFolder.siteId\n );\n });\n }\n }\n\n onAttachFileChanged(event: any) {\n this.tempFilesList.push(...Array.from(event.target.files));\n this.onFileChanged(event);\n }\n\n onRemoveAttachFile(file: File | RelatedContentRepresentation) {\n if (this.isTemporaryFile(file)) {\n this.tempFilesList.splice(this.tempFilesList.indexOf((file as RelatedContentRepresentation).contentBlob), 1);\n this.updateNodesParams();\n }\n this.removeFile(file);\n }\n\n onAttachFileClicked(file: any) {\n if (file.isExternal || (!file.sourceId && (this.isStartProcessPage || !file.contentAvailable))) {\n return;\n }\n if (this.isTemporaryFile(file)) {\n this.formService.formContentClicked.next(file);\n } else {\n this.fileClicked(file);\n }\n }\n\n downloadContent(file: any | RelatedContentRepresentation): void {\n if (this.isTemporaryFile(file)) {\n const fileBlob = (file as RelatedContentRepresentation).contentBlob;\n if (fileBlob) {\n this.downloadService.downloadBlob(fileBlob, file.name);\n } else {\n const nodeUploaded: NodeChildAssociation = this.getNodeFromTempFile(file);\n const nodeUrl = this.contentService.getContentUrl(nodeUploaded.id);\n this.downloadService.downloadUrl(nodeUrl, file.name);\n }\n }\n if (file.sourceId) {\n const sourceHost = this.findSource(file.source);\n if (sourceHost && this.isExternalHost(sourceHost)) {\n this.attachDialogService.downloadURL(sourceHost, file.sourceId).subscribe((nodeUrl) => {\n this.downloadService.downloadUrl(nodeUrl, file.name);\n });\n } else {\n const nodeUrl = this.contentService.getContentUrl(file.sourceId);\n this.downloadService.downloadUrl(nodeUrl, file.name);\n }\n } else {\n this.processContentService.getFileRawContent(file.id).subscribe(\n (blob: Blob) => {\n this.downloadService.downloadBlob(blob, file.name);\n },\n () => {}\n );\n }\n }\n\n openSelectDialog(repository: AlfrescoEndpointRepresentation) {\n if (this.isExternalHost(repository) && !isDevMode()) {\n this.uploadFileFromExternalCS(repository);\n } else {\n this.contentDialog.openFileBrowseDialogByDefaultLocation().subscribe((selections: Node[]) => {\n if (selections.length) {\n this.tempFilesList.push(...selections);\n this.updateNodesParams();\n this.uploadFileFromCS(selections, `alfresco-${repository.id}-${repository.name}Alfresco`);\n }\n });\n }\n }\n\n isSelected(): boolean {\n return this.hasFile;\n }\n\n private isExternalHost(repository: AlfrescoEndpointRepresentation): boolean {\n const currentECMHost = this.getDomainHost(this.appConfigService.get(AppConfigValues.ECMHOST));\n const chosenRepositoryHost = this.getDomainHost(repository.repositoryUrl);\n return chosenRepositoryHost !== currentECMHost;\n }\n\n private findSource(sourceIdentifier: string): AlfrescoEndpointRepresentation {\n return this.repositoryList.find((repository) => sourceIdentifier === `alfresco-${repository.id}-${repository.name}`);\n }\n\n private uploadFileFromExternalCS(repository: AlfrescoEndpointRepresentation, currentFolderId?: string) {\n const accountIdentifier = `alfresco-${repository.id}-${repository.name}Alfresco`;\n this.attachDialogService.openLogin(repository, currentFolderId, accountIdentifier).subscribe((selections) => {\n selections.forEach((node) => (node['isExternal'] = true));\n this.tempFilesList.push(...selections);\n this.uploadFileFromCS(selections, accountIdentifier);\n });\n }\n\n private uploadFileFromCS(fileNodeList: Node[], accountId: string, siteId?: string) {\n const filesSaved = [];\n\n fileNodeList.forEach((node) => {\n node.isLink = this.field.params.link;\n });\n\n from(fileNodeList)\n .pipe(\n mergeMap((node) =>\n zip(of(node?.content?.mimeType), this.activitiContentService.applyAlfrescoNode(node, siteId, accountId), of(node['isExternal']))\n )\n )\n .subscribe(\n ([mimeType, res, isExternal]) => {\n res.mimeType = mimeType;\n res['isExternal'] = isExternal;\n filesSaved.push(res);\n },\n () => {},\n () => {\n const previousFiles = this.field.value ? this.field.value : [];\n this.field.value = [...previousFiles, ...filesSaved];\n this.field.json.value = [...previousFiles, ...filesSaved];\n this.hasFile = true;\n }\n );\n }\n\n private updateNodesParams(): void {\n this.router.navigate([], {\n relativeTo: this.activatedRoute,\n queryParams: { nodes: this.tempFilesList.map((file) => file.id).join(',') },\n queryParamsHandling: 'merge'\n });\n }\n\n private getDomainHost(urlToCheck: string): string {\n const result = urlToCheck.match('^(?:https?://)?(?:[^@/\\n]+@)?(?:www\\\\.)?([^:/?\\n]+)');\n return result[1];\n }\n}\n","<div class=\"adf-attach-widget {{ field.className }}\" [class.adf-readonly]=\"field.readOnly\">\n <label class=\"adf-label\" [attr.for]=\"field.id\"\n >{{ field.name | translate }}\n <span class=\"adf-asterisk\" [style.visibility]=\"isRequired() ? 'visible' : 'hidden'\">*</span>\n </label>\n <div class=\"adf-attach-widget-container\">\n <div id=\"adf-attach-widget-simple-upload\" *ngIf=\"isSimpleUploadButton() && isUploadButtonVisible()\">\n <a mat-raised-button color=\"primary\">\n {{ 'FORM.FIELD.UPLOAD' | translate }}\n <mat-icon>file_upload</mat-icon>\n <input #uploadFiles [multiple]=\"multipleOption\" type=\"file\" [id]=\"field.id\" (change)=\"onAttachFileChanged($event)\" />\n </a>\n </div>\n <div class=\"adf-attach-widget__menu-upload\" (focusout)=\"markAsTouched()\" *ngIf=\"isUploadButtonVisible() && isMultipleSourceUpload()\">\n <button mat-raised-button color=\"primary\" [matMenuTriggerFor]=\"menu\" [id]=\"field.id\">\n <mat-icon>attach_file</mat-icon>\n {{ 'FORM.FIELD.UPLOAD' | translate }}\n </button>\n <mat-menu #menu=\"matMenu\" class=\"adf-attach-widget__menu-content\">\n <button mat-menu-item (click)=\"uploadFile.click()\" id=\"attach-local-file\" *ngIf=\"isAllFileSourceSelected()\">\n {{ 'FORM.FIELD.LOCALSTORAGE' | translate }}\n <mat-icon>file_upload</mat-icon>\n <input\n #uploadFile\n class=\"adf-attach-widget__input-type\"\n [multiple]=\"multipleOption\"\n type=\"file\"\n [id]=\"field.id\"\n (change)=\"onAttachFileChanged($event)\"\n />\n </button>\n <button\n mat-menu-item\n *ngIf=\"isDefinedSourceFolder()\"\n id=\"attach-{{ field.params?.fileSource?.name }}\"\n (click)=\"openSelectDialogFromFileSource()\"\n >\n <mat-icon>\n <adf-alfresco-icon />\n </mat-icon>\n {{ field.params?.fileSource?.name }}\n </button>\n <div *ngIf=\"!isDefinedSourceFolder()\">\n <button mat-menu-item *ngFor=\"let repo of repositoryList\" id=\"attach-{{ repo?.name }}\" (click)=\"openSelectDialog(repo)\">\n <mat-icon>\n <adf-alfresco-icon />\n </mat-icon>\n {{ repo.name }}\n </button>\n </div>\n </mat-menu>\n </div>\n </div>\n</div>\n\n<div data-automation-id=\"adf-attach-widget-readonly-list\">\n <mat-list *ngIf=\"hasFile\">\n <mat-list-item class=\"adf-attach-files-row\" *ngFor=\"let file of field.value; index as i\">\n <mat-icon matListItemIcon>\n <img class=\"adf-attach-widget__icon\"\n [id]=\"'file-'+file.id+'-icon'\"\n [src]=\"file.content ? getIcon(file.content.mimeType) : getIcon(file.mimeType)\"\n [alt]=\"mimeTypeIcon\"\n (click)=\"onAttachFileClicked(file)\"\n (keyup.enter)=\"onAttachFileClicked(file)\"\n [attr.aria-label]=\"file.name\"\n [tabindex]=\"i\"/>\n </mat-icon>\n\n <div matListItemLine class=\"adf-attach-widget__label\">\n <span id=\"{{'file-'+file.id}}\"\n (click)=\"onAttachFileClicked(file)\"\n [title]=\"file.name\"\n (keyup.enter)=\"onAttachFileClicked(file)\"\n [tabindex]=\"i\" class=\"adf-file\">\n {{file.name}}\n </span>\n <button id=\"{{'file-'+file.id+'-option-menu'}}\" mat-icon-button [matMenuTriggerFor]=\"fileActionMenu\"\n [attr.aria-label]=\"'ADF_PROCESS_LIST.DETAILS.BUTTON.FILE_OPTION_MENU' | translate\">\n <mat-icon>more_vert</mat-icon>\n </button>\n </div>\n <mat-menu #fileActionMenu=\"matMenu\" xPosition=\"before\">\n <button\n id=\"{{ 'file-' + file.id + '-show-file' }}\"\n [disabled]=\"file.isExternal || !file.mimeType || (!file.sourceId && (isStartProcessPage || !file.contentAvailable))\"\n mat-menu-item\n (click)=\"onAttachFileClicked(file)\"\n >\n <mat-icon>visibility</mat-icon>\n <span>{{ 'FORM.FIELD.VIEW_FILE' | translate }}</span>\n </button>\n <button\n id=\"{{ 'file-' + file.id + '-download-file' }}\"\n [disabled]=\"file.isExternal || !file.mimeType\"\n mat-menu-item\n (click)=\"downloadContent(file)\"\n >\n <mat-icon>file_download</mat-icon>\n <span>{{ 'FORM.FIELD.DOWNLOAD_FILE' | translate }}</span>\n </button>\n <button\n *ngIf=\"!field.readOnly\"\n mat-menu-item\n [id]=\"'file-' + file.id + '-remove'\"\n (click)=\"onRemoveAttachFile(file)\"\n (keyup.enter)=\"onRemoveAttachFile(file)\"\n >\n <mat-icon class=\"mat-24\">highlight_off</mat-icon>\n <span>{{ 'FORM.FIELD.REMOVE_FILE' | translate }}</span>\n </button>\n </mat-menu>\n </mat-list-item>\n </mat-list>\n</div>\n\n<error-widget [error]=\"field.validationSummary\" />\n<error-widget *ngIf=\"!field.isValid && isTouched() && !isSelected()\" required=\"{{ 'FORM.FIELD.REQUIRED' | translate }}\" />\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/component-selector */\n\nimport { Component, ViewEncapsulation, OnInit } from '@angular/core';\nimport { WidgetComponent, FormService, ErrorWidgetComponent } from '@alfresco/adf-core';\nimport { ContentNodeDialogService, NodesApiService } from '@alfresco/adf-content-services';\nimport { Node } from '@alfresco/js-api';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatLineModule } from '@angular/material/core';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'attach-folder-widget',\n imports: [CommonModule, TranslatePipe, MatIconModule, MatLineModule, MatButtonModule, ErrorWidgetComponent],\n templateUrl: './attach-folder-widget.component.html',\n styleUrls: ['./attach-folder-widget.component.scss'],\n host: {\n '(click)': 'event($event)',\n '(blur)': 'event($event)',\n '(change)': 'event($event)',\n '(focus)': 'event($event)',\n '(focusin)': 'event($event)',\n '(focusout)': 'event($event)',\n '(input)': 'event($event)',\n '(invalid)': 'event($event)',\n '(select)': 'event($event)'\n },\n encapsulation: ViewEncapsulation.None\n})\nexport class AttachFolderWidgetComponent extends WidgetComponent implements OnInit {\n typeId = 'AttachFolderWidgetComponent';\n hasFolder: boolean = false;\n selectedFolderName: string = '';\n\n constructor(private contentDialog: ContentNodeDialogService, public formService: FormService, private nodeService: NodesApiService) {\n super();\n }\n\n ngOnInit() {\n if (this.field?.value) {\n this.hasFolder = true;\n this.nodeService.getNode(this.field.value).subscribe((node: Node) => {\n this.selectedFolderName = node.name;\n });\n }\n }\n\n isDefinedSourceFolder(): boolean {\n return !!this.field.params?.folderSource?.selectedFolder;\n }\n\n openSelectDialogFromFileSource() {\n const params = this.field.params;\n if (this.isDefinedSourceFolder()) {\n this.contentDialog.openFolderBrowseDialogByFolderId(params.folderSource.selectedFolder.pathId).subscribe((selections: Node[]) => {\n this.selectedFolderName = selections[0].name;\n this.field.value = selections[0].id;\n this.hasFolder = true;\n });\n } else {\n this.contentDialog.openFolderBrowseDialogBySite().subscribe((selections: Node[]) => {\n this.selectedFolderName = selections[0].name;\n this.field.value = selections[0].id;\n this.hasFolder = true;\n });\n }\n }\n\n removeFolder() {\n this.field.value = null;\n this.selectedFolderName = '';\n this.hasFolder = false;\n }\n}\n","<div class=\"adf-attach-folder-widget {{ field.className }}\" [class.adf-invalid]=\"!field.isValid\" [class.adf-readonly]=\"field.readOnly\">\n <label class=\"adf-label\" [attr.for]=\"field.id\"\n >{{ field.name | translate }}<span [style.visibility]=\"isRequired() ? 'visible' : 'hidden'\">*</span></label\n >\n <div class=\"adf-attach-folder-widget-container\">\n <div *ngIf=\"hasFolder\" class=\"adf-attach-folder-result\">\n <mat-icon>folder</mat-icon>\n <div class=\"adf-attach-folder-files-row\">\n <span matLine id=\"{{ 'folder-' + field?.id }}\" role=\"button\" tabindex=\"0\" class=\"adf-folder\">{{ selectedFolderName }}</span>\n <button *ngIf=\"!field.readOnly\" mat-icon-button [id]=\"'folder-' + field?.id + '-remove'\" (click)=\"removeFolder()\">\n <mat-icon class=\"mat-24\">highlight_off</mat-icon>\n </button>\n </div>\n </div>\n\n <div *ngIf=\"!hasFolder && !field.readOnly\">\n <button\n mat-raised-button\n color=\"primary\"\n (click)=\"openSelectDialogFromFileSource()\"\n [id]=\"'folder-' + field?.id + '-button'\"\n class=\"adf-attach-folder-menu-trigger\"\n >\n {{ 'FORM.FIELD.UPLOAD' | translate }}\n <mat-icon>cloud_upload</mat-icon>\n </button>\n </div>\n </div>\n <error-widget [error]=\"field.validationSummary\" />\n <error-widget *ngIf=\"isInvalidFieldRequired()\" required=\"{{ 'FORM.FIELD.REQUIRED' | translate }}\" />\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Subject } from 'rxjs';\nimport { Node } from '@alfresco/js-api';\n\nexport interface AttachFileWidgetDialogComponentData {\n title: string;\n actionName?: string;\n selected: Subject<Node[]>;\n currentFolderId: string;\n ecmHost: string;\n context?: string;\n isSelectionValid?: (entry: Node) => boolean;\n showFilesInResult?: boolean;\n loginOnly?: boolean;\n accountIdentifier?: string;\n registerExternalHost?: (...args) => void;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './attach-file-widget.component';\nexport * from './attach-folder-widget.component';\nexport * from './attach-file-widget-dialog-component.interface';\nexport * from './attach-file-widget-dialog.component';\nexport * from './attach-file-widget-dialog.service';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './public-api';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { UploadWidgetComponent } from './upload/upload.widget';\nimport { DocumentWidgetComponent } from './document/document.widget';\nimport { ContentWidgetComponent } from './document/content.widget';\nimport { PeopleWidgetComponent } from './people/people.widget';\nimport { FunctionalGroupWidgetComponent } from './functional-group/functional-group.widget';\nimport { RadioButtonsWidgetComponent } from './radio-buttons/radio-buttons.widget';\nimport { DropdownWidgetComponent } from './dropdown/dropdown.widget';\nimport { TypeaheadWidgetComponent } from './typeahead/typeahead.widget';\nimport { FileViewerWidgetComponent } from './file-viewer/file-viewer.widget';\nimport { DYNAMIC_TABLE_WIDGET_DIRECTIVES } from './dynamic-table';\nimport { AttachFileWidgetComponent, AttachFileWidgetDialogComponent, AttachFolderWidgetComponent } from './content-widget';\n\nexport * from './content-widget/public-api';\nexport * from './document/content.widget';\nexport * from './document/document.widget';\nexport * from './people/people.widget';\nexport * from './radio-buttons/radio-buttons.widget';\nexport * from './functional-group/functional-group.widget';\nexport * from './typeahead/typeahead.widget';\nexport * from './dropdown/dropdown.widget';\nexport * from './file-viewer/file-viewer.widget';\nexport * from './dynamic-table/index';\nexport * from './upload/upload.widget';\n\nexport const WIDGET_DIRECTIVES = [\n AttachFileWidgetComponent,\n AttachFolderWidgetComponent,\n AttachFileWidgetDialogComponent,\n ContentWidgetComponent,\n DocumentWidgetComponent,\n DropdownWidgetComponent,\n ...DYNAMIC_TABLE_WIDGET_DIRECTIVES,\n FileViewerWidgetComponent,\n FunctionalGroupWidgetComponent,\n PeopleWidgetComponent,\n RadioButtonsWidgetComponent,\n TypeaheadWidgetComponent,\n UploadWidgetComponent\n];\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './public-api';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './activiti-alfresco.service';\nexport * from './ecm-model.service';\nexport * from './editor.service';\nexport * from './external-alfresco-api.service';\nexport * from './model.service';\nexport * from './process-content.service';\nexport * from './process-definition.service';\nexport * from './task.service';\nexport * from './task-form.service';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Injectable } from '@angular/core';\nimport {\n FormFieldTypes,\n FormRenderingService\n} from '@alfresco/adf-core';\nimport { AttachFileWidgetComponent } from './widgets/content-widget/attach-file-widget.component';\nimport { AttachFolderWidgetComponent } from './widgets/content-widget/attach-folder-widget.component';\nimport { DocumentWidgetComponent } from './widgets/document/document.widget';\nimport { PeopleWidgetComponent } from './widgets/people/people.widget';\nimport { FunctionalGroupWidgetComponent } from './widgets/functional-group/functional-group.widget';\nimport { RadioButtonsWidgetComponent } from './widgets/radio-buttons/radio-buttons.widget';\nimport { TypeaheadWidgetComponent } from './widgets/typeahead/typeahead.widget';\nimport { DynamicTableWidgetComponent } from './widgets/dynamic-table/dynamic-table.widget';\nimport { DropdownWidgetComponent } from './widgets/dropdown/dropdown.widget';\nimport { FileViewerWidgetComponent } from './widgets/file-viewer/file-viewer.widget';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ProcessFormRenderingService extends FormRenderingService {\n constructor() {\n super();\n\n this.register({\n [FormFieldTypes.DROPDOWN]: () => DropdownWidgetComponent,\n [FormFieldTypes.TYPEAHEAD]: () => TypeaheadWidgetComponent,\n [FormFieldTypes.RADIO_BUTTONS]: () => RadioButtonsWidgetComponent,\n [FormFieldTypes.UPLOAD]: () => AttachFileWidgetComponent,\n [FormFieldTypes.ATTACH_FOLDER]: () => AttachFolderWidgetComponent,\n [FormFieldTypes.DOCUMENT]: () => DocumentWidgetComponent,\n [FormFieldTypes.PEOPLE]: () => PeopleWidgetComponent,\n [FormFieldTypes.FUNCTIONAL_GROUP]: () => FunctionalGroupWidgetComponent,\n [FormFieldTypes.DYNAMIC_TABLE]: () => DynamicTableWidgetComponent,\n [FormFieldTypes.ALFRESCO_FILE_VIEWER]: () => FileViewerWidgetComponent\n }, true);\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FormListComponent } from './form-list/form-list.component';\nimport { FormCustomOutcomesComponent } from './form-custom-outcomes.component';\nimport { StartFormComponent } from './start-form/start-form.component';\nimport { WIDGET_DIRECTIVES } from './widgets';\nimport { FormComponent } from './form.component';\n\nexport * from './events/validate-dynamic-table-row.event';\nexport * from './form-list/form-list.component';\nexport * from './model/form-definition.model';\nexport * from './services';\nexport * from './start-form/start-form.component';\nexport * from './widgets/public-api';\nexport * from './form.component';\nexport * from './form-custom-outcomes.component';\nexport * from './process-form-rendering.service';\n\nexport const FORM_DIRECTIVES = [FormListComponent, FormCustomOutcomesComponent, StartFormComponent, FormComponent, ...WIDGET_DIRECTIVES];\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './public-api';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, EventEmitter, inject, Input, OnChanges, OnInit, Output, SimpleChanges, ViewEncapsulation } from '@angular/core';\nimport {\n ContentLinkModel,\n EmptyContentComponent,\n FormFieldModel,\n FormFieldValidator,\n FormModel,\n FormOutcomeEvent,\n TranslationService\n} from '@alfresco/adf-core';\nimport { TaskListService } from '../../services/tasklist.service';\nimport { TaskRepresentation, UserRepresentation } from '@alfresco/js-api';\nimport { Observable } from 'rxjs';\nimport { PeopleProcessService } from '../../../services/people-process.service';\nimport { CommonModule } from '@angular/common';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatButtonModule } from '@angular/material/button';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { ClaimTaskDirective } from './claim-task.directive';\nimport { UnclaimTaskDirective } from './unclaim-task.directive';\nimport { TaskStandaloneComponent } from '../task-standalone/task-standalone.component';\nimport { FormComponent, FormCustomOutcomesComponent } from '../../../form';\n\n@Component({\n selector: 'adf-task-form',\n imports: [\n CommonModule,\n MatCardModule,\n EmptyContentComponent,\n MatButtonModule,\n TranslatePipe,\n MatProgressSpinnerModule,\n ClaimTaskDirective,\n UnclaimTaskDirective,\n TaskStandaloneComponent,\n FormComponent,\n FormCustomOutcomesComponent\n ],\n templateUrl: './task-form.component.html',\n styleUrls: ['./task-form.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class TaskFormComponent implements OnInit, OnChanges {\n /** (**required**) The id of the task whose details we are asking for. */\n @Input({ required: true })\n taskId: string;\n\n /** Toggles rendering of the form title. */\n @Input()\n showFormTitle: boolean = false;\n\n /** Toggles rendering of the `Complete` outcome button. */\n @Input()\n showFormCompleteButton: boolean = true;\n\n /** Toggles rendering of the `Save` outcome button. */\n @Input()\n showFormSaveButton: boolean = true;\n\n /** Toggle rendering of the `Cancel` button. */\n @Input()\n showCancelButton: boolean = true;\n\n /**\n * Toggles read-only state of the form. All form widgets render as read-only if enabled.\n */\n @Input()\n readOnlyForm: boolean = false;\n\n /** Toggles rendering of the `Refresh` button. */\n @Input()\n showFormRefreshButton: boolean = true;\n\n /** Toggle rendering of the validation icon next to the form title. */\n @Input()\n showFormValidationIcon: boolean = true;\n\n /** Field validators for use with the form. */\n @Input()\n fieldValidators: FormFieldValidator[] = [];\n\n /** Emitted when the form is submitted with the `Save` or custom outcomes. */\n @Output()\n formSaved = new EventEmitter<FormModel>();\n\n /** Emitted when the form is submitted with the `Complete` outcome. */\n @Output()\n formCompleted = new EventEmitter<FormModel>();\n\n /** Emitted when the form field content is clicked. */\n @Output()\n formContentClicked = new EventEmitter<ContentLinkModel>();\n\n /** Emitted when the form is loaded or reloaded. */\n @Output()\n formLoaded = new EventEmitter<FormModel>();\n\n /** Emitted when the form associated with the form task is attached. */\n @Output()\n showAttachForm = new EventEmitter<void>();\n\n /**\n * Emitted when any outcome is executed. Default behaviour can be prevented\n * via `event.preventDefault()`.\n */\n @Output()\n executeOutcome = new EventEmitter<FormOutcomeEvent>();\n\n /** Emitted when the form associated with the task is completed. */\n @Output()\n completed = new EventEmitter<void>();\n\n /** Emitted when the supplied form values have a validation error. */\n @Output()\n formError = new EventEmitter<FormFieldModel[]>();\n\n /** Emitted when an error occurs. */\n @Output()\n error = new EventEmitter<any>();\n\n /** Emitted when the \"Cancel\" button is clicked. */\n @Output()\n cancel = new EventEmitter<void>();\n\n /** Emitted when the task is claimed. */\n @Output()\n taskClaimed = new EventEmitter<string>();\n\n /** Emitted when the task is unclaimed (ie, requeued).. */\n @Output()\n taskUnclaimed = new EventEmitter<string>();\n\n taskDetails: TaskRepresentation;\n currentLoggedUser: UserRepresentation;\n loading: boolean = false;\n internalReadOnlyForm: boolean = false;\n\n private taskListService = inject(TaskListService);\n private peopleProcessService = inject(PeopleProcessService);\n private translationService = inject(TranslationService);\n\n ngOnInit() {\n this.peopleProcessService.getCurrentUserInfo().subscribe((user) => {\n this.currentLoggedUser = user;\n });\n this.loadTask(this.taskId);\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const taskId = changes['taskId'];\n if (taskId?.currentValue) {\n this.loadTask(this.taskId);\n return;\n }\n }\n\n loadTask(taskId: string) {\n this.loading = true;\n if (taskId) {\n this.taskListService.getTaskDetails(taskId).subscribe((res) => {\n this.taskDetails = res;\n\n if (!this.taskDetails.name) {\n this.taskDetails.name = 'No name';\n }\n\n const endDate: any = res.endDate;\n if (endDate && !isNaN(endDate.getTime())) {\n this.internalReadOnlyForm = true;\n } else {\n this.internalReadOnlyForm = this.readOnlyForm;\n }\n this.loading = false;\n });\n }\n }\n\n onFormSaved(savedForm: FormModel) {\n this.formSaved.emit(savedForm);\n }\n\n onFormCompleted(form: FormModel) {\n this.formCompleted.emit(form);\n }\n\n onFormLoaded(form: FormModel): void {\n this.formLoaded.emit(form);\n }\n\n onFormContentClick(content: ContentLinkModel): void {\n this.formContentClicked.emit(content);\n }\n\n onFormExecuteOutcome(outcome: FormOutcomeEvent) {\n this.executeOutcome.emit(outcome);\n }\n\n onFormError(error: any) {\n this.formError.emit(error);\n }\n\n onError(error: any) {\n this.error.emit(error);\n }\n\n onCompleteTask() {\n this.taskListService.completeTask(this.taskDetails.id).subscribe(\n () => this.completed.emit(),\n (error) => this.error.emit(error)\n );\n }\n\n onCancel() {\n this.cancel.emit();\n }\n\n onShowAttachForm() {\n this.showAttachForm.emit();\n }\n\n hasFormKey(): boolean {\n return !!this.taskDetails?.formKey;\n }\n\n isStandaloneTask(): boolean {\n return !this.taskDetails?.processDefinitionId;\n }\n\n isCompletedTask(): boolean {\n return !!this.taskDetails?.endDate;\n }\n\n isCompleteButtonVisible(): boolean {\n return !this.hasFormKey() && this.isTaskActive() && this.isCompleteButtonEnabled();\n }\n\n isTaskActive() {\n return this.taskDetails?.duration === null;\n }\n\n isAssigned(): boolean {\n return !!this.taskDetails.assignee;\n }\n\n isAssignedToMe(): boolean {\n return this.isAssigned() && this.hasEmailAddress() ? this.isEmailEqual() : this.isExternalIdEqual();\n }\n\n isCompleteButtonEnabled(): boolean {\n return this.isAssignedToMe() || this.canInitiatorComplete();\n }\n\n canInitiatorComplete(): boolean {\n return !!this.taskDetails?.initiatorCanCompleteTask;\n }\n\n isReadOnlyForm(): boolean {\n let readOnlyForm: boolean;\n if (this.isCandidateMember()) {\n readOnlyForm = this.internalReadOnlyForm || !this.isAssignedToMe();\n } else {\n readOnlyForm =\n this.internalReadOnlyForm || !(this.isAssignedToMe() || this.canCurrentUserAsInitiatorComplete() || this.isCurrentUserInvolved());\n }\n\n return readOnlyForm;\n }\n\n isCurrentUserInvolved(): boolean {\n let isInvolved = false;\n if (this.taskDetails.involvedPeople && this.currentLoggedUser) {\n const userInvolved = this.taskDetails.involvedPeople.find(\n (involvedUser) =>\n involvedUser.email.toLocaleLowerCase() === this.currentLoggedUser.email.toLocaleLowerCase() ||\n involvedUser.id + '' === this.currentLoggedUser.externalId\n );\n isInvolved = !!userInvolved;\n }\n\n if (this.taskDetails.involvedGroups?.length && this.currentLoggedUser.groups?.length && !isInvolved) {\n const userGroup = this.taskDetails.involvedGroups.find((involvedGroup) =>\n this.currentLoggedUser.groups.find((group) => group.name === involvedGroup.name.toLocaleLowerCase() || group.id === involvedGroup.id)\n );\n isInvolved = !!userGroup;\n }\n return isInvolved;\n }\n\n canCurrentUserAsInitiatorComplete(): boolean {\n return this.canInitiatorComplete() && this.isProcessInitiator();\n }\n\n isProcessInitiator(): boolean {\n return this.currentLoggedUser && this.currentLoggedUser.id === +this.taskDetails.processInstanceStartUserId;\n }\n\n isSaveButtonVisible(): boolean {\n return this.showFormSaveButton && (!this.canInitiatorComplete() || this.isAssignedToMe() || this.isCurrentUserInvolved());\n }\n\n canCompleteNoFormTask(): boolean {\n return this.isReadOnlyForm();\n }\n\n getCompletedTaskTranslatedMessage(): Observable<string> {\n return this.translationService.get('ADF_TASK_FORM.COMPLETED_TASK.TITLE', { taskName: this.taskDetails.name });\n }\n\n isCandidateMember(): boolean {\n return this.taskDetails.managerOfCandidateGroup || this.taskDetails.memberOfCandidateGroup || this.taskDetails.memberOfCandidateUsers;\n }\n\n isTaskClaimable(): boolean {\n return this.isCandidateMember() && !this.isAssigned();\n }\n\n isTaskClaimedByCandidateMember(): boolean {\n return this.isCandidateMember() && this.isAssignedToMe() && !this.isCompletedTask();\n }\n\n reloadTask() {\n this.loadTask(this.taskId);\n }\n\n onClaimTask(taskId: string) {\n this.taskClaimed.emit(taskId);\n }\n\n onClaimTaskError(error: any) {\n this.error.emit(error);\n }\n\n onUnclaimTask(taskId: string) {\n this.taskUnclaimed.emit(taskId);\n }\n\n onUnclaimTaskError(error: any) {\n this.error.emit(error);\n }\n\n private hasEmailAddress(): boolean {\n return !!this.taskDetails.assignee.email;\n }\n\n private isEmailEqual(): boolean {\n return (\n this.taskDetails.assignee &&\n this.currentLoggedUser &&\n this.taskDetails.assignee.email.toLocaleLowerCase() === this.currentLoggedUser.email.toLocaleLowerCase()\n );\n }\n\n private isExternalIdEqual(): boolean {\n return this.taskDetails.assignee && this.currentLoggedUser && this.taskDetails.assignee.externalId === this.currentLoggedUser.externalId;\n }\n}\n","<ng-container *ngIf=\"!loading; else loadingTemplate\">\n <adf-form *ngIf=\"hasFormKey(); else withoutForm\"\n [taskId]=\"taskDetails?.id\"\n [showTitle]=\"showFormTitle\"\n [showValidationIcon]=\"showFormValidationIcon\"\n [showRefreshButton]=\"showFormRefreshButton\"\n [showCompleteButton]=\"showFormCompleteButton\"\n [showSaveButton]=\"isSaveButtonVisible()\"\n [disableCompleteButton]=\"!isCompleteButtonEnabled()\"\n [readOnly]=\"isReadOnlyForm()\"\n [fieldValidators]=\"fieldValidators\"\n (formSaved)='onFormSaved($event)'\n (formCompleted)='onFormCompleted($event)'\n (formContentClicked)='onFormContentClick($event)'\n (formLoaded)='onFormLoaded($event)'\n (formError)='onFormError($event)'\n (error)='onError($event)'\n (executeOutcome)='onFormExecuteOutcome($event)'>\n <adf-form-custom-outcomes>\n <ng-template [ngTemplateOutlet]=\"taskFormButtons\" />\n </adf-form-custom-outcomes>\n </adf-form>\n <ng-template #withoutForm>\n <adf-task-standalone *ngIf=\"isStandaloneTask(); else emptyFormMessage\"\n [taskName]=\"taskDetails.name\"\n [taskId]=\"taskDetails.id\"\n [isCompleted]=\"isCompletedTask()\"\n [hasCompletePermission]=\"isCompleteButtonVisible()\"\n [hideCancelButton]=\"showCancelButton\"\n (complete)=\"onCompleteTask()\"\n (showAttachForm)=\"onShowAttachForm()\" />\n <ng-template #emptyFormMessage>\n <mat-card appearance=\"outlined\" class=\"adf-task-form-container\">\n <mat-card-header>\n <mat-card-title>\n <h4>\n <span class=\"adf-form-title\">\n {{taskDetails.name}}\n <ng-container *ngIf=\"!taskDetails.name\">\n {{'FORM.FORM_RENDERER.NAMELESS_TASK' | translate}}\n </ng-container>\n </span>\n </h4>\n </mat-card-title>\n </mat-card-header>\n <mat-card-content>\n <adf-empty-content *ngIf=\"isCompletedTask(); else emptyFormTemplate\"\n [icon]=\"'description'\"\n [title]=\"getCompletedTaskTranslatedMessage() | async\"\n [subtitle]=\"'ADF_TASK_FORM.COMPLETED_TASK.SUBTITLE'\" />\n <ng-template #emptyFormTemplate>\n <adf-empty-content\n [icon]=\"'description'\"\n [title]=\"'ADF_TASK_LIST.STANDALONE_TASK.NO_FORM_MESSAGE'\"\n [subtitle]=\"'ADF_TASK_FORM.EMPTY_FORM.SUBTITLE'\" />\n </ng-template>\n </mat-card-content>\n <mat-card-actions align=\"end\">\n <div class=\"adf-task-form-actions\">\n <ng-template [ngTemplateOutlet]=\"taskFormButtons\" />\n <button mat-button\n *ngIf=\"!isCompletedTask()\" id=\"adf-no-form-complete-button\"\n color=\"primary\"\n class=\"adf-task-form-actions-button\"\n [disabled]=\"canCompleteNoFormTask()\"\n (click)=\"onCompleteTask()\">\n {{'ADF_TASK_FORM.EMPTY_FORM.BUTTONS.COMPLETE' | translate}}\n </button>\n </div>\n </mat-card-actions>\n </mat-card>\n </ng-template>\n </ng-template>\n\n <ng-template #taskFormButtons>\n <button mat-button id=\"adf-no-form-cancel-button\"\n *ngIf=\"showCancelButton\"\n (click)=\"onCancel()\">\n {{'ADF_TASK_FORM.EMPTY_FORM.BUTTONS.CANCEL' | translate}}\n </button>\n <button mat-button data-automation-id=\"adf-task-form-claim-button\"\n *ngIf=\"isTaskClaimable()\"\n adf-claim-task\n [taskId]=\"taskId\"\n (success)=\"onClaimTask($event)\"\n (error)=\"onClaimTaskError($event)\">\n {{ 'ADF_TASK_FORM.EMPTY_FORM.BUTTONS.CLAIM' | translate }}\n </button>\n <button mat-button data-automation-id=\"adf-task-form-unclaim-button\"\n *ngIf=\"isTaskClaimedByCandidateMember()\"\n adf-unclaim-task\n [taskId]=\"taskId\"\n (success)=\"onUnclaimTask($event)\"\n (error)=\"onUnclaimTaskError($event)\">\n {{ 'ADF_TASK_FORM.EMPTY_FORM.BUTTONS.UNCLAIM' | translate }}\n </button>\n </ng-template>\n</ng-container>\n<ng-template #loadingTemplate>\n <div class=\"adf-task-form-spinner-container\">\n <mat-spinner />\n </div>\n</ng-template>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, EventEmitter, Input, OnChanges, OnInit, Output } from '@angular/core';\nimport { Form } from '../../models/form.model';\nimport { TaskListService } from '../../services/tasklist.service';\nimport { ReactiveFormsModule, UntypedFormControl, Validators } from '@angular/forms';\nimport { ModelService } from '../../../form/services/model.service';\nimport { TaskFormService } from '../../../form/services/task-form.service';\nimport { CommonModule } from '@angular/common';\nimport { MatCardModule } from '@angular/material/card';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatButtonModule } from '@angular/material/button';\nimport { FormComponent } from '../../../form';\n\n@Component({\n selector: 'adf-attach-form',\n imports: [CommonModule, MatCardModule, TranslatePipe, MatFormFieldModule, MatSelectModule, ReactiveFormsModule, MatButtonModule, FormComponent],\n templateUrl: './attach-form.component.html',\n styleUrls: ['./attach-form.component.scss']\n})\nexport class AttachFormComponent implements OnInit, OnChanges {\n /** Id of the task. */\n @Input({ required: true })\n taskId: any;\n\n /** Identifier of the form to attach. */\n @Input()\n formKey: any;\n\n /** Emitted when the \"Cancel\" button is clicked. */\n @Output()\n cancelAttachForm = new EventEmitter<void>();\n\n /** Emitted when the form is attached successfully. */\n @Output()\n success = new EventEmitter<void>();\n\n /** Emitted when an error occurs. */\n @Output()\n error = new EventEmitter<any>();\n\n forms: Form[];\n\n formId: number;\n disableSubmit: boolean = true;\n selectedFormId: number;\n\n attachFormControl: UntypedFormControl;\n\n constructor(private taskService: TaskListService, private modelService: ModelService, private taskFormService: TaskFormService) {}\n\n ngOnInit() {\n this.attachFormControl = new UntypedFormControl('', Validators.required);\n this.attachFormControl.valueChanges.subscribe((currentValue) => {\n if (this.attachFormControl.valid) {\n this.disableSubmit = this.formId === currentValue;\n }\n });\n }\n\n ngOnChanges() {\n this.formId = undefined;\n this.disableSubmit = true;\n this.loadFormsTask();\n if (this.formKey) {\n this.onFormAttached();\n }\n }\n\n onCancelButtonClick(): void {\n this.selectedFormId = this.formId;\n this.cancelAttachForm.emit();\n }\n\n onRemoveButtonClick(): void {\n this.taskService.deleteForm(this.taskId).subscribe(\n () => {\n this.formId = this.selectedFormId = null;\n this.success.emit();\n },\n (err) => {\n this.error.emit(err);\n }\n );\n }\n\n onAttachFormButtonClick(): void {\n this.attachForm(this.taskId, this.selectedFormId);\n }\n\n private loadFormsTask(): void {\n this.taskService.getFormList().subscribe(\n (form: Form[]) => {\n this.forms = form;\n },\n (err) => {\n this.error.emit(err);\n }\n );\n }\n\n private onFormAttached() {\n this.taskFormService.getTaskForm(this.taskId).subscribe(\n (res) => {\n this.modelService.getFormDefinitionByName(res.name).subscribe((formDef) => {\n this.formId = this.selectedFormId = formDef;\n });\n },\n (err) => {\n this.error.emit(err);\n }\n );\n }\n\n private attachForm(taskId: string, formId: number) {\n if (taskId && formId) {\n this.taskService.attachFormToATask(taskId, formId).subscribe(\n () => {\n this.success.emit();\n },\n (err) => {\n this.error.emit(err);\n }\n );\n }\n }\n}\n","<div class=\"adf-attach-form\">\n <mat-card appearance=\"outlined\">\n <mat-card-content>\n <div class=\"adf-attache-form-message-container\">\n <mat-card-title class=\"mat-card-title\">\n <h4 class=\"adf-form-title\">{{ 'ADF_TASK_LIST.ATTACH_FORM.SELECT_FORM' | translate }}</h4>\n </mat-card-title>\n <div class=\"adf-attach-form-row\">\n <mat-form-field class=\"adf-grid-full-width\">\n <mat-select [formControl]=\"attachFormControl\" placeholder=\"{{ 'ADF_TASK_LIST.ATTACH_FORM.SELECT_OPTION' | translate }}\" id=\"form_id\" [(ngModel)]=\"selectedFormId\">\n <mat-option *ngFor=\"let form of forms\" [value]=\"form.id\">{{ form.name }}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <adf-form *ngIf=\"this.attachFormControl.valid\"\n [formId]=\"selectedFormId\"\n [readOnly]=\"true\"\n [showCompleteButton]=\"false\"\n [showRefreshButton]=\"false\"\n [showValidationIcon]=\"false\" />\n </div>\n </mat-card-content>\n\n <mat-card-actions class=\"adf-attach-form-mat-card-actions\">\n <div>\n <button mat-button id=\"adf-attach-form-remove-button\" color=\"warn\" *ngIf=\"formKey\" (click)=\"onRemoveButtonClick()\">{{ 'ADF_TASK_LIST.ATTACH_FORM.REMOVE_FORM' | translate }}</button>\n </div>\n <div>\n <button mat-button id=\"adf-attach-form-cancel-button\" (click)=\"onCancelButtonClick()\">{{ 'ADF_TASK_LIST.START_TASK.FORM.ACTION.CANCEL' | translate }}</button>\n <button mat-button id=\"adf-attach-form-attach-button\" [disabled]=\"disableSubmit\" color=\"primary\" (click)=\"onAttachFormButtonClick()\">{{ 'ADF_TASK_LIST.START_TASK.FORM.LABEL.ATTACHFORM' | translate }}</button>\n </div>\n </mat-card-actions>\n </mat-card>\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges, ViewChild } from '@angular/core';\nimport { MatDialog, MatDialogModule } from '@angular/material/dialog';\nimport { TaskListService } from '../../services/tasklist.service';\nimport { TaskRepresentation } from '@alfresco/js-api';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n selector: 'adf-checklist',\n imports: [\n CommonModule,\n TranslatePipe,\n MatChipsModule,\n MatButtonModule,\n MatIconModule,\n MatDialogModule,\n MatFormFieldModule,\n MatInputModule,\n FormsModule\n ],\n templateUrl: './checklist.component.html',\n styleUrls: ['./checklist.component.scss']\n})\nexport class ChecklistComponent implements OnChanges {\n /**\n * The id of the parent task to which subtasks are attached.\n */\n @Input()\n taskId: string;\n\n /**\n * Toggle readonly state of the form.\n * All form widgets will render as readonly if enabled.\n */\n @Input()\n readOnly: boolean = false;\n\n /** (required) The assignee id that the subtasks are assigned to. */\n @Input()\n assignee: number;\n\n /** Emitted when a new checklist task is created. */\n @Output()\n checklistTaskCreated = new EventEmitter<TaskRepresentation>();\n\n /** Emitted when a checklist task is deleted. */\n @Output()\n checklistTaskDeleted: EventEmitter<string> = new EventEmitter<string>();\n\n /** Emitted when an error occurs. */\n @Output()\n error = new EventEmitter<any>();\n\n @ViewChild('dialog', { static: true })\n addNewDialog: any;\n\n taskName: string;\n\n checklist: TaskRepresentation[] = [];\n\n constructor(private taskListService: TaskListService, private dialog: MatDialog) {}\n\n ngOnChanges(changes: SimpleChanges) {\n const taskId = changes['taskId'];\n if (taskId?.currentValue) {\n this.getTaskChecklist();\n return;\n }\n }\n\n getTaskChecklist() {\n this.checklist = [];\n if (this.taskId) {\n this.taskListService.getTaskChecklist(this.taskId).subscribe(\n (taskDetailsModel) => {\n taskDetailsModel.forEach((task) => {\n this.checklist.push(task);\n });\n },\n (error) => {\n this.error.emit(error);\n }\n );\n } else {\n this.checklist = [];\n }\n }\n\n showDialog() {\n this.dialog.open(this.addNewDialog, { width: '350px' });\n }\n\n public add() {\n const newTask = new TaskRepresentation({\n name: this.taskName,\n parentTaskId: this.taskId,\n assignee: { id: this.assignee }\n });\n this.taskListService.addTask(newTask).subscribe(\n (taskDetailsModel) => {\n this.checklist.push(taskDetailsModel);\n this.checklistTaskCreated.emit(taskDetailsModel);\n this.taskName = '';\n },\n (error) => {\n this.error.emit(error);\n }\n );\n this.cancel();\n }\n\n public delete(taskId: string) {\n this.taskListService.deleteTask(taskId).subscribe(\n () => {\n this.checklist = this.checklist.filter((check) => check.id !== taskId);\n this.checklistTaskDeleted.emit(taskId);\n },\n (error) => {\n this.error.emit(error);\n }\n );\n }\n\n public cancel() {\n this.dialog.closeAll();\n this.taskName = '';\n }\n}\n","<div class=\"adf-checklist-control\">\n <mat-chip-listbox data-automation-id=\"checklist-label\">\n <span class=\"adf-activiti-label\">{{ 'ADF_TASK_LIST.DETAILS.LABELS.CHECKLIST' | translate }}</span>\n <mat-chip-option class=\"adf-process-badge\" color=\"accent\" selected=\"true\">{{checklist?.length}}</mat-chip-option>\n </mat-chip-listbox>\n\n\n <button mat-icon-button *ngIf=\"!readOnly\" title=\"Add a checklist\"\n id=\"add-checklist\" class=\"adf-add-to-checklist-button\" (click)=\"showDialog()\">\n <mat-icon>add</mat-icon>\n </button>\n</div>\n\n<div class=\"adf-checklist-menu-container\" *ngIf=\"checklist?.length > 0\">\n <mat-chip-listbox class=\"mat-chip-list-stacked\">\n <mat-chip-option id=\"check-{{check.id}}\" class=\"adf-checklist-chip\" *ngFor=\"let check of checklist\"\n (removed)=\"delete(check.id)\">\n <span>{{check.name}}</span>\n <mat-icon *ngIf=\"!readOnly && !check.endDate\" id=\"remove-{{check.id}}\" matChipRemove>cancel\n </mat-icon>\n </mat-chip-option>\n </mat-chip-listbox>\n\n</div>\n<div *ngIf=\"checklist?.length === 0\" id=\"checklist-none-message\" class=\"adf-checklist-none-message\">\n {{ 'ADF_TASK_LIST.DETAILS.CHECKLIST.NONE' | translate }}\n</div>\n\n<ng-template #dialog>\n <div class=\"adf-checklist-dialog\" id=\"checklist-dialog\">\n <h4 matDialogTitle id=\"add-checklist-title\">{{ 'ADF_TASK_LIST.DETAILS.CHECKLIST.DIALOG.TITLE' | translate }}</h4>\n <mat-dialog-content>\n <mat-form-field>\n <input matInput placeholder=\"{{ 'ADF_TASK_LIST.DETAILS.CHECKLIST.DIALOG.PLACEHOLDER' | translate }}\" [(ngModel)]=\"taskName\" id=\"checklist-name\"\n data-automation-id=\"checklist-name\">\n </mat-form-field>\n </mat-dialog-content>\n <mat-dialog-actions class=\"adf-checklist-dialog-actions\">\n <button mat-button type=\"button\" id=\"close-check-dialog\" (click)=\"cancel()\">{{ 'ADF_TASK_LIST.DETAILS.CHECKLIST.DIALOG.CANCEL-BUTTON' | translate | uppercase }}</button>\n <button mat-button type=\"button\" id=\"add-check\" (click)=\"add()\">{{ 'ADF_TASK_LIST.DETAILS.CHECKLIST.DIALOG.ADD-BUTTON' | translate | uppercase }}</button>\n </mat-dialog-actions>\n </div>\n</ng-template>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { inject, Injectable } from '@angular/core';\nimport { Observable, forkJoin, from } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { UserFiltersApi, UserTaskFilterRepresentation } from '@alfresco/js-api';\nimport { AlfrescoApiService } from '@alfresco/adf-content-services';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TaskFilterService {\n protected apiService = inject(AlfrescoApiService);\n\n private _userFiltersApi: UserFiltersApi;\n get userFiltersApi(): UserFiltersApi {\n this._userFiltersApi = this._userFiltersApi ?? new UserFiltersApi(this.apiService.getInstance());\n return this._userFiltersApi;\n }\n\n /**\n * Creates and returns the default filters for a process app.\n *\n * @param appId ID of the target app\n * @returns Array of default filters just created\n */\n public createDefaultFilters(appId: number): Observable<UserTaskFilterRepresentation[]> {\n const myTasksFilter = this.getMyTasksFilterInstance(appId, 0);\n const myTaskObservable = this.addFilter(myTasksFilter);\n\n const overdueTasksFilter = this.getOverdueTasksFilterInstance(appId, 1);\n const overdueObservable = this.addFilter(overdueTasksFilter);\n\n const unassignedTasksFilter = this.getUnassignedTasksFilterInstance(appId, 2);\n const unassignedObservable = this.addFilter(unassignedTasksFilter);\n\n const completedTasksFilter = this.getCompletedTasksFilterInstance(appId, 3);\n const completeObservable = this.addFilter(completedTasksFilter);\n\n return new Observable((observer) => {\n forkJoin([myTaskObservable, overdueObservable, unassignedObservable, completeObservable]).subscribe((res) => {\n const filters: UserTaskFilterRepresentation[] = [];\n res.forEach((filter) => {\n if (!this.isFilterAlreadyExisting(filters, filter.name)) {\n if (filter.name === overdueTasksFilter.name) {\n filters.push(\n new UserTaskFilterRepresentation({\n ...filter,\n filter: overdueTasksFilter.filter,\n appId\n })\n );\n } else if (filter.name === myTasksFilter.name) {\n filters.push(\n new UserTaskFilterRepresentation({\n ...filter,\n filter: myTasksFilter.filter,\n appId\n })\n );\n } else if (filter.name === unassignedTasksFilter.name) {\n filters.push(\n new UserTaskFilterRepresentation({\n ...filter,\n filter: unassignedTasksFilter.filter,\n appId\n })\n );\n } else if (filter.name === completedTasksFilter.name) {\n filters.push(\n new UserTaskFilterRepresentation({\n ...filter,\n filter: completedTasksFilter.filter,\n appId\n })\n );\n }\n }\n });\n observer.next(filters);\n observer.complete();\n });\n });\n }\n\n /**\n * Gets all task filters for a process app.\n *\n * @param appId Optional ID for a specific app\n * @returns Array of task filter details\n */\n getTaskListFilters(appId?: number): Observable<UserTaskFilterRepresentation[]> {\n return from(this.callApiTaskFilters(appId)).pipe(\n map((response) => {\n const filters: UserTaskFilterRepresentation[] = [];\n response.data.forEach((filter: UserTaskFilterRepresentation) => {\n if (!this.isFilterAlreadyExisting(filters, filter.name)) {\n const filterModel = new UserTaskFilterRepresentation(filter);\n filters.push(filterModel);\n }\n });\n return filters;\n })\n );\n }\n\n /**\n * Checks if a filter with the given name already exists in the list of filters.\n *\n * @param filters - An array of objects representing the existing filters.\n * @param filterName - The name of the filter to check for existence.\n * @returns - True if a filter with the specified name already exists, false otherwise.\n */\n isFilterAlreadyExisting(filters: UserTaskFilterRepresentation[], filterName: string): boolean {\n return filters.some((existingFilter) => existingFilter.name === filterName);\n }\n\n /**\n * Gets a task filter by ID.\n *\n * @param filterId ID of the filter\n * @param appId ID of the app for the filter\n * @returns Details of task filter\n */\n getTaskFilterById(filterId: number, appId?: number): Observable<UserTaskFilterRepresentation> {\n return from(this.callApiTaskFilters(appId)).pipe(map((response) => response.data.find((filter) => filter.id === filterId)));\n }\n\n /**\n * Gets a task filter by name.\n *\n * @param taskName Name of the filter\n * @param appId ID of the app for the filter\n * @returns Details of task filter\n */\n getTaskFilterByName(taskName: string, appId?: number): Observable<UserTaskFilterRepresentation> {\n return from(this.callApiTaskFilters(appId)).pipe(map((response) => response.data.find((filter) => filter.name === taskName)));\n }\n\n /**\n * Adds a new task filter\n *\n * @param filter The new filter to add\n * @returns Details of task filter just added\n */\n addFilter(filter: UserTaskFilterRepresentation): Observable<UserTaskFilterRepresentation> {\n return from(this.userFiltersApi.createUserTaskFilter(filter));\n }\n\n /**\n * Update a task filter\n *\n * @param filterId existing filter id\n * @param updatedFilter updated filter body\n * @returns Observable<UserTaskFilterRepresentation>\n */\n updateTaskFilter(filterId: number, updatedFilter: UserTaskFilterRepresentation): Observable<UserTaskFilterRepresentation> {\n return from(this.userFiltersApi.updateUserTaskFilter(filterId, updatedFilter));\n }\n\n /**\n * Calls `getUserTaskFilters` from the Alfresco JS API.\n *\n * @param appId ID of the target app\n * @returns List of task filters\n */\n callApiTaskFilters(appId?: number): Promise<any> {\n if (appId) {\n return this.userFiltersApi.getUserTaskFilters({ appId });\n } else {\n return this.userFiltersApi.getUserTaskFilters();\n }\n }\n\n /**\n * Creates and returns a filter for \"My Tasks\" task instances.\n *\n * @param appId ID of the target app\n * @param index of the filter (optional)\n * @returns The newly created filter\n */\n getMyTasksFilterInstance(appId: number, index?: number): UserTaskFilterRepresentation {\n return new UserTaskFilterRepresentation({\n name: 'My Tasks',\n appId,\n recent: false,\n icon: 'glyphicon-inbox',\n filter: {\n sort: 'created-desc',\n name: '',\n state: 'open',\n assignment: 'assignee'\n },\n index\n });\n }\n\n /**\n * Creates and returns a filter for \"Overdue\" task instances.\n *\n * @param appId ID of the target app\n * @param index of the filter (optional)\n * @returns The newly created filter\n */\n getOverdueTasksFilterInstance(appId: number, index?: number): UserTaskFilterRepresentation {\n return new UserTaskFilterRepresentation({\n name: 'Overdue Tasks',\n appId,\n recent: false,\n icon: 'glyphicon-align-left',\n filter: { sort: 'created-desc', name: '', state: 'open', assignment: 'assignee' },\n index\n });\n }\n\n /**\n * Creates and returns a filter for \"Unassigned Tasks\" task instances.\n *\n * @param appId ID of the target app\n * @param index of the filter (optional)\n * @returns The newly created filter\n */\n getUnassignedTasksFilterInstance(appId: number, index?: number): UserTaskFilterRepresentation {\n return new UserTaskFilterRepresentation({\n name: 'Unassigned Tasks',\n appId,\n recent: false,\n icon: 'glyphicon-record',\n filter: { sort: 'created-desc', name: '', state: 'open', assignment: 'candidate' },\n index\n });\n }\n\n /**\n * Creates and returns a filter for \"Completed\" task instances.\n *\n * @param appId ID of the target app\n * @param index of the filter (optional)\n * @returns The newly created filter\n */\n getCompletedTasksFilterInstance(appId: number, index?: number): UserTaskFilterRepresentation {\n return new UserTaskFilterRepresentation({\n name: 'Completed Tasks',\n appId,\n recent: true,\n icon: 'glyphicon-ok-sign',\n filter: { sort: 'created-desc', name: '', state: 'completed', assignment: 'involved' },\n index\n });\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AppsProcessService } from '../../../services/apps-process.service';\nimport { Component, DestroyRef, EventEmitter, inject, Input, OnChanges, OnInit, Output, SimpleChanges, ViewEncapsulation } from '@angular/core';\nimport { TaskFilterService } from '../../services/task-filter.service';\nimport { TaskListService } from '../../services/tasklist.service';\nimport { IconModel } from '../../../app-list/icon.model';\nimport { ActivatedRoute, NavigationStart, Router } from '@angular/router';\nimport { filter } from 'rxjs/operators';\nimport { UserTaskFilterRepresentation } from '@alfresco/js-api';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { IconComponent } from '@alfresco/adf-core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { forkJoin, Observable } from 'rxjs';\n\n@Component({\n selector: 'adf-task-filters',\n imports: [CommonModule, TranslatePipe, MatButtonModule, IconComponent],\n templateUrl: './task-filters.component.html',\n styleUrls: ['./task-filters.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class TaskFiltersComponent implements OnInit, OnChanges {\n /**\n * Parameters to use for the task filter. If there is no match then\n * the default filter (the first one the list) is selected.\n */\n @Input()\n filterParam: UserTaskFilterRepresentation;\n\n /** Emitted when a filter is being clicked from the UI. */\n @Output()\n filterClicked = new EventEmitter<UserTaskFilterRepresentation>();\n\n /** Emitted when a filter is being selected based on the filterParam input. */\n @Output()\n filterSelected = new EventEmitter<UserTaskFilterRepresentation>();\n\n /** Emitted when the list is loaded. */\n @Output()\n success = new EventEmitter<any>();\n\n /** Emitted when an error occurs during loading. */\n @Output()\n error = new EventEmitter<any>();\n\n /** Display filters available to the current user for the application with the specified ID. */\n @Input()\n appId: number;\n\n /** Display filters available to the current user for the application with the specified name. */\n @Input()\n appName: string;\n\n /** Toggles display of the filter's icon. */\n @Input()\n showIcon: boolean;\n\n currentFilter: UserTaskFilterRepresentation;\n filters: UserTaskFilterRepresentation[] = [];\n\n isTaskRoute: boolean;\n isTaskActive: boolean;\n\n private iconsMDL: IconModel;\n\n private readonly destroyRef = inject(DestroyRef);\n\n constructor(\n private taskFilterService: TaskFilterService,\n private taskListService: TaskListService,\n private appsProcessService: AppsProcessService,\n private router: Router,\n private activatedRoute: ActivatedRoute\n ) {}\n\n ngOnInit() {\n this.iconsMDL = new IconModel();\n this.router.events\n .pipe(\n filter((event) => event instanceof NavigationStart),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe((navigationStart: NavigationStart) => {\n const activeRoute = navigationStart.url;\n this.isTaskActive = activeRoute.includes('tasks');\n });\n this.activatedRoute.url.subscribe((segments) => {\n const currentRoute = segments.join('/');\n this.isTaskRoute = currentRoute.includes('tasks');\n });\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const appName = changes['appName'];\n const appId = changes['appId'];\n const filterParam = changes['filterParam'];\n if (appName?.currentValue) {\n this.getFiltersByAppName(appName.currentValue);\n } else if (appId && appId.currentValue !== appId.previousValue) {\n this.getFiltersByAppId(appId.currentValue);\n } else if (filterParam && filterParam.currentValue !== filterParam.previousValue) {\n this.selectFilterAndEmit(filterParam.currentValue);\n }\n }\n\n isActiveRoute(filterActive: UserTaskFilterRepresentation): boolean {\n return (this.isTaskActive || this.isTaskRoute) && this.currentFilter === filterActive;\n }\n\n /**\n * Return the filter list filtered by appId\n *\n * @param appId - optional\n */\n getFiltersByAppId(appId?: number) {\n this.taskFilterService.getTaskListFilters(appId).subscribe(\n (res) => {\n if (res.length === 0 && this.isFilterListEmpty()) {\n this.createFiltersByAppId(appId);\n } else {\n const migratedFilters = this.migrateObsoleteFilters(res);\n if (migratedFilters.length > 0) {\n forkJoin(migratedFilters).subscribe(() => {\n this.setTaskFilters(res);\n });\n } else {\n this.setTaskFilters(res);\n }\n }\n },\n (err: any) => {\n this.error.emit(err);\n }\n );\n }\n\n /**\n * Return the filter list filtered by appName\n *\n * @param appName application name\n */\n getFiltersByAppName(appName: string): void {\n this.appsProcessService.getDeployedApplicationsByName(appName).subscribe(\n (application) => {\n this.getFiltersByAppId(application.id);\n },\n (err) => {\n this.error.emit(err);\n }\n );\n }\n\n /**\n * Create default filters by appId\n *\n * @param appId application id\n */\n private createFiltersByAppId(appId?: number): void {\n this.taskFilterService.createDefaultFilters(appId).subscribe(\n (resDefault) => {\n this.setTaskFilters(resDefault);\n },\n (errDefault: any) => {\n this.error.emit(errDefault);\n }\n );\n }\n\n /**\n * Pass the selected filter as next\n *\n * @param newFilter new filter model\n */\n public selectFilter(newFilter: UserTaskFilterRepresentation): void {\n if (newFilter) {\n this.currentFilter = this.filters.find(\n (entry, index) =>\n newFilter.index === index ||\n newFilter.id === entry.id ||\n (newFilter.name && newFilter.name.toLocaleLowerCase() === entry.name.toLocaleLowerCase())\n );\n }\n }\n\n private selectFilterAndEmit(newFilter: UserTaskFilterRepresentation) {\n this.selectFilter(newFilter);\n this.filterSelected.emit(this.currentFilter);\n }\n\n /**\n * Selects and emits the clicked filter.\n *\n * @param filterParams filter parameters model\n */\n onFilterClick(filterParams: UserTaskFilterRepresentation) {\n this.selectFilter(filterParams);\n this.filterClicked.emit(this.currentFilter);\n }\n\n /**\n * Select filter with task\n *\n * @param taskId task id\n */\n selectFilterWithTask(taskId: string): void {\n const filteredFilterList: UserTaskFilterRepresentation[] = [];\n this.taskListService.getFilterForTaskById(taskId, this.filters).subscribe(\n (filterModel) => {\n filteredFilterList.push(filterModel);\n },\n (err) => {\n this.error.emit(err);\n },\n () => {\n if (filteredFilterList.length > 0) {\n this.selectFilter(filteredFilterList[0]);\n this.filterSelected.emit(this.currentFilter);\n }\n }\n );\n }\n\n /**\n * Get the current filter\n *\n * @returns filter model\n */\n getCurrentFilter(): UserTaskFilterRepresentation {\n return this.currentFilter;\n }\n\n /**\n * Check if the filter list is empty\n *\n * @returns `true` if filter list is empty, otherwise `false`\n */\n isFilterListEmpty(): boolean {\n return this.filters === undefined || (this.filters && this.filters.length === 0);\n }\n\n /**\n * Get the material icons equivalent of the glyphicon icon\n *\n * @param icon glyphicon name\n * @returns material icons equivalent of the icon\n */\n getFilterIcon(icon: string): string {\n return this.iconsMDL.mapGlyphiconToMaterialDesignIcons(icon);\n }\n\n /**\n * Reset the filters properties\n */\n private resetFilter() {\n this.filters = [];\n this.currentFilter = undefined;\n }\n\n /**\n * Migrate \"Involved\" and \"Queued\" filters to \"Overdue\" and \"Unassigned\" filters\n *\n * @param filters - list of filters to migrate\n * @returns list of observables for each migrated filter\n */\n private migrateObsoleteFilters(filters: UserTaskFilterRepresentation[]): Observable<UserTaskFilterRepresentation>[] {\n const migratedFilters: Observable<UserTaskFilterRepresentation>[] = [];\n filters.forEach((filterToMigrate) => {\n switch (filterToMigrate.name) {\n case 'Involved Tasks':\n migratedFilters.push(\n this.taskFilterService.updateTaskFilter(filterToMigrate.id, this.taskFilterService.getOverdueTasksFilterInstance(this.appId))\n );\n break;\n case 'Queued Tasks':\n migratedFilters.push(\n this.taskFilterService.updateTaskFilter(\n filterToMigrate.id,\n this.taskFilterService.getUnassignedTasksFilterInstance(this.appId)\n )\n );\n break;\n default:\n break;\n }\n });\n return migratedFilters;\n }\n\n private setTaskFilters(taskFilters: UserTaskFilterRepresentation[]): void {\n this.resetFilter();\n this.filters = taskFilters;\n this.selectFilter(this.filterParam);\n this.success.emit(taskFilters);\n }\n}\n","<div *ngFor=\"let filter of filters\" class=\"adf-filters__entry\" [class.adf-active]=\"isActiveRoute(filter)\">\n <button\n (click)=\"onFilterClick(filter)\"\n [attr.aria-label]=\"filter.name | translate\"\n [id]=\"filter.id\"\n [attr.data-automation-id]=\"filter.name + '_filter'\"\n mat-button\n class=\"adf-filter-action-button adf-full-width\">\n <ng-container *ngIf=\"showIcon\">\n <adf-icon data-automation-id=\"adf-filter-icon\" [value]=\"getFilterIcon(filter.icon)\" />\n </ng-container>\n <span data-automation-id=\"adf-filter-label\" class=\"adf-filter-action-button__label\">{{ filter.name | translate }}</span>\n </button>\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport const taskPresetsDefaultModel = {\n default: [\n {\n key: 'name',\n type: 'text',\n title: 'ADF_TASK_LIST.PROPERTIES.NAME',\n sortable: true\n },\n {\n key: 'created',\n type: 'text',\n title: 'ADF_TASK_LIST.PROPERTIES.CREATED',\n cssClass: 'hidden',\n sortable: true\n },\n {\n key: 'assignee',\n type: 'text',\n title: 'ADF_TASK_LIST.PROPERTIES.ASSIGNEE',\n cssClass: 'hidden',\n sortable: true\n }\n ]\n};\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AppConfigService,\n CustomEmptyContentTemplateDirective,\n CustomLoadingContentTemplateDirective,\n DataCellEvent,\n DataRowEvent,\n DataTableAdapter,\n DataTableComponent,\n DataTableSchema,\n DEFAULT_PAGINATION,\n EmptyContentComponent,\n LoadingContentTemplateDirective,\n NoContentTemplateDirective,\n PaginatedComponent,\n PaginationModel,\n UserPreferencesService,\n UserPreferenceValues\n} from '@alfresco/adf-core';\nimport {\n AfterContentInit,\n Component,\n ContentChild,\n DestroyRef,\n EventEmitter,\n inject,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges\n} from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { taskPresetsDefaultModel } from '../../models/task-preset.model';\nimport { TaskListService } from '../../services/tasklist.service';\nimport { finalize } from 'rxjs/operators';\nimport { TaskQueryRepresentation, TaskRepresentation } from '@alfresco/js-api';\nimport { CommonModule } from '@angular/common';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nexport const PRESET_KEY = 'adf-task-list.presets';\n\n@Component({\n selector: 'adf-tasklist',\n imports: [\n CommonModule,\n MatProgressSpinnerModule,\n EmptyContentComponent,\n TranslatePipe,\n DataTableComponent,\n LoadingContentTemplateDirective,\n NoContentTemplateDirective\n ],\n templateUrl: './task-list.component.html',\n styleUrls: ['./task-list.component.css']\n})\nexport class TaskListComponent extends DataTableSchema implements OnChanges, AfterContentInit, PaginatedComponent, OnInit {\n @ContentChild(CustomEmptyContentTemplateDirective)\n customEmptyContent: CustomEmptyContentTemplateDirective;\n\n @ContentChild(CustomLoadingContentTemplateDirective)\n customLoadingContent: CustomLoadingContentTemplateDirective;\n\n /** The id of the app. */\n @Input()\n appId: number;\n\n /** The Instance Id of the process. */\n @Input()\n processInstanceId: string;\n\n /** The Definition Id of the process. */\n @Input()\n processDefinitionId: string;\n\n /** Current state of the process. Possible values are: `completed`, `active`. */\n @Input()\n state: string;\n\n /**\n * The assignment of the process. Possible values are: \"assignee\" (the current user\n * is the assignee), \"candidate\" (the current user is a task candidate, \"group_x\" (the task\n * is assigned to a group where the current user is a member,\n * no value (the current user is involved).\n */\n @Input()\n assignment: string;\n\n /**\n * Define the sort order of the tasks. Possible values are : `created-desc`,\n * `created-asc`, `due-desc`, `due-asc`\n */\n @Input()\n sort: string;\n\n /** Name of the tasklist. */\n @Input()\n name: string;\n\n /**\n * Define which task id should be selected after reloading. If the task id doesn't\n * exist or nothing is passed then the first task will be selected.\n */\n @Input()\n landingTaskId: string;\n\n /**\n * Data source object that represents the number and the type of the columns that\n * you want to show.\n */\n @Input()\n data: DataTableAdapter;\n\n /**\n * Row selection mode. Can be none, `single` or `multiple`. For `multiple` mode,\n * you can use Cmd (macOS) or Ctrl (Win) modifier key to toggle selection for\n * multiple rows.\n */\n @Input()\n selectionMode: string = 'single'; // none|single|multiple\n\n /** Toggles multiple row selection, renders checkboxes at the beginning of each row */\n @Input()\n multiselect: boolean = false;\n\n /** Toggles default selection of the first row */\n @Input()\n selectFirstRow: boolean = true;\n\n /** The id of a task */\n @Input()\n taskId: string;\n\n /** Toggles inclusion of Process Instances */\n @Input()\n includeProcessInstance: boolean;\n\n /** Starting point of the list within the full set of tasks. */\n @Input()\n start: number;\n\n /** Toggles custom context menu for the component. */\n @Input()\n showContextMenu: boolean = false;\n\n /** Toggles the sticky header mode. */\n @Input()\n stickyHeader: boolean = false;\n\n /** Enables column resizing for datatable */\n @Input()\n isResizingEnabled = false;\n\n /** Enables blur when resizing datatable columns */\n @Input()\n blurOnResize = true;\n\n /** Emitted before the context menu is displayed for a row. */\n @Output()\n showRowContextMenu = new EventEmitter<DataCellEvent>();\n\n /** Emitted when a task in the list is clicked */\n @Output()\n rowClick = new EventEmitter<string>();\n\n /** Emitted when rows are selected/unselected */\n @Output()\n rowsSelected = new EventEmitter<any[]>();\n\n /** Emitted when the task list is loaded */\n @Output()\n success = new EventEmitter<any>();\n\n /** Emitted when an error occurs. */\n @Output()\n error = new EventEmitter<any>();\n\n /** The page number of the tasks to fetch. */\n @Input()\n page: number = 0;\n\n /** The number of tasks to fetch. Default value: 25. */\n @Input()\n size: number = DEFAULT_PAGINATION.maxItems;\n\n /** Filter the tasks. Display only tasks with `created_date` after `dueAfter`. */\n @Input()\n dueAfter: string;\n\n /** Filter the tasks. Display only tasks with `created_date` before `dueBefore`. */\n @Input()\n dueBefore: string;\n\n requestNode: TaskQueryRepresentation;\n currentInstanceId: string;\n selectedInstances: any[];\n pagination: BehaviorSubject<PaginationModel>;\n rows: any[] = [];\n isLoading: boolean = true;\n sorting: any[] = ['created', 'desc'];\n\n /**\n * Toggles custom data source mode.\n * When enabled the component reloads data from it's current source instead of the server side.\n * This allows generating and displaying custom data sets (i.e. filtered out content).\n */\n hasCustomDataSource: boolean = false;\n\n private readonly destroyRef = inject(DestroyRef);\n\n constructor(private taskListService: TaskListService, appConfigService: AppConfigService, private userPreferences: UserPreferencesService) {\n super(appConfigService, PRESET_KEY, taskPresetsDefaultModel);\n\n this.pagination = new BehaviorSubject<PaginationModel>({\n maxItems: this.size,\n skipCount: 0,\n totalItems: 0\n });\n }\n\n ngAfterContentInit() {\n this.createDatatableSchema();\n if (this.data && this.data.getColumns().length === 0) {\n this.data.setColumns(this.columns);\n }\n\n if (this.appId) {\n this.reload();\n }\n }\n\n ngOnInit() {\n this.userPreferences\n .select(UserPreferenceValues.PaginationSize)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((pageSize) => (this.size = pageSize));\n }\n\n setCustomDataSource(rows: any[]): void {\n if (rows) {\n this.rows = rows;\n this.hasCustomDataSource = true;\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (this.isPropertyChanged(changes)) {\n if (this.isSortChanged(changes)) {\n this.sorting = this.sort ? this.sort.split('-') : this.sorting;\n }\n this.reload();\n }\n\n const presetColumnChanges = changes['presetColumn'];\n if (presetColumnChanges && !presetColumnChanges.firstChange) {\n this.columns = this.mergeJsonAndHtmlSchema();\n }\n }\n\n reload(): void {\n if (!this.hasCustomDataSource) {\n this.requestNode = this.createRequestNode();\n this.load();\n } else {\n this.isLoading = false;\n }\n }\n\n /**\n * Select the task given in input if present\n *\n * @param taskIdSelected selected task id\n */\n selectTask(taskIdSelected: string): void {\n if (!this.isListEmpty()) {\n let dataRow = null;\n\n if (taskIdSelected) {\n dataRow = this.rows.find((currentRow: any) => currentRow['id'] === taskIdSelected);\n }\n\n if (!dataRow && this.selectFirstRow) {\n dataRow = this.rows[0];\n }\n\n if (dataRow) {\n dataRow.isSelected = true;\n this.currentInstanceId = dataRow['id'];\n }\n } else {\n this.currentInstanceId = null;\n }\n }\n\n /**\n * Return the current instance id\n *\n * @returns the current instance id\n */\n getCurrentId(): string {\n return this.currentInstanceId;\n }\n\n /**\n * Check if the taskId is the same of the selected task\n *\n * @param taskId task id\n * @returns `true` if current instance id is the same as task id, otherwise `false`\n */\n isEqualToCurrentId(taskId: string): boolean {\n return this.currentInstanceId === taskId;\n }\n\n /**\n * Check if the list is empty\n *\n * @returns `true` if list is empty, otherwise `false`\n */\n isListEmpty(): boolean {\n return !this.rows || this.rows.length === 0;\n }\n\n onRowClick(item: DataRowEvent) {\n this.currentInstanceId = item.value.getValue('id');\n this.rowClick.emit(this.currentInstanceId);\n }\n\n onRowSelect(event: CustomEvent) {\n this.selectedInstances = [...event.detail.selection];\n this.rowsSelected.emit(this.selectedInstances);\n }\n\n onRowUnselect(event: CustomEvent) {\n this.selectedInstances = [...event.detail.selection];\n this.rowsSelected.emit(this.selectedInstances);\n }\n\n onRowKeyUp(event: CustomEvent) {\n if (event.detail.keyboardEvent.key === 'Enter') {\n event.preventDefault();\n\n this.currentInstanceId = event.detail.row.getValue('id');\n this.rowClick.emit(this.currentInstanceId);\n }\n }\n\n onShowRowContextMenu(event: DataCellEvent) {\n this.showRowContextMenu.emit(event);\n }\n\n updatePagination(params: PaginationModel) {\n const needsReload = params.maxItems || params.skipCount;\n\n this.size = params.maxItems;\n this.page = this.currentPage(params.skipCount, params.maxItems);\n\n if (needsReload) {\n this.reload();\n }\n }\n\n currentPage(skipCount: number, maxItems: number): number {\n return skipCount && maxItems ? Math.floor(skipCount / maxItems) : 0;\n }\n\n private isSortChanged(changes: SimpleChanges): boolean {\n const actualSort = changes['sort'];\n return actualSort?.currentValue && actualSort.currentValue !== actualSort.previousValue;\n }\n\n private isPropertyChanged(changes: SimpleChanges): boolean {\n let changed: boolean = true;\n\n const landingTaskId = changes['landingTaskId'];\n const page = changes['page'];\n const size = changes['size'];\n if (landingTaskId?.currentValue && this.isEqualToCurrentId(landingTaskId.currentValue)) {\n changed = false;\n } else if (page && page.currentValue !== page.previousValue) {\n changed = true;\n } else if (size && size.currentValue !== size.previousValue) {\n changed = true;\n }\n\n return changed;\n }\n\n private load() {\n this.isLoading = true;\n\n this.taskListService\n .findTasksByState(this.requestNode)\n .pipe(finalize(() => (this.isLoading = false)))\n .subscribe(\n (tasks) => {\n this.rows = this.optimizeTaskDetails(tasks.data);\n this.selectTask(this.landingTaskId);\n this.success.emit(tasks);\n this.pagination.next({\n count: tasks.data.length,\n maxItems: this.size,\n skipCount: this.page * this.size,\n totalItems: tasks.total\n });\n },\n (error) => {\n this.error.emit(error);\n }\n );\n }\n\n /**\n * Optimize name field\n *\n * @param instances task detail models\n * @returns list of task detail models\n */\n private optimizeTaskDetails(instances: TaskRepresentation[]): TaskRepresentation[] {\n instances = instances.map((task) => {\n if (!task.name) {\n task.name = 'No name';\n }\n return task;\n });\n return instances;\n }\n\n private createRequestNode() {\n return new TaskQueryRepresentation({\n appDefinitionId: this.appId,\n dueAfter: this.dueAfter ? new Date(this.dueAfter) : null,\n dueBefore: this.dueBefore ? new Date(this.dueBefore) : null,\n processInstanceId: this.processInstanceId,\n processDefinitionId: this.processDefinitionId,\n text: this.name,\n assignment: this.assignment,\n state: this.state,\n sort: this.sort,\n page: this.page,\n size: this.size,\n start: this.start,\n taskId: this.taskId,\n includeProcessInstance: this.includeProcessInstance\n });\n }\n}\n","<adf-datatable\n *ngIf=\"requestNode; else noMessagesTemplate\"\n [data]=\"data\"\n [rows]=\"rows\"\n [columns]=\"columns\"\n [sorting]=\"sorting\"\n [loading]=\"isLoading\"\n [isResizingEnabled]=\"isResizingEnabled\"\n [blurOnResize]=\"blurOnResize\"\n [stickyHeader]=\"stickyHeader\"\n [multiselect]=\"multiselect\"\n [selectionMode]=\"selectionMode\"\n [contextMenu]=\"showContextMenu\"\n (showRowContextMenu)=\"onShowRowContextMenu($event)\"\n (row-select)=\"onRowSelect($any($event))\"\n (row-unselect)=\"onRowUnselect($any($event))\"\n (rowClick)=\"onRowClick($any($event))\"\n (row-keyup)=\"onRowKeyUp($any($event))\"\n>\n <adf-loading-content-template>\n <ng-template>\n <!--Add your custom loading template here-->\n <mat-progress-spinner *ngIf=\"!customLoadingContent\" class=\"adf-task-list-loading-margin\" color=\"primary\" mode=\"indeterminate\" />\n <ng-content select=\"adf-custom-loading-content-template\" />\n </ng-template>\n </adf-loading-content-template>\n <adf-no-content-template>\n <ng-template>\n <adf-empty-content\n *ngIf=\"!customEmptyContent\"\n icon=\"assignment\"\n [title]=\"'ADF_TASK_LIST.LIST.MESSAGES.TITLE' | translate\"\n [subtitle]=\"'ADF_TASK_LIST.LIST.MESSAGES.SUBTITLE' | translate\"\n />\n <ng-content select=\"adf-custom-empty-content-template\" />\n </ng-template>\n </adf-no-content-template>\n</adf-datatable>\n\n<ng-template #noMessagesTemplate>\n <div>{{ 'ADF_TASK_LIST.FILTERS.MESSAGES.NONE' | translate }}</div>\n</ng-template>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport const getDisplayUser = (firstName: string, lastName: string, delimiter: string = '-'): string => {\n firstName = (firstName !== null ? firstName : '');\n lastName = (lastName !== null ? lastName : '');\n return firstName + delimiter + lastName;\n};\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DataTableComponent, DataCellEvent, DataColumnListComponent, ShowHeaderMode } from '@alfresco/adf-core';\nimport { AfterContentInit, Component, ContentChild, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { UserEventModel } from '../../../task-list/models/user-event.model';\nimport { LightUserRepresentation } from '@alfresco/js-api';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'adf-people-list',\n imports: [CommonModule, DataTableComponent],\n templateUrl: './people-list.component.html',\n styleUrls: ['./people-list.component.scss']\n})\nexport class PeopleListComponent implements AfterContentInit {\n @ContentChild(DataColumnListComponent)\n columnList: DataColumnListComponent;\n\n @ViewChild('dataTable', { static: true })\n peopleDataTable: DataTableComponent;\n\n /** The array of user data used to populate the people list. */\n @Input()\n users: LightUserRepresentation[];\n\n /** Toggles if actions should be visible, i.e. the 'Three-Dots' menu. */\n @Input()\n actions: boolean = false;\n\n /** Emitted when the user clicks a row in the people list. */\n @Output()\n clickRow = new EventEmitter<LightUserRepresentation>();\n\n /** Emitted when the user clicks in the 'Three Dots' drop down menu for a row. */\n @Output()\n clickAction = new EventEmitter<UserEventModel>();\n\n user: LightUserRepresentation;\n showHeader = ShowHeaderMode.Never;\n\n ngAfterContentInit() {\n this.peopleDataTable.columnList = this.columnList;\n }\n\n selectUser(event: any) {\n this.user = event.value.obj;\n this.clickRow.emit(this.user);\n }\n\n hasActions(): boolean {\n return this.actions;\n }\n\n onShowRowActionsMenu(event: DataCellEvent) {\n const removeAction = {\n title: 'Remove',\n name: 'remove'\n };\n\n event.value.actions = [removeAction];\n }\n\n onExecuteRowAction(event: any) {\n const args = event.value;\n const action = args.action;\n this.clickAction.emit({ type: action.name, value: args.row.obj });\n }\n}\n","<adf-datatable\n #dataTable\n class=\"adf-task-people-list\"\n [rows]=\"users\"\n [actions]=\"hasActions()\"\n [showHeader]=\"showHeader\"\n (rowClick)=\"selectUser($event)\"\n (rowDblClick)=\"selectUser($event)\"\n (showRowActionsMenu)=\"onShowRowActionsMenu($event)\"\n (executeRowAction)=\"onExecuteRowAction($event)\" />\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DataColumnComponent, DataColumnListComponent, TranslationService } from '@alfresco/adf-core';\nimport { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { ReactiveFormsModule, UntypedFormControl } from '@angular/forms';\nimport { debounceTime, switchMap } from 'rxjs/operators';\nimport { Observable, of } from 'rxjs';\nimport { PerformSearchCallback } from '../../interfaces/perform-search-callback.interface';\nimport { getDisplayUser } from '../../helpers/get-display-user';\nimport { PeopleProcessService } from '../../../services/people-process.service';\nimport { LightUserRepresentation } from '@alfresco/js-api';\nimport { CommonModule } from '@angular/common';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { PeopleListComponent } from '../people-list/people-list.component';\n\n@Component({\n selector: 'adf-people-search-field',\n imports: [\n CommonModule,\n MatFormFieldModule,\n MatInputModule,\n ReactiveFormsModule,\n PeopleListComponent,\n DataColumnListComponent,\n DataColumnComponent\n ],\n templateUrl: './people-search-field.component.html',\n styleUrls: ['./people-search-field.component.scss'],\n host: { class: 'adf-people-search-field' },\n encapsulation: ViewEncapsulation.None\n})\nexport class PeopleSearchFieldComponent {\n @Input()\n performSearch: PerformSearchCallback;\n\n @Input()\n placeholder: string;\n\n @Output()\n rowClick = new EventEmitter<LightUserRepresentation>();\n\n users$: Observable<LightUserRepresentation[]>;\n searchUser: UntypedFormControl = new UntypedFormControl();\n\n defaultPlaceholder = 'ADF_TASK_LIST.PEOPLE.SEARCH_USER';\n\n constructor(public peopleProcessService: PeopleProcessService, private translationService: TranslationService) {\n this.users$ = this.searchUser.valueChanges.pipe(\n debounceTime(200),\n switchMap((searchWord: string) => {\n if (searchWord?.trim()) {\n return this.performSearch(searchWord);\n } else {\n return of([]);\n }\n })\n );\n\n this.defaultPlaceholder = this.translationService.instant(this.defaultPlaceholder);\n }\n\n reset() {\n this.searchUser.reset();\n }\n\n get searchPlaceholder(): string {\n return this.placeholder || this.defaultPlaceholder;\n }\n\n onRowClick(model: LightUserRepresentation) {\n this.rowClick.emit(model);\n }\n\n getDisplayUser(firstName: string, lastName: string, delimiter: string = '-'): string {\n return getDisplayUser(firstName, lastName, delimiter);\n }\n\n getInitialUserName(firstName: string, lastName: string): string {\n firstName = firstName !== null && firstName !== '' ? firstName[0] : '';\n lastName = lastName !== null && lastName !== '' ? lastName[0] : '';\n return this.getDisplayUser(firstName, lastName, '');\n }\n}\n","<mat-form-field class=\"adf-search-text-container\">\n <input\n matInput\n placeholder=\"{{ searchPlaceholder }}\"\n type=\"text\"\n id=\"userSearchText\"\n [value]=\"\"\n [formControl]=\"searchUser\"\n data-automation-id=\"adf-people-search-input\">\n</mat-form-field>\n<ng-container *ngIf=\"users$ | async; let users\">\n <div class=\"adf-search-list-container\" id=\"search-people-list\" *ngIf=\"users.length > 0\">\n <adf-people-list [users]=\"users\" (clickRow)=\"onRowClick($event)\">\n <data-columns>\n <data-column key=\"firstName\">\n <ng-template let-entry=\"$implicit\">\n <div *ngIf=\"!entry.row.obj.pictureId\" class=\"adf-people-pic\">\n {{getInitialUserName(entry.row.obj.firstName, entry.row.obj.lastName)}}</div>\n <div>\n <img [alt]=\"getDisplayUser(entry.row.obj.firstName, entry.row.obj.lastName, ' ')\" *ngIf=\"entry.row.obj.pictureId\" class=\"adf-people-img\"\n [src]=\"peopleProcessService.getUserImage(entry.row.obj.id.toString())\"/>\n </div>\n </ng-template>\n </data-column>\n <data-column key=\"email\" class=\"adf-full-width\">\n <ng-template let-entry=\"$implicit\">\n <div [attr.data-automation-id]=\"'adf-people-full-name-'+ getDisplayUser(entry.row.obj.firstName, entry.row.obj.lastName, '-')\" class=\"adf-people-full-name\">{{ getDisplayUser(entry.row.obj.firstName, entry.row.obj.lastName, ' ') }}</div>\n </ng-template>\n </data-column>\n </data-columns>\n </adf-people-list>\n </div>\n</ng-container>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, EventEmitter, Input, OnInit, Output, ViewEncapsulation } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { PerformSearchCallback } from '../../interfaces/perform-search-callback.interface';\nimport { map } from 'rxjs/operators';\nimport { LightUserRepresentation } from '@alfresco/js-api';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { PeopleSearchFieldComponent } from '../people-search-field/people-search-field.component';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'adf-people-search',\n imports: [CommonModule, TranslatePipe, PeopleSearchFieldComponent, MatButtonModule],\n templateUrl: './people-search.component.html',\n styleUrls: ['./people-search.component.scss'],\n host: {\n class: 'adf-people-search'\n },\n encapsulation: ViewEncapsulation.None\n})\nexport class PeopleSearchComponent implements OnInit {\n @Input()\n headerTitle?: string;\n\n @Input()\n actionLabel?: string;\n\n /** Parameters for displaying the list. */\n @Input({ required: true })\n results: Observable<LightUserRepresentation[]>;\n\n /** Emitted when a search is performed with a new keyword. */\n @Output()\n searchPeople = new EventEmitter<any>();\n\n /** Emitted when a user is selected and the action button is clicked. */\n @Output()\n success = new EventEmitter<LightUserRepresentation>();\n\n /** Emitted when the \"close\" button is clicked. */\n @Output()\n closeSearch = new EventEmitter();\n\n filteredResults$: Observable<LightUserRepresentation[]>;\n selectedUser: LightUserRepresentation = {} as any;\n performSearch: PerformSearchCallback;\n\n ngOnInit() {\n this.filteredResults$ = this.results.pipe(map((users) => users.filter((user) => user.id !== this.selectedUser.id)));\n this.performSearch = this.performSearchCallback.bind(this);\n }\n\n onRowClick(user: LightUserRepresentation) {\n this.selectedUser = user;\n }\n\n closeSearchList() {\n this.closeSearch.emit();\n }\n\n involveUserAndClose() {\n this.involveUser();\n this.closeSearchList();\n }\n\n involveUser() {\n if (this.selectedUser === undefined) {\n return;\n }\n this.success.emit(this.selectedUser);\n }\n\n private performSearchCallback(event: any): Observable<LightUserRepresentation[]> {\n this.searchPeople.emit(event);\n return this.filteredResults$;\n }\n}\n","<div class=\"adf-search-text-header\" *ngIf=\"headerTitle\">\n {{headerTitle | translate}}\n</div>\n\n<adf-people-search-field [performSearch]=\"performSearch\" (rowClick)=\"onRowClick($event)\" />\n\n<div class=\"search-list-action-container\">\n <button mat-button type=\"button\" id=\"close-people-search\" (click)=\"closeSearchList()\">\n {{'ADF_TASK_LIST.PEOPLE.DIALOG_CLOSE' | translate }}\n </button>\n <button mat-button type=\"button\" id=\"add-people\" (click)=\"involveUserAndClose()\">\n {{actionLabel | translate}}\n </button>\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, EventEmitter, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { Observable, Observer } from 'rxjs';\nimport { UserEventModel } from '../../../task-list/models/user-event.model';\nimport { PeopleSearchComponent } from '../people-search/people-search.component';\nimport { share } from 'rxjs/operators';\nimport { PeopleProcessService } from '../../../services/people-process.service';\nimport { LightUserRepresentation } from '@alfresco/js-api';\nimport { CommonModule } from '@angular/common';\nimport { MatCardModule } from '@angular/material/card';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { PeopleListComponent } from '../people-list/people-list.component';\nimport { DataColumnComponent, DataColumnListComponent } from '@alfresco/adf-core';\n\n@Component({\n selector: 'adf-people',\n imports: [\n CommonModule,\n MatCardModule,\n TranslatePipe,\n MatIconModule,\n PeopleSearchComponent,\n PeopleListComponent,\n DataColumnListComponent,\n DataColumnComponent\n ],\n templateUrl: './people.component.html',\n styleUrls: ['./people.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class PeopleComponent {\n /** The array of User objects to display. */\n @Input()\n people: LightUserRepresentation[] = [];\n\n /** The numeric ID of the task. */\n @Input()\n taskId: string = '';\n\n /** Should the data be read-only? */\n @Input()\n readOnly: boolean = false;\n\n @ViewChild('peopleSearch')\n peopleSearch: PeopleSearchComponent;\n\n @Output()\n error = new EventEmitter<any>();\n\n showAssignment: boolean = false;\n peopleSearch$: Observable<LightUserRepresentation[]>;\n\n private peopleSearchObserver: Observer<LightUserRepresentation[]>;\n\n constructor(public peopleProcessService: PeopleProcessService) {\n this.peopleSearch$ = new Observable<LightUserRepresentation[]>((observer) => (this.peopleSearchObserver = observer)).pipe(share());\n }\n\n searchUser(searchedWord: string) {\n this.peopleProcessService.getWorkflowUsers(this.taskId, searchedWord).subscribe({\n next: (users) => {\n this.peopleSearchObserver.next(users);\n },\n error: (error) => this.error.emit(error)\n });\n }\n\n involveUser(user: LightUserRepresentation) {\n if (user?.id !== undefined) {\n this.peopleProcessService.involveUserWithTask(this.taskId, user.id.toString()).subscribe({\n next: () => (this.people = [...this.people, user]),\n error: () => this.error.emit('Impossible to involve user with task')\n });\n }\n }\n\n removeInvolvedUser(user: LightUserRepresentation) {\n this.peopleProcessService.removeInvolvedUser(this.taskId, user.id.toString()).subscribe({\n next: () => {\n this.people = this.people.filter((involvedUser) => involvedUser.id !== user.id);\n },\n error: () => this.error.emit('Impossible to remove involved user from task')\n });\n }\n\n getDisplayUser(firstName: string, lastName: string, delimiter: string = '-'): string {\n firstName = firstName !== null ? firstName : '';\n lastName = lastName !== null ? lastName : '';\n return firstName + delimiter + lastName;\n }\n\n getInitialUserName(firstName: string, lastName: string) {\n firstName = firstName !== null && firstName !== '' ? firstName[0] : '';\n lastName = lastName !== null && lastName !== '' ? lastName[0] : '';\n return this.getDisplayUser(firstName, lastName, '');\n }\n\n onAddAssignment() {\n this.showAssignment = true;\n }\n\n onClickAction(event: UserEventModel) {\n if (event?.value && event.type === 'remove') {\n this.removeInvolvedUser(event.value);\n }\n }\n\n hasPeople(): boolean {\n return this.people && this.people.length > 0;\n }\n\n isEditMode(): boolean {\n return !this.readOnly;\n }\n\n onCloseSearch() {\n this.showAssignment = false;\n }\n}\n","<mat-card appearance=\"outlined\" class=\"adf-assignment-top-container\">\n <div mat-card-content class=\"adf-assignment-top-container-content\">\n <div class=\"assignment-header\">\n <div *ngIf=\"hasPeople()\" class=\"adf-assignment-count\" id=\"people-title\">\n {{ 'ADF_TASK_LIST.DETAILS.LABELS.PEOPLE' | translate }} {{ ' (' + people.length + ')' }}\n </div>\n <div *ngIf=\"!hasPeople()\" class=\"adf-assignment-count\" id=\"no-people-label\">\n {{ 'ADF_TASK_LIST.DETAILS.PEOPLE.NONE' | translate }}\n </div>\n <div *ngIf=\"isEditMode()\" class=\"adf-add-people\" (click)=\"onAddAssignment()\" role=\"button\" tabindex=\"0\" (keyup.enter)=\"onAddAssignment()\">\n <mat-icon class=\"adf-add-person-icon\">person_add</mat-icon>\n </div>\n </div>\n <div class=\"adf-assignment-container\" *ngIf=\"showAssignment\">\n <adf-people-search\n #peopleSearch\n [headerTitle]=\"'ADF_TASK_LIST.DETAILS.LABELS.ADD_PEOPLE'\"\n [actionLabel]=\"'ADF_TASK_LIST.PEOPLE.ADD_USER'\"\n (searchPeople)=\"searchUser($event)\"\n (success)=\"involveUser($event)\"\n (closeSearch)=\"onCloseSearch()\"\n [results]=\"peopleSearch$\"\n />\n </div>\n <div class=\"adf-assignment-list-container\" id=\"assignment-people-list\" *ngIf=\"hasPeople()\">\n <adf-people-list [users]=\"people\" [actions]=\"isEditMode()\" (clickAction)=\"onClickAction($event)\">\n <data-columns>\n <data-column key=\"firstName\">\n <ng-template let-entry=\"$implicit\">\n <div *ngIf=\"!entry.row.obj.pictureId\" class=\"adf-people-search-people-pic\">\n {{ getInitialUserName(entry.row.obj.firstName, entry.row.obj.lastName) }}\n </div>\n <div>\n <img\n [alt]=\"getDisplayUser(entry.row.obj.firstName, entry.row.obj.lastName, ' ')\"\n *ngIf=\"entry.row.obj.pictureId\"\n class=\"adf-people-img\"\n [src]=\"peopleProcessService.getUserImage(entry.row.obj.id.toString())\"\n />\n </div>\n </ng-template>\n </data-column>\n <data-column key=\"email\" class=\"adf-full-width\">\n <ng-template let-entry=\"$implicit\">\n <div class=\"adf-people-user-info\">\n <div\n [attr.data-automation-id]=\"\n 'adf-people-full-name-' + getDisplayUser(entry.row.obj.firstName, entry.row.obj.lastName, '-')\n \"\n class=\"adf-people-full-name\"\n >\n {{ getDisplayUser(entry.row.obj.firstName, entry.row.obj.lastName, ' ') }}\n </div>\n <div\n [attr.data-automation-id]=\"\n 'adf-people-email-' + getDisplayUser(entry.row.obj.firstName, entry.row.obj.lastName, '-')\n \"\n class=\"adf-people-email\"\n >\n {{ entry.row.obj.email }}\n </div>\n </div>\n </ng-template>\n </data-column>\n </data-columns>\n </adf-people-list>\n </div>\n </div>\n</mat-card>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, ViewChild, ViewEncapsulation, EventEmitter, Input, Output } from '@angular/core';\nimport { PerformSearchCallback } from '../../interfaces/perform-search-callback.interface';\nimport { TranslationService } from '@alfresco/adf-core';\nimport { PeopleSearchFieldComponent } from '../people-search-field/people-search-field.component';\nimport { getDisplayUser } from '../../helpers/get-display-user';\nimport { Observable, of } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { PeopleProcessService } from '../../../services/people-process.service';\nimport { LightUserRepresentation } from '@alfresco/js-api';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\n\nconst DEFAULT_ASSIGNEE_PLACEHOLDER = 'ADF_TASK_LIST.PEOPLE.ASSIGNEE';\n\n@Component({\n selector: 'adf-people-selector',\n imports: [CommonModule, PeopleSearchFieldComponent, MatButtonModule, MatIconModule],\n templateUrl: './people-selector.component.html',\n styleUrls: ['./people-selector.component.scss'],\n host: { class: 'adf-people-selector' },\n encapsulation: ViewEncapsulation.None\n})\nexport class PeopleSelectorComponent {\n @Input()\n peopleId: LightUserRepresentation;\n\n // Poorly documented Angular magic for [(peopleId)]\n @Output()\n peopleIdChange: EventEmitter<number>;\n\n @ViewChild('peopleSearchField', { static: true })\n searchFieldComponent: PeopleSearchFieldComponent;\n\n performSearch: PerformSearchCallback;\n selectedUser: LightUserRepresentation;\n defaultPlaceholder: string;\n\n constructor(private peopleProcessService: PeopleProcessService, private translationService: TranslationService) {\n this.peopleIdChange = new EventEmitter();\n this.performSearch = this.searchUser.bind(this);\n this.defaultPlaceholder = this.translationService.instant(DEFAULT_ASSIGNEE_PLACEHOLDER);\n }\n\n searchUser(searchWord: string): Observable<any | LightUserRepresentation[]> {\n return this.peopleProcessService.getWorkflowUsers(undefined, searchWord).pipe(catchError(() => of([])));\n }\n\n userSelected(user: LightUserRepresentation): void {\n this.updateUserSelection(user);\n }\n\n userDeselected(): void {\n this.updateUserSelection(undefined);\n }\n\n private updateUserSelection(user: LightUserRepresentation): void {\n this.selectedUser = user;\n this.peopleIdChange.emit(user?.id);\n this.searchFieldComponent.reset();\n }\n\n get placeholder() {\n if (!this.selectedUser) {\n return this.defaultPlaceholder;\n }\n\n return getDisplayUser(this.selectedUser.firstName, this.selectedUser.lastName, ' ');\n }\n}\n","<adf-people-search-field\n #peopleSearchField\n class=\"adf-people-selector-field\"\n [performSearch]=\"performSearch\"\n [placeholder]=\"placeholder\"\n (rowClick)=\"userSelected($event)\" />\n<button\n *ngIf=\"selectedUser\"\n mat-icon-button\n class=\"adf-people-selector-deselect\"\n data-automation-id=\"adf-people-selector-deselect\"\n (click)=\"userDeselected()\">\n <mat-icon>cancel</mat-icon>\n</button>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Observable } from 'rxjs';\nimport { LightUserRepresentation } from '@alfresco/js-api';\n\nexport type PerformSearchCallback = (searchWord: string) => Observable<LightUserRepresentation[]>;\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { PeopleComponent } from './components/people/people.component';\nimport { PeopleSearchComponent } from './components/people-search/people-search.component';\nimport { PeopleSearchFieldComponent } from './components/people-search-field/people-search-field.component';\nimport { PeopleSelectorComponent } from './components/people-selector/people-selector.component';\nimport { PeopleListComponent } from './components/people-list/people-list.component';\n\nexport * from './components/people/people.component';\nexport * from './components/people-list/people-list.component';\nexport * from './components/people-search/people-search.component';\nexport * from './components/people-search-field/people-search-field.component';\nexport * from './components/people-selector/people-selector.component';\nexport * from './interfaces/perform-search-callback.interface';\n\nexport const PEOPLE_DIRECTIVES = [\n PeopleComponent,\n PeopleSearchComponent,\n PeopleSearchFieldComponent,\n PeopleSelectorComponent,\n PeopleListComponent\n] as const;\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './public-api';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CardViewItemValidator } from '@alfresco/adf-core';\n\nexport class TaskDescriptionValidator implements CardViewItemValidator {\n\n message: string = 'ADF_CLOUD_TASK_HEADER.FORM_VALIDATION.INVALID_FIELD';\n\n isValid(value: string): boolean {\n const isWhitespace = (value || '').trim().length === 0;\n return value.length === 0 || !isWhitespace;\n }\n\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, DestroyRef, EventEmitter, inject, Input, OnChanges, OnInit, Output, SimpleChanges, ViewEncapsulation } from '@angular/core';\nimport {\n AppConfigService,\n CardViewBaseItemModel,\n CardViewComponent,\n CardViewDateItemModel,\n CardViewIntItemModel,\n CardViewItemLengthValidator,\n CardViewMapItemModel,\n CardViewSelectItemModel,\n CardViewSelectItemOption,\n CardViewTextItemModel,\n CardViewUpdateService,\n TranslationService\n} from '@alfresco/adf-core';\nimport { PeopleProcessService } from '../../../services/people-process.service';\nimport { TaskDescriptionValidator } from '../../validators/task-description.validator';\nimport { TaskRepresentation } from '@alfresco/js-api';\nimport { CommonModule } from '@angular/common';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatButtonModule } from '@angular/material/button';\nimport { UnclaimTaskDirective } from '../task-form/unclaim-task.directive';\nimport { ClaimTaskDirective } from '../task-form/claim-task.directive';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { debounceTime, filter, map, switchMap } from 'rxjs/operators';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'adf-task-header',\n imports: [CommonModule, MatCardModule, MatButtonModule, UnclaimTaskDirective, ClaimTaskDirective, TranslatePipe, CardViewComponent],\n templateUrl: './task-header.component.html',\n styleUrls: ['./task-header.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class TaskHeaderComponent implements OnChanges, OnInit {\n /** The name of the form. */\n @Input()\n formName: string = null;\n\n /** (required) Details related to the task. */\n @Input({ required: true })\n taskDetails: TaskRepresentation;\n\n /** Toggles display of the claim/release button. */\n @Input()\n showClaimRelease = true;\n\n /**\n * (optional) This flag sets read-only mode, preventing changes.\n */\n @Input()\n readOnly = false;\n\n /**\n * Refreshes the card data when an event emitted.\n */\n @Input()\n resetChanges = new Subject<void>();\n\n /** Emitted when the task is claimed. */\n @Output()\n claim: EventEmitter<any> = new EventEmitter<any>();\n\n /** Emitted when the task is unclaimed (ie, requeue). */\n @Output()\n unclaim: EventEmitter<any> = new EventEmitter<any>();\n\n properties: any[] = [];\n displayDateClearAction = false;\n dateFormat: string;\n dateLocale: string;\n\n private currentUserId: number;\n private readonly usersSubject$ = new BehaviorSubject<CardViewSelectItemOption<number>[]>([]);\n users$ = this.usersSubject$.asObservable();\n\n private readonly destroyRef = inject(DestroyRef);\n\n constructor(\n private peopleProcessService: PeopleProcessService,\n private translationService: TranslationService,\n private readonly appConfig: AppConfigService,\n private readonly cardViewUpdateService: CardViewUpdateService\n ) {\n this.dateFormat = this.appConfig.get('dateValues.defaultDateFormat');\n this.dateLocale = this.appConfig.get('dateValues.defaultDateLocale');\n }\n\n ngOnInit() {\n this.peopleProcessService\n .getCurrentUserInfo()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((res) => {\n this.currentUserId = res ? +res.id : null;\n this.initData();\n });\n\n this.cardViewUpdateService.autocompleteInputValue$\n .pipe(\n filter((res) => res.length > 0),\n debounceTime(300),\n switchMap((res) => this.getUsers(res)),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe((users) => {\n this.usersSubject$.next(users);\n });\n\n this.resetChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.initData();\n });\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const taskDetailsChange = changes['taskDetails'];\n if (\n taskDetailsChange?.currentValue?.id !== taskDetailsChange?.previousValue?.id ||\n taskDetailsChange?.currentValue?.assignee?.id !== taskDetailsChange?.previousValue?.assignee?.id\n ) {\n this.initData();\n } else {\n this.refreshData();\n }\n }\n\n /**\n * Refresh the card data\n */\n initData() {\n if (this.taskDetails) {\n const parentInfoMap = this.getParentInfo();\n const defaultProperties = this.initDefaultProperties(parentInfoMap);\n const filteredProperties: string[] = this.appConfig.get('adf-task-header.presets.properties');\n this.properties = defaultProperties.filter((cardItem) => this.isValidSelection(filteredProperties, cardItem));\n }\n }\n\n /**\n * Refresh the card data\n */\n refreshData() {\n this.properties = this.properties.map((cardItem) => {\n if (cardItem.key === 'formName' && cardItem.value !== this.formName) {\n return new CardViewTextItemModel({\n label: 'ADF_TASK_LIST.PROPERTIES.FORM_NAME',\n value: this.formName,\n key: 'formName',\n default: this.translationService.instant('ADF_TASK_LIST.PROPERTIES.FORM_NAME_DEFAULT'),\n clickable: this.isFormClickable(),\n icon: 'create'\n });\n } else {\n return cardItem;\n }\n });\n }\n\n /**\n * Get the process parent information\n *\n * @returns a map of process instance and definition\n */\n private getParentInfo(): Map<string, string> {\n if (this.taskDetails.processInstanceId && this.taskDetails.processDefinitionName) {\n return new Map([[this.taskDetails.processInstanceId, this.taskDetails.processDefinitionName]]);\n }\n return new Map();\n }\n\n /**\n * Check if the task has an assignee\n *\n * @returns `true` if the task has an assignee, otherwise `false`\n */\n hasAssignee(): boolean {\n return !!this.taskDetails.assignee;\n }\n\n /**\n * Check if the task is assigned to a user\n *\n * @param userId the id of the user to check\n * @returns `true` if the task assigned to a user, otherwise `false`\n */\n isAssignedTo(userId: number): boolean {\n return this.hasAssignee() ? this.taskDetails.assignee.id === userId : false;\n }\n\n /**\n * Check if the task is assigned to the current user\n *\n * @returns `true` if the task assigned to current user, otherwise `false`\n */\n isAssignedToCurrentUser(): boolean {\n return this.hasAssignee() && this.isAssignedTo(this.currentUserId);\n }\n\n /**\n * Check if the user is a candidate member\n *\n * @returns `true` if user is a candidate member, otherwise false\n */\n isCandidateMember(): boolean {\n return this.taskDetails.managerOfCandidateGroup || this.taskDetails.memberOfCandidateGroup || this.taskDetails.memberOfCandidateUsers;\n }\n\n /**\n * Check if the task is claimable\n *\n * @returns `true` if task can be claimed, otherwise `false`\n */\n isTaskClaimable(): boolean {\n return !this.hasAssignee() && this.isCandidateMember();\n }\n\n /**\n * Return true if the task claimed by candidate member.\n *\n * @returns `true` if the task is claimed, otherwise `false`\n */\n isTaskClaimedByCandidateMember(): boolean {\n return this.isCandidateMember() && this.isAssignedToCurrentUser() && !this.isCompleted();\n }\n\n /**\n * Get the status of the task\n *\n * @returns `Completed` or `Running`\n */\n getTaskStatus(): 'Completed' | 'Running' {\n return this.taskDetails?.isCompleted() ? 'Completed' : 'Running';\n }\n\n /**\n * Emit the claim event\n *\n * @param taskId the id of the task to claim\n */\n onClaimTask(taskId: string) {\n this.claim.emit(taskId);\n }\n\n /**\n * Emit the unclaim event\n *\n * @param taskId the id of the task to unclaim\n */\n onUnclaimTask(taskId: string) {\n this.unclaim.emit(taskId);\n }\n\n /**\n * Returns the task completion state\n *\n * @returns `true` if the task is completed, otherwise `false`\n */\n isCompleted(): boolean {\n return !!this.taskDetails?.endDate;\n }\n\n /**\n * Check if the form is clickable\n *\n * @returns `true` if the form is clickable, otherwise `false`\n */\n isFormClickable(): boolean {\n return !!this.formName && !this.isCompleted();\n }\n\n /**\n * Get the task duration\n *\n * @returns the task duration in milliseconds\n */\n getTaskDuration(): string {\n return this.taskDetails.duration ? `${this.taskDetails.duration} ms` : '';\n }\n\n private getUsers(searchQuery: string): Observable<CardViewSelectItemOption<number>[]> {\n return this.peopleProcessService.getWorkflowUsers(undefined, searchQuery).pipe(\n map((users) =>\n users\n .filter((user) => user.id !== this.currentUserId)\n .map(({ id, firstName = '', lastName = '' }) => ({\n key: id,\n label: `${firstName} ${lastName}`.trim()\n }))\n )\n );\n }\n\n private initDefaultProperties(parentInfoMap: Map<string, string>): any[] {\n return [\n new CardViewSelectItemModel({\n label: 'ADF_TASK_LIST.PROPERTIES.ASSIGNEE',\n value: this.taskDetails.getFullName()\n ? this.taskDetails.getFullName()\n : this.translationService.instant('ADF_TASK_LIST.PROPERTIES.ASSIGNEE_DEFAULT'),\n key: 'assignee',\n editable: this.isAssignedToCurrentUser(),\n autocompleteBased: true,\n icon: 'create',\n options$: this.users$\n }),\n new CardViewTextItemModel({\n label: 'ADF_TASK_LIST.PROPERTIES.STATUS',\n value: this.getTaskStatus(),\n key: 'status'\n }),\n new CardViewIntItemModel({\n label: 'ADF_TASK_LIST.PROPERTIES.PRIORITY',\n value: this.taskDetails.priority,\n key: 'priority',\n editable: true,\n validators: [new CardViewItemLengthValidator(1, 10)]\n }),\n new CardViewDateItemModel({\n label: 'ADF_TASK_LIST.PROPERTIES.DUE_DATE',\n value: this.taskDetails.dueDate,\n key: 'dueDate',\n default: this.translationService.instant('ADF_TASK_LIST.PROPERTIES.DUE_DATE_DEFAULT'),\n editable: true,\n format: this.dateFormat,\n locale: this.dateLocale\n }),\n new CardViewTextItemModel({\n label: 'ADF_TASK_LIST.PROPERTIES.CATEGORY',\n value: this.taskDetails.category,\n key: 'category',\n default: this.translationService.instant('ADF_TASK_LIST.PROPERTIES.CATEGORY_DEFAULT')\n }),\n new CardViewMapItemModel({\n label: 'ADF_TASK_LIST.PROPERTIES.PARENT_NAME',\n value: parentInfoMap,\n key: 'parentName',\n default: this.translationService.instant('ADF_TASK_LIST.PROPERTIES.PARENT_NAME_DEFAULT'),\n clickable: true\n }),\n new CardViewDateItemModel({\n label: 'ADF_TASK_LIST.PROPERTIES.CREATED',\n value: this.taskDetails.created,\n key: 'created',\n format: this.dateFormat,\n locale: this.dateLocale\n }),\n new CardViewTextItemModel({\n label: 'ADF_TASK_LIST.PROPERTIES.DURATION',\n value: this.getTaskDuration(),\n key: 'duration'\n }),\n new CardViewTextItemModel({\n label: 'ADF_TASK_LIST.PROPERTIES.PARENT_TASK_ID',\n value: this.taskDetails.parentTaskId,\n key: 'parentTaskId'\n }),\n new CardViewDateItemModel({\n label: 'ADF_TASK_LIST.PROPERTIES.END_DATE',\n value: this.taskDetails.endDate,\n key: 'endDate',\n format: this.dateFormat,\n locale: this.dateLocale\n }),\n new CardViewTextItemModel({\n label: 'ADF_TASK_LIST.PROPERTIES.ID',\n value: this.taskDetails.id,\n key: 'id'\n }),\n new CardViewTextItemModel({\n label: 'ADF_TASK_LIST.PROPERTIES.DESCRIPTION',\n value: this.taskDetails.description,\n key: 'description',\n default: this.translationService.instant('ADF_TASK_LIST.PROPERTIES.DESCRIPTION_DEFAULT'),\n multiline: true,\n editable: true,\n validators: [new TaskDescriptionValidator()]\n }),\n new CardViewTextItemModel({\n label: 'ADF_TASK_LIST.PROPERTIES.FORM_NAME',\n value: this.formName,\n key: 'formName',\n default: this.translationService.instant('ADF_TASK_LIST.PROPERTIES.FORM_NAME_DEFAULT'),\n clickable: this.isFormClickable(),\n icon: 'create'\n })\n ];\n }\n\n private isValidSelection(filteredProperties: string[], cardItem: CardViewBaseItemModel): boolean {\n return filteredProperties ? filteredProperties.indexOf(cardItem.key) >= 0 : true;\n }\n}\n","<mat-card appearance=\"outlined\" *ngIf=\"taskDetails\" class=\"adf-card-container\">\n <mat-card-content>\n <adf-card-view [properties]=\"properties\" [editable]=\"!readOnly && !isCompleted()\" [displayClearAction]=\"displayDateClearAction\"/>\n </mat-card-content>\n\n <mat-card-actions class=\"adf-controls\" *ngIf=\"showClaimRelease\">\n <button *ngIf=\"isTaskClaimedByCandidateMember()\"\n mat-button\n data-automation-id=\"header-unclaim-button\"\n id=\"unclaim-task\"\n class=\"adf-claim-controls\"\n adf-unclaim-task\n [taskId]=\"taskDetails.id\"\n (success)=\"onUnclaimTask($event)\">\n {{ 'ADF_TASK_LIST.DETAILS.BUTTON.UNCLAIM' | translate }}\n </button>\n <button *ngIf=\"isTaskClaimable()\"\n mat-button\n data-automation-id=\"header-claim-button\"\n id=\"claim-task\"\n class=\"adf-claim-controls\"\n adf-claim-task\n [taskId]=\"taskDetails.id\"\n (success)=\"onClaimTask($event)\">\n {{ 'ADF_TASK_LIST.DETAILS.BUTTON.CLAIM' | translate }}\n </button>\n </mat-card-actions>\n</mat-card>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AlfrescoApiService } from '@alfresco/adf-content-services';\nimport { CommentModel, CommentsService } from '@alfresco/adf-core';\nimport { ActivitiCommentsApi } from '@alfresco/js-api';\nimport { inject, Injectable } from '@angular/core';\nimport { from, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { PeopleProcessService } from './people-process.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TaskCommentsService implements CommentsService {\n private _commentsApi: ActivitiCommentsApi;\n get commentsApi(): ActivitiCommentsApi {\n this._commentsApi = this._commentsApi ?? new ActivitiCommentsApi(this.apiService.getInstance());\n return this._commentsApi;\n }\n\n protected apiService = inject(AlfrescoApiService);\n protected peopleProcessService = inject(PeopleProcessService);\n\n /**\n * Gets all comments that have been added to a task.\n *\n * @param id ID of the target task\n * @returns Details for each comment\n */\n get(id: string): Observable<CommentModel[]> {\n return from(this.commentsApi.getTaskComments(id)).pipe(map((response) => response.data.map((comment) => new CommentModel(comment))));\n }\n\n /**\n * Adds a comment to a task.\n *\n * @param id ID of the target task\n * @param message Text for the comment\n * @returns Details about the comment\n */\n add(id: string, message: string): Observable<CommentModel> {\n return from(this.commentsApi.addTaskComment({ message }, id)).pipe(map((response) => new CommentModel(response)));\n }\n\n getUserImage(userId: string): string {\n return this.peopleProcessService.getUserImage(userId);\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { ADF_COMMENTS_SERVICE, CommentsComponent } from '@alfresco/adf-core';\nimport { TaskCommentsService } from '../services/task-comments.service';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'adf-task-comments',\n imports: [CommonModule, CommentsComponent],\n templateUrl: './task-comments.component.html',\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: ADF_COMMENTS_SERVICE,\n useClass: TaskCommentsService\n }\n ]\n})\nexport class TaskCommentsComponent {\n /** The numeric ID of the task. */\n @Input()\n taskId: string;\n\n /** Determines if comments are read only. */\n @Input()\n readOnly: boolean;\n}\n","<adf-comments \n [readOnly]=\"readOnly\"\n [id]=\"taskId\"\n/>","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { TaskCommentsComponent } from './task-comments.component';\n\nexport * from './task-comments.component';\nexport * from '../services/task-comments.service';\n\nexport const TASK_COMMENTS_DIRECTIVES = [TaskCommentsComponent] as const;\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ADF_COMMENTS_SERVICE,\n CardViewUpdateService,\n ClickNotification,\n ContentLinkModel,\n FormFieldValidator,\n FormModel,\n FormOutcomeEvent,\n InfoDrawerComponent,\n InfoDrawerTabComponent,\n UpdateNotification\n} from '@alfresco/adf-core';\nimport {\n Component,\n DestroyRef,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { MatDialog, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { Observable, Observer, of } from 'rxjs';\nimport { TaskListService } from '../../services/tasklist.service';\nimport { catchError, share } from 'rxjs/operators';\nimport { TaskFormComponent } from '../task-form/task-form.component';\nimport { PeopleProcessService } from '../../../services/people-process.service';\nimport { LightUserRepresentation, TaskQueryRepresentation, TaskRepresentation } from '@alfresco/js-api';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { AttachFormComponent } from '../attach-form/attach-form.component';\nimport { PeopleComponent, PeopleSearchComponent } from '../../../people';\nimport { TaskHeaderComponent } from '../task-header/task-header.component';\nimport { TaskCommentsComponent, TaskCommentsService } from '../../../task-comments';\nimport { ChecklistComponent } from '../checklist/checklist.component';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n/** @deprecated no longer used anywhere, and can be safely removed */\n@Component({\n selector: 'adf-task-details',\n imports: [\n CommonModule,\n TranslatePipe,\n TaskFormComponent,\n AttachFormComponent,\n PeopleSearchComponent,\n TaskHeaderComponent,\n PeopleComponent,\n TaskCommentsComponent,\n ChecklistComponent,\n MatDialogModule,\n MatButtonModule,\n InfoDrawerTabComponent,\n InfoDrawerComponent,\n MatCardModule\n ],\n providers: [\n {\n provide: ADF_COMMENTS_SERVICE,\n useClass: TaskCommentsService\n }\n ],\n templateUrl: './task-details.component.html',\n styleUrls: ['./task-details.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class TaskDetailsComponent implements OnInit, OnChanges {\n @ViewChild('errorDialog')\n errorDialog: TemplateRef<any>;\n\n @ViewChild('taskForm')\n taskFormComponent: TaskFormComponent;\n\n /** (**required**) The id of the task whose details we are asking for. */\n @Input({ required: true })\n taskId: string;\n\n /** Automatically renders the next task when the current one is completed. */\n @Input()\n showNextTask: boolean = true;\n\n /** Toggles task details Header component. */\n @Input()\n showHeader: boolean = true;\n\n /** Toggles collapsed/expanded state of the Header component. */\n @Input()\n showHeaderContent: boolean = true;\n\n /** Toggles `Involve People` feature for the Header component. */\n @Input()\n showInvolvePeople: boolean = true;\n\n /** Toggles `Comments` feature for the Header component. */\n @Input()\n showComments: boolean = true;\n\n /** Toggles `Checklist` feature for the Header component. */\n @Input()\n showChecklist: boolean = true;\n\n /** Toggles rendering of the form title. */\n @Input()\n showFormTitle: boolean = false;\n\n /** Toggles rendering of the `Complete` outcome button. */\n @Input()\n showFormCompleteButton: boolean = true;\n\n /** Toggles rendering of the `Save` outcome button. */\n @Input()\n showFormSaveButton: boolean = true;\n\n /**\n * Toggles read-only state of the form. All form widgets render as read-only\n * if enabled.\n */\n @Input()\n readOnlyForm: boolean = false;\n\n /** Toggles rendering of the `Refresh` button. */\n @Input()\n showFormRefreshButton: boolean = true;\n\n /** Field validators for use with the form. */\n @Input()\n fieldValidators: FormFieldValidator[] = [];\n\n /** Emitted when the form is submitted with the `Save` or custom outcomes. */\n @Output()\n formSaved = new EventEmitter<FormModel>();\n\n /** Emitted when the form is submitted with the `Complete` outcome. */\n @Output()\n formCompleted = new EventEmitter<FormModel>();\n\n /** Emitted when the form field content is clicked. */\n @Output()\n formContentClicked = new EventEmitter<ContentLinkModel>();\n\n /** Emitted when the form is loaded or reloaded. */\n @Output()\n formLoaded = new EventEmitter<FormModel>();\n\n /** Emitted when a checklist task is created. */\n @Output()\n taskCreated = new EventEmitter<TaskRepresentation>();\n\n /** Emitted when a checklist task is deleted. */\n @Output()\n taskDeleted = new EventEmitter<string>();\n\n /** Emitted when an error occurs. */\n @Output()\n error = new EventEmitter<any>();\n\n /**\n * Emitted when any outcome is executed. Default behaviour can be prevented\n * via `event.preventDefault()`.\n */\n @Output()\n executeOutcome = new EventEmitter<FormOutcomeEvent>();\n\n /** Emitted when a task is assigned. */\n @Output()\n assignTask = new EventEmitter<void>();\n\n /** Emitted when a task is claimed. */\n @Output()\n claimedTask = new EventEmitter<string>();\n\n /** Emitted when a task is unclaimed. */\n @Output()\n unClaimedTask = new EventEmitter<string>();\n\n taskDetails: TaskRepresentation;\n taskFormName: string = null;\n taskPeople: LightUserRepresentation[] = [];\n noTaskDetailsTemplateComponent: TemplateRef<any>;\n showAssignee = false;\n showAttachForm = false;\n internalReadOnlyForm = false;\n errorDialogRef: MatDialogRef<TemplateRef<any>>;\n peopleSearch: Observable<LightUserRepresentation[]>;\n data: any;\n\n private peopleSearchObserver: Observer<LightUserRepresentation[]>;\n\n constructor(\n private readonly taskListService: TaskListService,\n private readonly peopleProcessService: PeopleProcessService,\n private readonly cardViewUpdateService: CardViewUpdateService,\n private readonly dialog: MatDialog,\n private readonly destroyRef: DestroyRef\n ) {}\n\n ngOnInit() {\n this.peopleSearch = new Observable<LightUserRepresentation[]>((observer) => (this.peopleSearchObserver = observer)).pipe(share());\n\n if (this.taskId) {\n this.loadDetails(this.taskId);\n }\n\n this.cardViewUpdateService.itemUpdated$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(this.updateTaskDetails.bind(this));\n\n this.cardViewUpdateService.itemClicked$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(this.clickTaskDetails.bind(this));\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const taskId = changes.taskId;\n this.showAssignee = false;\n\n if (taskId && !taskId.currentValue) {\n this.reset();\n } else if (taskId?.currentValue) {\n this.loadDetails(taskId.currentValue);\n }\n }\n\n isAssigned(): boolean {\n return !!this.taskDetails.assignee;\n }\n\n /**\n * Complete button clicked\n */\n onComplete(): void {\n this.onFormCompleted(null);\n }\n\n onShowAttachForm() {\n this.showAttachForm = true;\n }\n\n onCancelAttachForm() {\n this.showAttachForm = false;\n }\n\n onCompleteAttachForm() {\n this.taskFormName = null;\n this.showAttachForm = false;\n this.taskFormComponent.loadTask(this.taskId);\n this.loadDetails(this.taskId);\n }\n\n onFormContentClick(content: ContentLinkModel): void {\n this.formContentClicked.emit(content);\n }\n\n onFormSaved(form: FormModel): void {\n this.formSaved.emit(form);\n }\n\n onFormCompleted(form: FormModel): void {\n this.formCompleted.emit(form);\n if (this.showNextTask && (this.taskDetails.processInstanceId || this.taskDetails.processDefinitionId)) {\n this.loadNextTask(this.taskDetails.processInstanceId, this.taskDetails.processDefinitionId);\n }\n }\n\n onFormLoaded(form: FormModel): void {\n this.taskFormName = form?.name;\n this.formLoaded.emit(form);\n }\n\n onChecklistTaskCreated(task: TaskRepresentation): void {\n this.taskCreated.emit(task);\n }\n\n onChecklistTaskDeleted(taskId: string): void {\n this.taskDeleted.emit(taskId);\n }\n\n onFormError(error: any): void {\n this.errorDialogRef = this.dialog.open(this.errorDialog, { width: '500px' });\n this.error.emit(error);\n }\n\n onFormExecuteOutcome(event: FormOutcomeEvent): void {\n this.executeOutcome.emit(event);\n }\n\n closeErrorDialog(): void {\n this.dialog.closeAll();\n }\n\n onClaimAction(taskId: string): void {\n this.claimedTask.emit(taskId);\n this.loadDetails(taskId);\n }\n\n onUnclaimAction(taskId: string): void {\n this.unClaimedTask.emit(taskId);\n this.loadDetails(taskId);\n }\n\n searchUser(searchedWord: string) {\n this.peopleProcessService.getWorkflowUsers(null, searchedWord).subscribe((users) => {\n users = users.filter((user) => user.id !== this.taskDetails.assignee.id);\n this.peopleSearchObserver.next(users);\n });\n }\n\n onCloseSearch() {\n this.showAssignee = false;\n }\n\n assignTaskToUser(selectedUser: LightUserRepresentation) {\n this.taskListService.assignTask(this.taskDetails.id, selectedUser).subscribe(() => {\n this.assignTask.emit();\n });\n this.showAssignee = false;\n }\n\n getTaskHeaderViewClass(): string {\n if (this.showAssignee) {\n return 'assign-edit-view';\n } else {\n return 'default-view';\n }\n }\n\n isReadOnlyComment(): boolean {\n return this.taskDetails?.isCompleted() && this.taskPeople?.length === 0;\n }\n\n private reset() {\n this.taskDetails = null;\n }\n\n private updateTaskDetails(updateNotification: UpdateNotification) {\n this.taskListService\n .updateTask(this.taskId, updateNotification.changed)\n .pipe(\n catchError(() => {\n this.cardViewUpdateService.updateElement(updateNotification.target);\n return of(null);\n })\n )\n .subscribe(() => this.loadDetails(this.taskId));\n }\n\n private clickTaskDetails(clickNotification: ClickNotification) {\n if (clickNotification.target.key === 'assignee') {\n this.showAssignee = true;\n }\n if (clickNotification.target.key === 'formName') {\n this.showAttachForm = true;\n }\n }\n\n private loadDetails(taskId: string) {\n this.taskPeople = [];\n\n if (taskId) {\n this.taskListService.getTaskDetails(taskId).subscribe((res) => {\n this.showAttachForm = false;\n this.taskDetails = res;\n\n if (this.taskDetails.name === 'null') {\n this.taskDetails.name = 'No name';\n }\n\n const endDate: any = res.endDate;\n if (endDate && !isNaN(endDate.getTime())) {\n this.internalReadOnlyForm = true;\n } else {\n this.internalReadOnlyForm = this.readOnlyForm;\n }\n\n if (this.taskDetails?.involvedPeople) {\n this.taskPeople.push(...this.taskDetails.involvedPeople);\n }\n });\n }\n }\n\n private loadNextTask(processInstanceId: string, processDefinitionId: string): void {\n const requestNode = new TaskQueryRepresentation({\n processInstanceId,\n processDefinitionId\n });\n this.taskListService.getTasks(requestNode).subscribe(\n (response) => {\n if (response && response.length > 0) {\n this.taskDetails = new TaskRepresentation(response[0]);\n } else {\n this.reset();\n }\n },\n (error) => {\n this.error.emit(error);\n }\n );\n }\n}\n","<div *ngIf=\"!taskDetails\" data-automation-id=\"adf-tasks-details--empty\">\n <ng-template *ngIf=\"noTaskDetailsTemplateComponent\" ngFor [ngForOf]=\"[data]\"\n [ngForTemplate]=\"noTaskDetailsTemplateComponent\">\n {{ 'ADF_TASK_LIST.DETAILS.MESSAGES.NONE' | translate }}\n </ng-template>\n <div *ngIf=\"!noTaskDetailsTemplateComponent\">\n {{ 'ADF_TASK_LIST.DETAILS.MESSAGES.NONE' | translate }}\n </div>\n</div>\n<div *ngIf=\"taskDetails\" class=\"adf-task-details\">\n\n <div *ngIf=\"showHeader\" class=\"adf-task-details-header\">\n <h2 class=\"adf-activiti-task-details__header\">\n <span>{{taskDetails.name || 'No name'}}</span>\n </h2>\n </div>\n\n <div class=\"adf-task-details-core\">\n <div class=\"adf-task-details-core-form\">\n <div *ngIf=\"isAssigned()\">\n <adf-task-form #taskForm\n [taskId]=\"taskDetails.id\"\n [showFormTitle]=\"showFormTitle\"\n [showFormRefreshButton]=\"showFormRefreshButton\"\n [showCancelButton]=\"true\"\n [fieldValidators]=\"fieldValidators\"\n (formSaved)='onFormSaved($event)'\n (formCompleted)='onFormCompleted($event)'\n (formContentClicked)='onFormContentClick($event)'\n (formLoaded)='onFormLoaded($event)'\n (completed)=\"onComplete()\"\n (showAttachForm)=\"onShowAttachForm()\"\n (executeOutcome)='onFormExecuteOutcome($event)'\n (taskClaimed)=\"onClaimAction($event)\"\n (taskUnclaimed)=\"onUnclaimAction($event)\"\n (error)=\"onFormError($event)\" />\n <adf-attach-form *ngIf=\"showAttachForm\"\n [taskId]=\"taskDetails.id\"\n [formKey]=\"taskDetails.formKey\"\n (cancelAttachForm)=\"onCancelAttachForm()\"\n (success)=\"onCompleteAttachForm()\" />\n </div>\n <div *ngIf=\"!isAssigned()\" id=\"claim-message-id\">\n {{ 'ADF_TASK_LIST.DETAILS.MESSAGES.CLAIM' | translate }}\n </div>\n </div>\n <div class=\"adf-task-details-core-sidebar\">\n <adf-info-drawer *ngIf=\"showHeaderContent\" title=\"ADF_TASK_LIST.DETAILS.LABELS.INFO_DRAWER_TITLE\" id=\"adf-task-details-core-sidebar-drawer\" class=\"adf-task-details-core-sidebar-drawer\">\n <adf-info-drawer-tab label=\"ADF_TASK_LIST.DETAILS.LABELS.INFO_DRAWER_TAB_DETAILS_TITLE\">\n <div class=\"adf-assignment-container\" *ngIf=\"showAssignee\">\n <adf-people-search\n [headerTitle]=\"'ADF_TASK_LIST.DETAILS.LABELS.ADD_ASSIGNEE'\"\n [actionLabel]=\"'ADF_TASK_LIST.PEOPLE.ADD_ASSIGNEE'\"\n (searchPeople)=\"searchUser($event)\"\n (success)=\"assignTaskToUser($event)\"\n (closeSearch)=\"onCloseSearch()\"\n [results]=\"peopleSearch\" />\n </div>\n <adf-task-header\n [class]=\"getTaskHeaderViewClass()\"\n [taskDetails]=\"taskDetails\"\n [formName]=\"taskFormName\"\n (claim)=\"onClaimAction($event)\"\n (unclaim)=\"onUnclaimAction($event)\" />\n <adf-people *ngIf=\"showInvolvePeople\"\n [people]=\"taskPeople\"\n [readOnly]=\"internalReadOnlyForm\"\n [taskId]=\"taskDetails.id\" />\n </adf-info-drawer-tab>\n\n <adf-info-drawer-tab label=\"ADF_TASK_LIST.DETAILS.LABELS.INFO_DRAWER_TAB_ACTIVITY_TITLE\">\n <mat-card appearance=\"outlined\" *ngIf=\"showComments\">\n <mat-card-content>\n <adf-task-comments\n [readOnly]=\"isReadOnlyComment()\"\n [taskId]=\"taskDetails.id\"\n />\n </mat-card-content>\n </mat-card>\n </adf-info-drawer-tab>\n\n </adf-info-drawer>\n\n <div *ngIf=\"showHeaderContent\" class=\"adf-task-details-core-sidebar-checklist\">\n <div *ngIf=\"showChecklist\">\n <adf-checklist\n [readOnly]=\"internalReadOnlyForm\"\n [taskId]=\"taskDetails.id\"\n [assignee]=\"taskDetails.assignee?.id\"\n (checklistTaskCreated)=\"onChecklistTaskCreated($event)\"\n (checklistTaskDeleted)=\"onChecklistTaskDeleted($event)\" />\n </div>\n </div>\n </div>\n </div>\n\n <ng-template #errorDialog>\n <h3 matDialogTitle>{{'ADF_TASK_LIST.DETAILS.ERROR.TITLE'|translate}}</h3>\n <mat-dialog-content>\n <p>{{'ADF_TASK_LIST.DETAILS.ERROR.DESCRIPTION'|translate}}</p>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button mat-button type=\"button\" (click)=\"closeErrorDialog()\">{{'ADF_TASK_LIST.DETAILS.ERROR.CLOSE'|translate}}\n </button>\n </mat-dialog-actions>\n </ng-template>\n\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ADF_DATE_FORMATS, AdfDateFnsAdapter, DateFnsUtils, FormFieldModel, FormModel } from '@alfresco/adf-core';\nimport { Component, DestroyRef, EventEmitter, inject, Input, OnInit, Output, ViewEncapsulation } from '@angular/core';\nimport { DateAdapter, MAT_DATE_FORMATS } from '@angular/material/core';\nimport { EMPTY, Observable } from 'rxjs';\nimport { Form } from '../../models/form.model';\nimport { TaskListService } from '../../services/tasklist.service';\nimport { defaultIfEmpty, switchMap } from 'rxjs/operators';\nimport { AbstractControl, ReactiveFormsModule, UntypedFormBuilder, UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms';\nimport { isValid } from 'date-fns';\nimport { TaskRepresentation } from '@alfresco/js-api';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatButtonModule } from '@angular/material/button';\nimport { PeopleWidgetComponent } from '../../../form';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nconst FORMAT_DATE = 'DD/MM/YYYY';\nconst MAX_LENGTH = 255;\n\n@Component({\n selector: 'adf-start-task',\n imports: [\n CommonModule,\n TranslatePipe,\n MatCardModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatInputModule,\n MatDatepickerModule,\n MatIconModule,\n MatSelectModule,\n MatButtonModule,\n PeopleWidgetComponent\n ],\n templateUrl: './start-task.component.html',\n styleUrls: ['./start-task.component.scss'],\n providers: [\n { provide: DateAdapter, useClass: AdfDateFnsAdapter },\n { provide: MAT_DATE_FORMATS, useValue: ADF_DATE_FORMATS }\n ],\n encapsulation: ViewEncapsulation.None\n})\nexport class StartTaskComponent implements OnInit {\n /** (required) The id of the app. */\n @Input({ required: true })\n appId: number;\n\n /** Default Task Name. */\n @Input()\n name: string = '';\n\n /** Emitted when the task is successfully created. */\n @Output()\n success = new EventEmitter<any>();\n\n /** Emitted when the cancel button is clicked by the user. */\n @Output()\n cancel = new EventEmitter<void>();\n\n /** Emitted when an error occurs. */\n @Output()\n error = new EventEmitter<any>();\n\n taskDetailsModel = new TaskRepresentation();\n forms$: Observable<Form[]>;\n assigneeId: number;\n field: FormFieldModel;\n taskForm: UntypedFormGroup;\n dateError: boolean = false;\n maxTaskNameLength: number = MAX_LENGTH;\n loading = false;\n\n private readonly destroyRef = inject(DestroyRef);\n\n constructor(private taskService: TaskListService, private formBuilder: UntypedFormBuilder) {}\n\n ngOnInit() {\n if (this.name) {\n this.taskDetailsModel.name = this.name;\n }\n\n this.validateMaxTaskNameLength();\n\n this.field = new FormFieldModel(new FormModel(), { id: this.assigneeId, value: this.assigneeId, placeholder: 'Assignee' });\n\n this.loadFormsTask();\n this.buildForm();\n }\n\n buildForm(): void {\n this.taskForm = this.formBuilder.group({\n name: new UntypedFormControl(this.taskDetailsModel.name, [\n Validators.required,\n Validators.maxLength(this.maxTaskNameLength),\n this.whitespaceValidator\n ]),\n description: new UntypedFormControl('', [this.whitespaceValidator]),\n formKey: new UntypedFormControl('')\n });\n\n this.taskForm.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((taskFormValues) => this.setTaskDetails(taskFormValues));\n }\n\n private whitespaceValidator(control: UntypedFormControl): any {\n if (control.value) {\n const isWhitespace = (control.value || '').trim().length === 0;\n const isControlValid = control.value.length === 0 || !isWhitespace;\n return isControlValid ? null : { whitespace: true };\n }\n return null;\n }\n\n setTaskDetails(form: any) {\n this.taskDetailsModel.name = form.name;\n this.taskDetailsModel.description = form.description;\n this.taskDetailsModel.formKey = form.formKey ? form.formKey.toString() : null;\n }\n\n isFormValid(): boolean {\n return this.taskForm.valid && !this.dateError && !this.loading;\n }\n\n saveTask(): void {\n this.loading = true;\n if (this.appId) {\n this.taskDetailsModel.category = this.appId.toString();\n }\n this.taskService\n .createNewTask(this.taskDetailsModel)\n .pipe(\n switchMap((createRes) =>\n this.attachForm(createRes.id, this.taskDetailsModel.formKey).pipe(\n defaultIfEmpty(createRes),\n switchMap((attachRes) => {\n const assigneeId = this.assigneeId ? this.assigneeId.toString() : null;\n return this.assignTaskByUserId(createRes.id, assigneeId).pipe(defaultIfEmpty(attachRes ? attachRes : createRes));\n })\n )\n )\n )\n .subscribe(\n (res: any) => {\n this.loading = false;\n this.success.emit(res);\n },\n (err) => {\n this.loading = false;\n this.error.emit(err);\n }\n );\n }\n\n setAssigneeId(userId: number): void {\n this.assigneeId = userId;\n }\n\n onCancel(): void {\n this.cancel.emit();\n }\n\n getDisplayUser(firstName: string, lastName: string, delimiter: string = '-'): string {\n firstName = firstName !== null ? firstName : '';\n lastName = lastName !== null ? lastName : '';\n return firstName + delimiter + lastName;\n }\n\n onDateChanged(newDateValue: Date | string) {\n this.dateError = false;\n\n if (newDateValue) {\n let date: Date;\n\n if (typeof newDateValue === 'string') {\n date = DateFnsUtils.parseDate(newDateValue, FORMAT_DATE);\n } else {\n date = newDateValue;\n }\n\n if (isValid(date)) {\n this.taskDetailsModel.dueDate = date;\n } else {\n this.dateError = true;\n this.taskDetailsModel.dueDate = null;\n }\n } else {\n this.taskDetailsModel.dueDate = null;\n }\n }\n\n private validateMaxTaskNameLength() {\n if (this.maxTaskNameLength > MAX_LENGTH) {\n this.maxTaskNameLength = MAX_LENGTH;\n }\n }\n\n get nameController(): AbstractControl {\n return this.taskForm.get('name');\n }\n\n get descriptionController(): AbstractControl {\n return this.taskForm.get('description');\n }\n\n private attachForm(taskId: string, formKey: string): Observable<any> {\n let response: any = EMPTY;\n if (taskId && formKey) {\n response = this.taskService.attachFormToATask(taskId, parseInt(formKey, 10));\n }\n return response;\n }\n\n private assignTaskByUserId(taskId: string, userId: string): Observable<TaskRepresentation> {\n if (taskId && userId) {\n return this.taskService.assignTaskByUserId(taskId, userId);\n }\n return EMPTY;\n }\n\n private loadFormsTask(): void {\n this.forms$ = this.taskService.getFormList();\n }\n}\n","<mat-card appearance=\"outlined\" class=\"adf-new-task-layout-card\">\n <mat-card-header class=\"adf-new-task-heading\">\n <mat-card-title>{{'ADF_TASK_LIST.START_TASK.FORM.TITLE' | translate}}</mat-card-title>\n </mat-card-header>\n <mat-card-content>\n <form [formGroup]=\"taskForm\" class=\"adf-new-task-form\">\n <div class=\"adf-task-name\">\n <mat-form-field>\n <mat-label>{{'ADF_TASK_LIST.START_TASK.FORM.LABEL.NAME' | translate}}</mat-label>\n <input\n matInput\n id=\"name_id\"\n formControlName=\"name\">\n <mat-error *ngIf=\"nameController.hasError('required') || nameController.hasError('whitespace')\">\n {{ 'ADF_TASK_LIST.START_TASK.FORM.ERROR.REQUIRED' | translate }}\n </mat-error>\n <mat-error *ngIf=\"nameController.hasError('maxlength')\">\n {{ 'ADF_TASK_LIST.START_TASK.FORM.ERROR.MAXIMUM_LENGTH' | translate : { characters : maxTaskNameLength } }}\n </mat-error>\n </mat-form-field>\n </div>\n <div class=\"adf-task-description\">\n <mat-form-field>\n <mat-label>{{'ADF_TASK_LIST.START_TASK.FORM.LABEL.DESCRIPTION' | translate}}</mat-label>\n <textarea\n matInput\n rows=\"1\"\n id=\"description_id\"\n formControlName=\"description\">\n </textarea>\n <mat-error *ngIf=\"descriptionController.hasError('whitespace')\">\n {{ 'ADF_TASK_LIST.START_TASK.FORM.ERROR.MESSAGE' | translate }}\n </mat-error>\n </mat-form-field>\n </div>\n <div class=\"adf-input-row\">\n <mat-form-field>\n <input\n matInput\n (keyup)=\"onDateChanged($any($event).srcElement.value)\"\n (dateInput)=\"onDateChanged($any($event).value)\"\n [matDatepicker]=\"taskDatePicker\"\n placeholder=\"{{'ADF_TASK_LIST.START_TASK.FORM.LABEL.DATE'|translate}}\"\n id=\"date_id\">\n <mat-datepicker-toggle\n matSuffix\n [for]=\"taskDatePicker\" />\n <mat-datepicker\n #taskDatePicker\n [touchUi]=\"true\" />\n <div class=\"adf-error-text-container\">\n <div *ngIf=\"dateError\">\n <div class=\"adf-error-text\">{{'ADF_TASK_LIST.START_TASK.FORM.ERROR.DATE'|translate}}</div>\n <mat-icon class=\"adf-error-icon\">warning</mat-icon>\n </div>\n </div>\n </mat-form-field>\n <people-widget\n (peopleSelected)=\"setAssigneeId($event)\"\n [field]=\"field\"\n class=\"adf-people-widget-content\" />\n </div>\n <mat-form-field class=\"adf-task-form\">\n <mat-label id=\"form_label\">{{'ADF_TASK_LIST.START_TASK.FORM.LABEL.FORM'|translate}}</mat-label>\n <mat-select\n id=\"form_id\"\n class=\"form-control\"\n formControlName=\"formKey\">\n <mat-option>{{'ADF_TASK_LIST.START_TASK.FORM.LABEL.NONE'|translate}}</mat-option>\n <mat-option *ngFor=\"let form of forms$ | async\" [value]=\"form.id\">{{ form.name }}</mat-option>\n </mat-select>\n </mat-form-field>\n </form>\n </mat-card-content>\n <mat-card-actions>\n <div class=\"adf-new-task-footer\">\n <button\n mat-button\n class=\"adf-uppercase\"\n (click)=\"onCancel()\"\n id=\"button-cancel\">\n {{ 'ADF_TASK_LIST.START_TASK.FORM.ACTION.CANCEL' | translate }}\n </button>\n <button\n color=\"primary\"\n mat-button\n class=\"adf-uppercase\"\n [disabled]=\"!isFormValid()\"\n (click)=\"saveTask()\"\n id=\"button-start\">\n {{ 'ADF_TASK_LIST.START_TASK.FORM.ACTION.START' | translate }}\n </button>\n </div>\n </mat-card-actions>\n</mat-card>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { UploadService } from '@alfresco/adf-content-services';\nimport { ActivitiContentApi, RelatedContentRepresentation } from '@alfresco/js-api';\nimport { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ProcessUploadService extends UploadService {\n private _contentApi: ActivitiContentApi;\n get contentApi(): ActivitiContentApi {\n this._contentApi = this._contentApi ?? new ActivitiContentApi(this.apiService.getInstance());\n return this._contentApi;\n }\n\n getUploadPromise(file: any): Promise<RelatedContentRepresentation> {\n const opts = {\n isRelatedContent: true\n };\n const processInstanceId = file.options.parentId;\n return this.contentApi.createRelatedContentOnProcessInstance(processInstanceId, file.file, opts);\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { UploadService } from '@alfresco/adf-content-services';\nimport { Injectable } from '@angular/core';\nimport { ActivitiContentApi, RelatedContentRepresentation } from '@alfresco/js-api';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TaskUploadService extends UploadService {\n private _contentApi: ActivitiContentApi;\n get contentApi(): ActivitiContentApi {\n this._contentApi = this._contentApi ?? new ActivitiContentApi(this.apiService.getInstance());\n return this._contentApi;\n }\n\n getUploadPromise(file: any): Promise<RelatedContentRepresentation> {\n const opts = {\n isRelatedContent: true\n };\n const taskId = file.options.parentId;\n return this.contentApi.createRelatedContentOnTask(taskId, file.file, opts);\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { TaskRepresentation } from '@alfresco/js-api';\n\nexport class TaskDetailsEvent {\n private _value: TaskRepresentation;\n private _defaultPrevented: boolean = false;\n\n get value(): TaskRepresentation {\n return this._value;\n }\n\n get defaultPrevented() {\n return this._defaultPrevented;\n }\n\n constructor(value: TaskRepresentation) {\n this._value = value;\n }\n\n preventDefault() {\n this._defaultPrevented = true;\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * This object represent the User Event.\n */\nexport interface UserEventModel {\n type: string;\n value: any;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * This object represent the process service user group.*\n */\n\nexport interface UserGroupModel {\n id?: number;\n name?: string;\n externalId?: string;\n status?: string;\n groups?: any;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ClaimTaskDirective } from './components/task-form/claim-task.directive';\nimport { UnclaimTaskDirective } from './components/task-form/unclaim-task.directive';\nimport { TaskFormComponent } from './components/task-form/task-form.component';\nimport { AttachFormComponent } from './components/attach-form/attach-form.component';\nimport { ChecklistComponent } from './components/checklist/checklist.component';\nimport { TaskFiltersComponent } from './components/task-filters/task-filters.component';\nimport { TaskListComponent } from './components/task-list/task-list.component';\nimport { TaskDetailsComponent } from './components/task-details/task-details.component';\nimport { TaskHeaderComponent } from './components/task-header/task-header.component';\nimport { StartTaskComponent } from './components/start-task/start-task.component';\nimport { TaskStandaloneComponent } from './components/task-standalone/task-standalone.component';\n\nexport * from './components/task-list/task-list.component';\nexport * from './components/checklist/checklist.component';\nexport * from './components/task-header/task-header.component';\nexport * from './components/task-filters/task-filters.component';\nexport * from './components/task-form/task-form.component';\nexport * from './components/task-form/claim-task.directive';\nexport * from './components/task-form/unclaim-task.directive';\nexport * from './components/task-details/task-details.component';\nexport * from './components/start-task/start-task.component';\nexport * from './components/task-standalone/task-standalone.component';\nexport * from './components/attach-form/attach-form.component';\n\nexport * from './services/tasklist.service';\nexport * from './services/process-upload.service';\nexport * from './services/task-upload.service';\nexport * from './services/task-filter.service';\n\nexport * from './models/form.model';\nexport * from './models/task-details.event';\nexport * from './models/user-event.model';\nexport * from './models/user-group.model';\n\nexport const TASK_LIST_DIRECTIVES = [\n TaskFormComponent,\n AttachFormComponent,\n ChecklistComponent,\n TaskFiltersComponent,\n TaskListComponent,\n TaskDetailsComponent,\n TaskHeaderComponent,\n StartTaskComponent,\n TaskStandaloneComponent,\n ClaimTaskDirective,\n UnclaimTaskDirective\n] as const;\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './public-api';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CommonModule, DatePipe } from '@angular/common';\nimport { Component, DestroyRef, EventEmitter, inject, Input, OnChanges, OnInit, Output, SimpleChanges, ViewChild } from '@angular/core';\nimport { MatDialog, MatDialogModule } from '@angular/material/dialog';\nimport { Observable, Observer } from 'rxjs';\nimport { TaskDetailsEvent } from '../../../task-list';\nimport { ProcessService } from '../../services/process.service';\nimport { share } from 'rxjs/operators';\nimport { ProcessInstanceRepresentation, TaskRepresentation } from '@alfresco/js-api';\nimport { MatButtonModule } from '@angular/material/button';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatListModule } from '@angular/material/list';\nimport { MatIconModule } from '@angular/material/icon';\nimport { StartFormComponent } from '../../../form';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'adf-process-instance-tasks',\n imports: [CommonModule, MatButtonModule, TranslatePipe, MatChipsModule, MatListModule, MatIconModule, MatDialogModule, StartFormComponent],\n templateUrl: './process-instance-tasks.component.html',\n styleUrls: ['./process-instance-tasks.component.css']\n})\nexport class ProcessInstanceTasksComponent implements OnInit, OnChanges {\n /** The ID of the process instance to display tasks for. */\n @Input({ required: true })\n processInstanceDetails: ProcessInstanceRepresentation;\n\n /**\n * Toggles whether to show a refresh button next to the list of tasks to allow\n * it to be updated from the server.\n */\n @Input()\n showRefreshButton: boolean = true;\n\n /** Emitted when an error occurs. */\n @Output()\n error = new EventEmitter<any>();\n\n @ViewChild('startDialog')\n startDialog: any;\n\n @ViewChild('taskDetails')\n taskDetails: any;\n\n /** Emitted when a task is clicked. */\n @Output()\n taskClick = new EventEmitter<TaskDetailsEvent>();\n\n activeTasks: TaskRepresentation[] = [];\n completedTasks: TaskRepresentation[] = [];\n task$: Observable<TaskRepresentation>;\n completedTask$: Observable<TaskRepresentation>;\n message: string;\n processId: string;\n\n private taskObserver: Observer<TaskRepresentation>;\n private completedTaskObserver: Observer<TaskRepresentation>;\n\n private readonly destroyRef = inject(DestroyRef);\n\n constructor(private processService: ProcessService, private dialog: MatDialog) {\n this.task$ = new Observable<TaskRepresentation>((observer) => (this.taskObserver = observer)).pipe(share());\n this.completedTask$ = new Observable<TaskRepresentation>((observer) => (this.completedTaskObserver = observer)).pipe(share());\n }\n\n ngOnInit() {\n this.task$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((task) => this.activeTasks.push(task));\n\n this.completedTask$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((task) => this.completedTasks.push(task));\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const processInstanceDetails = changes['processInstanceDetails'];\n if (processInstanceDetails?.currentValue) {\n this.load(processInstanceDetails.currentValue.id);\n }\n }\n\n load(processInstanceId: string) {\n this.loadActive(processInstanceId);\n this.loadCompleted(processInstanceId);\n }\n\n loadActive(processInstanceId: string) {\n this.activeTasks = [];\n if (processInstanceId) {\n this.processService.getProcessTasks(processInstanceId, null).subscribe(\n (res) => {\n res.forEach((task) => {\n this.taskObserver.next(task);\n });\n },\n (err) => {\n this.error.emit(err);\n }\n );\n } else {\n this.activeTasks = [];\n }\n }\n\n loadCompleted(processInstanceId: string) {\n this.completedTasks = [];\n if (processInstanceId) {\n this.processService.getProcessTasks(processInstanceId, 'completed').subscribe(\n (res) => {\n res.forEach((task) => {\n this.completedTaskObserver.next(task);\n });\n },\n (err) => {\n this.error.emit(err);\n }\n );\n } else {\n this.completedTasks = [];\n }\n }\n\n hasStartFormDefined(): boolean {\n return this.processInstanceDetails?.startFormDefined === true;\n }\n\n getUserFullName(user: any): string {\n if (user) {\n return (user.firstName && user.firstName !== 'null' ? user.firstName + ' ' : '') + user.lastName;\n }\n return 'Nobody';\n }\n\n getFormatDate(value: any, format: string): any {\n const datePipe = new DatePipe('en-US');\n try {\n return datePipe.transform(value, format);\n } catch {\n return value;\n }\n }\n\n clickTask(task: TaskRepresentation) {\n const args = new TaskDetailsEvent(task);\n this.taskClick.emit(args);\n }\n\n clickStartTask() {\n this.processId = this.processInstanceDetails.id;\n this.showStartDialog();\n }\n\n showStartDialog() {\n this.dialog.open(this.startDialog, { height: '500px', width: '700px' });\n }\n\n closeStartDialog() {\n this.dialog.closeAll();\n }\n\n onRefreshClicked() {\n this.load(this.processInstanceDetails.id);\n }\n\n onFormContentClick() {\n this.closeStartDialog();\n }\n}\n","<div *ngIf=\"showRefreshButton\" class=\"process-tasks-refresh\" >\n <button mat-icon-button (click)=\"onRefreshClicked()\">\n <mat-icon class=\"md-24\" [attr.aria-label]=\"'ADF_PROCESS_LIST.DETAILS.LABELS.REFRESH' | translate\">refresh</mat-icon>\n </button>\n</div>\n\n<!-- ACTIVE FORM -->\n\n<mat-chip-listbox>\n <span class=\"adf-chip-label\">{{ 'ADF_PROCESS_LIST.DETAILS.LABELS.TASKS_ACTIVE'|translate }}</span>\n <mat-chip-option class=\"adf-process-badge\" color=\"accent\" selected=\"true\">{{activeTasks?.length}}</mat-chip-option>\n</mat-chip-listbox>\n\n<div class=\"menu-container\" *ngIf=\"activeTasks?.length > 0\" data-automation-id=\"active-tasks\">\n <mat-list>\n <mat-list-item class=\"process-tasks__task-item\" *ngFor=\"let task of activeTasks\" (click)=\"clickTask(task)\">\n <mat-icon matListItemLine>assignment</mat-icon>\n <h3 matLine>{{task.name || 'Nameless task'}}</h3>\n <span matLine>\n {{ 'ADF_PROCESS_LIST.DETAILS.LABELS.TASK_SUBTITLE' | translate:{user: getUserFullName(task.assignee), created: getFormatDate(task.created, 'mediumDate') } }}\n </span>\n </mat-list-item>\n </mat-list>\n</div>\n\n<!-- START FORM -->\n\n<div *ngIf=\"activeTasks?.length === 0\" data-automation-id=\"active-tasks-none\" class=\"no-results\">\n {{ 'ADF_PROCESS_LIST.DETAILS.TASKS.NO_ACTIVE' | translate }}\n</div>\n\n<div *ngIf=\"hasStartFormDefined()\">\n <span class=\"adf-activiti-label\">{{ 'ADF_PROCESS_LIST.DETAILS.LABELS.START_FORM'|translate }}</span>\n\n <!--IF START TASK COMPLETED -->\n <div class=\"menu-container\" data-automation-id=\"start-form\">\n <mat-list>\n <mat-list-item class=\"process-tasks__task-item\" (click)=\"clickStartTask()\">\n <mat-icon matListItemLine>assignment</mat-icon>\n <h3 matLine>{{ 'ADF_PROCESS_LIST.DETAILS.LABELS.START_FORM'|translate }}</h3>\n <span matLine>\n {{ 'ADF_PROCESS_LIST.DETAILS.LABELS.TASK_SUBTITLE' | translate:{user:getUserFullName(processInstanceDetails.startedBy), created: getFormatDate(processInstanceDetails.started, 'mediumDate') } }}\n </span>\n </mat-list-item>\n </mat-list>\n </div>\n\n</div>\n\n<!-- COMPLETED FORM -->\n<mat-chip-listbox>\n <span class=\"adf-chip-label\">{{ 'ADF_PROCESS_LIST.DETAILS.LABELS.TASKS_COMPLETED'|translate }}</span>\n <mat-chip-option class=\"adf-process-badge\" color=\"accent\" selected=\"true\">{{completedTasks?.length}}</mat-chip-option>\n</mat-chip-listbox>\n\n<div class=\"menu-container\" *ngIf=\"completedTasks?.length > 0\" data-automation-id=\"completed-tasks\">\n <mat-list>\n <mat-list-item class=\"process-tasks__task-item\" *ngFor=\"let task of completedTasks\" (click)=\"clickTask(task)\">\n <mat-icon matListItemLine>assignment</mat-icon>\n <h3 matLine>{{task.name || 'Nameless task'}}</h3>\n <span matLine>\n {{ 'ADF_PROCESS_LIST.DETAILS.LABELS.TASK_SUBTITLE' | translate:{user:getUserFullName(task.assignee), created: getFormatDate(task.created, 'mediumDate') } }}\n </span>\n </mat-list-item>\n </mat-list>\n</div>\n\n<div *ngIf=\"completedTasks?.length === 0\" data-automation-id=\"completed-tasks-none\" class=\"no-results\">\n {{ 'ADF_PROCESS_LIST.DETAILS.TASKS.NO_COMPLETED' | translate }}\n</div>\n\n<ng-template *ngIf=\"hasStartFormDefined()\" #startDialog>\n <div id=\"adf-start-process-dialog\" class=\"adf-start-process-dialog\">\n <h4 matDialogTitle>{{ 'ADF_PROCESS_LIST.DETAILS.LABELS.START_FORM'|translate }}</h4>\n <div mat-dialog-content class=\"adf-start-process-dialog-content\">\n <adf-start-form [processId]=\"processId\"\n [showRefreshButton]=\"false\" [readOnlyForm]=\"true\"\n (formContentClicked)='onFormContentClick()' />\n </div>\n <div mat-dialog-actions class=\"adf-start-process-dialog-actions\">\n <button mat-button type=\"button\" (click)=\"closeStartDialog()\">{{ 'ADF_PROCESS_LIST.DETAILS.TASKS.TASK_CLOSE' | translate }}</button>\n </div>\n </div>\n</ng-template>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AlfrescoApiService } from '@alfresco/adf-content-services';\nimport { Injectable } from '@angular/core';\nimport { Observable, from } from 'rxjs';\nimport { CommentModel, CommentsService, User } from '@alfresco/adf-core';\nimport { map } from 'rxjs/operators';\nimport { ActivitiCommentsApi } from '@alfresco/js-api';\nimport { PeopleProcessService } from '../../services/people-process.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CommentProcessService implements CommentsService {\n private _commentsApi: ActivitiCommentsApi;\n get commentsApi(): ActivitiCommentsApi {\n this._commentsApi = this._commentsApi ?? new ActivitiCommentsApi(this.apiService.getInstance());\n return this._commentsApi;\n }\n\n constructor(private apiService: AlfrescoApiService, private peopleProcessService: PeopleProcessService) {}\n\n /**\n * Gets all comments that have been added to a process instance.\n *\n * @param id ID of the target process instance\n * @returns Details for each comment\n */\n get(id: string): Observable<CommentModel[]> {\n return from(this.commentsApi.getProcessInstanceComments(id)).pipe(\n map((response) =>\n response.data.map(\n (comment) =>\n new CommentModel({\n id: comment.id,\n message: comment.message,\n created: comment.created,\n createdBy: new User(comment.createdBy)\n })\n )\n )\n );\n }\n\n /**\n * Adds a comment to a process instance.\n *\n * @param id ID of the target process instance\n * @param message Text for the comment\n * @returns Details of the comment added\n */\n add(id: string, message: string): Observable<CommentModel> {\n return from(this.commentsApi.addProcessInstanceComment({ message }, id)).pipe(\n map(\n (response) =>\n new CommentModel({\n id: response.id,\n message: response.message,\n created: response.created,\n createdBy: new User(response.createdBy)\n })\n )\n );\n }\n\n getUserImage(userId: string): string {\n return this.peopleProcessService.getUserImage(userId);\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ADF_COMMENTS_SERVICE, CommentsComponent } from '@alfresco/adf-core';\nimport { CommentProcessService } from './services/comment-process.service';\nimport { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'adf-process-instance-comments',\n imports: [CommonModule, CommentsComponent],\n providers: [\n {\n provide: ADF_COMMENTS_SERVICE,\n useClass: CommentProcessService\n }\n ],\n templateUrl: './process-comments.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class ProcessCommentsComponent {\n /** (**required**) The numeric ID of the process instance to display comments for. */\n @Input({ required: true })\n processInstanceId: string;\n\n /** Should the comments be read-only? */\n @Input()\n readOnly: boolean;\n}\n","<adf-comments \n [readOnly]=\"readOnly\"\n [id]=\"processInstanceId\"\n/>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ProcessCommentsComponent } from './process-comments.component';\n\nexport * from './process-comments.component';\nexport * from './services/comment-process.service';\n\nexport const PROCESS_COMMENTS_DIRECTIVES = [ProcessCommentsComponent] as const;\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CommonModule, DatePipe } from '@angular/common';\nimport { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges, ViewChild } from '@angular/core';\nimport { TaskDetailsEvent } from '../../../task-list';\nimport { ProcessService } from '../../services/process.service';\nimport { ProcessInstanceHeaderComponent } from '../process-instance-header/process-instance-header.component';\nimport { ProcessInstanceTasksComponent } from '../process-instance-tasks/process-instance-tasks.component';\nimport { ProcessInstanceRepresentation } from '@alfresco/js-api';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatButtonModule } from '@angular/material/button';\nimport { ProcessCommentsComponent } from '../../../process-comments';\n\n@Component({\n selector: 'adf-process-instance-details',\n imports: [\n CommonModule,\n TranslatePipe,\n MatCardModule,\n MatButtonModule,\n ProcessCommentsComponent,\n ProcessInstanceTasksComponent,\n ProcessInstanceHeaderComponent\n ],\n templateUrl: './process-instance-details.component.html',\n styleUrls: ['./process-instance-details.component.css']\n})\nexport class ProcessInstanceDetailsComponent implements OnChanges {\n /** (required) The numeric ID of the process instance to display. */\n @Input({ required: true })\n processInstanceId: string;\n\n @ViewChild('processInstanceHeader')\n processInstanceHeader: ProcessInstanceHeaderComponent;\n\n @ViewChild('processInstanceTasks')\n tasksList: ProcessInstanceTasksComponent;\n\n /** Toggles whether to show or hide the title. */\n @Input()\n showTitle: boolean = true;\n\n /** Toggles whether to show or hide the refresh button. */\n @Input()\n showRefreshButton: boolean = true;\n\n /** Emitted when the current process is cancelled by the user from within the component. */\n @Output()\n processCancelled = new EventEmitter<any>();\n\n /** Emitted when an error occurs. */\n @Output()\n error = new EventEmitter<any>();\n\n /** Emitted when a task is clicked. */\n @Output()\n taskClick = new EventEmitter<TaskDetailsEvent>();\n\n /** Emitted when the \"show diagram\" button is clicked. */\n @Output()\n showProcessDiagram = new EventEmitter<any>();\n\n processInstanceDetails: ProcessInstanceRepresentation;\n\n constructor(private processService: ProcessService) {}\n\n ngOnChanges(changes: SimpleChanges) {\n const processInstanceId = changes['processInstanceId'];\n if (processInstanceId && !processInstanceId.currentValue) {\n this.reset();\n return;\n }\n if (processInstanceId?.currentValue) {\n this.load(processInstanceId.currentValue);\n return;\n }\n }\n\n /**\n * Reset the task detail\n */\n reset() {\n this.processInstanceDetails = null;\n }\n\n load(processId: string) {\n if (processId) {\n this.processService.getProcess(processId).subscribe((res) => {\n this.processInstanceDetails = res;\n });\n }\n }\n\n isRunning(): boolean {\n return this.processInstanceDetails && !this.processInstanceDetails.ended;\n }\n\n cancelProcess() {\n this.processService.cancelProcess(this.processInstanceId).subscribe(\n (data) => {\n this.processCancelled.emit(data);\n },\n (err) => {\n this.error.emit(err);\n }\n );\n }\n\n // bubbles (taskClick) event\n onTaskClicked(event: TaskDetailsEvent) {\n this.taskClick.emit(event);\n }\n\n getProcessNameOrDescription(dateFormat: string): string {\n let name = '';\n if (this.processInstanceDetails) {\n name =\n this.processInstanceDetails.name ||\n this.processInstanceDetails.processDefinitionName + ' - ' + this.getFormatDate(this.processInstanceDetails.started, dateFormat);\n }\n return name;\n }\n\n getFormatDate(value: any, format: string): any {\n const datePipe = new DatePipe('en-US');\n try {\n return datePipe.transform(value, format);\n } catch {\n return undefined;\n }\n }\n\n onShowProcessDiagram() {\n this.showProcessDiagram.emit({ value: this.processInstanceId });\n }\n}\n","<div *ngIf=\"!processInstanceDetails\">{{ 'ADF_PROCESS_LIST.DETAILS.MESSAGES.NONE' | translate }}</div>\n<mat-card *ngIf=\"processInstanceDetails\">\n <mat-card-header>\n <mat-card-title>{{ getProcessNameOrDescription('medium') }}</mat-card-title>\n </mat-card-header>\n <mat-card-content>\n <adf-process-instance-header\n #processInstanceHeader\n [processInstance]=\"processInstanceDetails\" />\n\n <button\n class=\"adf-in-medias-res-button\"\n id=\"show-diagram-button\"\n type=\"button\"\n mat-button\n mat-raised-button\n [disabled]=\"!isRunning()\"\n (click)=\"onShowProcessDiagram()\">{{ 'ADF_PROCESS_LIST.DETAILS.BUTTON.SHOW_DIAGRAM' | translate }}</button>\n\n <mat-card appearance=\"outlined\">\n <mat-card-content>\n <adf-process-instance-tasks\n #processInstanceTasks\n [processInstanceDetails]=\"processInstanceDetails\"\n (taskClick)=\"onTaskClicked($event)\" />\n </mat-card-content>\n </mat-card>\n\n <div data-automation-id=\"header-status\" *ngIf=\"isRunning()\" class=\"adf-in-medias-res-button\">\n <button mat-button type=\"button\" (click)=\"cancelProcess()\">{{ 'ADF_PROCESS_LIST.DETAILS.BUTTON.CANCEL' | translate }}</button>\n </div>\n\n <mat-card appearance=\"outlined\">\n <mat-card-content>\n <adf-process-instance-comments\n [readOnly]=\"false\"\n [processInstanceId]=\"processInstanceDetails.id\" />\n </mat-card-content>\n </mat-card>\n\n </mat-card-content>\n</mat-card>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n Component,\n DestroyRef,\n EventEmitter,\n inject,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { AppConfigService, AppConfigValues, EmptyContentComponent, FormValues, LocalizedDatePipe } from '@alfresco/adf-core';\nimport { AppsProcessService } from '../../../services/apps-process.service';\nimport { ProcessService } from '../../services/process.service';\nimport { AbstractControl, FormsModule, ReactiveFormsModule, UntypedFormControl, Validators } from '@angular/forms';\nimport { forkJoin, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { MatAutocompleteModule, MatAutocompleteTrigger } from '@angular/material/autocomplete';\nimport { MatSelectChange, MatSelectModule } from '@angular/material/select';\nimport { StartFormComponent } from '../../../form';\nimport {\n AppDefinitionRepresentation,\n Node,\n ProcessDefinitionRepresentation,\n ProcessInstanceRepresentation,\n RelatedContentRepresentation,\n RestVariable\n} from '@alfresco/js-api';\nimport { ActivitiContentService } from '../../../form/services/activiti-alfresco.service';\nimport { getTime } from 'date-fns';\nimport { CommonModule } from '@angular/common';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nconst MAX_LENGTH = 255;\nconst DATE_TIME_IDENTIFIER_REG_EXP = new RegExp('%{datetime}', 'i');\nconst PROCESS_DEFINITION_IDENTIFIER_REG_EXP = new RegExp('%{processdefinition}', 'i');\n\n@Component({\n selector: 'adf-start-process',\n imports: [\n CommonModule,\n MatProgressSpinnerModule,\n TranslatePipe,\n MatFormFieldModule,\n MatSelectModule,\n FormsModule,\n ReactiveFormsModule,\n MatAutocompleteModule,\n MatButtonModule,\n MatIconModule,\n MatInputModule,\n EmptyContentComponent,\n StartFormComponent\n ],\n templateUrl: './start-process.component.html',\n styleUrls: ['./start-process.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class StartProcessInstanceComponent implements OnChanges, OnInit {\n /**\n * Limit the list of processes that can be started to those\n * contained in the specified app.\n */\n @Input()\n appId?: number;\n\n /** Define the header of the component. */\n @Input()\n title?: string;\n\n /** Definition name of the process to start. */\n @Input()\n processDefinitionName?: string;\n\n /**\n * Variables in the input to the process\n * [RestVariable](https://github.com/Alfresco/alfresco-js-api/tree/master/src/alfresco-activiti-rest-api/docs/RestVariable.md).\n */\n @Input()\n variables: RestVariable[];\n\n /** Parameter to pass form field values in the start form if one is associated. */\n @Input()\n values: FormValues;\n\n /** Name to assign to the current process. */\n @Input()\n name?: string = '';\n\n /** Hide or show the process selection dropdown. */\n @Input()\n showSelectProcessDropdown = true;\n\n /** Hide or show application selection dropdown. */\n @Input()\n showSelectApplicationDropdown? = false;\n\n /** Parameter to enable selection of process when filtering. */\n @Input()\n processFilterSelector? = true;\n\n /** Emitted when the process starts. */\n @Output()\n start = new EventEmitter<ProcessInstanceRepresentation>();\n\n /** Emitted when the process is canceled. */\n @Output()\n cancel = new EventEmitter<void>();\n\n /** Emitted when an error occurs. */\n @Output()\n error = new EventEmitter<any>();\n\n /** Emitted when process definition selection changes. */\n @Output()\n processDefinitionSelection = new EventEmitter<ProcessDefinitionRepresentation>();\n\n /** Emitted when application selection changes. */\n @Output()\n applicationSelection = new EventEmitter<AppDefinitionRepresentation>();\n\n @ViewChild('startForm')\n startForm: StartFormComponent;\n\n @ViewChild(MatAutocompleteTrigger)\n inputAutocomplete: MatAutocompleteTrigger;\n\n processDefinitions: ProcessDefinitionRepresentation[] = [];\n selectedProcessDef: ProcessDefinitionRepresentation;\n processNameInput: UntypedFormControl;\n processDefinitionInput: UntypedFormControl;\n filteredProcessesDefinitions$: Observable<ProcessDefinitionRepresentation[]>;\n maxProcessNameLength: number = MAX_LENGTH;\n alfrescoRepositoryName: string;\n applications: AppDefinitionRepresentation[] = [];\n selectedApplication: AppDefinitionRepresentation;\n\n isProcessDefinitionsLoading = true;\n isAppsLoading = true;\n movedNodeToPS: FormValues;\n\n private readonly destroyRef = inject(DestroyRef);\n\n constructor(\n private processService: ProcessService,\n private contentService: ActivitiContentService,\n private appsProcessService: AppsProcessService,\n private appConfig: AppConfigService,\n private datePipe: LocalizedDatePipe\n ) {}\n\n ngOnInit() {\n this.processNameInput = new UntypedFormControl('', [\n Validators.required,\n Validators.maxLength(this.maxProcessNameLength),\n Validators.pattern('^[^\\\\s]+(\\\\s+[^\\\\s]+)*$')\n ]);\n this.processDefinitionInput = new UntypedFormControl();\n\n this.load(this.appId);\n\n this.filteredProcessesDefinitions$ = this.processDefinitionInput.valueChanges.pipe(\n map((value) => this._filter(value)),\n takeUntilDestroyed(this.destroyRef)\n );\n\n this.contentService.getAlfrescoRepositories().subscribe((repoList) => {\n if (repoList?.[0]) {\n const alfrescoRepository = repoList[0];\n this.alfrescoRepositoryName = `alfresco-${alfrescoRepository.id}-${alfrescoRepository.name}`;\n }\n });\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['values']?.currentValue) {\n this.moveNodeFromCStoPS();\n }\n\n const appId = changes['appId'];\n if (appId?.currentValue) {\n this.load(appId.currentValue);\n }\n\n const processDefinitionName = changes['processDefinitionName'];\n if (processDefinitionName?.currentValue) {\n this.filterProcessDefinitionByName(processDefinitionName.currentValue);\n }\n }\n\n private getSelectedProcess(selectedProcess: string): ProcessDefinitionRepresentation {\n return this.processDefinitions.find((process) => process.name.toLowerCase() === selectedProcess);\n }\n\n private load(appId?: number) {\n if (this.showSelectApplicationDropdown) {\n this.loadApps();\n } else {\n this.loadProcessDefinitions(appId);\n }\n }\n\n loadProcessDefinitions(appId: number): void {\n this.isProcessDefinitionsLoading = true;\n this.resetSelectedProcessDefinition();\n\n this.processService\n .getProcessDefinitions(appId)\n .pipe(\n map((processDefinitionRepresentations) => {\n let currentProcessDef: ProcessDefinitionRepresentation;\n\n if (processDefinitionRepresentations.length === 1) {\n currentProcessDef = processDefinitionRepresentations[0];\n }\n\n if (this.processDefinitionName) {\n const filteredProcessDefinition = processDefinitionRepresentations.find(\n (processDefinition) => processDefinition.name === this.processDefinitionName\n );\n if (filteredProcessDefinition) {\n currentProcessDef = filteredProcessDefinition;\n }\n }\n\n return { currentProcessDef, processDefinitionRepresentations };\n })\n )\n .subscribe(\n (filteredProcessDefinitions) => {\n this.processDefinitions = filteredProcessDefinitions.processDefinitionRepresentations;\n this.processDefinitionSelectionChanged(filteredProcessDefinitions.currentProcessDef);\n this.processDefinitionInput.setValue(this.selectedProcessDef ? this.selectedProcessDef.name : '');\n this.isProcessDefinitionsLoading = false;\n },\n (error) => {\n this.isProcessDefinitionsLoading = false;\n this.error.emit(error);\n }\n );\n }\n\n private filterProcessDefinitionByName(definitionName: string) {\n if (definitionName) {\n const filteredProcessDef = this.processDefinitions.find((processDefinition) => processDefinition.name === definitionName);\n\n if (filteredProcessDef) {\n this.processDefinitionSelectionChanged(filteredProcessDef);\n this.processDefinitionInput.setValue(this.selectedProcessDef ? this.selectedProcessDef.name : '');\n }\n }\n }\n\n private loadApps() {\n this.isAppsLoading = true;\n this.appsProcessService\n .getDeployedApplications()\n .pipe(\n map((response) => {\n const applications = response.filter((app) => app.id);\n\n let currentApplication: AppDefinitionRepresentation;\n\n if (applications && applications.length === 1) {\n currentApplication = applications[0];\n }\n\n const filteredApp = applications.find((app) => app.id === +this.appId);\n\n if (filteredApp) {\n currentApplication = filteredApp;\n }\n\n return { currentApplication, applications };\n })\n )\n .subscribe(\n (filteredApps) => {\n this.applications = filteredApps.applications;\n this.selectedApplication = filteredApps.currentApplication;\n this.applicationSelection.emit(this.selectedApplication);\n this.toggleProcessNameAndDefinitionsDropdown();\n this.isAppsLoading = false;\n this.loadProcessDefinitionsBasedOnSelectedApp();\n },\n (err) => {\n this.isAppsLoading = false;\n this.error.emit(err);\n }\n );\n }\n\n private loadProcessDefinitionsBasedOnSelectedApp() {\n if (this.selectedApplication?.id) {\n this.loadProcessDefinitions(this.selectedApplication ? this.selectedApplication.id : null);\n } else {\n this.isProcessDefinitionsLoading = false;\n this.resetProcessDefinitions();\n }\n }\n\n onAppSelectionChange(selectedApplication: MatSelectChange) {\n this.resetProcessDefinitions();\n this.selectedApplication = selectedApplication.value;\n this.applicationSelection.emit(this.selectedApplication);\n this.toggleProcessNameAndDefinitionsDropdown();\n this.loadProcessDefinitionsBasedOnSelectedApp();\n }\n\n hasApplications(): boolean {\n return this.applications?.length > 0;\n }\n\n hasProcessDefinitions(): boolean {\n return this.processDefinitions?.length > 0;\n }\n\n isProcessDefinitionSelected(): boolean {\n return !!this.selectedProcessDef?.id;\n }\n\n isDropdownDisabled(): boolean {\n return this.showSelectApplicationDropdown && !this.isAppSelected();\n }\n\n getAlfrescoRepositoryName(): string {\n let alfrescoRepositoryName = this.appConfig.get<string>(AppConfigValues.ALFRESCO_REPOSITORY_NAME);\n if (!alfrescoRepositoryName) {\n alfrescoRepositoryName = this.alfrescoRepositoryName;\n }\n return alfrescoRepositoryName + 'Alfresco';\n }\n\n moveNodeFromCStoPS(): void {\n const accountIdentifier = this.getAlfrescoRepositoryName();\n\n for (const key in this.values) {\n if (Object.prototype.hasOwnProperty.call(this.values, key)) {\n const currentValue = Array.isArray(this.values[key]) ? this.values[key] : [this.values[key]];\n const contents = currentValue\n .filter((value: any) => !!value?.isFile)\n .map((content: Node) => this.contentService.applyAlfrescoNode(content, null, accountIdentifier));\n forkJoin(contents).subscribe((res: RelatedContentRepresentation[]) => {\n this.movedNodeToPS = { [key]: [...res] };\n });\n }\n }\n }\n\n startProcess(outcome?: string) {\n if (this.selectedProcessDef?.id && this.nameController.value) {\n const formValues = this.startForm ? this.startForm.form.values : undefined;\n this.processService.startProcess(this.selectedProcessDef.id, this.nameController.value, outcome, formValues, this.variables).subscribe(\n (res) => {\n this.name = '';\n this.start.emit(res);\n },\n (err) => {\n this.error.emit(err);\n }\n );\n }\n }\n\n cancelStartProcess(): void {\n this.cancel.emit();\n }\n\n hasStartForm(): boolean {\n return this.selectedProcessDef?.hasStartForm;\n }\n\n private isStartFormMissingOrValid(): boolean {\n if (this.startForm) {\n return this.startForm.form?.isValid;\n } else {\n return true;\n }\n }\n\n validateForm(): boolean {\n return this.selectedProcessDef?.id && this.processNameInput.valid && this.isStartFormMissingOrValid();\n }\n\n onOutcomeClick(outcome: string) {\n this.startProcess(outcome);\n }\n\n reset(): void {\n this.resetSelectedProcessDefinition();\n this.name = '';\n if (this.startForm) {\n this.startForm.data = {};\n }\n }\n\n displayFn(process: any): string {\n if (process) {\n let processName = process;\n if (typeof process !== 'string') {\n processName = process.name;\n }\n return processName;\n }\n return undefined;\n }\n\n displayDropdown(event: Event) {\n event.stopPropagation();\n if (!this.inputAutocomplete.panelOpen) {\n this.processDefinitionInput.setValue('');\n this.inputAutocomplete.openPanel();\n } else {\n this.inputAutocomplete.closePanel();\n }\n }\n\n get nameController(): AbstractControl {\n return this.processNameInput;\n }\n\n get processDefinitionController(): AbstractControl {\n return this.processDefinitionInput;\n }\n\n processDefinitionSelectionChanged(processDefinition: ProcessDefinitionRepresentation) {\n if (processDefinition) {\n const processInstanceDetails: ProcessInstanceRepresentation = { processDefinitionName: processDefinition.name };\n const processName = this.formatProcessName(this.name, processInstanceDetails);\n this.processNameInput.setValue(processName);\n this.processNameInput.markAsDirty();\n this.processNameInput.markAsTouched();\n this.selectedProcessDef = processDefinition;\n this.processDefinitionSelection.emit(this.selectedProcessDef);\n } else {\n this.nameController.reset();\n }\n }\n\n isLoading(): boolean {\n return this.showSelectApplicationDropdown ? this.isAppsLoading : false;\n }\n\n private isAppSelected(): boolean {\n return !!this.selectedApplication?.id;\n }\n\n private resetSelectedProcessDefinition() {\n this.selectedProcessDef = undefined;\n if (this.processDefinitionInput) {\n this.processDefinitionInput.setValue('');\n }\n }\n\n private resetProcessDefinitions() {\n this.processDefinitions = [];\n this.resetSelectedProcessDefinition();\n }\n\n private toggleProcessNameAndDefinitionsDropdown() {\n if (!this.isAppSelected()) {\n this.processDefinitionController.disable();\n this.nameController.disable();\n } else {\n this.processDefinitionController.enable();\n this.nameController.enable();\n }\n }\n\n private _filter(value: string): ProcessDefinitionRepresentation[] {\n if (value !== null && value !== undefined) {\n const filterValue = value.toLowerCase();\n const filteredProcess = this.processDefinitions.filter((option) => option.name.toLowerCase().includes(filterValue));\n\n if (this.processFilterSelector) {\n this.selectedProcessDef = this.getSelectedProcess(filterValue);\n }\n return filteredProcess;\n }\n\n return [];\n }\n\n private formatProcessName(processNameFormat: string, processInstance?: ProcessInstanceRepresentation): string {\n let processName = processNameFormat;\n if (processName.match(DATE_TIME_IDENTIFIER_REG_EXP)) {\n const presentDateTime = getTime(new Date());\n processName = processName.replace(DATE_TIME_IDENTIFIER_REG_EXP, this.datePipe.transform(presentDateTime, 'medium'));\n }\n\n if (processName.match(PROCESS_DEFINITION_IDENTIFIER_REG_EXP)) {\n const selectedProcessDefinitionName = processInstance ? processInstance.processDefinitionName : '';\n processName = processName.replace(PROCESS_DEFINITION_IDENTIFIER_REG_EXP, selectedProcessDefinitionName);\n }\n return processName;\n }\n}\n","\n<ng-container *ngIf=\"isLoading(); then showLoadingTemplate; else showStartProcessTemplate\" />\n <ng-template #showLoadingTemplate>\n <mat-spinner class=\"adf-start-process-loading\" />\n </ng-template>\n<ng-template #showStartProcessTemplate>\n <ng-container *ngIf=\"hasApplications() || hasProcessDefinitions() ; else showEmptyTemplate\">\n <div class=\"adf-start-process\">\n <div class=\"adf-title\" *ngIf=\"title\">{{ title | translate}}</div>\n <div class=\"content\">\n <div class=\"adf-start-process-definition-container\">\n <mat-form-field *ngIf=\"showSelectApplicationDropdown\" [floatLabel]=\"'always'\" class=\"adf-start-process-app-list\" [subscriptSizing]=\"'dynamic'\">\n <mat-label>{{ 'ADF_PROCESS_LIST.START_PROCESS.FORM.LABEL.SELECT_APPLICATION' | translate }}</mat-label>\n <mat-select\n placeholder=\"{{ 'ADF_PROCESS_LIST.START_PROCESS.FORM.LABEL.SELECT_APPLICATION' | translate }}\"\n (selectionChange)=\"onAppSelectionChange($event)\"\n [(ngModel)]=\"selectedApplication\"\n class=\"adf-start-process-definition-select\"\n data-automation-id=\"adf-start-process-apps-drop-down\">\n <mat-option\n *ngFor=\"let application of applications\"\n [value]=\"application\"\n role=\"option\"\n [attr.data-automation-id]=\"'adf-start-process-apps-option-' + application.name\">\n {{ application.name }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field class=\"adf-process-input-container\" [floatLabel]=\"'always'\" [subscriptSizing]=\"'dynamic'\">\n <mat-label>{{'ADF_PROCESS_LIST.START_PROCESS.FORM.LABEL.TYPE' | translate}}</mat-label>\n <input\n type=\"text\"\n matInput\n [formControl]=\"processDefinitionInput\"\n [matAutocomplete]=\"auto\"\n id=\"processDefinitionName\">\n <div class=\"adf-process-input-autocomplete\">\n <mat-autocomplete\n #auto=\"matAutocomplete\"\n id=\"processDefinitionOptions\"\n [displayWith]=\"displayFn\">\n <mat-option *ngFor=\"let processDef of filteredProcessesDefinitions$ | async\" [value]=\"processDef.name\"\n (click)=\"processDefinitionSelectionChanged(processDef)\">\n {{ processDef.name }}\n </mat-option>\n </mat-autocomplete>\n <ng-container *ngIf=\"!isProcessDefinitionsLoading ; else showProcessDefLoadingTemplate\">\n <button\n class=\"adf-start-process-button\"\n id=\"adf-select-process-dropdown\"\n *ngIf=\"showSelectProcessDropdown\"\n mat-icon-button\n (click)=\"displayDropdown($event)\"\n [disabled]=\"isDropdownDisabled()\"\n [attr.aria-label]=\"'ADF_PROCESS_LIST.START_PROCESS.FORM.LABEL.TYPE' | translate | uppercase\">\n <mat-icon>arrow_drop_down</mat-icon>\n </button>\n </ng-container>\n <ng-template #showProcessDefLoadingTemplate>\n <mat-spinner id=\"adf-select-process-spinner\" [diameter]=\"20\" />\n </ng-template>\n </div>\n </mat-form-field>\n </div>\n <mat-form-field class=\"adf-process-input-container adf-process-input-container-process-name\" [floatLabel]=\"'always'\">\n <mat-label>{{'ADF_PROCESS_LIST.START_PROCESS.FORM.LABEL.NAME' | translate}}</mat-label>\n <input\n matInput\n [formControl]=\"processNameInput\"\n id=\"processName\"\n required/>\n <mat-error *ngIf=\"nameController.hasError('maxlength')\">\n {{ 'ADF_PROCESS_LIST.START_PROCESS.ERROR.MAXIMUM_LENGTH' | translate : { characters : maxProcessNameLength } }}\n </mat-error>\n <mat-error *ngIf=\"nameController.hasError('required')\">\n {{ 'ADF_PROCESS_LIST.START_PROCESS.ERROR.PROCESS_NAME_REQUIRED' | translate }}\n </mat-error>\n <mat-error *ngIf=\"nameController.hasError('pattern')\">\n {{ 'ADF_PROCESS_LIST.START_PROCESS.ERROR.SPACE_VALIDATOR' | translate }}\n </mat-error>\n </mat-form-field>\n\n <ng-container *ngIf=\"!isProcessDefinitionsLoading ; else showStartFormLoadingTemplate\">\n <ng-container *ngIf=\"isProcessDefinitionSelected() ; else emptyProcessDefTemplate\">\n <ng-container *ngIf=\"hasStartForm(); else noStartFormTemplate\">\n <adf-start-form\n #startForm\n [data]=\"movedNodeToPS\"\n [disableStartProcessButton]=\"processNameInput.invalid\"\n [processDefinitionId]=\"selectedProcessDef.id\"\n (outcomeClick)=\"onOutcomeClick($event)\"\n [showRefreshButton]=\"false\">\n <button\n class=\"adf-start-process-button\"\n adf-form-custom-button\n mat-button\n (click)=\"cancelStartProcess()\"\n id=\"cancel_process\">\n {{'ADF_PROCESS_LIST.START_PROCESS.FORM.ACTION.CANCEL'| translate | uppercase}}\n </button>\n </adf-start-form>\n </ng-container>\n <ng-template #noStartFormTemplate>\n <adf-empty-content\n class=\"adf-start-process-empty-template\"\n [icon]=\"'assessment'\"\n [title]=\"'ADF_PROCESS_LIST.START_PROCESS.NO_START_FORM' | translate\" />\n </ng-template>\n </ng-container>\n <ng-template #emptyProcessDefTemplate>\n <adf-empty-content class=\"adf-start-process-empty-template\"\n [icon]=\"'assessment'\"\n [title]=\"'ADF_PROCESS_LIST.START_PROCESS.NO_PROCESS_DEF_SELECTED' | translate\" />\n </ng-template>\n </ng-container>\n <ng-template #showStartFormLoadingTemplate>\n <mat-spinner class=\"adf-start-process-loading\" />\n </ng-template>\n </div>\n <div class=\"adf-start-process-content-actions\" *ngIf=\"!hasStartForm()\">\n <button\n class=\"adf-start-process-button\"\n mat-button\n *ngIf=\"!hasStartForm()\"\n (click)=\"cancelStartProcess()\"\n id=\"cancel_process\">\n {{'ADF_PROCESS_LIST.START_PROCESS.FORM.ACTION.CANCEL'| translate | uppercase}}\n </button>\n <button\n color=\"primary\"\n mat-button\n *ngIf=\"!hasStartForm()\"\n [disabled]=\"!validateForm()\"\n (click)=\"startProcess()\"\n data-automation-id=\"btn-start\"\n id=\"button-start\"\n class=\"btn-start adf-start-process-button\">\n {{'ADF_PROCESS_LIST.START_PROCESS.FORM.ACTION.START' | translate | uppercase}}\n </button>\n </div>\n </div>\n </ng-container>\n <ng-template #showEmptyTemplate>\n <adf-empty-content class=\"adf-start-process-empty-template\"\n [icon]=\"'assessment'\"\n [title]=\"'ADF_PROCESS_LIST.START_PROCESS.NO_PROCESS_DEFINITIONS' | translate\" />\n </ng-template>\n</ng-template>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/no-input-rename */\n\nimport { DownloadService } from '@alfresco/adf-core';\nimport { Directive, EventEmitter, Input, OnChanges, Output } from '@angular/core';\nimport { ProcessService } from '../../services/process.service';\n\nconst JSON_FORMAT: string = 'json';\nconst PDF_FORMAT: string = 'pdf';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'button[adf-process-audit]',\n host: {\n role: 'button',\n '(click)': 'onClickAudit()'\n }\n})\nexport class ProcessAuditDirective implements OnChanges {\n /** ID of the process. */\n @Input('process-id')\n processId: string;\n\n /** Name of the file to download (for PDF downloads). */\n @Input()\n fileName: string = 'Audit';\n\n /** Format for the audit information (can be \"pdf\" or \"json\"). */\n @Input()\n format: string = 'pdf';\n\n /** Enables downloading of the audit file on clicking. */\n @Input()\n download: boolean = true;\n\n /** Emitted when the decorated element is clicked. */\n @Output()\n clicked: EventEmitter<any> = new EventEmitter<any>();\n\n /** Emitted when an error occurs. */\n @Output()\n error: EventEmitter<any> = new EventEmitter<any>();\n\n constructor(private downloadService: DownloadService, private processListService: ProcessService) {}\n\n ngOnChanges(): void {\n if (!this.isValidType()) {\n this.setDefaultFormatType();\n }\n }\n\n isValidType() {\n return this.format && (this.isJsonFormat() || this.isPdfFormat());\n }\n\n setDefaultFormatType(): void {\n this.format = PDF_FORMAT;\n }\n\n /**\n * fetch the audit information in the requested format\n */\n fetchAuditInfo(): void {\n if (this.isPdfFormat()) {\n this.processListService.fetchProcessAuditPdfById(this.processId).subscribe(\n (blob: Blob) => {\n if (this.download) {\n this.downloadService.downloadBlob(blob, this.fileName + '.pdf');\n }\n this.clicked.emit({ format: this.format, value: blob, fileName: this.fileName });\n },\n (err) => this.error.emit(err)\n );\n } else {\n this.processListService.fetchProcessAuditJsonById(this.processId).subscribe(\n (res) => this.clicked.emit({ format: this.format, value: res, fileName: this.fileName }),\n (err) => this.error.emit(err)\n );\n }\n }\n\n onClickAudit() {\n this.fetchAuditInfo();\n }\n\n isJsonFormat() {\n return this.format === JSON_FORMAT;\n }\n\n isPdfFormat() {\n return this.format === PDF_FORMAT;\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// component\nimport { ProcessInstanceListComponent } from './components/process-list/process-list.component';\nimport { ProcessFiltersComponent } from './components/process-filters/process-filters.component';\nimport { ProcessInstanceDetailsComponent } from './components/process-instance-details/process-instance-details.component';\nimport { ProcessInstanceHeaderComponent } from './components/process-instance-header/process-instance-header.component';\nimport { ProcessInstanceTasksComponent } from './components/process-instance-tasks/process-instance-tasks.component';\nimport { StartProcessInstanceComponent } from './components/start-process/start-process.component';\nimport { ProcessAuditDirective } from './components/process-audit/process-audit.directive';\n\nexport * from './components/process-filters/process-filters.component';\nexport * from './components/process-instance-details/process-instance-details.component';\nexport * from './components/process-audit/process-audit.directive';\nexport * from './components/process-instance-header/process-instance-header.component';\nexport * from './components/process-instance-tasks/process-instance-tasks.component';\nexport * from './components/process-list/process-list.component';\nexport * from './components/start-process/start-process.component';\n\n// services\nexport * from './services/process.service';\nexport * from './services/process-filter.service';\n\nexport const PROCESS_LIST_DIRECTIVES = [\n ProcessAuditDirective,\n ProcessInstanceListComponent,\n ProcessFiltersComponent,\n ProcessInstanceDetailsComponent,\n ProcessInstanceHeaderComponent,\n ProcessInstanceTasksComponent,\n StartProcessInstanceComponent\n] as const;\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './public-api';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CustomEmptyContentTemplateDirective, EmptyContentComponent } from '@alfresco/adf-core';\nimport { AppsProcessService } from '../services/apps-process.service';\nimport { AfterContentInit, Component, ContentChild, EventEmitter, Input, OnInit, Output, ViewEncapsulation } from '@angular/core';\nimport { IconModel } from './icon.model';\nimport { finalize, map } from 'rxjs/operators';\nimport { AppDefinitionRepresentation } from '@alfresco/js-api';\nimport { CommonModule } from '@angular/common';\nimport { MatListModule } from '@angular/material/list';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatLineModule } from '@angular/material/core';\n\nconst DEFAULT_TASKS_APP_NAME: string = 'ADF_TASK_LIST.APPS.TASK_APP_NAME';\nconst DEFAULT_TASKS_APP_THEME: string = 'theme-2';\nconst DEFAULT_TASKS_APP_ICON: string = 'glyphicon-asterisk';\n\nexport const APP_LIST_LAYOUT_LIST: string = 'LIST';\nexport const APP_LIST_LAYOUT_GRID: string = 'GRID';\n\n@Component({\n selector: 'adf-apps',\n imports: [\n CommonModule,\n MatListModule,\n MatIconModule,\n MatCardModule,\n MatProgressSpinnerModule,\n TranslatePipe,\n EmptyContentComponent,\n MatLineModule\n ],\n templateUrl: './apps-list.component.html',\n styleUrls: ['./apps-list.component.scss'],\n encapsulation: ViewEncapsulation.None,\n host: { class: 'adf-apps' }\n})\nexport class AppsListComponent implements OnInit, AfterContentInit {\n @ContentChild(CustomEmptyContentTemplateDirective)\n emptyCustomContent: CustomEmptyContentTemplateDirective;\n\n /**\n * Defines the layout of the apps. There are two possible\n * values, \"GRID\" and \"LIST\".\n */\n @Input()\n layoutType: string = APP_LIST_LAYOUT_GRID;\n\n /** The default app to show when the component is loaded. */\n @Input()\n defaultAppId = 'tasks';\n\n /** Provides a way to filter the apps to show. */\n @Input()\n filtersAppId: AppDefinitionRepresentation[];\n\n /** Emitted when an app entry is clicked. */\n @Output()\n appClick = new EventEmitter<AppDefinitionRepresentation>();\n\n /** Emitted when an error occurs. */\n @Output()\n error = new EventEmitter<any>();\n\n currentApp: AppDefinitionRepresentation;\n appList: AppDefinitionRepresentation[] = [];\n loading: boolean = false;\n hasEmptyCustomContentTemplate: boolean = false;\n\n private iconsMDL: IconModel;\n constructor(private appsProcessService: AppsProcessService) {}\n\n ngOnInit() {\n if (!this.isValidType()) {\n this.setDefaultLayoutType();\n }\n\n this.iconsMDL = new IconModel();\n this.load();\n }\n\n ngAfterContentInit() {\n if (this.emptyCustomContent) {\n this.hasEmptyCustomContentTemplate = true;\n }\n }\n\n private isDefaultApp(app: AppDefinitionRepresentation): boolean {\n return app.defaultAppId === this.defaultAppId;\n }\n\n getAppName(app: AppDefinitionRepresentation): string {\n return this.isDefaultApp(app) ? DEFAULT_TASKS_APP_NAME : app.name || app.defaultAppId;\n }\n\n /**\n * Pass the selected app as next\n *\n * @param app application model\n */\n selectApp(app: AppDefinitionRepresentation) {\n this.currentApp = app;\n this.appClick.emit(app);\n }\n\n /**\n * Return true if the appId is the current app\n *\n * @param appId application id\n * @returns `true` if application is selected, otherwise `false`\n */\n isSelected(appId: number): boolean {\n return this.currentApp !== undefined && appId === this.currentApp.id;\n }\n\n /**\n * Check if the value of the layoutType property is an allowed value\n *\n * @returns `true` if layout type is valid, otherwise `false`\n */\n isValidType(): boolean {\n return this.layoutType && (this.layoutType === APP_LIST_LAYOUT_LIST || this.layoutType === APP_LIST_LAYOUT_GRID);\n }\n\n /**\n * Assign the default value to LayoutType\n */\n setDefaultLayoutType(): void {\n this.layoutType = APP_LIST_LAYOUT_GRID;\n }\n\n /**\n * Check if the layout type is LIST\n *\n * @returns `true` if current layout is in the list mode, otherwise `false`\n */\n isList(): boolean {\n return this.layoutType === APP_LIST_LAYOUT_LIST;\n }\n\n /**\n * Check if the layout type is GRID\n *\n * @returns `true` if current layout is in the grid mode, otherwise `false`\n */\n isGrid(): boolean {\n return this.layoutType === APP_LIST_LAYOUT_GRID;\n }\n\n isEmpty(): boolean {\n return this.appList.length === 0;\n }\n\n isLoading(): boolean {\n return this.loading;\n }\n\n getTheme(app: AppDefinitionRepresentation): string {\n return app.theme ? app.theme : '';\n }\n\n getBackgroundIcon(app: AppDefinitionRepresentation): string {\n return this.iconsMDL.mapGlyphiconToMaterialDesignIcons(app.icon);\n }\n\n private load() {\n this.loading = true;\n this.appsProcessService\n .getDeployedApplications()\n .pipe(\n map((apps) => apps.filter((app) => app.deploymentId !== undefined || app.defaultAppId === this.defaultAppId)),\n finalize(() => (this.loading = false))\n )\n .subscribe(\n (res) => {\n const apps = this.filterApps(res, this.filtersAppId).map((app) => {\n if (this.isDefaultApp(app)) {\n app.theme = DEFAULT_TASKS_APP_THEME;\n app.icon = DEFAULT_TASKS_APP_ICON;\n }\n\n return app;\n });\n\n this.appList = [...apps];\n },\n (err) => {\n this.error.emit(err);\n }\n );\n }\n\n filterApps(apps: AppDefinitionRepresentation[], filter: Partial<AppDefinitionRepresentation>[]): AppDefinitionRepresentation[] {\n return filter && filter.length > 0\n ? apps.filter((app) =>\n filter.some(\n (f) =>\n (f.defaultAppId && app.defaultAppId === f.defaultAppId) ||\n (f.deploymentId && app.deploymentId === f.deploymentId) ||\n (f.name && app.name === f.name) ||\n (f.id !== undefined && app.id === f.id) ||\n (f.modelId !== undefined && app.modelId === f.modelId) ||\n (f.tenantId !== undefined && app.tenantId === f.tenantId)\n )\n )\n : apps;\n }\n}\n","<div class=\"menu-container\" *ngIf=\"!isEmpty()\">\n <mat-list *ngIf=\"isList()\" class=\"adf-app-list\">\n <mat-list-item class=\"adf-app-list-item\" (click)=\"selectApp(app)\" (keyup.enter)=\"selectApp(app)\" *ngFor=\"let app of appList\" tabindex=\"0\" role=\"button\" title=\"{{app.name}}\">\n <mat-icon matListItemIcon>touch_app</mat-icon>\n <span matLine>{{getAppName(app) | translate}}</span>\n </mat-list-item>\n </mat-list>\n <div *ngIf=\"isGrid()\" class=\"adf-app-listgrid\">\n <div *ngFor=\"let app of appList\"\n class=\"adf-app-listgrid-item\">\n <mat-card appearance=\"outlined\" tabindex=\"0\"\n role=\"button\"\n class=\"adf-app-listgrid-item-card\"\n title=\"{{getAppName(app) | translate}}\"\n [ngClass]=\"[getTheme(app)]\"\n (click)=\"selectApp(app)\"\n (keyup.enter)=\"selectApp(app)\">\n <div class=\"adf-app-listgrid-item-card-logo\">\n <mat-icon class=\"adf-app-listgrid-item-card-logo-icon\">{{getBackgroundIcon(app)}}</mat-icon>\n </div>\n <div mat-card-title class=\"adf-app-listgrid-item-card-title\">\n <h1>{{getAppName(app) | translate}}</h1>\n </div>\n <mat-card-subtitle class=\"adf-app-listgrid-item-card-subtitle\">\n <div class=\"adf-line-clamp\">{{app.description}}</div>\n </mat-card-subtitle>\n\n <mat-card-actions class=\"adf-app-listgrid-item-card-actions\">\n <mat-icon class=\"adf-app-listgrid-item-card-actions-icon\" *ngIf=\"isSelected(app.id)\">done</mat-icon>\n </mat-card-actions>\n </mat-card>\n </div>\n </div>\n</div>\n\n<ng-container *ngIf=\"isLoading(); else empty\">\n <div class=\"adf-app-list-spinner\">\n <mat-progress-spinner mode=\"indeterminate\" />\n </div>\n</ng-container>\n\n<ng-template #empty>\n <div class=\"adf-app-list-empty\" *ngIf=\"isEmpty()\">\n <ng-content select=\"adf-custom-empty-content-template\"\n *ngIf=\"hasEmptyCustomContentTemplate; else defaultEmptyTemplate\"\n class=\"adf-custom-empty-template\" />\n\n <ng-template #defaultEmptyTemplate>\n <adf-empty-content\n icon=\"apps\"\n [title]=\"'ADF_TASK_LIST.APPS.TITLE' | translate\"\n [subtitle]=\"'ADF_TASK_LIST.APPS.SUBTITLE' | translate\" />\n </ng-template>\n </div>\n</ng-template>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, Inject, ViewEncapsulation } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { AppsProcessService } from '../../services/apps-process.service';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'adf-select-apps-dialog',\n imports: [CommonModule, TranslatePipe, MatDialogModule, MatSelectModule, MatButtonModule],\n templateUrl: './select-apps-dialog.component.html',\n styleUrls: ['./select-apps-dialog.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class SelectAppsDialogComponent {\n processApps: any;\n\n selectedProcess: any;\n\n constructor(\n private appsProcessService: AppsProcessService,\n public dialogRef: MatDialogRef<SelectAppsDialogComponent>,\n @Inject(MAT_DIALOG_DATA) public data: any\n ) {\n this.appsProcessService.getDeployedApplications().subscribe((apps) => {\n this.processApps = apps.filter((currentApp) => currentApp.id);\n });\n }\n\n onStart(): void {\n this.dialogRef.close(this.selectedProcess);\n }\n}\n","<header mat-dialog-title id=\"adf-select-app-dialog-title\">{{'APP.DIALOG.TITLE' | translate}}</header>\n<section mat-dialog-content>\n\n <mat-select id=\"adf-select-app-dialog-dropdown\" placeholder=\"{{'APP.DIALOG.LIST' | translate}}\" [(value)]=\"selectedProcess\" >\n <mat-option *ngFor=\"let currentProcessApp of processApps\" [value]=\"currentProcessApp\">\n {{ currentProcessApp.name }}\n </mat-option>\n </mat-select>\n\n</section>\n<footer mat-dialog-actions class=\"adf-select-apps-dialog-actions\">\n <button mat-button (click)=\"onStart()\">{{'APP.DIALOG.START' | translate}}</button>\n</footer>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AppsListComponent } from './apps-list.component';\nimport { SelectAppsDialogComponent } from './select-apps-dialog/select-apps-dialog.component';\n\nexport * from './apps-list.component';\nexport * from './select-apps-dialog/select-apps-dialog.component';\nexport * from '../services/apps-process.service';\n\nexport const APPS_LIST_DIRECTIVES = [AppsListComponent, SelectAppsDialogComponent] as const;\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './public-api';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n DataColumnComponent,\n DataColumnListComponent,\n DataTableComponent,\n DownloadService,\n EmptyListComponent,\n EmptyListHeaderDirective,\n LoadingContentTemplateDirective,\n NoContentTemplateDirective,\n ThumbnailService\n} from '@alfresco/adf-core';\nimport {\n AfterContentInit,\n Component,\n ContentChild,\n EventEmitter,\n Input,\n NgZone,\n OnChanges,\n Output,\n SimpleChanges,\n ViewEncapsulation\n} from '@angular/core';\nimport { ProcessContentService } from '../../form/services/process-content.service';\nimport { CommonModule } from '@angular/common';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { TranslatePipe } from '@ngx-translate/core';\n\n@Component({\n selector: 'adf-task-attachment-list',\n imports: [\n CommonModule,\n MatProgressSpinnerModule,\n DataTableComponent,\n EmptyListHeaderDirective,\n TranslatePipe,\n DataColumnListComponent,\n DataColumnComponent,\n LoadingContentTemplateDirective,\n EmptyListComponent,\n NoContentTemplateDirective\n ],\n styleUrls: ['./task-attachment-list.component.scss'],\n templateUrl: './task-attachment-list.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class TaskAttachmentListComponent implements OnChanges, AfterContentInit {\n @ContentChild(EmptyListComponent)\n emptyTemplate: EmptyListComponent;\n\n /** (**required**) The ID of the task to display. */\n @Input({ required: true })\n taskId: string;\n\n /** Disable/Enable read only mode for attachment list. */\n @Input()\n disabled: boolean = false;\n\n /**\n * Emitted when the attachment is double-clicked or a view\n * option is selected from the context menu by the user from within the component.\n * Returns a Blob representing the clicked object.\n */\n @Output()\n attachmentClick = new EventEmitter();\n\n /**\n * Emitted when the attachment list has fetched all the attachments.\n * Returns a list of attachments.\n */\n @Output()\n success = new EventEmitter();\n\n /** Emitted when an error occurs while fetching the attachments. */\n @Output()\n error = new EventEmitter<any>();\n\n hasCustomTemplate: boolean = false;\n\n attachments: any[] = [];\n isLoading: boolean = false;\n\n constructor(\n private activitiContentService: ProcessContentService,\n private downloadService: DownloadService,\n private thumbnailService: ThumbnailService,\n private ngZone: NgZone\n ) {}\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['taskId']?.currentValue) {\n this.loadAttachmentsByTaskId(changes['taskId'].currentValue);\n }\n }\n\n ngAfterContentInit() {\n if (this.emptyTemplate) {\n this.hasCustomTemplate = true;\n }\n }\n\n reset(): void {\n this.attachments = [];\n }\n\n reload(): void {\n this.ngZone.run(() => {\n this.loadAttachmentsByTaskId(this.taskId);\n });\n }\n\n add(content: any): void {\n this.ngZone.run(() => {\n this.attachments.push({\n id: content.id,\n name: content.name,\n created: content.created,\n createdBy: content.createdBy.firstName + ' ' + content.createdBy.lastName,\n icon: this.thumbnailService.getMimeTypeIcon(content.mimeType)\n });\n });\n }\n\n deleteAttachmentById(contentId: number) {\n if (contentId) {\n this.activitiContentService.deleteRelatedContent(contentId).subscribe(\n () => {\n this.attachments = this.attachments.filter((content) => content.id !== contentId);\n },\n (err) => {\n this.error.emit(err);\n }\n );\n }\n }\n\n onShowRowActionsMenu(event: any) {\n const viewAction = {\n title: 'ADF_TASK_LIST.MENU_ACTIONS.VIEW_CONTENT',\n name: 'view'\n };\n\n const removeAction = {\n title: 'ADF_TASK_LIST.MENU_ACTIONS.REMOVE_CONTENT',\n name: 'remove'\n };\n\n const downloadAction = {\n title: 'ADF_TASK_LIST.MENU_ACTIONS.DOWNLOAD_CONTENT',\n name: 'download'\n };\n\n event.value.actions = [viewAction, downloadAction];\n\n if (!this.disabled) {\n event.value.actions.splice(1, 0, removeAction);\n }\n }\n\n onExecuteRowAction(event: any) {\n const args = event.value;\n const action = args.action;\n if (action.name === 'view') {\n this.emitDocumentContent(args.row.obj);\n } else if (action.name === 'remove') {\n this.deleteAttachmentById(args.row.obj.id);\n } else if (action.name === 'download') {\n this.downloadContent(args.row.obj);\n }\n }\n\n openContent(event: any): void {\n const content = event.value.obj;\n this.emitDocumentContent(content);\n }\n\n emitDocumentContent(content: any) {\n this.activitiContentService.getContentPreview(content.id).subscribe(\n (blob: Blob) => {\n content.contentBlob = blob;\n this.attachmentClick.emit(content);\n },\n (err) => {\n this.error.emit(err);\n }\n );\n }\n\n downloadContent(content: any): void {\n this.activitiContentService.getFileRawContent(content.id).subscribe(\n (blob: Blob) => this.downloadService.downloadBlob(blob, content.name),\n (err) => {\n this.error.emit(err);\n }\n );\n }\n\n private loadAttachmentsByTaskId(taskId: string) {\n if (taskId) {\n this.isLoading = true;\n this.reset();\n const isRelatedContent = 'true';\n this.activitiContentService.getTaskRelatedContent(taskId, { isRelatedContent }).subscribe(\n (res) => {\n const attachList = [];\n res.data.forEach((content) => {\n attachList.push({\n id: content.id,\n name: content.name,\n created: content.created,\n createdBy: content.createdBy.firstName + ' ' + content.createdBy.lastName,\n icon: this.thumbnailService.getMimeTypeIcon(content.mimeType)\n });\n });\n this.attachments = attachList;\n this.success.emit(this.attachments);\n this.isLoading = false;\n },\n (err) => {\n this.error.emit(err);\n this.isLoading = false;\n }\n );\n }\n }\n}\n","<adf-datatable [rows]=\"attachments\"\n [actions]=\"true\"\n [loading]=\"isLoading\"\n (rowDblClick)=\"openContent($event)\"\n (showRowActionsMenu)=\"onShowRowActionsMenu($event)\"\n (executeRowAction)=\"onExecuteRowAction($event)\">\n <adf-no-content-template>\n <ng-template>\n <ng-content *ngIf=\"hasCustomTemplate; else defaultEmptyList\" class=\"adf-custom-empty-template\" />\n <ng-template #defaultEmptyList>\n <adf-empty-list>\n <div adf-empty-list-header class=\"adf-empty-list-header\">\n {{'ADF_TASK_LIST.ATTACHMENT.EMPTY.HEADER' | translate}}\n </div>\n </adf-empty-list>\n </ng-template>\n </ng-template>\n </adf-no-content-template>\n\n <data-columns>\n <data-column key=\"icon\" type=\"image\" [sr-title]=\"'ADF_TASK_LIST.PROPERTIES.THUMBNAIL'\" [sortable]=\"false\" />\n <data-column key=\"name\" type=\"text\" title=\"ADF_TASK_LIST.PROPERTIES.NAME\" class=\"adf-full-width adf-ellipsis-cell\" [sortable]=\"true\" />\n <data-column key=\"created\" type=\"date\" format=\"shortDate\" title=\"ADF_TASK_LIST.PROPERTIES.CREATED\" />\n </data-columns>\n <adf-loading-content-template>\n <ng-template>\n <!--Add your custom loading template here-->\n <mat-progress-spinner class=\"adf-attachment-list-loading-margin\" [color]=\"'primary'\" [mode]=\"'indeterminate'\" />\n </ng-template>\n </adf-loading-content-template>\n</adf-datatable>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n DataColumnComponent,\n DataColumnListComponent,\n DataTableComponent,\n DownloadService,\n EmptyListComponent,\n LoadingContentTemplateDirective,\n NoContentTemplateDirective,\n ThumbnailService\n} from '@alfresco/adf-core';\nimport {\n AfterContentInit,\n Component,\n ContentChild,\n EventEmitter,\n Input,\n NgZone,\n OnChanges,\n Output,\n SimpleChanges,\n ViewEncapsulation\n} from '@angular/core';\nimport { ProcessContentService } from '../../form/services/process-content.service';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\n\n@Component({\n selector: 'adf-process-attachment-list',\n imports: [\n CommonModule,\n TranslatePipe,\n MatProgressSpinnerModule,\n DataTableComponent,\n NoContentTemplateDirective,\n EmptyListComponent,\n DataColumnListComponent,\n DataColumnComponent,\n LoadingContentTemplateDirective\n ],\n styleUrls: ['./process-attachment-list.component.scss'],\n templateUrl: './process-attachment-list.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class ProcessAttachmentListComponent implements OnChanges, AfterContentInit {\n @ContentChild(EmptyListComponent)\n emptyTemplate: EmptyListComponent;\n\n /** (**required**) The ID of the process instance to display. */\n @Input({ required: true })\n processInstanceId: string;\n\n /** Disable/Enable read-only mode for attachment list. */\n @Input()\n disabled: boolean = false;\n\n /**\n * Emitted when the attachment is double-clicked or the\n * view option is selected from the context menu by the user from\n * within the component. Returns a Blob representing the object\n * that was clicked.\n */\n @Output()\n attachmentClick = new EventEmitter();\n\n /**\n * Emitted when the attachment list has fetched all the attachments.\n * Returns a list of attachments.\n */\n @Output()\n success = new EventEmitter();\n\n /**\n * Emitted when the attachment list is not able to fetch the attachments\n * (eg, following a network error).\n */\n @Output()\n error = new EventEmitter<any>();\n\n hasCustomTemplate: boolean = false;\n\n attachments: any[] = [];\n isLoading: boolean = false;\n\n constructor(\n private processContentService: ProcessContentService,\n private downloadService: DownloadService,\n private thumbnailService: ThumbnailService,\n private ngZone: NgZone\n ) {}\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['processInstanceId']?.currentValue) {\n this.loadAttachmentsByProcessInstanceId(changes['processInstanceId'].currentValue);\n }\n }\n\n ngAfterContentInit() {\n if (this.emptyTemplate) {\n this.hasCustomTemplate = true;\n }\n }\n\n reset() {\n this.attachments = [];\n }\n\n reload(): void {\n this.ngZone.run(() => {\n this.loadAttachmentsByProcessInstanceId(this.processInstanceId);\n });\n }\n\n add(content: any): void {\n this.ngZone.run(() => {\n this.attachments.push({\n id: content.id,\n name: content.name,\n created: content.created,\n createdBy: content.createdBy.firstName + ' ' + content.createdBy.lastName,\n icon: this.thumbnailService.getMimeTypeIcon(content.mimeType)\n });\n });\n }\n\n onShowRowActionsMenu(event: any) {\n const viewAction = {\n title: 'ADF_PROCESS_LIST.MENU_ACTIONS.VIEW_CONTENT',\n name: 'view'\n };\n\n const removeAction = {\n title: 'ADF_PROCESS_LIST.MENU_ACTIONS.REMOVE_CONTENT',\n name: 'remove'\n };\n\n const downloadAction = {\n title: 'ADF_PROCESS_LIST.MENU_ACTIONS.DOWNLOAD_CONTENT',\n name: 'download'\n };\n\n event.value.actions = [viewAction, downloadAction];\n\n if (!this.disabled) {\n event.value.actions.splice(1, 0, removeAction);\n }\n }\n\n onExecuteRowAction(event: any) {\n const args = event.value;\n const action = args.action;\n if (action.name === 'view') {\n this.emitDocumentContent(args.row.obj);\n } else if (action.name === 'remove') {\n this.deleteAttachmentById(args.row.obj.id);\n } else if (action.name === 'download') {\n this.downloadContent(args.row.obj);\n }\n }\n\n openContent(event: any): void {\n const content = event.value.obj;\n this.emitDocumentContent(content);\n }\n\n emitDocumentContent(content: any) {\n this.processContentService.getContentPreview(content.id).subscribe(\n (blob: Blob) => {\n content.contentBlob = blob;\n this.attachmentClick.emit(content);\n },\n (err) => {\n this.error.emit(err);\n }\n );\n }\n\n downloadContent(content: any): void {\n this.processContentService.getFileRawContent(content.id).subscribe(\n (blob: Blob) => this.downloadService.downloadBlob(blob, content.name),\n (err) => {\n this.error.emit(err);\n }\n );\n }\n\n private loadAttachmentsByProcessInstanceId(processInstanceId: string) {\n if (processInstanceId) {\n this.reset();\n this.isLoading = true;\n const isRelatedContent = 'true';\n this.processContentService.getProcessRelatedContent(processInstanceId, { isRelatedContent }).subscribe(\n (res) => {\n res.data.forEach((content) => {\n this.attachments.push({\n id: content.id,\n name: content.name,\n created: content.created,\n createdBy: content.createdBy.firstName + ' ' + content.createdBy.lastName,\n icon: this.thumbnailService.getMimeTypeIcon(content.mimeType)\n });\n });\n this.success.emit(this.attachments);\n this.isLoading = false;\n },\n (err) => {\n this.error.emit(err);\n this.isLoading = false;\n }\n );\n }\n }\n\n private deleteAttachmentById(contentId: number) {\n if (contentId) {\n this.processContentService.deleteRelatedContent(contentId).subscribe(\n () => {\n this.attachments = this.attachments.filter((content) => content.id !== contentId);\n },\n (err) => {\n this.error.emit(err);\n }\n );\n }\n }\n}\n","<adf-datatable [rows]=\"attachments\"\n [actions]=\"true\"\n [loading]=\"isLoading\"\n (rowDblClick)=\"openContent($event)\"\n (showRowActionsMenu)=\"onShowRowActionsMenu($event)\"\n (executeRowAction)=\"onExecuteRowAction($event)\">\n\n <adf-no-content-template>\n <ng-template>\n <ng-content *ngIf=\"hasCustomTemplate; else defaultEmptyList\" class=\"adf-custom-empty-template\" />\n <ng-template #defaultEmptyList>\n <adf-empty-list>\n <div adf-empty-list-header class=\"adf-empty-list-header\">\n {{'ADF_PROCESS_LIST.PROCESS-ATTACHMENT.EMPTY.HEADER' | translate}}\n </div>\n </adf-empty-list>\n </ng-template>\n </ng-template>\n </adf-no-content-template>\n\n <data-columns>\n <data-column key=\"icon\" type=\"image\" [sr-title]=\"'ADF_PROCESS_LIST.PROPERTIES.THUMBNAIL'\" [sortable]=\"false\" />\n <data-column key=\"name\" type=\"text\" title=\"{{'ADF_PROCESS_LIST.PROPERTIES.NAME' | translate}}\" class=\"adf-full-width adf-ellipsis-cell\" [sortable]=\"true\" />\n <data-column key=\"created\" type=\"date\" format=\"shortDate\" title=\"{{'ADF_PROCESS_LIST.PROPERTIES.CREATED' | translate}}\" />\n </data-columns>\n\n <adf-loading-content-template>\n <ng-template>\n <!--Add your custom loading template here-->\n <mat-progress-spinner class=\"adf-attachment-list-loading-margin\" [color]=\"'primary'\" [mode]=\"'indeterminate'\" />\n </ng-template>\n </adf-loading-content-template>\n\n</adf-datatable>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, EventEmitter, inject, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\nimport { ProcessContentService } from '../../form/services/process-content.service';\nimport { RelatedContentRepresentation } from '@alfresco/js-api';\nimport { CommonModule } from '@angular/common';\nimport { UploadDirective } from '@alfresco/adf-core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n selector: 'adf-create-process-attachment',\n imports: [CommonModule, UploadDirective, MatButtonModule, MatIconModule],\n styleUrls: ['./create-process-attachment.component.css'],\n templateUrl: './create-process-attachment.component.html'\n})\nexport class CreateProcessAttachmentComponent implements OnChanges {\n private processContentService = inject(ProcessContentService);\n\n /** (required) The ID of the process instance to display. */\n @Input({ required: true })\n processInstanceId: string;\n\n /**\n * Emitted when an error occurs while creating or uploading an attachment\n * from the user within the component.\n */\n @Output()\n error = new EventEmitter<any>();\n\n /**\n * Emitted when an attachment is successfully created or uploaded\n * from within the component.\n */\n @Output()\n success = new EventEmitter<RelatedContentRepresentation>();\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['processInstanceId']?.currentValue) {\n this.processInstanceId = changes['processInstanceId'].currentValue;\n }\n }\n\n onFileUpload(event: any) {\n const filesList: File[] = event.detail.files.map((obj) => obj.file);\n\n for (const fileInfoObj of filesList) {\n const file: File = fileInfoObj;\n const opts = {\n isRelatedContent: true\n };\n this.processContentService.createProcessRelatedContent(this.processInstanceId, file, opts).subscribe(\n (res) => {\n this.success.emit(res);\n },\n (err) => {\n this.error.emit(err);\n }\n );\n }\n }\n}\n","<button\n id=\"add_new_process_content_button\"\n color=\"primary\"\n mat-button\n class=\"adf-create-attachment\"\n [adf-upload]=\"true\"\n [mode]=\"['click']\"\n [multiple]=\"true\"\n (upload-files)=\"onFileUpload($event)\">\n <mat-icon>add</mat-icon>\n</button>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, EventEmitter, inject, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\nimport { ProcessContentService } from '../../form/services/process-content.service';\nimport { CommonModule } from '@angular/common';\nimport { RelatedContentRepresentation } from '@alfresco/js-api';\nimport { MatButtonModule } from '@angular/material/button';\nimport { UploadDirective } from '@alfresco/adf-core';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n selector: 'adf-create-task-attachment',\n imports: [CommonModule, MatButtonModule, UploadDirective, MatIconModule],\n styleUrls: ['./create-task-attachment.component.scss'],\n templateUrl: './create-task-attachment.component.html'\n})\nexport class AttachmentComponent implements OnChanges {\n private processContentService = inject(ProcessContentService);\n\n /** (required) The numeric ID of the task to display. */\n @Input({ required: true })\n taskId: string;\n\n /**\n * Emitted when an error occurs while creating or uploading an\n * attachment from the user within the component.\n */\n @Output()\n error = new EventEmitter<any>();\n\n /**\n * Emitted when an attachment is created or uploaded successfully\n * from within the component.\n */\n @Output()\n success = new EventEmitter<RelatedContentRepresentation>();\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['taskId']?.currentValue) {\n this.taskId = changes['taskId'].currentValue;\n }\n }\n\n onFileUpload(event: any) {\n const filesList: File[] = event.detail.files.map((obj) => obj.file);\n\n for (const fileInfoObj of filesList) {\n const file: File = fileInfoObj;\n const opts = {\n isRelatedContent: true\n };\n this.processContentService.createTaskRelatedContent(this.taskId, file, opts).subscribe(\n (res) => {\n this.success.emit(res);\n },\n (err) => {\n this.error.emit(err);\n }\n );\n }\n }\n}\n","<button\n color=\"primary\"\n mat-button\n class=\"adf-create-attachment\"\n [adf-upload]=\"true\"\n [mode]=\"['click']\"\n [multiple]=\"true\"\n (upload-files)=\"onFileUpload($event)\">\n <mat-icon>add</mat-icon>\n</button>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { TaskAttachmentListComponent } from './task-attachment-list/task-attachment-list.component';\nimport { ProcessAttachmentListComponent } from './process-attachment-list/process-attachment-list.component';\nimport { CreateProcessAttachmentComponent } from './create-process-attachment/create-process-attachment.component';\nimport { AttachmentComponent } from './create-task-attachment/create-task-attachment.component';\n\nexport * from './task-attachment-list/task-attachment-list.component';\nexport * from './process-attachment-list/process-attachment-list.component';\nexport * from './create-process-attachment/create-process-attachment.component';\nexport * from './create-task-attachment/create-task-attachment.component';\n\nexport const ATTACHMENT_DIRECTIVES = [\n TaskAttachmentListComponent,\n ProcessAttachmentListComponent,\n CreateProcessAttachmentComponent,\n AttachmentComponent\n] as const;\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './public-api';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { NgModule, ModuleWithProviders } from '@angular/core';\nimport { FormRenderingService, provideTranslations } from '@alfresco/adf-core';\nimport { ProcessFormRenderingService } from './form/process-form-rendering.service';\nimport { ATTACHMENT_DIRECTIVES } from './attachment';\nimport { APPS_LIST_DIRECTIVES } from './app-list';\nimport { PEOPLE_DIRECTIVES } from './people';\nimport { PROCESS_COMMENTS_DIRECTIVES } from './process-comments';\nimport { PROCESS_LIST_DIRECTIVES } from './process-list';\nimport { TASK_LIST_DIRECTIVES } from './task-list';\nimport { FORM_DIRECTIVES } from './form';\nimport { TASK_COMMENTS_DIRECTIVES } from './task-comments';\nimport { MAT_FORM_FIELD_DEFAULT_OPTIONS } from '@angular/material/form-field';\n\n@NgModule({\n imports: [\n ...PROCESS_COMMENTS_DIRECTIVES,\n ...PROCESS_LIST_DIRECTIVES,\n ...TASK_LIST_DIRECTIVES,\n ...TASK_COMMENTS_DIRECTIVES,\n ...APPS_LIST_DIRECTIVES,\n ...ATTACHMENT_DIRECTIVES,\n ...PEOPLE_DIRECTIVES,\n ...FORM_DIRECTIVES\n ],\n providers: [\n provideTranslations('adf-process-services', 'assets/adf-process-services'),\n { provide: MAT_FORM_FIELD_DEFAULT_OPTIONS, useValue: { floatLabel: 'never' } }\n ],\n exports: [\n ...PROCESS_COMMENTS_DIRECTIVES,\n ...PROCESS_LIST_DIRECTIVES,\n ...TASK_LIST_DIRECTIVES,\n ...TASK_COMMENTS_DIRECTIVES,\n ...APPS_LIST_DIRECTIVES,\n ...ATTACHMENT_DIRECTIVES,\n ...PEOPLE_DIRECTIVES,\n ...FORM_DIRECTIVES\n ]\n})\nexport class ProcessModule {\n static forRoot(): ModuleWithProviders<ProcessModule> {\n return {\n ngModule: ProcessModule,\n providers: [\n provideTranslations('adf-process-services', 'assets/adf-process-services'),\n FormRenderingService,\n { provide: FormRenderingService, useClass: ProcessFormRenderingService }\n ]\n };\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AppDefinitionRepresentation,\n LightUserRepresentation,\n ProcessInstanceRepresentation,\n RestVariable,\n UserRepresentation,\n UserTaskFilterRepresentation\n} from '@alfresco/js-api';\n\n/** @deprecated use js-api/ProcessInstanceRepresentation instead */\nexport type ProcessInstance = ProcessInstanceRepresentation;\n\n/** @deprecated use js-api/UserTaskFilterRepresentation instead */\nexport type FilterRepresentationModel = UserTaskFilterRepresentation;\n\n/** @deprecated use js-api/UserTaskFilterRepresentation instead */\nexport type FilterParamsModel = UserTaskFilterRepresentation;\n\n/** @deprecated use js-api/UserRepresentation instead */\nexport type BpmUserModel = UserRepresentation;\n\n/** @deprecated use js-api/AppDefinitionRepresentation instead */\nexport type AppDefinitionRepresentationModel = AppDefinitionRepresentation;\n\n/** @deprecated use js-api/LightUserRepresentation instead */\nexport type UserProcessModel = LightUserRepresentation;\n\n/** @deprecated use js-api/RestVariable instead */\nexport type ProcessInstanceVariable = RestVariable;\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './lib/process-list/index';\nexport * from './lib/task-list/index';\nexport * from './lib/app-list/index';\nexport * from './lib/attachment/index';\nexport * from './lib/process-comments/index';\nexport * from './lib/people/index';\nexport * from './lib/form/index';\nexport * from './lib/task-comments/index';\nexport * from './lib/process.module';\nexport * from './lib/compat/types';\nexport * from './lib/services/apps-process.service';\nexport * from './lib/services/people-process.service';\nexport * from './lib/services/task-comments.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["PRESET_KEY","i1.ProcessService","i2","i1","i1.ProcessFilterService","i2.AppsProcessService","i3","i4","i5","i1.TaskListService","i1.ModelService","i2.ProcessContentService","i6","i2.PeopleProcessService","i7","i9","i1.PeopleProcessService","i2.TaskFormService","i3.ProcessDefinitionService","i8","i3.ActivitiContentService","i6.AttachFileWidgetDialogService","i2.ModelService","i3.TaskFormService","i1.TaskFilterService","i2.TaskListService","i3.AppsProcessService","MAX_LENGTH","i10","i11","i2.ActivitiContentService","i12","i13","i2.ProcessService","i1.AppsProcessService","i1.ProcessContentService","i1.ProcessCommentsComponent","i2.ProcessAuditDirective","i3.ProcessInstanceListComponent","i4.ProcessFiltersComponent","i5.ProcessInstanceDetailsComponent","i6.ProcessInstanceHeaderComponent","i7.ProcessInstanceTasksComponent","i8.StartProcessInstanceComponent","i9.TaskFormComponent","i10.AttachFormComponent","i11.ChecklistComponent","i12.TaskFiltersComponent","i13.TaskListComponent","i14.TaskDetailsComponent","i15.TaskHeaderComponent","i16.StartTaskComponent","i17.TaskStandaloneComponent","i18.ClaimTaskDirective","i19.UnclaimTaskDirective","i20.TaskCommentsComponent","i21.AppsListComponent","i22.SelectAppsDialogComponent","i23.TaskAttachmentListComponent","i24.ProcessAttachmentListComponent","i25.CreateProcessAttachmentComponent","i26.AttachmentComponent","i27.PeopleComponent","i28.PeopleSearchComponent","i29.PeopleSearchFieldComponent","i30.PeopleSelectorComponent","i31.PeopleListComponent","i32.FormListComponent","i33.FormCustomOutcomesComponent","i34.StartFormComponent","i35.FormComponent","i36.AttachFileWidgetComponent","i37.AttachFolderWidgetComponent","i38.AttachFileWidgetDialogComponent","i39.ContentWidgetComponent","i40.DocumentWidgetComponent","i41.DropdownWidgetComponent","i42.DynamicTableWidgetComponent","i43.DropdownEditorComponent","i44.AmountEditorComponent","i45.BooleanEditorComponent","i46.DateEditorComponent","i47.DateTimeEditorComponent","i48.RowEditorComponent","i49.TextEditorComponent","i50.FileViewerWidgetComponent","i51.FunctionalGroupWidgetComponent","i52.PeopleWidgetComponent","i53.RadioButtonsWidgetComponent","i54.TypeaheadWidgetComponent","i55.UploadWidgetComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"adf-process-services.mjs","sources":["../../../../lib/process-services/src/lib/process-list/services/process.service.ts","../../../../lib/process-services/src/lib/process-list/components/process-list/process-list.component.ts","../../../../lib/process-services/src/lib/process-list/components/process-list/process-list.component.html","../../../../lib/process-services/src/lib/process-list/services/process-filter.service.ts","../../../../lib/process-services/src/lib/services/apps-process.service.ts","../../../../lib/process-services/src/lib/app-list/icon.model.ts","../../../../lib/process-services/src/lib/process-list/components/process-filters/process-filters.component.ts","../../../../lib/process-services/src/lib/process-list/components/process-filters/process-filters.component.html","../../../../lib/process-services/src/lib/process-list/components/process-instance-header/process-instance-header.component.ts","../../../../lib/process-services/src/lib/process-list/components/process-instance-header/process-instance-header.component.html","../../../../lib/process-services/src/lib/task-list/models/form.model.ts","../../../../lib/process-services/src/lib/task-list/services/tasklist.service.ts","../../../../lib/process-services/src/lib/task-list/components/task-form/claim-task.directive.ts","../../../../lib/process-services/src/lib/task-list/components/task-form/unclaim-task.directive.ts","../../../../lib/process-services/src/lib/services/people-process.service.ts","../../../../lib/process-services/src/lib/task-list/components/task-standalone/task-standalone.component.ts","../../../../lib/process-services/src/lib/task-list/components/task-standalone/task-standalone.component.html","../../../../lib/process-services/src/lib/form/services/model.service.ts","../../../../lib/process-services/src/lib/form/form-list/form-list.component.ts","../../../../lib/process-services/src/lib/form/form-list/form-list.component.html","../../../../lib/process-services/src/lib/form/form-custom-outcomes.component.ts","../../../../lib/process-services/src/lib/form/services/ecm-model.service.ts","../../../../lib/process-services/src/lib/form/services/editor.service.ts","../../../../lib/process-services/src/lib/form/services/task.service.ts","../../../../lib/process-services/src/lib/form/services/task-form.service.ts","../../../../lib/process-services/src/lib/form/model/form-definition.model.ts","../../../../lib/process-services/src/lib/form/form.component.ts","../../../../lib/process-services/src/lib/form/form.component.html","../../../../lib/process-services/src/lib/form/start-form/start-form.component.ts","../../../../lib/process-services/src/lib/form/start-form/start-form.component.html","../../../../lib/process-services/src/lib/form/services/process-content.service.ts","../../../../lib/process-services/src/lib/form/widgets/upload/upload.widget.ts","../../../../lib/process-services/src/lib/form/widgets/upload/upload.widget.html","../../../../lib/process-services/src/lib/form/widgets/document/content.widget.ts","../../../../lib/process-services/src/lib/form/widgets/document/content.widget.html","../../../../lib/process-services/src/lib/form/widgets/document/document.widget.ts","../../../../lib/process-services/src/lib/form/widgets/document/document.widget.html","../../../../lib/process-services/src/lib/form/widgets/people/people.widget.ts","../../../../lib/process-services/src/lib/form/widgets/people/people.widget.html","../../../../lib/process-services/src/lib/form/widgets/functional-group/functional-group.widget.ts","../../../../lib/process-services/src/lib/form/widgets/functional-group/functional-group.widget.html","../../../../lib/process-services/src/lib/form/services/process-definition.service.ts","../../../../lib/process-services/src/lib/form/widgets/radio-buttons/radio-buttons.widget.ts","../../../../lib/process-services/src/lib/form/widgets/radio-buttons/radio-buttons.widget.html","../../../../lib/process-services/src/lib/form/widgets/dropdown/dropdown.widget.ts","../../../../lib/process-services/src/lib/form/widgets/dropdown/dropdown.widget.html","../../../../lib/process-services/src/lib/form/widgets/typeahead/typeahead.widget.ts","../../../../lib/process-services/src/lib/form/widgets/typeahead/typeahead.widget.html","../../../../lib/process-services/src/lib/form/widgets/file-viewer/file-viewer.widget.ts","../../../../lib/process-services/src/lib/form/widgets/file-viewer/file-viewer.widget.html","../../../../lib/process-services/src/lib/form/events/validate-dynamic-table-row.event.ts","../../../../lib/process-services/src/lib/form/widgets/dynamic-table/editors/models/date-cell-validator-model.ts","../../../../lib/process-services/src/lib/form/widgets/dynamic-table/editors/models/dynamic-row-validation-summary.model.ts","../../../../lib/process-services/src/lib/form/widgets/dynamic-table/editors/models/number-cell-validator.model.ts","../../../../lib/process-services/src/lib/form/widgets/dynamic-table/editors/models/required-cell-validator.model.ts","../../../../lib/process-services/src/lib/form/widgets/dynamic-table/editors/models/dynamic-table.widget.model.ts","../../../../lib/process-services/src/lib/form/widgets/dynamic-table/editors/dropdown/dropdown.editor.ts","../../../../lib/process-services/src/lib/form/widgets/dynamic-table/editors/dropdown/dropdown.editor.html","../../../../lib/process-services/src/lib/form/widgets/dynamic-table/editors/amount/amount.editor.ts","../../../../lib/process-services/src/lib/form/widgets/dynamic-table/editors/amount/amount.editor.html","../../../../lib/process-services/src/lib/form/widgets/dynamic-table/editors/boolean/boolean.editor.ts","../../../../lib/process-services/src/lib/form/widgets/dynamic-table/editors/boolean/boolean.editor.html","../../../../lib/process-services/src/lib/form/widgets/dynamic-table/editors/date/date.editor.ts","../../../../lib/process-services/src/lib/form/widgets/dynamic-table/editors/date/date.editor.html","../../../../lib/process-services/src/lib/form/widgets/dynamic-table/editors/datetime/datetime.editor.ts","../../../../lib/process-services/src/lib/form/widgets/dynamic-table/editors/datetime/datetime.editor.html","../../../../lib/process-services/src/lib/form/widgets/dynamic-table/editors/text/text.editor.ts","../../../../lib/process-services/src/lib/form/widgets/dynamic-table/editors/text/text.editor.html","../../../../lib/process-services/src/lib/form/widgets/dynamic-table/editors/row-editor/row.editor.ts","../../../../lib/process-services/src/lib/form/widgets/dynamic-table/editors/row-editor/row.editor.html","../../../../lib/process-services/src/lib/form/widgets/dynamic-table/dynamic-table.widget.ts","../../../../lib/process-services/src/lib/form/widgets/dynamic-table/dynamic-table.widget.html","../../../../lib/process-services/src/lib/form/widgets/dynamic-table/editors/models/dynamic-table-row.model.ts","../../../../lib/process-services/src/lib/form/widgets/dynamic-table/public-api.ts","../../../../lib/process-services/src/lib/form/widgets/dynamic-table/index.ts","../../../../lib/process-services/src/lib/form/services/external-alfresco-api.service.ts","../../../../lib/process-services/src/lib/form/widgets/content-widget/attach-file-widget-dialog.component.ts","../../../../lib/process-services/src/lib/form/widgets/content-widget/attach-file-widget-dialog.component.html","../../../../lib/process-services/src/lib/form/widgets/content-widget/attach-file-widget-dialog.service.ts","../../../../lib/process-services/src/lib/form/services/activiti-alfresco.service.ts","../../../../lib/process-services/src/lib/form/widgets/content-widget/attach-file-widget.component.ts","../../../../lib/process-services/src/lib/form/widgets/content-widget/attach-file-widget.component.html","../../../../lib/process-services/src/lib/form/widgets/content-widget/attach-folder-widget.component.ts","../../../../lib/process-services/src/lib/form/widgets/content-widget/attach-folder-widget.component.html","../../../../lib/process-services/src/lib/form/widgets/content-widget/attach-file-widget-dialog-component.interface.ts","../../../../lib/process-services/src/lib/form/widgets/content-widget/public-api.ts","../../../../lib/process-services/src/lib/form/widgets/content-widget/index.ts","../../../../lib/process-services/src/lib/form/widgets/public-api.ts","../../../../lib/process-services/src/lib/form/widgets/index.ts","../../../../lib/process-services/src/lib/form/services/index.ts","../../../../lib/process-services/src/lib/form/process-form-rendering.service.ts","../../../../lib/process-services/src/lib/form/public-api.ts","../../../../lib/process-services/src/lib/form/index.ts","../../../../lib/process-services/src/lib/task-list/components/task-form/task-form.component.ts","../../../../lib/process-services/src/lib/task-list/components/task-form/task-form.component.html","../../../../lib/process-services/src/lib/task-list/components/attach-form/attach-form.component.ts","../../../../lib/process-services/src/lib/task-list/components/attach-form/attach-form.component.html","../../../../lib/process-services/src/lib/task-list/components/checklist/checklist.component.ts","../../../../lib/process-services/src/lib/task-list/components/checklist/checklist.component.html","../../../../lib/process-services/src/lib/task-list/services/task-filter.service.ts","../../../../lib/process-services/src/lib/task-list/components/task-filters/task-filters.component.ts","../../../../lib/process-services/src/lib/task-list/components/task-filters/task-filters.component.html","../../../../lib/process-services/src/lib/task-list/models/task-preset.model.ts","../../../../lib/process-services/src/lib/task-list/components/task-list/task-list.component.ts","../../../../lib/process-services/src/lib/task-list/components/task-list/task-list.component.html","../../../../lib/process-services/src/lib/people/helpers/get-display-user.ts","../../../../lib/process-services/src/lib/people/components/people-list/people-list.component.ts","../../../../lib/process-services/src/lib/people/components/people-list/people-list.component.html","../../../../lib/process-services/src/lib/people/components/people-search-field/people-search-field.component.ts","../../../../lib/process-services/src/lib/people/components/people-search-field/people-search-field.component.html","../../../../lib/process-services/src/lib/people/components/people-search/people-search.component.ts","../../../../lib/process-services/src/lib/people/components/people-search/people-search.component.html","../../../../lib/process-services/src/lib/people/components/people/people.component.ts","../../../../lib/process-services/src/lib/people/components/people/people.component.html","../../../../lib/process-services/src/lib/people/components/people-selector/people-selector.component.ts","../../../../lib/process-services/src/lib/people/components/people-selector/people-selector.component.html","../../../../lib/process-services/src/lib/people/interfaces/perform-search-callback.interface.ts","../../../../lib/process-services/src/lib/people/public-api.ts","../../../../lib/process-services/src/lib/people/index.ts","../../../../lib/process-services/src/lib/task-list/validators/task-description.validator.ts","../../../../lib/process-services/src/lib/task-list/components/task-header/task-header.component.ts","../../../../lib/process-services/src/lib/task-list/components/task-header/task-header.component.html","../../../../lib/process-services/src/lib/services/task-comments.service.ts","../../../../lib/process-services/src/lib/task-comments/task-comments.component.ts","../../../../lib/process-services/src/lib/task-comments/task-comments.component.html","../../../../lib/process-services/src/lib/task-comments/index.ts","../../../../lib/process-services/src/lib/task-list/components/task-details/task-details.component.ts","../../../../lib/process-services/src/lib/task-list/components/task-details/task-details.component.html","../../../../lib/process-services/src/lib/task-list/components/start-task/start-task.component.ts","../../../../lib/process-services/src/lib/task-list/components/start-task/start-task.component.html","../../../../lib/process-services/src/lib/task-list/services/process-upload.service.ts","../../../../lib/process-services/src/lib/task-list/services/task-upload.service.ts","../../../../lib/process-services/src/lib/task-list/models/task-details.event.ts","../../../../lib/process-services/src/lib/task-list/models/user-event.model.ts","../../../../lib/process-services/src/lib/task-list/models/user-group.model.ts","../../../../lib/process-services/src/lib/task-list/public-api.ts","../../../../lib/process-services/src/lib/task-list/index.ts","../../../../lib/process-services/src/lib/process-list/components/process-instance-tasks/process-instance-tasks.component.ts","../../../../lib/process-services/src/lib/process-list/components/process-instance-tasks/process-instance-tasks.component.html","../../../../lib/process-services/src/lib/process-comments/services/comment-process.service.ts","../../../../lib/process-services/src/lib/process-comments/process-comments.component.ts","../../../../lib/process-services/src/lib/process-comments/process-comments.component.html","../../../../lib/process-services/src/lib/process-comments/index.ts","../../../../lib/process-services/src/lib/process-list/components/process-instance-details/process-instance-details.component.ts","../../../../lib/process-services/src/lib/process-list/components/process-instance-details/process-instance-details.component.html","../../../../lib/process-services/src/lib/process-list/components/start-process/start-process.component.ts","../../../../lib/process-services/src/lib/process-list/components/start-process/start-process.component.html","../../../../lib/process-services/src/lib/process-list/components/process-audit/process-audit.directive.ts","../../../../lib/process-services/src/lib/process-list/public-api.ts","../../../../lib/process-services/src/lib/process-list/index.ts","../../../../lib/process-services/src/lib/app-list/apps-list.component.ts","../../../../lib/process-services/src/lib/app-list/apps-list.component.html","../../../../lib/process-services/src/lib/app-list/select-apps-dialog/select-apps-dialog.component.ts","../../../../lib/process-services/src/lib/app-list/select-apps-dialog/select-apps-dialog.component.html","../../../../lib/process-services/src/lib/app-list/public-api.ts","../../../../lib/process-services/src/lib/app-list/index.ts","../../../../lib/process-services/src/lib/attachment/task-attachment-list/task-attachment-list.component.ts","../../../../lib/process-services/src/lib/attachment/task-attachment-list/task-attachment-list.component.html","../../../../lib/process-services/src/lib/attachment/process-attachment-list/process-attachment-list.component.ts","../../../../lib/process-services/src/lib/attachment/process-attachment-list/process-attachment-list.component.html","../../../../lib/process-services/src/lib/attachment/create-process-attachment/create-process-attachment.component.ts","../../../../lib/process-services/src/lib/attachment/create-process-attachment/create-process-attachment.component.html","../../../../lib/process-services/src/lib/attachment/create-task-attachment/create-task-attachment.component.ts","../../../../lib/process-services/src/lib/attachment/create-task-attachment/create-task-attachment.component.html","../../../../lib/process-services/src/lib/attachment/public-api.ts","../../../../lib/process-services/src/lib/attachment/index.ts","../../../../lib/process-services/src/lib/process.module.ts","../../../../lib/process-services/src/lib/compat/types.ts","../../../../lib/process-services/src/public-api.ts","../../../../lib/process-services/src/adf-process-services.ts"],"sourcesContent":["/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DateFnsUtils, FormValues } from '@alfresco/adf-core';\nimport { inject, Injectable } from '@angular/core';\nimport {\n FormDefinitionRepresentation,\n ProcessDefinitionsApi,\n ProcessInstanceAuditInfoRepresentation,\n ProcessInstanceQueryRepresentation,\n ProcessInstanceRepresentation,\n ProcessInstancesApi,\n ProcessInstanceVariablesApi,\n RestVariable,\n ResultListDataRepresentationProcessInstanceRepresentation,\n TasksApi,\n ProcessDefinitionRepresentation,\n TaskRepresentation\n} from '@alfresco/js-api';\nimport { AlfrescoApiService } from '@alfresco/adf-content-services';\nimport { from, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { DatePipe } from '@angular/common';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ProcessService {\n private alfrescoApiService = inject(AlfrescoApiService);\n\n private _tasksApi: TasksApi;\n get tasksApi(): TasksApi {\n return (this._tasksApi ||= new TasksApi(this.alfrescoApiService.getInstance()));\n }\n\n private _processDefinitionsApi: ProcessDefinitionsApi;\n get processDefinitionsApi(): ProcessDefinitionsApi {\n return (this._processDefinitionsApi ||= new ProcessDefinitionsApi(this.alfrescoApiService.getInstance()));\n }\n\n private _processInstancesApi: ProcessInstancesApi;\n get processInstancesApi(): ProcessInstancesApi {\n return (this._processInstancesApi ||= new ProcessInstancesApi(this.alfrescoApiService.getInstance()));\n }\n\n private _processInstanceVariablesApi: ProcessInstanceVariablesApi;\n get processInstanceVariablesApi(): ProcessInstanceVariablesApi {\n return (this._processInstanceVariablesApi ||= new ProcessInstanceVariablesApi(this.alfrescoApiService.getInstance()));\n }\n\n /**\n * Gets process instances for a filter and optionally a process definition.\n *\n * @param requestNode Filter for instances\n * @param processDefinitionKey Limits returned instances to a process definition\n * @returns List of process instances\n */\n getProcessInstances(\n requestNode: ProcessInstanceQueryRepresentation,\n processDefinitionKey?: string\n ): Observable<ResultListDataRepresentationProcessInstanceRepresentation> {\n return from(this.processInstancesApi.getProcessInstances(requestNode)).pipe(\n map((res) => {\n if (processDefinitionKey) {\n res.data = res.data.filter((process) => process.processDefinitionKey === processDefinitionKey);\n }\n return res;\n })\n );\n }\n\n /**\n * Gets processes for a filter and optionally a process definition.\n *\n * @param requestNode Filter for instances\n * @param processDefinitionKey Limits returned instances to a process definition\n * @returns List of processes\n */\n getProcesses(\n requestNode: ProcessInstanceQueryRepresentation,\n processDefinitionKey?: string\n ): Observable<ResultListDataRepresentationProcessInstanceRepresentation> {\n return this.getProcessInstances(requestNode, processDefinitionKey).pipe(\n map((response) => {\n response.data = (response.data || []).map((instance) => {\n instance.name = this.getProcessNameOrDescription(instance, 'medium');\n return instance;\n });\n return response;\n })\n );\n }\n\n /**\n * Fetches the Process Audit information as a PDF.\n *\n * @param processId ID of the target process\n * @returns Binary PDF data\n */\n fetchProcessAuditPdfById(processId: string): Observable<Blob> {\n return from(this.processInstancesApi.getProcessAuditPdf(processId));\n }\n\n /**\n * Fetches the Process Audit information in a JSON format.\n *\n * @param processId ID of the target process\n * @returns JSON data\n */\n fetchProcessAuditJsonById(processId: string): Observable<ProcessInstanceAuditInfoRepresentation> {\n return from(this.processInstancesApi.getTaskAuditLog(processId));\n }\n\n /**\n * Gets Process Instance metadata.\n *\n * @param processInstanceId ID of the target process\n * @returns Metadata for the instance\n */\n getProcess(processInstanceId: string): Observable<ProcessInstanceRepresentation> {\n return from(this.processInstancesApi.getProcessInstance(processInstanceId)).pipe(map(this.toJson));\n }\n\n /**\n * Gets the start form definition for a given process.\n *\n * @param processId Process definition ID\n * @returns Form definition\n */\n getStartFormDefinition(processId: string): Observable<any> {\n return from(this.processDefinitionsApi.getProcessDefinitionStartForm(processId)).pipe(map(this.toJson));\n }\n\n /**\n * Gets the start form instance for a given process.\n *\n * @param processId Process definition ID\n * @returns Form definition\n */\n getStartFormInstance(processId: string): Observable<FormDefinitionRepresentation> {\n return from(this.processInstancesApi.getProcessInstanceStartForm(processId)).pipe(map(this.toJson));\n }\n\n /**\n * Creates a JSON representation of form data.\n *\n * @param res Object representing form data\n * @returns JSON data\n */\n private toJson(res: any) {\n if (res) {\n return res || {};\n }\n return {};\n }\n\n /**\n * Gets task instances for a process instance.\n *\n * @param processInstanceId ID of the process instance\n * @param state Task state filter (can be \"active\" or \"completed\")\n * @returns Array of task instance details\n */\n getProcessTasks(processInstanceId: string, state?: string): Observable<TaskRepresentation[]> {\n const taskOpts = state\n ? {\n processInstanceId,\n state\n }\n : {\n processInstanceId\n };\n return from(this.tasksApi.listTasks(taskOpts)).pipe(\n map(this.extractData),\n map((tasks) =>\n tasks.map((task: any) => {\n task.created = DateFnsUtils.formatDate(new Date(task.created), 'YYYY-MM-DD');\n return task;\n })\n )\n );\n }\n\n /**\n * Gets process definitions associated with an app.\n *\n * @param appId ID of a target app\n * @returns Array of process definitions\n */\n getProcessDefinitions(appId?: number): Observable<ProcessDefinitionRepresentation[]> {\n const opts = appId\n ? {\n latest: true,\n appDefinitionId: appId\n }\n : {\n latest: true\n };\n return from(this.processDefinitionsApi.getProcessDefinitions(opts)).pipe(map(this.extractData));\n }\n\n /**\n * Starts a process based on a process definition, name, form values or variables.\n *\n * @param processDefinitionId Process definition ID\n * @param name Process name\n * @param outcome Process outcome\n * @param startFormValues Values for the start form\n * @param variables Array of process instance variables\n * @returns Details of the process instance just started\n */\n startProcess(\n processDefinitionId: string,\n name: string,\n outcome?: string,\n startFormValues?: FormValues,\n variables?: RestVariable[]\n ): Observable<ProcessInstanceRepresentation> {\n const startRequest: any = {\n name,\n processDefinitionId\n };\n if (outcome) {\n startRequest.outcome = outcome;\n }\n if (startFormValues) {\n startRequest.values = startFormValues;\n }\n if (variables) {\n startRequest.variables = variables;\n }\n return from(this.processInstancesApi.startNewProcessInstance(startRequest));\n }\n\n /**\n * Cancels a process instance.\n *\n * @param processInstanceId ID of process to cancel\n * @returns Null response notifying when the operation is complete\n */\n cancelProcess(processInstanceId: string): Observable<void> {\n return from(this.processInstancesApi.deleteProcessInstance(processInstanceId));\n }\n\n /**\n * Gets the variables for a process instance.\n *\n * @param processInstanceId ID of the target process\n * @returns Array of instance variable info\n */\n getProcessInstanceVariables(processInstanceId: string): Observable<RestVariable[]> {\n return from(this.processInstanceVariablesApi.getProcessInstanceVariables(processInstanceId));\n }\n\n /**\n * Creates or updates variables for a process instance.\n *\n * @param processInstanceId ID of the target process\n * @param variables Variables to update\n * @returns Array of instance variable info\n */\n createOrUpdateProcessInstanceVariables(processInstanceId: string, variables: RestVariable[]): Observable<RestVariable[]> {\n return from(this.processInstanceVariablesApi.createOrUpdateProcessInstanceVariables(processInstanceId, variables));\n }\n\n /**\n * Deletes a variable for a process instance.\n *\n * @param processInstanceId ID of the target process\n * @param variableName Name of the variable to delete\n * @returns Null response notifying when the operation is complete\n */\n deleteProcessInstanceVariable(processInstanceId: string, variableName: string): Observable<void> {\n return from(this.processInstanceVariablesApi.deleteProcessInstanceVariable(processInstanceId, variableName));\n }\n\n private extractData(res: any) {\n return res.data || {};\n }\n\n private getProcessNameOrDescription(processInstance: ProcessInstanceRepresentation, dateFormat: string): string {\n let name = '';\n\n if (processInstance) {\n name = processInstance.name || processInstance.processDefinitionName + ' - ' + this.getFormatDate(processInstance.started, dateFormat);\n }\n\n return name;\n }\n\n private getFormatDate(value: Date, dateFormat: string) {\n const datePipe = new DatePipe('en-US');\n\n try {\n return datePipe.transform(value, dateFormat);\n } catch {\n return '';\n }\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n DataTableSchema,\n DataRowEvent,\n DataTableAdapter,\n CustomEmptyContentTemplateDirective,\n CustomLoadingContentTemplateDirective,\n DataRow,\n DataColumn,\n AppConfigService,\n PaginatedComponent,\n PaginationModel,\n UserPreferencesService,\n DataCellEvent,\n DEFAULT_PAGINATION,\n EmptyContentComponent,\n DataTableComponent,\n LoadingContentTemplateDirective,\n NoContentTemplateDirective,\n ObjectDataRow\n} from '@alfresco/adf-core';\nimport { AfterContentInit, Component, ContentChild, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\nimport { ProcessService } from '../../services/process.service';\nimport { BehaviorSubject } from 'rxjs';\nimport { finalize } from 'rxjs/operators';\nimport {\n ProcessInstanceQueryRepresentation,\n ProcessInstanceQueryRepresentationSort,\n ProcessInstanceQueryRepresentationState,\n ResultListDataRepresentationProcessInstanceRepresentation\n} from '@alfresco/js-api';\nimport { CommonModule } from '@angular/common';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { TranslatePipe } from '@ngx-translate/core';\n\nconst PRESET_KEY = 'adf-process-list.presets';\n\nexport const processPresetsDefaultModel = {\n default: [\n {\n key: 'name',\n type: 'text',\n title: 'ADF_PROCESS_LIST.PROPERTIES.NAME',\n sortable: true\n },\n {\n key: 'created',\n type: 'text',\n title: 'ADF_PROCESS_LIST.PROPERTIES.CREATED',\n cssClass: 'hidden',\n sortable: true\n }\n ]\n};\n\n@Component({\n selector: 'adf-process-instance-list',\n imports: [\n CommonModule,\n MatProgressSpinnerModule,\n EmptyContentComponent,\n TranslatePipe,\n DataTableComponent,\n LoadingContentTemplateDirective,\n NoContentTemplateDirective\n ],\n styleUrls: ['./process-list.component.css'],\n templateUrl: './process-list.component.html'\n})\nexport class ProcessInstanceListComponent extends DataTableSchema implements OnChanges, AfterContentInit, PaginatedComponent {\n @ContentChild(CustomEmptyContentTemplateDirective)\n customEmptyContent: CustomEmptyContentTemplateDirective;\n\n @ContentChild(CustomLoadingContentTemplateDirective)\n customLoadingContent: CustomLoadingContentTemplateDirective;\n\n /** The id of the app. */\n @Input()\n appId: number;\n\n /** The Definition Id of the process. */\n @Input()\n processDefinitionId: string;\n\n /** The id of the process instance. */\n @Input()\n processInstanceId: string;\n\n /** Defines the state of the processes. */\n @Input()\n state: ProcessInstanceQueryRepresentationState;\n\n /**\n * Defines the sort ordering of the list.\n */\n @Input()\n sort: ProcessInstanceQueryRepresentationSort;\n\n /** The page number of the processes to fetch. */\n @Input()\n page: number = 0;\n\n /** The number of processes to fetch in each page. */\n @Input()\n size: number = DEFAULT_PAGINATION.maxItems;\n\n /** Data source to define the datatable. */\n @Input()\n data: DataTableAdapter;\n\n /** Toggles multiple row selection, which renders checkboxes at the beginning of each row */\n @Input()\n multiselect: boolean = false;\n\n /**\n * Row selection mode. Can be none, `single` or `multiple`. For `multiple` mode,\n * you can use Cmd (macOS) or Ctrl (Win) modifier key to toggle selection for\n * multiple rows.\n */\n @Input()\n selectionMode: string = 'single'; // none|single|multiple\n\n /** Toggles default selection of the first row */\n @Input()\n selectFirstRow: boolean = true;\n\n /** Toggles the sticky header mode. */\n @Input()\n stickyHeader: boolean = false;\n\n /** Toggles custom context menu for the component. */\n @Input()\n showContextMenu: boolean = false;\n\n /** Enables column resizing for datatable */\n @Input()\n isResizingEnabled = false;\n\n /** Enables blur when resizing datatable columns */\n @Input()\n blurOnResize = true;\n\n /** Emitted before the context menu is displayed for a row. */\n @Output()\n showRowContextMenu = new EventEmitter<DataCellEvent>();\n\n /**\n * Resolver function is used to show dynamic complex column objects\n * see the docs to learn how to configure a resolverFn.\n */\n @Input()\n resolverFn: (row: DataRow, col: DataColumn) => any = null;\n\n /** Emitted when a row in the process list is clicked. */\n @Output()\n rowClick = new EventEmitter<string>();\n\n /** Emitted when the list of process instances has been loaded successfully from the server. */\n // eslint-disable-next-line @angular-eslint/no-output-native\n @Output()\n success = new EventEmitter<ResultListDataRepresentationProcessInstanceRepresentation>();\n\n /** Emitted when an error occurs while loading the list of process instances from the server. */\n // eslint-disable-next-line @angular-eslint/no-output-native\n @Output()\n error = new EventEmitter<any>();\n\n /** Emitted when rows are selected/unselected */\n @Output()\n rowsSelected = new EventEmitter<ObjectDataRow[]>();\n\n requestNode: ProcessInstanceQueryRepresentation;\n currentInstanceId: string;\n isLoading: boolean = true;\n rows: any[] = [];\n sorting: any[] = ['created', 'desc'];\n pagination: BehaviorSubject<PaginationModel>;\n\n constructor(private processService: ProcessService, private userPreferences: UserPreferencesService, appConfig: AppConfigService) {\n super(appConfig, PRESET_KEY, processPresetsDefaultModel);\n this.size = this.userPreferences.paginationSize;\n\n this.pagination = new BehaviorSubject<PaginationModel>({\n maxItems: this.size,\n skipCount: 0,\n totalItems: 0\n });\n }\n\n ngAfterContentInit() {\n this.createDatatableSchema();\n\n if (this.data?.getColumns().length === 0) {\n this.data.setColumns(this.columns);\n }\n\n if (this.appId != null) {\n this.reload();\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (this.isPropertyChanged(changes)) {\n if (this.isSortChanged(changes)) {\n this.sorting = this.sort ? this.sort.split('-') : this.sorting;\n }\n this.reload();\n }\n\n const presetColumnChanges = changes['presetColumn'];\n if (presetColumnChanges && !presetColumnChanges.firstChange) {\n this.columns = this.mergeJsonAndHtmlSchema();\n }\n }\n\n reload() {\n this.requestNode = this.createRequestNode();\n this.load(this.requestNode);\n }\n\n /**\n * Select the first instance of a list if present\n */\n selectFirst() {\n if (this.selectFirstRow) {\n if (!this.isListEmpty()) {\n const dataRow = this.rows[0];\n dataRow.isSelected = true;\n this.currentInstanceId = dataRow['id'];\n } else {\n this.currentInstanceId = null;\n }\n }\n }\n\n /**\n * Get the id of the current instance\n *\n * @returns instance id\n */\n getCurrentId(): string {\n return this.currentInstanceId;\n }\n\n /**\n * Check if the list is empty\n *\n * @returns `true` if list is empty, otherwise `false`\n */\n isListEmpty(): boolean {\n return !this.rows || this.rows.length === 0;\n }\n\n /**\n * Emit the event rowClick passing the current task id when the row is clicked\n *\n * @param event input event\n */\n onRowClick(event: DataRowEvent) {\n const item = event;\n\n this.currentInstanceId = item.value.getValue('id');\n this.rowClick.emit(this.currentInstanceId);\n }\n\n onRowCheckboxToggle(event: CustomEvent) {\n this.rowsSelected.emit([...event.detail.selection]);\n }\n\n /**\n * Emit the event rowClick passing the current task id when pressed the Enter key on the selected row\n *\n * @param event keyboard event\n */\n onRowKeyUp(event: CustomEvent<any>) {\n if (event.detail.keyboardEvent.key === 'Enter') {\n event.preventDefault();\n\n this.currentInstanceId = event.detail.row.getValue('id');\n this.rowClick.emit(this.currentInstanceId);\n }\n }\n\n onShowRowContextMenu(event: DataCellEvent) {\n this.showRowContextMenu.emit(event);\n }\n\n updatePagination(params: PaginationModel) {\n const needsReload = params.maxItems || params.skipCount;\n\n this.size = params.maxItems;\n this.page = this.currentPage(params.skipCount, params.maxItems);\n\n if (needsReload) {\n this.reload();\n }\n }\n\n currentPage(skipCount: number, maxItems: number): number {\n return skipCount && maxItems ? Math.floor(skipCount / maxItems) : 0;\n }\n\n private createRequestNode(): ProcessInstanceQueryRepresentation {\n return {\n appDefinitionId: this.appId,\n processDefinitionId: this.processDefinitionId,\n processInstanceId: this.processInstanceId,\n state: this.state,\n sort: this.sort,\n page: this.page,\n size: this.size,\n start: 0\n };\n }\n\n private isSortChanged(changes: SimpleChanges): boolean {\n const actualSort = changes['sort'];\n return actualSort?.currentValue && actualSort.currentValue !== actualSort.previousValue;\n }\n\n private isPropertyChanged(changes: SimpleChanges): boolean {\n let changed: boolean = false;\n\n const appId = changes['appId'];\n const processDefinitionId = changes['processDefinitionId'];\n const processInstanceId = changes['processInstanceId'];\n const state = changes['state'];\n const sort = changes['sort'];\n const page = changes['page'];\n const size = changes['size'];\n\n if (appId?.currentValue) {\n changed = true;\n } else if (processDefinitionId) {\n changed = true;\n } else if (processInstanceId) {\n changed = true;\n } else if (state?.currentValue) {\n changed = true;\n } else if (sort?.currentValue) {\n changed = true;\n } else if (page && page?.currentValue !== page.previousValue) {\n changed = true;\n } else if (size && size.currentValue !== size.previousValue) {\n changed = true;\n }\n return changed;\n }\n\n private load(requestNode: ProcessInstanceQueryRepresentation) {\n this.isLoading = true;\n this.processService\n .getProcesses(requestNode)\n .pipe(finalize(() => (this.isLoading = false)))\n .subscribe(\n (response) => {\n this.rows = response.data;\n this.selectFirst();\n this.success.emit(response);\n this.pagination.next({\n count: (response.data || []).length,\n maxItems: this.size,\n skipCount: this.page * this.size,\n totalItems: response.total\n });\n },\n (error) => {\n this.error.emit(error);\n }\n );\n }\n}\n","<adf-datatable\n [data]=\"data\"\n [rows]=\"rows\"\n [columns]=\"columns\"\n [sorting]=\"sorting\"\n [loading]=\"isLoading\"\n [isResizingEnabled]=\"isResizingEnabled\"\n [blurOnResize]=\"blurOnResize\"\n [stickyHeader]=\"stickyHeader\"\n [selectionMode]=\"selectionMode\"\n [multiselect]=\"multiselect\"\n [resolverFn]=\"resolverFn\"\n [contextMenu]=\"showContextMenu\"\n (showRowContextMenu)=\"onShowRowContextMenu($event)\"\n (rowClick)=\"onRowClick($event)\"\n (row-keyup)=\"onRowKeyUp($any($event))\"\n (row-select)=\"onRowCheckboxToggle($any($event))\"\n (row-unselect)=\"onRowCheckboxToggle($any($event))\"\n>\n <adf-loading-content-template>\n <ng-template>\n <mat-progress-spinner\n *ngIf=\"!customLoadingContent\"\n class=\"adf-process-list-loading-margin\"\n color=\"primary\"\n mode=\"indeterminate\" />\n <ng-content select=\"adf-custom-loading-content-template\" />\n </ng-template>\n </adf-loading-content-template>\n <adf-no-content-template>\n <ng-template>\n <adf-empty-content *ngIf=\"!customEmptyContent\"\n icon=\"assessment\"\n [title]=\"(requestNode ? 'ADF_PROCESS_LIST.LIST.TITLE' : 'ADF_PROCESS_LIST.FILTERS.MESSAGES.NONE') | translate\"\n [subtitle]=\"'ADF_PROCESS_LIST.LIST.SUBTITLE'| translate\" />\n <ng-content select=\"adf-custom-empty-content-template\" />\n </ng-template>\n </adf-no-content-template>\n</adf-datatable>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AlfrescoApiService } from '@alfresco/adf-content-services';\nimport { Injectable } from '@angular/core';\nimport { Observable, from, forkJoin } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport {\n ResultListDataRepresentationUserProcessInstanceFilterRepresentation,\n UserFiltersApi,\n UserProcessInstanceFilterRepresentation\n} from '@alfresco/js-api';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ProcessFilterService {\n private _userFiltersApi: UserFiltersApi;\n get userFiltersApi(): UserFiltersApi {\n this._userFiltersApi = this._userFiltersApi ?? new UserFiltersApi(this.alfrescoApiService.getInstance());\n return this._userFiltersApi;\n }\n\n constructor(private alfrescoApiService: AlfrescoApiService) {}\n\n /**\n * Gets all filters defined for a Process App.\n *\n * @param appId ID of the target app\n * @returns Array of filter details\n */\n getProcessFilters(appId: number): Observable<UserProcessInstanceFilterRepresentation[]> {\n return from(this.callApiProcessFilters(appId)).pipe(\n map((response) => {\n const filters = [];\n response.data.forEach((filter) => {\n if (!this.isFilterAlreadyExisting(filters, filter.name)) {\n filters.push(filter);\n }\n });\n return filters;\n })\n );\n }\n\n /**\n * Retrieves the process filter by ID.\n *\n * @param filterId ID of the filter\n * @param appId ID of the target app\n * @returns Details of the filter\n */\n getProcessFilterById(filterId: number, appId?: number): Observable<UserProcessInstanceFilterRepresentation> {\n return from(this.callApiProcessFilters(appId)).pipe(map((response) => response.data.find((filter) => filter.id === filterId)));\n }\n\n /**\n * Retrieves the process filter by name.\n *\n * @param filterName Name of the filter\n * @param appId ID of the target app\n * @returns Details of the filter\n */\n getProcessFilterByName(filterName: string, appId?: number): Observable<UserProcessInstanceFilterRepresentation> {\n return from(this.callApiProcessFilters(appId)).pipe(map((response) => response.data.find((filter) => filter.name === filterName)));\n }\n\n /**\n * Creates and returns the default filters for an app.\n *\n * @param appId ID of the target app\n * @returns Default filters just created\n */\n createDefaultFilters(appId: number): Observable<UserProcessInstanceFilterRepresentation[]> {\n const runningFilter = this.getRunningFilterInstance(appId, 0);\n const runningObservable = this.addProcessFilter(runningFilter);\n\n const completedFilter = this.getCompletedFilterInstance(appId, 1);\n const completedObservable = this.addProcessFilter(completedFilter);\n\n const allFilter = this.getAllFilterInstance(appId, 2);\n const allObservable = this.addProcessFilter(allFilter);\n\n return new Observable((observer) => {\n forkJoin([runningObservable, completedObservable, allObservable]).subscribe((res) => {\n const filters: UserProcessInstanceFilterRepresentation[] = [];\n res.forEach((filter) => {\n if (!this.isFilterAlreadyExisting(filters, filter.name)) {\n if (filter.name === runningFilter.name) {\n filters.push({ ...filter, filter: runningFilter.filter, appId });\n } else if (filter.name === completedFilter.name) {\n filters.push({ ...filter, filter: completedFilter.filter, appId });\n } else if (filter.name === allFilter.name) {\n filters.push({ ...filter, filter: allFilter.filter, appId });\n }\n }\n });\n observer.next(filters);\n observer.complete();\n });\n });\n }\n\n /**\n * Checks if a filter with the given name already exists in the list of filters.\n *\n * @param filters - An array of objects representing the existing filters.\n * @param filterName - The name of the filter to check for existence.\n * @returns - True if a filter with the specified name already exists, false otherwise.\n */\n isFilterAlreadyExisting(filters: Partial<{ name: string }>[], filterName: string): boolean {\n return filters.some((existingFilter) => existingFilter.name === filterName);\n }\n\n /**\n * Creates and returns a filter that matches \"running\" process instances.\n *\n * @param appId ID of the target app\n * @param index of the filter (optional)\n * @returns Filter just created\n */\n getRunningFilterInstance(appId: number, index?: number): UserProcessInstanceFilterRepresentation {\n return {\n name: 'Running',\n appId,\n recent: true,\n icon: 'glyphicon-random',\n filter: { sort: 'created-desc', name: '', state: 'running' },\n index\n };\n }\n\n /**\n * Adds a filter.\n *\n * @param filter The filter to add\n * @returns The filter just added\n */\n addProcessFilter(filter: UserProcessInstanceFilterRepresentation): Observable<UserProcessInstanceFilterRepresentation> {\n return from(this.userFiltersApi.createUserProcessInstanceFilter(filter));\n }\n\n /**\n * Calls `getUserProcessInstanceFilters` from the Alfresco JS API.\n *\n * @param appId ID of the target app\n * @returns List of filter details\n */\n callApiProcessFilters(appId?: number): Promise<ResultListDataRepresentationUserProcessInstanceFilterRepresentation> {\n if (appId) {\n return this.userFiltersApi.getUserProcessInstanceFilters({ appId });\n } else {\n return this.userFiltersApi.getUserProcessInstanceFilters();\n }\n }\n\n getCompletedFilterInstance(appId: number, index?: number): UserProcessInstanceFilterRepresentation {\n return {\n name: 'Completed',\n appId,\n recent: false,\n icon: 'glyphicon-ok-sign',\n filter: { sort: 'created-desc', name: '', state: 'completed' },\n index\n };\n }\n\n getAllFilterInstance(appId: number, index?: number): UserProcessInstanceFilterRepresentation {\n return {\n name: 'All',\n appId,\n recent: true,\n icon: 'glyphicon-th',\n filter: { sort: 'created-desc', name: '', state: 'all' },\n index\n };\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Injectable } from '@angular/core';\nimport { RuntimeAppDefinitionsApi, AppDefinitionRepresentation } from '@alfresco/js-api';\nimport { Observable, from } from 'rxjs';\nimport { AlfrescoApiService } from '@alfresco/adf-content-services';\nimport { map } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AppsProcessService {\n private _appsApi: RuntimeAppDefinitionsApi;\n get appsApi(): RuntimeAppDefinitionsApi {\n this._appsApi = this._appsApi ?? new RuntimeAppDefinitionsApi(this.apiService.getInstance());\n return this._appsApi;\n }\n\n constructor(private apiService: AlfrescoApiService) {}\n\n /**\n * Gets a list of deployed apps for this user.\n *\n * @returns The list of deployed apps\n */\n getDeployedApplications(): Observable<AppDefinitionRepresentation[]> {\n return from(this.appsApi.getAppDefinitions()).pipe(map((response) => response.data || []));\n }\n\n /**\n * Gets a list of deployed apps for this user, where the app name is `name`.\n *\n * @param name Name of the app\n * @returns The list of deployed apps\n */\n getDeployedApplicationsByName(name: string): Observable<AppDefinitionRepresentation> {\n return this.getDeployedApplications().pipe(map((response) => response.find((app) => app.name === name)));\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst DEFAULT_TASKS_APP_MATERIAL_ICON: string = 'favorite_border';\n\n/* spellchecker: disable */\nexport class IconModel {\n private iconsMDL: Map<string, string>;\n private supportedIconTypes = ['glyphicon', 'fa' /*Font awesome*/];\n\n private sharedIconsMap = [\n ['asterisk', 'ac_unit'],\n ['plus', 'add'],\n ['euro', 'euro_symbol'],\n ['cloud', 'cloud'],\n ['envelope', 'mail'],\n ['pencil', 'create'],\n ['glass', 'local_bar'],\n ['music', 'music_note'],\n ['search', 'search'],\n ['heart', 'favorite'],\n ['heart-empty', 'favorite_border'],\n ['star', 'star'],\n ['star-empty', 'star_border'],\n ['user', 'person'],\n ['film', 'movie_creation'],\n ['th-large', 'view_comfy'],\n ['th', 'dashboard'],\n ['th-list', 'list'],\n ['ok', 'done'],\n ['remove', 'cancel'],\n ['zoom-in', 'zoom_in'],\n ['zoom-out', 'zoom_out'],\n ['off', 'highlight_off'],\n ['signal', 'signal_cellular_4_bar'],\n ['cog', 'settings'],\n ['trash', 'delete'],\n ['home', 'home'],\n ['file', 'insert_drive_file'],\n ['time', 'access_time'],\n ['road', 'map'],\n ['download-alt', 'file_download'],\n ['download', 'file_download'],\n ['upload', 'file_upload'],\n ['inbox', 'inbox'],\n ['play-circle', 'play_circle_outline'],\n ['repeat', 'refresh'],\n ['refresh', 'sync'],\n ['list-alt', 'event_note'],\n ['lock', 'lock_outline'],\n ['flag', 'assistant_photo'],\n ['headphones', 'headset'],\n ['volume-up', 'volume_up'],\n ['tag', 'local_offer'],\n ['tags', 'local_offer'],\n ['book', 'library_books'],\n ['bookmark', 'collections_bookmark'],\n ['print', 'local_printshop'],\n ['camera', 'local_see'],\n ['list', 'view_list'],\n ['facetime-video', 'video_call'],\n ['picture', 'photo'],\n ['map-marker', 'add_location'],\n ['adjust', 'brightness_4'],\n ['tint', 'invert_colors'],\n ['edit', 'edit'],\n ['share', 'share'],\n ['check', 'assignment_turned_in'],\n ['move', 'open_with'],\n ['play', 'play_arrow'],\n ['eject', 'eject'],\n ['plus-sign', 'add_circle'],\n ['minus-sign', 'remove_circle'],\n ['remove-sign', 'cancel'],\n ['ok-sign', 'check_circle'],\n ['question-sign', 'help'],\n ['info-sign', 'info'],\n ['screenshot', 'flare'],\n ['remove-circle', 'cancel'],\n ['ok-circle', 'add_circle'],\n ['ban-circle', 'block'],\n ['share-alt', 'redo'],\n ['exclamation-sign', 'error'],\n ['gift', 'giftcard'],\n ['leaf', 'spa'],\n ['fire', 'whatshot'],\n ['eye-open', 'remove_red_eye'],\n ['eye-close', 'remove_red_eye'],\n ['warning-sign', 'warning'],\n ['plane', 'airplanemode_active'],\n ['calendar', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['random', 'shuffle'],\n ['comment', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['magnet', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['retweet', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['shopping-cart', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['folder-close', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['folder-open', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['hdd', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['bullhorn', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['bell', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['certificate', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['thumbs-up', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['thumbs-down', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['hand-left', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['globe', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['wrench', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['tasks', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['filter', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['briefcase', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['dashboard', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['paperclip', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['link', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['phone', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['pushpin', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['usd', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['gbp', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['sort', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['flash', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['record', 'radio_button_checked'],\n ['save', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['open', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['saved', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['send', 'send'],\n ['floppy-disk', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['credit-card', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['cutlery', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['earphone', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['phone-alt', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['tower', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['stats', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['cloud-download', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['cloud-upload', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['tree-conifer', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['tree-deciduous', DEFAULT_TASKS_APP_MATERIAL_ICON],\n ['align-left', 'format_align_left']\n ];\n\n constructor() {\n this.initIconsMDL();\n }\n\n mapGlyphiconToMaterialDesignIcons(icon: string) {\n return this.iconsMDL.get(icon) ? this.iconsMDL.get(icon) : DEFAULT_TASKS_APP_MATERIAL_ICON;\n }\n\n /**\n * Map all the bootstrap glyphicon icons with Material design material icon\n */\n initIconsMDL() {\n this.iconsMDL = new Map<string, string>();\n\n this.supportedIconTypes.forEach(iconType => {\n this.sharedIconsMap.forEach(([iconKey, iconValue]) => {\n this.iconsMDL.set(`${iconType}-${iconKey}`, iconValue);\n });\n });\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, DestroyRef, EventEmitter, inject, Input, OnChanges, OnInit, Output, SimpleChanges, ViewEncapsulation } from '@angular/core';\nimport { ProcessInstanceFilterRepresentation, UserProcessInstanceFilterRepresentation } from '@alfresco/js-api';\nimport { ProcessFilterService } from '../../services/process-filter.service';\nimport { AppsProcessService } from '../../../services/apps-process.service';\nimport { IconModel } from '../../../app-list/icon.model';\nimport { NavigationStart, Router } from '@angular/router';\nimport { filter } from 'rxjs/operators';\nimport { CommonModule, Location } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { IconComponent } from '@alfresco/adf-core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'adf-process-instance-filters',\n imports: [CommonModule, TranslatePipe, MatButtonModule, IconComponent],\n templateUrl: './process-filters.component.html',\n styleUrls: ['./process-filters.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class ProcessFiltersComponent implements OnInit, OnChanges {\n /**\n * The parameters to filter the task filter. If there is no match then the default one\n * (ie, the first filter in the list) is selected.\n */\n @Input()\n filterParam: UserProcessInstanceFilterRepresentation;\n\n /** Emitted when a filter is being clicked from the UI. */\n @Output()\n filterClicked = new EventEmitter<UserProcessInstanceFilterRepresentation>();\n\n /** Emitted when the list of filters has been successfully loaded from the server. */\n @Output()\n success = new EventEmitter<ProcessInstanceFilterRepresentation[]>();\n\n /** Emitted when an error occurs. */\n @Output()\n error = new EventEmitter<any>();\n\n /** Display filters available to the current user for the application with the specified ID. */\n @Input()\n appId: number;\n\n /** Display filters available to the current user for the application with the specified name. */\n @Input()\n appName: string;\n\n /** Toggle to show or hide the filter's icon. */\n @Input()\n showIcon = true;\n\n /** Emitted when a filter is being selected based on the filterParam input. */\n @Output()\n filterSelected = new EventEmitter<UserProcessInstanceFilterRepresentation>();\n\n currentFilter: ProcessInstanceFilterRepresentation;\n\n filters: UserProcessInstanceFilterRepresentation[] = [];\n active = false;\n isProcessRoute: boolean;\n isProcessActive: boolean;\n\n private iconsMDL: IconModel;\n\n private readonly destroyRef = inject(DestroyRef);\n\n constructor(\n private processFilterService: ProcessFilterService,\n private appsProcessService: AppsProcessService,\n private router: Router,\n private location: Location\n ) {}\n\n ngOnInit() {\n this.iconsMDL = new IconModel();\n this.router.events\n .pipe(\n filter((event) => event instanceof NavigationStart),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe((navigationStart: NavigationStart) => {\n const activeRoute = navigationStart.url;\n this.isProcessActive = activeRoute.includes('processes');\n });\n const currentRoute = this.location.path();\n this.isProcessRoute = currentRoute.includes('processes');\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const appId = changes['appId'];\n const appName = changes['appName'];\n const filterParam = changes['filterParam'];\n\n if (appId && (appId.currentValue || appId.currentValue === null)) {\n this.getFiltersByAppId(appId.currentValue);\n } else if (appName?.currentValue) {\n this.getFiltersByAppName(appName.currentValue);\n } else if (filterParam && filterParam.currentValue !== filterParam.previousValue) {\n this.selectProcessFilter(filterParam.currentValue);\n }\n }\n\n isActiveRoute(filterActive: ProcessInstanceFilterRepresentation): boolean {\n return (this.isProcessActive || this.isProcessRoute) && this.currentFilter === filterActive;\n }\n\n /**\n * Return the filter list filtered by appId\n *\n * @param appId - optional\n */\n getFiltersByAppId(appId?: number) {\n this.processFilterService.getProcessFilters(appId).subscribe(\n (res) => {\n if (res.length === 0 && this.isFilterListEmpty()) {\n this.processFilterService.createDefaultFilters(appId).subscribe(\n (resDefault) => {\n this.resetFilter();\n this.filters = resDefault;\n this.selectProcessFilter(this.filterParam);\n this.success.emit(resDefault);\n },\n (errDefault) => {\n this.error.emit(errDefault);\n }\n );\n } else {\n this.resetFilter();\n this.filters = res;\n this.selectProcessFilter(this.filterParam);\n this.success.emit(res);\n }\n },\n (err) => {\n this.error.emit(err);\n }\n );\n }\n\n /**\n * Return the filter list filtered by appName\n *\n * @param appName application name\n */\n getFiltersByAppName(appName: string): void {\n this.appsProcessService.getDeployedApplicationsByName(appName).subscribe(\n (application) => {\n this.getFiltersByAppId(application.id);\n this.selectProcessFilter(this.filterParam);\n },\n (err) => {\n this.error.emit(err);\n }\n );\n }\n\n /**\n * Pass the selected filter as next\n *\n * @param filterModel filter model\n */\n selectFilter(filterModel: ProcessInstanceFilterRepresentation) {\n this.currentFilter = filterModel;\n this.active = true;\n this.filterClicked.emit(filterModel);\n }\n\n /**\n * Select the first filter of a list if present\n *\n * @param filterParam filter parameter\n */\n selectProcessFilter(filterParam: UserProcessInstanceFilterRepresentation): void {\n if (filterParam) {\n const newFilter = this.filters.find(\n (processFilter, index) =>\n filterParam.index === index ||\n filterParam.id === processFilter.id ||\n (filterParam.name && filterParam.name.toLocaleLowerCase() === processFilter.name.toLocaleLowerCase())\n );\n this.currentFilter = newFilter;\n\n if (newFilter) {\n this.filterSelected.emit(newFilter);\n }\n }\n }\n\n /**\n * Select the Running filter\n *\n * @deprecated in 3.9.0, Use the filterParam Input() with a running filter instance instead\n */\n selectRunningFilter() {\n this.selectProcessFilter(this.processFilterService.getRunningFilterInstance(null));\n }\n\n /**\n * Get the current task\n *\n * @returns process instance filter\n */\n getCurrentFilter(): ProcessInstanceFilterRepresentation {\n return this.currentFilter;\n }\n\n /**\n * Check if the filter list is empty\n *\n * @returns `true` if filter list is empty, otherwise `false`\n */\n isFilterListEmpty(): boolean {\n return this.filters === undefined || (this.filters && this.filters.length === 0);\n }\n\n /**\n * Get the material icons equivalent of the glyphicon icon\n *\n * @param icon glyphicon name\n * @returns material icons equivalent of the icon\n */\n getFilterIcon(icon: string): string {\n return this.iconsMDL.mapGlyphiconToMaterialDesignIcons(icon);\n }\n\n /**\n * Reset the filters properties\n */\n private resetFilter() {\n this.filters = [];\n this.currentFilter = undefined;\n }\n}\n","<div *ngFor=\"let filter of filters\" class=\"adf-filters__entry\" [class.adf-active]=\"isActiveRoute(filter)\">\n <button\n (click)=\"selectFilter(filter)\"\n [attr.aria-label]=\"filter.name | translate\"\n [id]=\"filter.id\"\n [attr.data-automation-id]=\"filter.name + '_filter'\"\n mat-button\n class=\"adf-filter-action-button adf-full-width\">\n <adf-icon data-automation-id=\"adf-filter-icon\" *ngIf=\"showIcon\" [value]=\"getFilterIcon(filter.icon)\" />\n <span data-automation-id=\"adf-filter-label\" class=\"adf-filter-action-button__label\">{{ filter.name | translate }}</span>\n </button>\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AppConfigService,\n CardViewBaseItemModel,\n CardViewComponent,\n CardViewDateItemModel,\n CardViewItem,\n CardViewTextItemModel,\n TranslationService\n} from '@alfresco/adf-core';\nimport { Component, Input, OnChanges } from '@angular/core';\nimport { ProcessInstanceRepresentation } from '@alfresco/js-api';\nimport { CommonModule } from '@angular/common';\nimport { MatCardModule } from '@angular/material/card';\n\n@Component({\n selector: 'adf-process-instance-header',\n imports: [CommonModule, MatCardModule, CardViewComponent],\n templateUrl: './process-instance-header.component.html',\n styleUrls: ['./process-instance-header.component.css']\n})\nexport class ProcessInstanceHeaderComponent implements OnChanges {\n /** (**required**) Full details of the process instance to display information about. */\n @Input({ required: true })\n processInstance: ProcessInstanceRepresentation;\n\n properties: CardViewItem[];\n dateFormat: string;\n dateLocale: string;\n\n constructor(private translationService: TranslationService, private appConfig: AppConfigService) {\n this.dateFormat = this.appConfig.get('dateValues.defaultDateFormat');\n this.dateLocale = this.appConfig.get('dateValues.defaultDateLocale');\n }\n\n ngOnChanges() {\n this.refreshData();\n }\n\n refreshData(): void {\n if (this.processInstance) {\n const defaultProperties = this.initDefaultProperties();\n const filteredProperties: string[] = this.appConfig.get('adf-process-instance-header.presets.properties');\n this.properties = defaultProperties.filter((cardItem) => this.isValidSelection(filteredProperties, cardItem));\n }\n }\n\n getProcessStatus(): string {\n if (this.processInstance) {\n return this.isRunning() ? 'Running' : 'Completed';\n }\n return 'Unknown';\n }\n\n getStartedByFullName(): string {\n let fullName = '';\n if (this.processInstance?.startedBy) {\n fullName += this.processInstance.startedBy.firstName || '';\n fullName += fullName ? ' ' : '';\n fullName += this.processInstance.startedBy.lastName || '';\n }\n return fullName;\n }\n\n isRunning(): boolean {\n return this.processInstance && !this.processInstance.ended;\n }\n\n private initDefaultProperties(): any[] {\n return [\n new CardViewTextItemModel({\n label: 'ADF_PROCESS_LIST.PROPERTIES.STATUS',\n value: this.getProcessStatus(),\n key: 'status'\n }),\n new CardViewDateItemModel({\n label: 'ADF_PROCESS_LIST.PROPERTIES.END_DATE',\n value: this.processInstance.ended,\n format: this.dateFormat,\n locale: this.dateLocale,\n key: 'ended',\n default: this.translationService.instant('ADF_PROCESS_LIST.PROPERTIES.END_DATE_DEFAULT')\n }),\n new CardViewTextItemModel({\n label: 'ADF_PROCESS_LIST.PROPERTIES.CATEGORY',\n value: this.processInstance.processDefinitionCategory,\n key: 'category',\n default: this.translationService.instant('ADF_PROCESS_LIST.PROPERTIES.CATEGORY_DEFAULT')\n }),\n new CardViewTextItemModel({\n label: 'ADF_PROCESS_LIST.PROPERTIES.BUSINESS_KEY',\n value: this.processInstance.businessKey,\n key: 'businessKey',\n default: this.translationService.instant('ADF_PROCESS_LIST.PROPERTIES.BUSINESS_KEY_DEFAULT')\n }),\n new CardViewTextItemModel({\n label: 'ADF_PROCESS_LIST.PROPERTIES.CREATED_BY',\n value: this.getStartedByFullName(),\n key: 'createdBy',\n default: this.translationService.instant('ADF_PROCESS_LIST.PROPERTIES.CREATED_BY_DEFAULT')\n }),\n new CardViewDateItemModel({\n label: 'ADF_PROCESS_LIST.PROPERTIES.CREATED',\n value: this.processInstance.started,\n format: this.dateFormat,\n locale: this.dateLocale,\n key: 'created'\n }),\n new CardViewTextItemModel({ label: 'ADF_PROCESS_LIST.PROPERTIES.ID', value: this.processInstance.id, key: 'id' }),\n new CardViewTextItemModel({\n label: 'ADF_PROCESS_LIST.PROPERTIES.DESCRIPTION',\n value: this.processInstance.processDefinitionDescription,\n key: 'description',\n default: this.translationService.instant('ADF_PROCESS_LIST.PROPERTIES.DESCRIPTION_DEFAULT')\n })\n ];\n }\n\n private isValidSelection(filteredProperties: string[], cardItem: CardViewBaseItemModel): boolean {\n return filteredProperties ? filteredProperties.indexOf(cardItem.key) >= 0 : true;\n }\n}\n","<mat-card appearance=\"outlined\" *ngIf=\"processInstance\" class=\"adf-card-container\">\n <mat-card-content>\n <adf-card-view [properties]=\"properties\" />\n </mat-card-content>\n</mat-card>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * This object represent of the Form.\n */\nexport class Form {\n\n id: number;\n name: string;\n\n constructor(id: number, name: string) {\n this.name = name;\n this.id = id;\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { inject, Injectable } from '@angular/core';\nimport { Observable, from, of } from 'rxjs';\nimport { map, catchError, flatMap, filter } from 'rxjs/operators';\nimport { Form } from '../models/form.model';\nimport {\n TaskUpdateRepresentation,\n ModelsApi,\n TaskActionsApi,\n TasksApi,\n ChecklistsApi,\n ResultListDataRepresentationTaskRepresentation,\n TaskQueryRepresentation,\n UserTaskFilterRepresentation,\n TaskRepresentation\n} from '@alfresco/js-api';\nimport { AlfrescoApiService } from '@alfresco/adf-content-services';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TaskListService {\n protected apiService = inject(AlfrescoApiService);\n\n private _modelsApi: ModelsApi;\n get modelsApi(): ModelsApi {\n this._modelsApi = this._modelsApi ?? new ModelsApi(this.apiService.getInstance());\n return this._modelsApi;\n }\n\n private _tasksApi: TasksApi;\n get tasksApi(): TasksApi {\n this._tasksApi = this._tasksApi ?? new TasksApi(this.apiService.getInstance());\n return this._tasksApi;\n }\n\n private _taskActionsApi: TaskActionsApi;\n get taskActionsApi(): TaskActionsApi {\n this._taskActionsApi = this._taskActionsApi ?? new TaskActionsApi(this.apiService.getInstance());\n return this._taskActionsApi;\n }\n\n private _checklistsApi: ChecklistsApi;\n get checklistsApi(): ChecklistsApi {\n this._checklistsApi = this._checklistsApi ?? new ChecklistsApi(this.apiService.getInstance());\n return this._checklistsApi;\n }\n\n /**\n * Gets all the filters in the list that belong to a task.\n *\n * @param taskId ID of the target task\n * @param filterList List of filters to search through\n * @returns Filters belonging to the task\n */\n getFilterForTaskById(taskId: string, filterList: UserTaskFilterRepresentation[]): Observable<UserTaskFilterRepresentation> {\n return from(filterList).pipe(\n flatMap((data) => this.isTaskRelatedToFilter(taskId, data)),\n filter((data) => data != null)\n );\n }\n\n /**\n * Checks if a taskId is filtered with the given filter.\n *\n * @param taskId ID of the target task\n * @param filterModel The filter you want to check\n * @returns The filter if it is related or null otherwise\n */\n isTaskRelatedToFilter(taskId: string, filterModel: UserTaskFilterRepresentation): Observable<UserTaskFilterRepresentation> {\n const requestNodeForFilter = new TaskQueryRepresentation({\n appDefinitionId: filterModel.appId,\n assignment: filterModel.filter.assignment,\n state: filterModel.filter.state,\n sort: filterModel.filter.sort\n });\n return from(this.tasksApi.listTasks(requestNodeForFilter)).pipe(\n map((res) => (res.data.find((element) => element.id === taskId) ? filterModel : null))\n );\n }\n\n /**\n * Gets all the tasks matching the supplied query.\n *\n * @param requestNode Query to search for tasks\n * @returns List of tasks\n */\n getTasks(requestNode: TaskQueryRepresentation): Observable<ResultListDataRepresentationTaskRepresentation> {\n return from(this.tasksApi.listTasks(requestNode));\n }\n\n /**\n * Gets tasks matching a query and state value.\n *\n * @param requestNode Query to search for tasks\n * @returns List of tasks\n */\n findTasksByState(requestNode: TaskQueryRepresentation): Observable<ResultListDataRepresentationTaskRepresentation> {\n return this.getTasks(requestNode).pipe(catchError(() => of(new ResultListDataRepresentationTaskRepresentation({ data: [] }))));\n }\n\n /**\n * Gets details for a task.\n *\n * @param taskId ID of the target task.\n * @returns Task details\n */\n getTaskDetails(taskId: string): Observable<TaskRepresentation> {\n return from(this.tasksApi.getTask(taskId));\n }\n\n /**\n * Gets the checklist for a task.\n *\n * @param id ID of the target task\n * @returns Array of checklist task details\n */\n getTaskChecklist(id: string): Observable<TaskRepresentation[]> {\n return from(this.checklistsApi.getChecklist(id)).pipe(map((response) => response.data));\n }\n\n /**\n * Gets all available reusable forms.\n *\n * @returns Array of form details\n */\n getFormList(): Observable<Form[]> {\n const opts = {\n filter: 'myReusableForms', // String | filter\n sort: 'modifiedDesc', // String | sort\n modelType: 2 // Integer | modelType\n };\n\n return from(this.modelsApi.getModels(opts)).pipe(map((response) => response.data.map((form) => new Form(form.id, form.name))));\n }\n\n /**\n * Attaches a form to a task.\n *\n * @param taskId ID of the target task\n * @param formId ID of the form to add\n * @returns Null response notifying when the operation is complete\n */\n attachFormToATask(taskId: string, formId: number): Observable<any> {\n return from(this.taskActionsApi.attachForm(taskId, { formId }));\n }\n\n /**\n * Adds a subtask (ie, a checklist task) to a parent task.\n *\n * @param task The task to add\n * @returns The subtask that was added\n */\n addTask(task: TaskRepresentation): Observable<TaskRepresentation> {\n return from(this.checklistsApi.addSubtask(task.parentTaskId, task));\n }\n\n /**\n * Deletes a subtask (ie, a checklist task) from a parent task.\n *\n * @param taskId The task to delete\n * @returns Null response notifying when the operation is complete\n */\n deleteTask(taskId: string): Observable<any> {\n return from(this.tasksApi.deleteTask(taskId));\n }\n\n /**\n * Deletes a form from a task.\n *\n * @param taskId Task id related to form\n * @returns Null response notifying when the operation is complete\n */\n deleteForm(taskId: string): Observable<any> {\n return from(this.taskActionsApi.removeForm(taskId));\n }\n\n /**\n * Gives completed status to a task.\n *\n * @param taskId ID of the target task\n * @returns Null response notifying when the operation is complete\n */\n completeTask(taskId: string) {\n return from(this.taskActionsApi.completeTask(taskId));\n }\n\n /**\n * Creates a new standalone task.\n *\n * @param task Details of the new task\n * @returns Details of the newly created task\n */\n createNewTask(task: TaskRepresentation): Observable<TaskRepresentation> {\n return from(this.tasksApi.createNewTask(task));\n }\n\n /**\n * Assigns a task to a user or group.\n *\n * @param taskId The task to assign\n * @param requestNode User or group to assign the task to\n * @returns Details of the assigned task\n */\n assignTask(taskId: string, requestNode: any): Observable<TaskRepresentation> {\n const assignee = { assignee: requestNode.id };\n return from(this.taskActionsApi.assignTask(taskId, assignee));\n }\n\n /**\n * Assigns a task to a user.\n *\n * @param taskId ID of the task to assign\n * @param userId ID of the user to assign the task to\n * @returns Details of the assigned task\n */\n assignTaskByUserId(taskId: string, userId: string): Observable<TaskRepresentation> {\n const assignee = { assignee: userId };\n\n return from(this.taskActionsApi.assignTask(taskId, assignee));\n }\n\n /**\n * Claims a task for the current user.\n *\n * @param taskId ID of the task to claim\n * @returns Details of the claimed task\n */\n claimTask(taskId: string): Observable<TaskRepresentation> {\n return from(this.taskActionsApi.claimTask(taskId));\n }\n\n /**\n * Un-claims a task for the current user.\n *\n * @param taskId ID of the task to unclaim\n * @returns Null response notifying when the operation is complete\n */\n unclaimTask(taskId: string): Observable<TaskRepresentation> {\n return from(this.taskActionsApi.unclaimTask(taskId));\n }\n\n /**\n * Updates the details (name, description, due date) for a task.\n *\n * @param taskId ID of the task to update\n * @param updated Data to update the task (as a `TaskUpdateRepresentation` instance).\n * @returns Updated task details\n */\n updateTask(taskId: string, updated: TaskUpdateRepresentation): Observable<TaskRepresentation> {\n return from(this.tasksApi.updateTask(taskId, updated));\n }\n\n /**\n * Fetches the Task Audit information in PDF format.\n *\n * @param taskId ID of the target task\n * @returns Binary PDF data\n */\n fetchTaskAuditPdfById(taskId: string): Observable<Blob> {\n return from(this.tasksApi.getTaskAuditPdf(taskId));\n }\n\n /**\n * Fetch the Task Audit information in JSON format\n *\n * @param taskId ID of the target task\n * @returns JSON data\n */\n fetchTaskAuditJsonById(taskId: string): Observable<any> {\n return from(this.tasksApi.getTaskAuditLog(taskId));\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Directive, Input, Output, EventEmitter, HostListener, OnInit } from '@angular/core';\nimport { TaskListService } from '../../services/tasklist.service';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[adf-claim-task]'\n})\nexport class ClaimTaskDirective implements OnInit {\n /** (Required) The id of the task. */\n @Input()\n taskId: string;\n\n /** Emitted when the task is claimed. */\n @Output()\n success = new EventEmitter<any>();\n\n /** Emitted when the task cannot be claimed. */\n @Output()\n error = new EventEmitter<any>();\n\n invalidParams: string[] = [];\n\n constructor(private taskListService: TaskListService) {}\n\n @HostListener('click')\n onClick() {\n try {\n this.claimTask();\n } catch (error) {\n this.error.emit(error);\n }\n }\n\n ngOnInit() {\n this.validateInputs();\n }\n\n validateInputs() {\n if (!this.isTaskValid()) {\n this.invalidParams.push('taskId');\n }\n\n if (this.invalidParams.length) {\n throw new Error(`Attribute ${this.invalidParams.join(', ')} is required`);\n }\n }\n\n isTaskValid(): boolean {\n return this.taskId && this.taskId.length > 0;\n }\n\n private claimTask() {\n this.taskListService.claimTask(this.taskId).subscribe(\n () => {\n this.success.emit(this.taskId);\n },\n (error) => this.error.emit(error)\n );\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Directive, HostListener, Input, Output, EventEmitter, OnInit } from '@angular/core';\nimport { TaskListService } from '../../services/tasklist.service';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[adf-unclaim-task]'\n})\nexport class UnclaimTaskDirective implements OnInit {\n /** (Required) The id of the task. */\n @Input()\n taskId: string;\n\n /** Emitted when the task is released. */\n @Output()\n success = new EventEmitter<any>();\n\n /** Emitted when the task cannot be released. */\n @Output()\n error = new EventEmitter<any>();\n\n invalidParams: string[] = [];\n\n constructor(private taskListService: TaskListService) {}\n\n @HostListener('click')\n onClick() {\n try {\n this.unclaimTask();\n } catch (error) {\n this.error.emit(error);\n }\n }\n\n ngOnInit() {\n this.validateInputs();\n }\n\n validateInputs() {\n if (!this.isTaskValid()) {\n this.invalidParams.push('taskId');\n }\n if (this.invalidParams.length) {\n throw new Error(`Attribute ${this.invalidParams.join(', ')} is required`);\n }\n }\n\n isTaskValid(): boolean {\n return this.taskId && this.taskId.length > 0;\n }\n\n private unclaimTask() {\n this.taskListService.unclaimTask(this.taskId).subscribe(\n () => {\n this.success.emit(this.taskId);\n },\n (error) => this.error.emit(error)\n );\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Observable, from } from 'rxjs';\nimport { GroupModel } from '@alfresco/adf-core';\nimport { map } from 'rxjs/operators';\nimport { AlfrescoApiService } from '@alfresco/adf-content-services';\nimport { TaskActionsApi, UsersApi, ActivitiGroupsApi, UserProfileApi, UserRepresentation, LightUserRepresentation } from '@alfresco/js-api';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PeopleProcessService {\n private _taskActionsApi: TaskActionsApi;\n get taskActionsApi(): TaskActionsApi {\n this._taskActionsApi = this._taskActionsApi ?? new TaskActionsApi(this.apiService.getInstance());\n return this._taskActionsApi;\n }\n\n private _userApi: UsersApi;\n get userApi(): UsersApi {\n this._userApi = this._userApi ?? new UsersApi(this.apiService.getInstance());\n return this._userApi;\n }\n\n private _groupsApi: ActivitiGroupsApi;\n get groupsApi(): ActivitiGroupsApi {\n this._groupsApi = this._groupsApi ?? new ActivitiGroupsApi(this.apiService.getInstance());\n return this._groupsApi;\n }\n\n private _profileApi: UserProfileApi;\n get profileApi(): UserProfileApi {\n this._profileApi = this._profileApi ?? new UserProfileApi(this.apiService.getInstance());\n return this._profileApi;\n }\n\n constructor(private apiService: AlfrescoApiService) {}\n\n /**\n * Gets information about the current user.\n *\n * @returns User information object\n */\n getCurrentUserInfo(): Observable<UserRepresentation> {\n return from(this.profileApi.getProfile());\n }\n\n /**\n * Gets the current user's profile image as a URL.\n *\n * @returns URL string\n */\n getCurrentUserProfileImage(): string {\n return this.profileApi.getProfilePictureUrl();\n }\n\n /**\n * Gets a list of groups in a workflow.\n *\n * @param filter Filter to select specific groups\n * @param groupId Group ID for the search\n * @returns Array of groups\n */\n getWorkflowGroups(filter: string, groupId?: string): Observable<GroupModel[]> {\n const option: any = { filter };\n if (groupId) {\n option.groupId = groupId;\n }\n return from(this.groupsApi.getGroups(option)).pipe(map((response: any) => response.data || []));\n }\n\n /**\n * Gets information about users across all tasks.\n *\n * @param taskId ID of the task\n * @param searchWord Filter text to search for\n * @param groupId group id\n * @returns Array of user information objects\n */\n getWorkflowUsers(taskId?: string, searchWord?: string, groupId?: number): Observable<LightUserRepresentation[]> {\n const option = { excludeTaskId: taskId, filter: searchWord, groupId };\n\n return from(this.userApi.getUsers(option)).pipe(map((response) => response.data || []));\n }\n /**\n * Gets the profile picture URL for the specified user.\n *\n * @param userId The target user\n * @returns Profile picture URL\n */\n getUserImage(userId: string): string {\n return this.userApi.getUserProfilePictureUrl(userId);\n }\n\n /**\n * Sets a user to be involved with a task.\n *\n * @param taskId ID of the target task\n * @param idToInvolve ID of the user to involve\n * @returns Empty response when the update completes\n */\n involveUserWithTask(taskId: string, idToInvolve: string): Observable<LightUserRepresentation[]> {\n return from(this.taskActionsApi.involveUser(taskId, { userId: idToInvolve }));\n }\n\n /**\n * Removes a user who is currently involved with a task.\n *\n * @param taskId ID of the target task\n * @param idToRemove ID of the user to remove\n * @returns Empty response when the update completes\n */\n removeInvolvedUser(taskId: string, idToRemove: string): Observable<LightUserRepresentation[]> {\n return from(this.taskActionsApi.removeInvolvedUser(taskId, { userId: idToRemove }));\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'adf-task-standalone',\n imports: [CommonModule, TranslatePipe, MatCardModule, MatButtonModule],\n templateUrl: './task-standalone.component.html',\n styleUrls: ['./task-standalone.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class TaskStandaloneComponent {\n /** Name of the task. */\n @Input()\n taskName: string;\n\n /** Id of the task. */\n @Input()\n taskId: string;\n\n /** If true then Task completed message is shown and `Complete` and `Cancel` buttons are hidden. */\n @Input()\n isCompleted = false;\n\n /** Toggles rendering of the `Complete` button. */\n @Input()\n hasCompletePermission = true;\n\n /** Toggles rendering of the `Cancel` button. */\n @Input()\n hideCancelButton = true;\n\n /** Emitted when the \"Cancel\" button is clicked. */\n @Output()\n cancel = new EventEmitter<void>();\n\n /** Emitted when the form associated with the task is completed. */\n @Output()\n complete = new EventEmitter<void>();\n\n /** Emitted when the form associated with the form task is attached. */\n @Output()\n showAttachForm = new EventEmitter<void>();\n\n onCancelButtonClick(): void {\n this.cancel.emit();\n }\n\n onCompleteButtonClick(): void {\n this.complete.emit();\n }\n\n hasCompleteButton(): boolean {\n return this.hasCompletePermission && !this.isCompleted;\n }\n\n hasCancelButton(): boolean {\n return !this.hideCancelButton && !this.isCompleted;\n }\n\n hasAttachFormButton(): boolean {\n return !this.isCompleted;\n }\n\n onShowAttachForm() {\n this.showAttachForm.emit();\n }\n}\n","<mat-card appearance=\"raised\" class=\"adf-message-card\">\n <mat-card-content>\n <div class=\"adf-no-form-message-container\">\n <div class=\"adf-no-form-message-list\">\n <div *ngIf=\"!isCompleted; else completedMessage\" class=\"adf-no-form-message\">\n <span id=\"adf-no-form-message\">{{'ADF_TASK_LIST.STANDALONE_TASK.NO_FORM_MESSAGE' | translate}}</span>\n </div>\n <ng-template #completedMessage>\n <div id=\"adf-completed-form-message\" class=\"adf-no-form-message\">\n <p>{{'ADF_TASK_LIST.STANDALONE_TASK.COMPLETE_TASK_MESSAGE' | translate : {taskName : taskName} }}</p>\n </div>\n <div class=\"adf-no-form-submessage\">\n {{'ADF_TASK_LIST.STANDALONE_TASK.COMPLETE_TASK_SUB_MESSAGE' | translate}}\n </div>\n </ng-template>\n </div>\n </div>\n </mat-card-content>\n\n <mat-card-actions class=\"adf-no-form-mat-card-actions\">\n <button mat-button *ngIf=\"hasAttachFormButton()\" id=\"adf-no-form-attach-form-button\" (click)=\"onShowAttachForm()\">{{ 'ADF_TASK_LIST.START_TASK.FORM.LABEL.ATTACHFORM' | translate }}</button>\n <div class=\"adf-no-form-mat-card-actions-container\">\n <button mat-button *ngIf=\"hasCancelButton()\" id=\"adf-no-form-cancel-button\" (click)=\"onCancelButtonClick()\">{{ 'ADF_TASK_LIST.START_TASK.FORM.ACTION.CANCEL' | translate }}</button>\n <button mat-button *ngIf=\"hasCompleteButton()\" id=\"adf-no-form-complete-button\" color=\"primary\" (click)=\"onCompleteButtonClick()\">{{ 'ADF_TASK_LIST.DETAILS.BUTTON.COMPLETE' | translate }}</button>\n </div>\n </mat-card-actions>\n</mat-card>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AlfrescoApiService } from '@alfresco/adf-content-services';\nimport { Injectable } from '@angular/core';\nimport { Observable, from, throwError } from 'rxjs';\nimport { ModelsApi } from '@alfresco/js-api';\nimport { catchError, map } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ModelService {\n static UNKNOWN_ERROR_MESSAGE: string = 'Unknown error';\n static GENERIC_ERROR_MESSAGE: string = 'Server error';\n\n private _modelsApi: ModelsApi;\n get modelsApi(): ModelsApi {\n this._modelsApi = this._modelsApi ?? new ModelsApi(this.apiService.getInstance());\n return this._modelsApi;\n }\n\n constructor(private apiService: AlfrescoApiService) {}\n\n /**\n * Create a Form.\n *\n * @param formName Name of the new form\n * @returns The new form\n */\n createForm(formName: string): Observable<any> {\n const dataModel = {\n name: formName,\n description: '',\n modelType: 2,\n stencilSet: 0\n };\n\n return from(this.modelsApi.createModel(dataModel));\n }\n\n /**\n * Gets all the forms.\n *\n * @returns List of form models\n */\n getForms(): Observable<any> {\n const opts = {\n modelType: 2\n };\n\n return from(this.modelsApi.getModels(opts)).pipe(\n map(this.toJsonArray),\n catchError((err) => this.handleError(err))\n );\n }\n\n /**\n * Creates a JSON array representation of form data.\n *\n * @param res Object representing form data\n * @returns JSON data\n */\n toJsonArray(res: any) {\n return res?.data || [];\n }\n\n /**\n * Searches for a form by name.\n *\n * @param name The form name to search for\n * @returns Form model(s) matching the search name\n */\n searchFrom(name: string): Observable<any> {\n const opts = {\n modelType: 2\n };\n\n return from(this.modelsApi.getModels(opts)).pipe(\n map((forms) => forms.data.find((formData) => formData.name === name)),\n catchError((err) => this.handleError(err))\n );\n }\n\n /**\n * Gets the form definition with a given name.\n *\n * @param name The form name\n * @returns Form definition\n */\n getFormDefinitionByName(name: string): Observable<any> {\n const opts = {\n filter: 'myReusableForms',\n filterText: name,\n modelType: 2\n };\n\n return from(this.modelsApi.getModels(opts)).pipe(\n map(this.getFormId),\n catchError((err) => this.handleError(err))\n );\n }\n\n /**\n * Gets the ID of a form.\n *\n * @param form Object representing a form\n * @returns ID string\n */\n getFormId(form: any): string {\n let result = null;\n\n if (form?.data?.length > 0) {\n result = form.data[0].id;\n }\n\n return result;\n }\n /**\n * Reports an error message.\n *\n * @param error Data object with optional `message` and `status` fields for the error\n * @returns Error message\n */\n private handleError(error: any): Observable<any> {\n let errMsg = ModelService.UNKNOWN_ERROR_MESSAGE;\n if (error) {\n errMsg = error.message ? error.message : error.status ? `${error.status} - ${error.statusText}` : ModelService.GENERIC_ERROR_MESSAGE;\n }\n return throwError(errMsg);\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, Input, OnChanges, ViewEncapsulation } from '@angular/core';\nimport { ModelService } from '../services/model.service';\nimport { CommonModule } from '@angular/common';\nimport { DataColumnComponent, DataColumnListComponent, DataTableComponent } from '@alfresco/adf-core';\n\n@Component({\n selector: 'adf-form-list',\n imports: [CommonModule, DataTableComponent, DataColumnListComponent, DataColumnComponent],\n templateUrl: './form-list.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class FormListComponent implements OnChanges {\n /** The array that contains the information to show inside the list. */\n @Input()\n forms: any[] = [];\n\n constructor(protected modelService: ModelService) {}\n\n ngOnChanges() {\n this.getForms();\n }\n\n isEmpty(): boolean {\n return this.forms && this.forms.length === 0;\n }\n\n getForms() {\n this.modelService.getForms().subscribe((forms) => {\n this.forms.push(...forms);\n });\n }\n}\n","<adf-datatable *ngIf=\"!isEmpty()\"\n [rows]=\"forms\">\n <data-columns>\n <data-column key=\"name\" type=\"text\" title=\"Name\" class=\"adf-ellipsis-cell\" [sortable]=\"true\" />\n <data-column key=\"lastUpdatedByFullName\" type=\"text\" title=\"User\" class=\"adf-ellipsis-cell\" [sortable]=\"true\" />\n <data-column key=\"lastUpdated\" type=\"date\" format=\"shortDate\" title=\"Date\" />\n </data-columns>\n</adf-datatable>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'adf-form-custom-outcomes',\n template: '<ng-content />'\n})\nexport class FormCustomOutcomesComponent {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AlfrescoApiService } from '@alfresco/adf-content-services';\nimport { FormModel } from '@alfresco/adf-core';\nimport { EventEmitter, Injectable } from '@angular/core';\nimport { Observable, from } from 'rxjs';\nimport { map, catchError } from 'rxjs/operators';\nimport { CustomModelApi } from '@alfresco/js-api';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class EcmModelService {\n public static MODEL_NAMESPACE: string = 'activitiForms';\n public static MODEL_NAME: string = 'activitiFormsModel';\n public static TYPE_MODEL: string = 'cm:folder';\n\n error = new EventEmitter<any>();\n\n private _customModelApi: CustomModelApi;\n get customModelApi(): CustomModelApi {\n this._customModelApi = this._customModelApi ?? new CustomModelApi(this.apiService.getInstance());\n return this._customModelApi;\n }\n\n constructor(private apiService: AlfrescoApiService) {}\n\n public createEcmTypeForActivitiForm(formName: string, form: FormModel): Observable<any> {\n return new Observable((observer) => {\n this.searchActivitiEcmModel().subscribe(\n (model) => {\n if (!model) {\n this.createActivitiEcmModel(formName, form).subscribe((typeForm) => {\n observer.next(typeForm);\n observer.complete();\n });\n } else {\n this.saveFomType(formName, form).subscribe((typeForm) => {\n observer.next(typeForm);\n observer.complete();\n });\n }\n },\n (err) => this.handleError(err)\n );\n });\n }\n\n searchActivitiEcmModel() {\n return this.getEcmModels().pipe(\n map((ecmModels: any) => ecmModels.list.entries.find((model) => model.entry.name === EcmModelService.MODEL_NAME))\n );\n }\n\n createActivitiEcmModel(formName: string, form: FormModel): Observable<any> {\n return new Observable((observer) => {\n this.createEcmModel(EcmModelService.MODEL_NAME, EcmModelService.MODEL_NAMESPACE).subscribe(\n () => {\n this.activeEcmModel(EcmModelService.MODEL_NAME).subscribe(\n () => {\n this.createEcmTypeWithProperties(formName, form).subscribe((typeCreated) => {\n observer.next(typeCreated);\n observer.complete();\n });\n },\n (err) => this.handleError(err)\n );\n },\n (err) => this.handleError(err)\n );\n });\n }\n\n saveFomType(formName: string, form: FormModel): Observable<any> {\n return new Observable((observer) => {\n this.searchEcmType(formName, EcmModelService.MODEL_NAME).subscribe(\n (ecmType) => {\n if (!ecmType) {\n this.createEcmTypeWithProperties(formName, form).subscribe((typeCreated) => {\n observer.next(typeCreated);\n observer.complete();\n });\n } else {\n observer.next(ecmType);\n observer.complete();\n }\n },\n (err) => this.handleError(err)\n );\n });\n }\n\n public createEcmTypeWithProperties(formName: string, form: FormModel): Observable<any> {\n return new Observable((observer) => {\n this.createEcmType(formName, EcmModelService.MODEL_NAME, EcmModelService.TYPE_MODEL).subscribe(\n (typeCreated) => {\n this.addPropertyToAType(EcmModelService.MODEL_NAME, formName, form).subscribe(\n () => {\n observer.next(typeCreated);\n observer.complete();\n },\n (err) => this.handleError(err)\n );\n },\n (err) => this.handleError(err)\n );\n });\n }\n\n public searchEcmType(typeName: string, modelName: string): Observable<any> {\n return this.getEcmType(modelName).pipe(\n map((customTypes: any) => customTypes.list.entries.find((type) => type.entry.prefixedName === typeName || type.entry.title === typeName))\n );\n }\n\n public activeEcmModel(modelName: string): Observable<any> {\n return from(this.customModelApi.activateCustomModel(modelName)).pipe(\n map(this.toJson),\n catchError((err) => this.handleError(err))\n );\n }\n\n public createEcmModel(modelName: string, nameSpace: string): Observable<any> {\n return from(this.customModelApi.createCustomModel('DRAFT', '', modelName, modelName, nameSpace)).pipe(\n map(this.toJson),\n catchError((err) => this.handleError(err))\n );\n }\n\n public getEcmModels(): Observable<any> {\n return from(this.customModelApi.getAllCustomModel()).pipe(\n map(this.toJson),\n catchError((err) => this.handleError(err))\n );\n }\n\n public getEcmType(modelName: string): Observable<any> {\n return from(this.customModelApi.getAllCustomType(modelName)).pipe(\n map(this.toJson),\n catchError((err) => this.handleError(err))\n );\n }\n\n public createEcmType(typeName: string, modelName: string, parentType: string): Observable<any> {\n const name = this.cleanNameType(typeName);\n\n return from(this.customModelApi.createCustomType(modelName, name, parentType, typeName, '')).pipe(\n map(this.toJson),\n catchError((err) => this.handleError(err))\n );\n }\n\n public addPropertyToAType(modelName: string, typeName: string, formFields: any) {\n const name = this.cleanNameType(typeName);\n\n const properties = [];\n if (formFields?.values) {\n for (const key in formFields.values) {\n if (key) {\n properties.push({\n name: key,\n title: key,\n description: key,\n dataType: 'd:text',\n multiValued: false,\n mandatory: false,\n mandatoryEnforced: false\n });\n }\n }\n }\n\n return from(this.customModelApi.addPropertyToType(modelName, name, properties)).pipe(\n map(this.toJson),\n catchError((err) => this.handleError(err))\n );\n }\n\n cleanNameType(name: string): string {\n let cleanName = name;\n if (name.indexOf(':') !== -1) {\n cleanName = name.split(':')[1];\n }\n return cleanName.replace(/[^a-zA-Z ]/g, '');\n }\n\n toJson(res: any) {\n return res || {};\n }\n\n private handleError(err: any): any {\n this.error.next(err);\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AlfrescoApiService } from '@alfresco/adf-content-services';\nimport { Injectable } from '@angular/core';\nimport { Observable, from, throwError } from 'rxjs';\nimport { FormModelsApi, FormRepresentation } from '@alfresco/js-api';\nimport { catchError, map } from 'rxjs/operators';\nimport { FormDefinitionModel } from '../model/form-definition.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class EditorService {\n static UNKNOWN_ERROR_MESSAGE: string = 'Unknown error';\n static GENERIC_ERROR_MESSAGE: string = 'Server error';\n\n private _editorApi: FormModelsApi;\n get editorApi(): FormModelsApi {\n this._editorApi = this._editorApi ?? new FormModelsApi(this.apiService.getInstance());\n return this._editorApi;\n }\n\n constructor(private apiService: AlfrescoApiService) {}\n\n /**\n * Saves a form.\n *\n * @param formId ID of the form to save\n * @param formModel Model data for the form\n * @returns Data for the saved form\n */\n saveForm(formId: number, formModel: FormDefinitionModel): Observable<FormRepresentation> {\n return from(this.editorApi.saveForm(formId, formModel));\n }\n\n /**\n * Gets a form definition.\n *\n * @param formId ID of the target form\n * @returns Form definition\n */\n getFormDefinitionById(formId: number): Observable<any> {\n return from(this.editorApi.getForm(formId)).pipe(\n map(this.toJson),\n catchError((err) => this.handleError(err))\n );\n }\n\n /**\n * Creates a JSON representation of form data.\n *\n * @param res Object representing form data\n * @returns JSON data\n */\n toJson(res: any) {\n if (res) {\n return res || {};\n }\n return {};\n }\n\n /**\n * Reports an error message.\n *\n * @param error Data object with optional `message` and `status` fields for the error\n * @returns Error message\n */\n private handleError(error: any): Observable<any> {\n let errMsg = EditorService.UNKNOWN_ERROR_MESSAGE;\n if (error) {\n errMsg = error.message ? error.message : error.status ? `${error.status} - ${error.statusText}` : EditorService.GENERIC_ERROR_MESSAGE;\n }\n return throwError(errMsg);\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AlfrescoApiService } from '@alfresco/adf-content-services';\nimport { Injectable } from '@angular/core';\nimport { Observable, from, throwError } from 'rxjs';\nimport { TaskRepresentation, TasksApi } from '@alfresco/js-api';\nimport { catchError, map } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TaskService {\n static UNKNOWN_ERROR_MESSAGE: string = 'Unknown error';\n static GENERIC_ERROR_MESSAGE: string = 'Server error';\n\n private _taskApi: TasksApi;\n get taskApi(): TasksApi {\n this._taskApi = this._taskApi ?? new TasksApi(this.apiService.getInstance());\n return this._taskApi;\n }\n\n constructor(private apiService: AlfrescoApiService) {}\n\n /**\n * Gets a task.\n *\n * @param taskId Task Id\n * @returns Task info\n */\n getTask(taskId: string): Observable<TaskRepresentation> {\n return from(this.taskApi.getTask(taskId)).pipe(\n map(this.toJson),\n catchError((err) => this.handleError(err))\n );\n }\n\n /**\n * Creates a JSON representation of form data.\n *\n * @param res Object representing form data\n * @returns JSON data\n */\n toJson(res: any) {\n if (res) {\n return res || {};\n }\n return {};\n }\n\n /**\n * Reports an error message.\n *\n * @param error Data object with optional `message` and `status` fields for the error\n * @returns Error message\n */\n private handleError(error: any): Observable<any> {\n let errMsg = TaskService.UNKNOWN_ERROR_MESSAGE;\n if (error) {\n errMsg = error.message ? error.message : error.status ? `${error.status} - ${error.statusText}` : TaskService.GENERIC_ERROR_MESSAGE;\n }\n return throwError(errMsg);\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AlfrescoApiService } from '@alfresco/adf-content-services';\nimport { FormFieldOption, FormValues, TaskProcessVariableModel } from '@alfresco/adf-core';\nimport { Injectable } from '@angular/core';\nimport { from, Observable, throwError } from 'rxjs';\nimport { CompleteFormRepresentation, SaveFormRepresentation, TaskFormsApi } from '@alfresco/js-api';\nimport { catchError, map } from 'rxjs/operators';\nimport { DynamicTableColumnOption } from '../widgets/dynamic-table/editors/models/dynamic-table-column-option.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TaskFormService {\n static UNKNOWN_ERROR_MESSAGE: string = 'Unknown error';\n static GENERIC_ERROR_MESSAGE: string = 'Server error';\n\n private _taskFormsApi: TaskFormsApi;\n get taskFormsApi(): TaskFormsApi {\n this._taskFormsApi = this._taskFormsApi ?? new TaskFormsApi(this.apiService.getInstance());\n return this._taskFormsApi;\n }\n\n constructor(private apiService: AlfrescoApiService) {}\n\n /**\n * Saves a task form.\n *\n * @param taskId Task Id\n * @param formValues Form Values\n * @returns Null response when the operation is complete\n */\n saveTaskForm(taskId: string, formValues: FormValues): Observable<any> {\n const saveFormRepresentation = { values: formValues } as SaveFormRepresentation;\n\n return from(this.taskFormsApi.saveTaskForm(taskId, saveFormRepresentation)).pipe(catchError((err) => this.handleError(err)));\n }\n\n /**\n * Completes a Task Form.\n *\n * @param taskId Task Id\n * @param formValues Form Values\n * @param outcome Form Outcome\n * @returns Null response when the operation is complete\n */\n completeTaskForm(taskId: string, formValues: FormValues, outcome?: string): Observable<any> {\n const completeFormRepresentation = { values: formValues } as CompleteFormRepresentation;\n if (outcome) {\n completeFormRepresentation.outcome = outcome;\n }\n\n return from(this.taskFormsApi.completeTaskForm(taskId, completeFormRepresentation)).pipe(catchError((err) => this.handleError(err)));\n }\n\n /**\n * Gets a form related to a task.\n *\n * @param taskId ID of the target task\n * @returns Form definition\n */\n getTaskForm(taskId: string): Observable<any> {\n return from(this.taskFormsApi.getTaskForm(taskId)).pipe(\n map(this.toJson),\n catchError((err) => this.handleError(err))\n );\n }\n\n /**\n * Gets values of fields populated by a REST backend.\n *\n * @param taskId Task identifier\n * @param field Field identifier\n * @returns Field values\n */\n getRestFieldValues(taskId: string, field: string): Observable<FormFieldOption[]> {\n return from(this.taskFormsApi.getRestFieldValues(taskId, field)).pipe(catchError((err) => this.handleError(err)));\n }\n\n /**\n * Gets column values of fields populated by a REST backend.\n *\n * @param taskId Task identifier\n * @param field Field identifier\n * @param column Column identifier\n * @returns Field values\n */\n getRestFieldValuesColumn(taskId: string, field: string, column?: string): Observable<DynamicTableColumnOption[]> {\n return from(this.taskFormsApi.getRestFieldColumnValues(taskId, field, column)).pipe(catchError((err) => this.handleError(err)));\n }\n\n getTaskProcessVariable(taskId: string): Observable<TaskProcessVariableModel[]> {\n return from(this.taskFormsApi.getTaskFormVariables(taskId)).pipe(\n map((res) => this.toJson(res)),\n catchError((err) => this.handleError(err))\n );\n }\n\n /**\n * Creates a JSON representation of form data.\n *\n * @param res Object representing form data\n * @returns JSON data\n */\n toJson(res: any) {\n if (res) {\n return res || {};\n }\n return {};\n }\n\n /**\n * Reports an error message.\n *\n * @param error Data object with optional `message` and `status` fields for the error\n * @returns Error message\n */\n private handleError(error: any): Observable<any> {\n let errMsg = TaskFormService.UNKNOWN_ERROR_MESSAGE;\n if (error) {\n errMsg = error.message ? error.message : error.status ? `${error.status} - ${error.statusText}` : TaskFormService.GENERIC_ERROR_MESSAGE;\n }\n return throwError(errMsg);\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FormSaveRepresentation } from '@alfresco/js-api';\n\nexport class FormDefinitionModel extends FormSaveRepresentation {\n reusable: boolean = false;\n newVersion: boolean = false;\n formRepresentation: any;\n formImageBase64: string = '';\n\n constructor(id: string, name: any, lastUpdatedByFullName: string, lastUpdated: string, metadata: any) {\n super();\n this.formRepresentation = {\n id,\n name,\n description: '',\n version: 1,\n lastUpdatedBy: 1,\n lastUpdatedByFullName,\n lastUpdated,\n stencilSetId: 0,\n referenceId: null,\n formDefinition: {\n fields: [{\n name: 'Label',\n type: 'container',\n fieldType: 'ContainerRepresentation',\n numberOfColumns: 2,\n required: false,\n readOnly: false,\n sizeX: 2,\n sizeY: 1,\n row: -1,\n col: -1,\n fields: {1: this.metadataToFields(metadata)}\n }],\n gridsterForm: false,\n javascriptEvents: [],\n metadata: {},\n outcomes: [],\n className: '',\n style: '',\n tabs: [],\n variables: []\n }\n };\n }\n\n private metadataToFields(metadata: any): any[] {\n const fields = [];\n if (metadata) {\n metadata.forEach((property) => {\n if (property) {\n const field = {\n type: 'text',\n id: property.name,\n name: property.name,\n required: false,\n readOnly: false,\n sizeX: 1,\n sizeY: 1,\n row: -1,\n col: -1,\n colspan: 1,\n params: {\n existingColspan: 1,\n maxColspan: 2\n },\n layout: {\n colspan: 1,\n row: -1,\n column: -1\n }\n };\n fields.push(field);\n }\n });\n }\n\n return fields;\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ChangeDetectorRef,\n Component,\n DestroyRef,\n EventEmitter,\n inject,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewEncapsulation\n} from '@angular/core';\nimport {\n ContentLinkModel,\n FormatSpacePipe,\n FormBaseComponent,\n FormErrorEvent,\n FormEvent,\n FormFieldModel,\n FormModel,\n FormOutcomeEvent,\n FormOutcomeModel,\n FormRendererComponent,\n FormService,\n FormValues,\n TaskProcessVariableModel,\n WidgetVisibilityService\n} from '@alfresco/adf-core';\nimport { from, Observable, of } from 'rxjs';\nimport { switchMap } from 'rxjs/operators';\nimport { EcmModelService } from './services/ecm-model.service';\nimport { ModelService } from './services/model.service';\nimport { EditorService } from './services/editor.service';\nimport { TaskService } from './services/task.service';\nimport { TaskFormService } from './services/task-form.service';\nimport { NodesApiService } from '@alfresco/adf-content-services';\nimport { FormDefinitionModel } from './model/form-definition.model';\nimport { CommonModule } from '@angular/common';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'adf-form',\n imports: [CommonModule, MatCardModule, MatButtonModule, MatIconModule, TranslatePipe, FormRendererComponent, FormatSpacePipe],\n templateUrl: './form.component.html',\n styleUrls: ['./form.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class FormComponent extends FormBaseComponent implements OnInit, OnChanges {\n protected formService = inject(FormService);\n protected taskFormService = inject(TaskFormService);\n protected taskService = inject(TaskService);\n protected editorService = inject(EditorService);\n protected modelService = inject(ModelService);\n protected visibilityService = inject(WidgetVisibilityService);\n protected ecmModelService = inject(EcmModelService);\n protected nodeService = inject(NodesApiService);\n private cdRef = inject(ChangeDetectorRef);\n\n /** Task id to fetch corresponding form and values. */\n @Input()\n taskId: string;\n\n /** Content Services node ID for the form metadata. */\n @Input()\n nodeId: string;\n\n /** The id of the form definition to load and display with custom values. */\n @Input()\n formId: number;\n\n /** Name of the form definition to load and display with custom values. */\n @Input()\n formName: string;\n\n /** Toggle saving of form metadata. */\n @Input()\n saveMetadata: boolean = false;\n\n /** Custom form values map to be used with the rendered form. */\n @Input()\n data: FormValues;\n\n /** The form will set a prefixed space for invisible fields. */\n @Input()\n enableFixedSpacedForm: boolean = true;\n\n /** Emitted when the form is submitted with the `Save` or custom outcomes. */\n @Output()\n formSaved = new EventEmitter<FormModel>();\n\n /** Emitted when the form is submitted with the `Complete` outcome. */\n @Output()\n formCompleted = new EventEmitter<FormModel>();\n\n /** Emitted when form content is clicked. */\n @Output()\n formContentClicked = new EventEmitter<ContentLinkModel>();\n\n /** Emitted when the form is loaded or reloaded. */\n @Output()\n formLoaded = new EventEmitter<FormModel>();\n\n /** Emitted when form values are refreshed due to a data property change. */\n @Output()\n formDataRefreshed = new EventEmitter<FormModel>();\n\n debugMode: boolean = false;\n\n private readonly destroyRef = inject(DestroyRef);\n\n constructor() {\n super();\n }\n\n ngOnInit() {\n this.formService.formContentClicked.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((content) => this.formContentClicked.emit(content));\n\n this.formService.validateForm.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((validateFormEvent) => {\n if (validateFormEvent.errorsField.length > 0) {\n this.formError.next(validateFormEvent.errorsField);\n this.cdRef.detectChanges();\n }\n });\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const taskId = changes['taskId'];\n if (taskId?.currentValue) {\n this.getFormByTaskId(taskId.currentValue);\n return;\n }\n\n const formId = changes['formId'];\n if (formId?.currentValue) {\n this.getFormDefinitionByFormId(formId.currentValue);\n return;\n }\n\n const formName = changes['formName'];\n if (formName?.currentValue) {\n this.getFormDefinitionByFormName(formName.currentValue);\n return;\n }\n\n const nodeId = changes['nodeId'];\n if (nodeId?.currentValue) {\n this.loadFormForEcmNode(nodeId.currentValue);\n return;\n }\n\n const data = changes['data'];\n if (data?.currentValue) {\n this.refreshFormData();\n return;\n }\n }\n\n /**\n * Invoked when user clicks form refresh button.\n */\n onRefreshClicked() {\n this.loadForm();\n }\n\n loadForm() {\n if (this.taskId) {\n this.getFormByTaskId(this.taskId);\n return;\n }\n\n if (this.formId) {\n this.getFormDefinitionByFormId(this.formId);\n return;\n }\n\n if (this.formName) {\n this.getFormDefinitionByFormName(this.formName);\n return;\n }\n }\n\n findProcessVariablesByTaskId(taskId: string): Observable<TaskProcessVariableModel[]> {\n return this.taskService.getTask(taskId).pipe(\n switchMap((task) => {\n if (this.isAProcessTask(task)) {\n return this.taskFormService.getTaskProcessVariable(taskId);\n } else {\n return of([]);\n }\n })\n );\n }\n\n isAProcessTask(taskRepresentation) {\n return taskRepresentation.processDefinitionId && taskRepresentation.processDefinitionDeploymentId !== 'null';\n }\n\n getFormByTaskId(taskId: string): Promise<FormModel> {\n return new Promise<FormModel>((resolve) => {\n this.findProcessVariablesByTaskId(taskId).subscribe((taskProcessVariables) => {\n this.taskFormService.getTaskForm(taskId).subscribe(\n (form) => {\n const parsedForm = this.parseForm(form);\n this.visibilityService.refreshVisibility(parsedForm, taskProcessVariables);\n parsedForm.validateForm();\n this.form = parsedForm;\n this.onFormLoaded(this.form);\n resolve(this.form);\n },\n (error) => {\n this.handleError(error);\n resolve(null);\n }\n );\n });\n });\n }\n\n getFormDefinitionByFormId(formId: number) {\n this.editorService.getFormDefinitionById(formId).subscribe(\n (form) => {\n this.formName = form.name;\n this.form = this.parseForm(form);\n this.visibilityService.refreshVisibility(this.form);\n this.form.validateForm();\n this.onFormLoaded(this.form);\n },\n (error) => {\n this.handleError(error);\n }\n );\n }\n\n getFormDefinitionByFormName(formName: string) {\n this.modelService.getFormDefinitionByName(formName).subscribe(\n (id) => {\n this.editorService.getFormDefinitionById(id).subscribe(\n (form) => {\n this.form = this.parseForm(form);\n this.visibilityService.refreshVisibility(this.form);\n this.form.validateForm();\n this.onFormLoaded(this.form);\n },\n (error) => {\n this.handleError(error);\n }\n );\n },\n (error) => {\n this.handleError(error);\n }\n );\n }\n\n saveTaskForm() {\n if (this.form?.taskId) {\n this.taskFormService.saveTaskForm(this.form.taskId, this.form.values).subscribe(\n () => {\n this.onTaskSaved(this.form);\n this.storeFormAsMetadata();\n },\n (error) => this.onTaskSavedError(this.form, error)\n );\n }\n }\n\n completeTaskForm(outcome?: string) {\n if (this.form?.taskId) {\n this.taskFormService.completeTaskForm(this.form.taskId, this.form.values, outcome).subscribe(\n () => {\n this.onTaskCompleted(this.form);\n this.storeFormAsMetadata();\n },\n (error) => this.onTaskCompletedError(this.form, error)\n );\n }\n }\n\n handleError(err: any): any {\n this.error.emit(err);\n }\n\n parseForm(formRepresentationJSON: any): FormModel {\n if (formRepresentationJSON) {\n const form = new FormModel(formRepresentationJSON, this.data, this.readOnly, this.formService, this.enableFixedSpacedForm);\n if (!formRepresentationJSON.fields) {\n form.outcomes = this.getFormDefinitionOutcomes(form);\n }\n if (this.fieldValidators?.length > 0) {\n form.fieldValidators = this.fieldValidators;\n }\n return form;\n }\n return null;\n }\n\n /**\n * Get custom set of outcomes for a Form Definition.\n *\n * @param form Form definition model.\n * @returns list of form outcomes\n */\n getFormDefinitionOutcomes(form: FormModel): FormOutcomeModel[] {\n return [new FormOutcomeModel(form, { id: FormModel.SAVE_OUTCOME, name: FormOutcomeModel.SAVE_ACTION, isSystem: true })];\n }\n\n checkVisibility(field: FormFieldModel) {\n if (field?.form) {\n this.visibilityService.refreshVisibility(field.form);\n }\n }\n\n loadFormFromActiviti(nodeType: string): any {\n this.modelService.searchFrom(nodeType).subscribe(\n (form) => {\n if (!form) {\n this.createFormFromANode(nodeType).subscribe((formMetadata) => {\n this.loadFormFromFormId(formMetadata.id);\n });\n } else {\n this.loadFormFromFormId(form.id);\n }\n },\n (error) => {\n this.handleError(error);\n }\n );\n }\n\n /**\n * Creates a Form with a field for each metadata property.\n *\n * @param formName Name of the new form\n * @returns The new form\n */\n createFormFromANode(formName: string): Observable<any> {\n return new Observable((observer) => {\n this.modelService.createForm(formName).subscribe(\n (form) => {\n this.ecmModelService.searchEcmType(formName, EcmModelService.MODEL_NAME).subscribe(\n (customType) => {\n const formDefinitionModel = new FormDefinitionModel(\n form.id,\n form.name,\n form.lastUpdatedByFullName,\n form.lastUpdated,\n customType.entry.properties\n );\n from(this.editorService.saveForm(form.id, formDefinitionModel)).subscribe(\n (formData) => {\n observer.next(formData);\n observer.complete();\n },\n (err) => this.handleError(err)\n );\n },\n (err) => this.handleError(err)\n );\n },\n (err) => this.handleError(err)\n );\n });\n }\n\n protected storeFormAsMetadata() {\n if (this.saveMetadata) {\n this.ecmModelService.createEcmTypeForActivitiForm(this.formName, this.form).subscribe(\n (type) => {\n this.nodeService.createNodeMetadata(\n type.nodeType || type.entry.prefixedName,\n EcmModelService.MODEL_NAMESPACE,\n this.form.values,\n this.path,\n this.nameNode\n );\n },\n (error) => {\n this.handleError(error);\n }\n );\n }\n }\n\n protected onFormLoaded(form: FormModel) {\n this.formLoaded.emit(form);\n this.formService.formLoaded.next(new FormEvent(form));\n }\n\n protected onFormDataRefreshed(form: FormModel) {\n this.formDataRefreshed.emit(form);\n this.formService.formDataRefreshed.next(new FormEvent(form));\n }\n\n protected onTaskSaved(form: FormModel) {\n this.formSaved.emit(form);\n this.formService.taskSaved.next(new FormEvent(form));\n }\n\n protected onTaskSavedError(form: FormModel, error: any) {\n this.handleError(error);\n this.formService.taskSavedError.next(new FormErrorEvent(form, error));\n }\n\n protected onTaskCompleted(form: FormModel) {\n this.formCompleted.emit(form);\n this.formService.taskCompleted.next(new FormEvent(form));\n }\n\n protected onTaskCompletedError(form: FormModel, error: any) {\n this.handleError(error);\n this.formService.taskCompletedError.next(new FormErrorEvent(form, error));\n }\n\n protected onExecuteOutcome(outcome: FormOutcomeModel): boolean {\n const args = new FormOutcomeEvent(outcome);\n\n this.formService.executeOutcome.next(args);\n if (args.defaultPrevented) {\n return false;\n }\n\n this.executeOutcome.emit(args);\n return !args.defaultPrevented;\n }\n\n private refreshFormData() {\n this.form = this.parseForm(this.form.json);\n this.onFormLoaded(this.form);\n this.onFormDataRefreshed(this.form);\n }\n\n private loadFormForEcmNode(nodeId: string): void {\n this.nodeService.getNodeMetadata(nodeId).subscribe((data) => {\n this.data = data.metadata;\n this.loadFormFromActiviti(data.nodeType);\n }, this.handleError);\n }\n\n private loadFormFromFormId(formId: number) {\n this.formId = formId;\n this.loadForm();\n }\n}\n","<div *ngIf=\"!hasForm()\">\n <ng-content select=\"[empty-form]\" />\n</div>\n\n<div *ngIf=\"hasForm()\" class=\"adf-form-container\">\n <mat-card appearance=\"outlined\" class=\"adf-form-card\">\n <mat-card-header>\n <mat-card-title>\n <h4>\n <div *ngIf=\"showValidationIcon\" class=\"adf-form-validation-button\">\n <i id=\"adf-valid-form-icon\" class=\"material-icons\"\n *ngIf=\"form.isValid; else no_valid_form\">check_circle</i>\n <ng-template #no_valid_form>\n <i id=\"adf-invalid-form-icon\" class=\"material-icons adf-invalid-color\">error</i>\n </ng-template>\n </div>\n <div *ngIf=\"showRefreshButton\" class=\"adf-form-reload-button\">\n <button mat-icon-button (click)=\"onRefreshClicked()\">\n <mat-icon>refresh</mat-icon>\n </button>\n </div>\n <span *ngIf=\"isTitleEnabled()\" class=\"adf-form-title\" [title]=\"form.taskName\">\n {{form.taskName}}\n <ng-container *ngIf=\"!form.taskName\">\n {{'FORM.FORM_RENDERER.NAMELESS_TASK' | translate}}\n </ng-container>\n </span>\n </h4>\n </mat-card-title>\n </mat-card-header>\n <mat-card-content class=\"adf-form-card-content\">\n <adf-form-renderer [formDefinition]=\"form\" />\n </mat-card-content>\n <mat-card-actions *ngIf=\"form.hasOutcomes()\" class=\"adf-form-mat-card-actions\" align=\"end\">\n <ng-content select=\"adf-form-custom-outcomes\" />\n <button [id]=\"'adf-form-'+ outcome.name | formatSpace\" *ngFor=\"let outcome of form.outcomes\"\n [color]=\"getColorForOutcome(outcome.name)\" mat-button [disabled]=\"!isOutcomeButtonEnabled(outcome)\"\n [class.adf-form-hide-button]=\"!isOutcomeButtonVisible(outcome, form.readOnly)\"\n (click)=\"onOutcomeClicked(outcome)\">\n {{outcome.name | translate | uppercase }}\n </button>\n </mat-card-actions>\n </mat-card>\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n Component,\n ElementRef,\n EventEmitter,\n inject,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { FormComponent } from '../form.component';\nimport { ContentLinkModel, FormOutcomeModel, FormRendererComponent } from '@alfresco/adf-core';\nimport { ProcessService } from '../../process-list/services/process.service';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n selector: 'adf-start-form',\n imports: [CommonModule, TranslatePipe, MatButtonModule, MatCardModule, FormRendererComponent, MatIconModule],\n templateUrl: './start-form.component.html',\n styleUrls: ['./start-form.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class StartFormComponent extends FormComponent implements OnChanges, OnInit {\n public processService = inject(ProcessService);\n\n /** Definition ID of the process to start, this parameter can not be use in combination with processId */\n @Input()\n processDefinitionId: string;\n\n /** Process ID of the process to start, this parameter can not be use in combination with processDefinitionId */\n @Input()\n processId: string;\n\n /** Should form outcome buttons be shown? */\n @Input()\n showOutcomeButtons: boolean = true;\n\n /** Should the refresh button be shown? */\n @Input()\n showRefreshButton: boolean = true;\n\n /** Is the form read-only (ie, can't be edited)? */\n @Input()\n readOnlyForm: boolean = false;\n\n /** Emitted when the user clicks one of the outcome buttons that completes the form. */\n @Output()\n outcomeClick = new EventEmitter<any>();\n\n /** Emitted when a field of the form is clicked. */\n @Output()\n formContentClicked = new EventEmitter<ContentLinkModel>();\n\n @ViewChild('outcomesContainer')\n outcomesContainer: ElementRef = null;\n\n constructor() {\n super();\n this.showTitle = false;\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const processDefinitionId = changes['processDefinitionId'];\n if (processDefinitionId?.currentValue) {\n this.processDefinitionId = processDefinitionId.currentValue;\n this.visibilityService.cleanProcessVariable();\n this.getStartFormDefinition(this.processDefinitionId);\n return;\n }\n\n const data = changes['data'];\n if (data?.currentValue) {\n this.parseRefreshVisibilityValidateForm(this.form.json);\n return;\n }\n\n const processId = changes['processId'];\n if (processId?.currentValue) {\n this.visibilityService.cleanProcessVariable();\n this.loadStartForm(processId.currentValue);\n return;\n }\n }\n\n loadStartForm(processId: string) {\n this.processService.getProcess(processId).subscribe((instance) => {\n this.processService.getStartFormInstance(processId).subscribe(\n (form) => {\n this.formName = form.name;\n if (instance.variables) {\n form.processVariables = instance.variables;\n }\n this.parseRefreshVisibilityValidateForm(form);\n },\n (error) => this.handleError(error)\n );\n });\n }\n\n getStartFormDefinition(processId: string) {\n this.processService.getStartFormDefinition(processId).subscribe(\n (form) => {\n this.formName = form.processDefinitionName;\n this.parseRefreshVisibilityValidateForm(form);\n },\n (error) => this.handleError(error)\n );\n }\n\n parseRefreshVisibilityValidateForm(form) {\n this.form = this.parseForm(form);\n this.visibilityService.refreshVisibility(this.form);\n this.form.validateForm();\n this.form.readOnly = this.readOnlyForm;\n this.onFormLoaded(this.form);\n }\n\n isOutcomeButtonVisible(outcome: FormOutcomeModel, isFormReadOnly: boolean): boolean {\n if (outcome?.isSystem && (outcome.name === FormOutcomeModel.SAVE_ACTION || outcome.name === FormOutcomeModel.COMPLETE_ACTION)) {\n return false;\n } else if (outcome?.name === FormOutcomeModel.START_PROCESS_ACTION) {\n return true;\n }\n return super.isOutcomeButtonVisible(outcome, isFormReadOnly);\n }\n\n saveTaskForm() {\n // do nothing\n }\n\n onRefreshClicked() {\n if (this.processDefinitionId) {\n this.visibilityService.cleanProcessVariable();\n this.getStartFormDefinition(this.processDefinitionId);\n } else if (this.processId) {\n this.visibilityService.cleanProcessVariable();\n this.loadStartForm(this.processId);\n }\n }\n\n completeTaskForm(outcome?: string) {\n this.outcomeClick.emit(outcome);\n }\n}\n","<div class=\"adf-start-form-container\" *ngIf=\"hasForm()\">\n <mat-card class=\"adf-start-form-card\">\n <mat-card-header class=\"adf-start-form-header\">\n <mat-card-title>\n <h2 *ngIf=\"isTitleEnabled()\" class=\"mdl-card__title-text\">{{form.taskName}}</h2>\n </mat-card-title>\n </mat-card-header>\n <mat-card-content class=\"adf-start-form-content\">\n <adf-form-renderer [formDefinition]=\"form\" />\n </mat-card-content>\n <mat-card-content class=\"adf-start-form-actions\" *ngIf=\"showOutcomeButtons && form.hasOutcomes()\"\n #outcomesContainer>\n <ng-content select=\"[adf-form-custom-button], [form-custom-button]\" />\n\n <button *ngFor=\"let outcome of form.outcomes\"\n mat-button\n class=\"adf-start-form-actions-button\"\n [attr.data-automation-id]=\"'adf-form-' + outcome.name | lowercase\"\n [disabled]=\"!isOutcomeButtonEnabled(outcome)\"\n [class.mdl-button--colored]=\"!outcome.isSystem\"\n [class.adf-form-hide-button]=\"!isOutcomeButtonVisible(outcome, form.readOnly)\"\n (click)=\"onOutcomeClicked(outcome)\">\n {{ outcome.name | uppercase | translate | uppercase }}\n </button>\n </mat-card-content>\n <mat-card-actions *ngIf=\"showRefreshButton\">\n <button mat-button\n (click)=\"onRefreshClicked()\">\n <mat-icon>refresh</mat-icon>\n </button>\n </mat-card-actions>\n </mat-card>\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AlfrescoApiService } from '@alfresco/adf-content-services';\nimport { Injectable } from '@angular/core';\nimport {\n ActivitiContentApi,\n RelatedContentRepresentation,\n ResultListDataRepresentationRelatedProcessTask,\n ResultListDataRepresentationRelatedContentRepresentation\n} from '@alfresco/js-api';\nimport { Observable, from, throwError } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ProcessContentService {\n static UNKNOWN_ERROR_MESSAGE: string = 'Unknown error';\n static GENERIC_ERROR_MESSAGE: string = 'Server error';\n\n private _contentApi: ActivitiContentApi;\n get contentApi(): ActivitiContentApi {\n this._contentApi = this._contentApi ?? new ActivitiContentApi(this.apiService.getInstance());\n return this._contentApi;\n }\n\n constructor(private apiService: AlfrescoApiService) {}\n\n /**\n * Create temporary related content from an uploaded file.\n *\n * @param file File to use for content\n * @returns The created content data\n */\n createTemporaryRawRelatedContent(file: any): Observable<RelatedContentRepresentation> {\n return from(this.contentApi.createTemporaryRawRelatedContent(file)).pipe(catchError((err) => this.handleError(err)));\n }\n\n /**\n * Gets the metadata for a related content item.\n *\n * @param contentId ID of the content item\n * @returns Metadata for the content\n */\n getFileContent(contentId: number): Observable<RelatedContentRepresentation> {\n return from(this.contentApi.getContent(contentId)).pipe(catchError((err) => this.handleError(err)));\n }\n\n /**\n * Gets raw binary content data for a related content file.\n *\n * @param contentId ID of the related content\n * @returns Binary data of the related content\n */\n getFileRawContent(contentId: number): Observable<Blob> {\n return from(this.contentApi.getRawContent(contentId)).pipe(catchError((err) => this.handleError(err)));\n }\n\n /**\n * Gets the preview for a related content file.\n *\n * @param contentId ID of the related content\n * @returns Binary data of the content preview\n */\n getContentPreview(contentId: number): Observable<Blob> {\n return new Observable((observer) => {\n this.contentApi.getRawContent(contentId).then(\n (result) => {\n observer.next(result);\n observer.complete();\n },\n () => {\n this.contentApi.getRawContent(contentId).then(\n (data) => {\n observer.next(data);\n observer.complete();\n },\n (err) => {\n observer.error(err);\n observer.complete();\n }\n );\n }\n );\n });\n }\n\n /**\n * Gets a URL for direct access to a related content file.\n *\n * @param contentId ID of the related content\n * @returns URL to access the content\n */\n getFileRawContentUrl(contentId: number): string {\n return this.contentApi.getRawContentUrl(contentId);\n }\n\n /**\n * Gets the thumbnail for a related content file.\n *\n * @param contentId ID of the related content\n * @returns Binary data of the thumbnail image\n */\n getContentThumbnail(contentId: number): Observable<Blob> {\n return from(this.contentApi.getRawContent(contentId, 'thumbnail')).pipe(catchError((err) => this.handleError(err)));\n }\n\n /**\n * Gets the preview rendition for a related content file.\n *\n * @param contentId ID of the related content\n * @returns Binary data of the related content\n */\n getContentRenditionTypePreview(contentId: number): Observable<Blob> {\n return from(this.contentApi.getRawContent(contentId, 'preview')).pipe(catchError((err) => this.handleError(err)));\n }\n\n /**\n * Gets related content items for a task instance.\n *\n * @param taskId ID of the target task\n * @param opts Options supported by JS-API\n * @returns Metadata for the content\n */\n getTaskRelatedContent(taskId: string, opts?: any): Observable<ResultListDataRepresentationRelatedContentRepresentation> {\n return from(this.contentApi.getRelatedContentForTask(taskId, opts)).pipe(catchError((err) => this.handleError(err)));\n }\n\n /**\n * Gets related content items for a process instance.\n *\n * @param processId ID of the target process\n * @param opts Options supported by JS-API\n * @returns Metadata for the content\n */\n getProcessRelatedContent(processId: string, opts?: any): Observable<ResultListDataRepresentationRelatedContentRepresentation> {\n return from(this.contentApi.getRelatedContentForProcessInstance(processId, opts)).pipe(catchError((err) => this.handleError(err)));\n }\n\n /**\n * Deletes related content.\n *\n * @param contentId Identifier of the content to delete\n * @returns Null response that notifies when the deletion is complete\n */\n deleteRelatedContent(contentId: number): Observable<any> {\n return from(this.contentApi.deleteContent(contentId)).pipe(catchError((err) => this.handleError(err)));\n }\n\n /**\n * Associates an uploaded file with a process instance.\n *\n * @param processInstanceId ID of the target process instance\n * @param content File to associate\n * @param opts Options supported by JS-API\n * @returns Details of created content\n */\n createProcessRelatedContent(processInstanceId: string, content: any, opts?: any): Observable<RelatedContentRepresentation> {\n return from(this.contentApi.createRelatedContentOnProcessInstance(processInstanceId, content, opts)).pipe(\n catchError((err) => this.handleError(err))\n );\n }\n\n /**\n * Associates an uploaded file with a task instance.\n *\n * @param taskId ID of the target task\n * @param file File to associate\n * @param opts Options supported by JS-API\n * @returns Details of created content\n */\n createTaskRelatedContent(taskId: string, file: any, opts?: any): Observable<RelatedContentRepresentation> {\n return from(this.contentApi.createRelatedContentOnTask(taskId, file, opts)).pipe(catchError((err) => this.handleError(err)));\n }\n\n /**\n * Lists processes and tasks on workflow started with provided document\n *\n * @param sourceId - id of the document that workflow or task has been started with\n * @param source - source of the document that workflow or task has been started with\n * @param size - size of the entries to get\n * @param page - page number\n * @returns Promise<ResultListDataRepresentationRelatedProcessTask>\n */\n getProcessesAndTasksOnContent(\n sourceId: string,\n source: string,\n size?: number,\n page?: number\n ): Observable<ResultListDataRepresentationRelatedProcessTask> {\n return from(this.contentApi.getProcessesAndTasksOnContent(sourceId, source, size, page)).pipe(catchError((err) => this.handleError(err)));\n }\n\n /**\n * Creates a JSON representation of data.\n *\n * @param res Object representing data\n * @returns JSON object\n */\n toJson(res: any) {\n if (res) {\n return res || {};\n }\n return {};\n }\n\n /**\n * Creates a JSON array representation of data.\n *\n * @param res Object representing data\n * @returns JSON array object\n */\n toJsonArray(res: any) {\n if (res) {\n return res.data || [];\n }\n return [];\n }\n\n /**\n * Reports an error message.\n *\n * @param error Data object with optional `message` and `status` fields for the error\n * @returns Callback when an error occurs\n */\n handleError(error: any): Observable<any> {\n let errMsg = ProcessContentService.UNKNOWN_ERROR_MESSAGE;\n if (error) {\n errMsg = error.message\n ? error.message\n : error.status\n ? `${error.status} - ${error.statusText}`\n : ProcessContentService.GENERIC_ERROR_MESSAGE;\n }\n return throwError(errMsg);\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/component-selector */\n\nimport { ThumbnailService, FormService, ContentLinkModel, WidgetComponent, ErrorWidgetComponent } from '@alfresco/adf-core';\nimport { Component, ElementRef, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { Observable, from } from 'rxjs';\nimport { ProcessContentService } from '../../services/process-content.service';\nimport { mergeMap, map } from 'rxjs/operators';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatListModule } from '@angular/material/list';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n selector: 'upload-widget',\n imports: [CommonModule, TranslatePipe, MatListModule, MatButtonModule, MatIconModule, ErrorWidgetComponent],\n templateUrl: './upload.widget.html',\n styleUrls: ['./upload.widget.scss'],\n host: {\n '(click)': 'event($event)',\n '(blur)': 'event($event)',\n '(change)': 'event($event)',\n '(focus)': 'event($event)',\n '(focusin)': 'event($event)',\n '(focusout)': 'event($event)',\n '(input)': 'event($event)',\n '(invalid)': 'event($event)',\n '(select)': 'event($event)'\n },\n encapsulation: ViewEncapsulation.None\n})\nexport class UploadWidgetComponent extends WidgetComponent implements OnInit {\n hasFile: boolean;\n displayText: string;\n multipleOption: string = '';\n mimeTypeIcon: string;\n\n @ViewChild('uploadFiles')\n fileInput: ElementRef;\n\n constructor(public formService: FormService, private thumbnailService: ThumbnailService, public processContentService: ProcessContentService) {\n super(formService);\n }\n\n ngOnInit() {\n if (this.field?.value?.length > 0) {\n this.hasFile = true;\n }\n this.getMultipleFileParam();\n }\n\n removeFile(file: any) {\n if (this.field) {\n this.removeElementFromList(file);\n }\n }\n\n onFileChanged(event: any) {\n const files = event.target.files;\n let filesSaved = [];\n\n if (this.field?.json.value) {\n filesSaved = [...this.field.json.value];\n }\n\n if (files && files.length > 0) {\n from(files)\n .pipe(mergeMap((file) => this.uploadRawContent(file)))\n .subscribe(\n (res) => filesSaved.push(res),\n () => {},\n () => {\n this.field.value = filesSaved;\n this.field.json.value = filesSaved;\n this.hasFile = true;\n }\n );\n }\n }\n\n private uploadRawContent(file): Observable<any> {\n return this.processContentService.createTemporaryRawRelatedContent(file).pipe(\n map((response: any) => {\n response.contentBlob = file;\n return response;\n })\n );\n }\n\n getMultipleFileParam() {\n if (this.field?.params?.multiple) {\n this.multipleOption = this.field.params.multiple ? 'multiple' : '';\n }\n }\n\n private removeElementFromList(file: any) {\n const index = this.field.value.indexOf(file);\n\n if (index !== -1) {\n this.field.value.splice(index, 1);\n this.field.json.value = this.field.value;\n this.field.updateForm();\n }\n\n this.hasFile = this.field.value.length > 0;\n\n if (!this.hasFile) {\n this.field.value = null;\n this.field.json.value = null;\n }\n }\n\n getIcon(mimeType: string): string {\n return this.thumbnailService.getMimeTypeIcon(mimeType);\n }\n\n fileClicked(contentLinkModel: any): void {\n const file = new ContentLinkModel(contentLinkModel);\n let fetch = this.processContentService.getContentPreview(file.id);\n if (file.isTypeImage() || file.isTypePdf()) {\n fetch = this.processContentService.getFileRawContent(file.id);\n }\n fetch.subscribe((blob: Blob) => {\n file.contentBlob = blob;\n this.formService.formContentClicked.next(file);\n });\n }\n}\n","<div class=\"adf-upload-widget {{field.className}}\" [class.adf-invalid]=\"!field.isValid\" [class.adf-readonly]=\"field.readOnly\">\n <label class=\"adf-label\" [attr.for]=\"field.id\"\n >{{field.name | translate }}<span class=\"adf-asterisk\" [style.visibility]=\"isRequired() ? 'visible' : 'hidden'\">*</span></label\n >\n <div class=\"adf-upload-widget-container\">\n <div>\n <mat-list *ngIf=\"hasFile\">\n <mat-list-item class=\"adf-upload-files-row\" *ngFor=\"let file of field.value\">\n <img\n matListItemLine\n class=\"adf-upload-widget__icon\"\n [id]=\"'file-'+file.id+'-icon'\"\n [src]=\"getIcon(file.mimeType)\"\n [alt]=\"mimeTypeIcon\"\n (click)=\"fileClicked(file)\"\n (keyup.enter)=\"fileClicked(file)\"\n role=\"button\"\n tabindex=\"0\"\n />\n <span\n matListItemLine\n id=\"{{'file-'+file.id}}\"\n (click)=\"fileClicked(file)\"\n (keyup.enter)=\"fileClicked(file)\"\n role=\"button\"\n tabindex=\"0\"\n class=\"adf-file\"\n >{{file.name}}</span\n >\n <button\n *ngIf=\"!field.readOnly\"\n mat-icon-button\n [id]=\"'file-'+file.id+'-remove'\"\n (click)=\"removeFile(file);\"\n (keyup.enter)=\"removeFile(file);\"\n >\n <mat-icon class=\"mat-24\">highlight_off</mat-icon>\n </button>\n </mat-list-item>\n </mat-list>\n </div>\n\n <div *ngIf=\"(!hasFile || multipleOption) && !field.readOnly\">\n <button mat-raised-button color=\"primary\" (click)=\"uploadFiles.click()\">\n {{ 'FORM.FIELD.UPLOAD' | translate }}<mat-icon>file_upload</mat-icon>\n <input #uploadFiles [multiple]=\"multipleOption\" type=\"file\" [id]=\"field.id\" (change)=\"onFileChanged($event)\" />\n </button>\n </div>\n </div>\n <error-widget [error]=\"field.validationSummary\" />\n <error-widget *ngIf=\"isInvalidFieldRequired()\" required=\"{{ 'FORM.FIELD.REQUIRED' | translate }}\" />\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { UrlService, ContentLinkModel, FormService, DownloadService } from '@alfresco/adf-core';\nimport { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges, ViewEncapsulation } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ProcessContentService } from '../../services/process-content.service';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'adf-content',\n imports: [CommonModule, TranslatePipe, MatCardModule, MatIconModule, MatButtonModule],\n templateUrl: './content.widget.html',\n styleUrls: ['./content.widget.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class ContentWidgetComponent implements OnChanges {\n /** The content id to show. */\n @Input()\n id: string;\n\n /** Toggles showing document content. */\n @Input()\n showDocumentContent: boolean = true;\n\n /** Emitted when the content is clicked. */\n @Output()\n contentClick = new EventEmitter();\n\n /** Emitted when the thumbnail has loaded. */\n @Output()\n thumbnailLoaded: EventEmitter<any> = new EventEmitter<any>();\n\n /** Emitted when the content has loaded. */\n @Output()\n contentLoaded: EventEmitter<any> = new EventEmitter<any>();\n\n /** Emitted when an error occurs. */\n @Output()\n error: EventEmitter<any> = new EventEmitter<any>();\n\n content: ContentLinkModel;\n\n constructor(\n protected formService: FormService,\n private downloadService: DownloadService,\n private urlService: UrlService,\n private processContentService: ProcessContentService\n ) {}\n\n ngOnChanges(changes: SimpleChanges) {\n const contentId = changes['id'];\n if (contentId?.currentValue) {\n this.loadContent(contentId.currentValue);\n }\n }\n\n loadContent(id: number) {\n this.processContentService.getFileContent(id).subscribe(\n (response: ContentLinkModel) => {\n this.content = new ContentLinkModel(response);\n this.contentLoaded.emit(this.content);\n this.loadThumbnailUrl(this.content);\n },\n (error) => {\n this.error.emit(error);\n }\n );\n }\n\n loadThumbnailUrl(content: ContentLinkModel) {\n if (this.content.isThumbnailSupported()) {\n let observable: Observable<any>;\n\n if (this.content.isTypeImage()) {\n observable = this.processContentService.getFileRawContent(content.id);\n } else {\n observable = this.processContentService.getContentThumbnail(content.id);\n }\n\n if (observable) {\n observable.subscribe(\n (response: Blob) => {\n this.content.thumbnailUrl = this.urlService.createTrustedUrl(response);\n this.thumbnailLoaded.emit(this.content.thumbnailUrl);\n },\n (error) => {\n this.error.emit(error);\n }\n );\n }\n }\n }\n\n openViewer(content: ContentLinkModel): void {\n let fetch = this.processContentService.getContentRenditionTypePreview(content.id);\n if (content.isTypeImage() || content.isTypePdf()) {\n fetch = this.processContentService.getFileRawContent(content.id);\n }\n fetch.subscribe(\n (blob: Blob) => {\n content.contentBlob = blob;\n this.contentClick.emit(content);\n this.formService.formContentClicked.next(content);\n },\n (error) => {\n this.error.emit(error);\n }\n );\n }\n\n /**\n * Invoke content download.\n *\n * @param content content link model\n */\n download(content: ContentLinkModel): void {\n this.processContentService.getFileRawContent(content.id).subscribe(\n (blob: Blob) => this.downloadService.downloadBlob(blob, content.name),\n (error) => {\n this.error.emit(error);\n }\n );\n }\n}\n","<mat-card appearance=\"outlined\" class=\"adf-content-container\" *ngIf=\"content\">\n <mat-card-content *ngIf=\"showDocumentContent\">\n <div *ngIf=\"content.isThumbnailSupported()\" >\n <img id=\"thumbnailPreview\" class=\"adf-img-upload-widget\" [src]=\"content.thumbnailUrl\" alt=\"{{content.name}}\">\n </div>\n <div *ngIf=\"!content.isThumbnailSupported()\">\n <mat-icon>image</mat-icon>\n <div id=\"unsupported-thumbnail\" class=\"adf-content-widget-preview-text\">{{ 'FORM.PREVIEW.IMAGE_NOT_AVAILABLE' | translate }}\n </div>\n </div>\n <div class=\"mdl-card__supporting-text upload-widget__content-text\">{{content.name | translate }}</div>\n </mat-card-content>\n\n <mat-card-actions>\n <button mat-icon-button id=\"view\" (click)=\"openViewer(content)\">\n <mat-icon class=\"mat-24\">zoom_in</mat-icon>\n </button>\n <button mat-icon-button id=\"download\" (click)=\"download(content)\">\n <mat-icon class=\"mat-24\">file_download</mat-icon>\n </button>\n </mat-card-actions>\n</mat-card>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, OnInit, ViewEncapsulation } from '@angular/core';\nimport { FormService, WidgetComponent } from '@alfresco/adf-core';\nimport { CommonModule } from '@angular/common';\nimport { ContentWidgetComponent } from './content.widget';\n\n@Component({\n selector: 'adf-form-document-widget',\n imports: [CommonModule, ContentWidgetComponent],\n templateUrl: './document.widget.html',\n host: {\n '(click)': 'event($event)',\n '(blur)': 'event($event)',\n '(change)': 'event($event)',\n '(focus)': 'event($event)',\n '(focusin)': 'event($event)',\n '(focusout)': 'event($event)',\n '(input)': 'event($event)',\n '(invalid)': 'event($event)',\n '(select)': 'event($event)'\n },\n encapsulation: ViewEncapsulation.None\n})\nexport class DocumentWidgetComponent extends WidgetComponent implements OnInit {\n fileId: string = null;\n hasFile: boolean = false;\n\n constructor(public formService: FormService) {\n super(formService);\n }\n\n ngOnInit() {\n if (this.field) {\n const file = this.field.value;\n\n if (file) {\n this.fileId = file.id;\n this.hasFile = true;\n } else {\n this.fileId = null;\n this.hasFile = false;\n }\n }\n }\n}\n","<div class=\"adf-form-document-widget {{field.className}}\">\n <ng-container *ngIf=\"hasFile\">\n <adf-content [id]=\"fileId\" [showDocumentContent]=\"true\" />\n </ng-container>\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/component-selector */\n\nimport { ErrorWidgetComponent, FormService, InitialUsernamePipe, WidgetComponent } from '@alfresco/adf-core';\nimport { Component, ElementRef, EventEmitter, OnInit, Output, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { ReactiveFormsModule, UntypedFormControl } from '@angular/forms';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatIconModule } from '@angular/material/icon';\nimport { Observable, of } from 'rxjs';\nimport { catchError, distinctUntilChanged, map, switchMap } from 'rxjs/operators';\nimport { PeopleProcessService } from '../../../services/people-process.service';\nimport { LightUserRepresentation } from '@alfresco/js-api';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\n\n@Component({\n selector: 'people-widget',\n imports: [\n CommonModule,\n TranslatePipe,\n MatFormFieldModule,\n MatInputModule,\n MatChipsModule,\n MatIconModule,\n ReactiveFormsModule,\n MatAutocompleteModule,\n InitialUsernamePipe,\n ErrorWidgetComponent\n ],\n templateUrl: './people.widget.html',\n styleUrls: ['./people.widget.scss'],\n host: {\n '(click)': 'event($event)',\n '(blur)': 'event($event)',\n '(change)': 'event($event)',\n '(focus)': 'event($event)',\n '(focusin)': 'event($event)',\n '(focusout)': 'event($event)',\n '(input)': 'event($event)',\n '(invalid)': 'event($event)',\n '(select)': 'event($event)'\n },\n encapsulation: ViewEncapsulation.None\n})\nexport class PeopleWidgetComponent extends WidgetComponent implements OnInit {\n @ViewChild('inputValue', { static: true })\n input: ElementRef;\n\n /** Emitted when a valid user has been highlighted */\n @Output()\n peopleSelected: EventEmitter<number> = new EventEmitter();\n\n selectedUsers: LightUserRepresentation[] = [];\n multiSelect = false;\n groupId: number;\n\n searchTerm = new UntypedFormControl();\n searchTerms$ = this.searchTerm.valueChanges;\n\n users$: Observable<LightUserRepresentation[]> = this.searchTerms$.pipe(\n distinctUntilChanged(),\n switchMap((searchTerm) => {\n if (!searchTerm) {\n return of([]);\n }\n const value = searchTerm.email ? this.getDisplayName(searchTerm) : searchTerm;\n return this.peopleProcessService.getWorkflowUsers(undefined, value, this.groupId).pipe(catchError(() => of([])));\n }),\n map((list) => {\n const value = this.searchTerm.value.email ? this.getDisplayName(this.searchTerm.value) : this.searchTerm.value;\n this.checkUserAndValidateForm(list, value);\n return list;\n })\n );\n\n constructor(\n public formService: FormService,\n public peopleProcessService: PeopleProcessService\n ) {\n super(formService);\n }\n\n ngOnInit() {\n if (this.field) {\n if (this.field.value) {\n Array.isArray(this.field.value) ? this.selectedUsers.push(...this.field.value) : this.selectedUsers.push(this.field.value);\n }\n const params = this.field.params;\n if (params?.restrictWithGroup) {\n const restrictWithGroup = params.restrictWithGroup;\n this.groupId = restrictWithGroup.id;\n }\n if (params?.multiple) {\n this.multiSelect = params.multiple;\n this.field.value = this.selectedUsers;\n }\n }\n }\n\n checkUserAndValidateForm(list: LightUserRepresentation[], value: string): void {\n const isValidUser = this.isValidUser(list, value);\n if (isValidUser || value === '') {\n this.field.validationSummary.message = '';\n this.field.validate();\n this.field.form.validateForm();\n } else {\n this.field.validationSummary.message = 'FORM.FIELD.VALIDATOR.INVALID_VALUE';\n this.field.markAsInvalid();\n this.field.form.markAsInvalid();\n }\n }\n\n isValidUser(users: LightUserRepresentation[], name: string): boolean {\n if (users) {\n return !!users.find((user) => this.getDisplayName(user).toLocaleLowerCase() === name.toLocaleLowerCase());\n }\n return false;\n }\n\n getDisplayName(model: LightUserRepresentation) {\n if (model) {\n const displayName = `${model.firstName || ''} ${model.lastName || ''}`;\n return displayName.trim();\n }\n return '';\n }\n\n onRemove(user: LightUserRepresentation) {\n const index = this.selectedUsers.indexOf(user);\n if (index >= 0) {\n this.selectedUsers.splice(index, 1);\n this.field.value = this.selectedUsers;\n }\n }\n\n onItemSelect(user: LightUserRepresentation) {\n if (this.multiSelect) {\n if (!this.isUserAlreadySelected(user)) {\n this.selectedUsers.push(user);\n }\n this.field.value = this.selectedUsers;\n } else {\n this.selectedUsers = [user];\n this.field.value = user;\n }\n\n this.peopleSelected.emit(user?.id || undefined);\n this.input.nativeElement.value = '';\n this.searchTerm.setValue('');\n }\n\n isUserAlreadySelected(user: LightUserRepresentation): boolean {\n if (this.selectedUsers?.length > 0) {\n const result = this.selectedUsers.find((selectedUser) => selectedUser.id === user.id);\n\n return !!result;\n }\n return false;\n }\n}\n","<div class=\"adf-people-widget {{field.className}}\"\n [class.adf-invalid]=\"!field.isValid && isTouched()\"\n [class.adf-readonly]=\"field.readOnly\"\n id=\"people-widget-content\">\n <label class=\"adf-label\" [attr.for]=\"field.id\">{{field.name | translate }}<span class=\"adf-asterisk\" [style.visibility]=\"isRequired() ? 'visible' : 'hidden'\">*</span></label>\n <mat-form-field\n class=\"adf-people-widget-field\">\n <mat-chip-grid #chipGrid [attr.aria-label]=\"'ADF_PROCESS_LIST.START_PROCESS.FORM.LABEL.SELECTED_PEOPLE' | translate\">\n <mat-chip-row\n *ngFor=\"let user of selectedUsers\"\n (removed)=\"onRemove(user)\"\n [disabled]=\"field.readOnly\"\n [attr.data-automation-id]=\"'adf-people-widget-chip-' + user.id\"\n class=\"adf-people-widget-field-chip\">\n {{ getDisplayName(user) }}\n <button matChipRemove [attr.aria-label]=\"'remove ' + user.firstName\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-chip-row>\n <input #inputValue\n matInput\n class=\"adf-input\"\n [matChipInputFor]=\"chipGrid\"\n data-automation-id=\"adf-people-search-input\"\n type=\"text\"\n [disabled]=\"!multiSelect && selectedUsers.length > 0 || field.readOnly\"\n [id]=\"field.id\"\n [formControl]=\"searchTerm\"\n [placeholder]=\"selectedUsers.length > 0 ? '' : field.placeholder\"\n [matAutocomplete]=\"auto\"\n (blur)=\"markAsTouched()\"\n [title]=\"field.tooltip\">\n </mat-chip-grid>\n\n <mat-autocomplete class=\"adf-people-widget-list\"\n #auto=\"matAutocomplete\"\n (optionSelected)=\"onItemSelect($event.option.value)\"\n [displayWith]=\"getDisplayName\">\n <mat-option *ngFor=\"let user of users$ | async; let i = index\" [value]=\"user\" [disabled]=\"isUserAlreadySelected(user)\">\n <div class=\"adf-people-widget-row\" id=\"adf-people-widget-user-{{i}}\">\n <div [outerHTML]=\"user | usernameInitials:'adf-people-widget-pic'\"></div>\n <div *ngIf=\"user.pictureId\" class=\"adf-people-widget-image-row\">\n <img id=\"adf-people-widget-pic-{{i}}\" class=\"adf-people-widget-image\"\n [alt]=\"getDisplayName(user)\" [src]=\"peopleProcessService.getUserImage(user.id.toString())\"/>\n </div>\n <span class=\"adf-people-label-name\">{{getDisplayName(user)}}</span>\n </div>\n </mat-option>\n </mat-autocomplete>\n </mat-form-field>\n <error-widget [error]=\"field.validationSummary\" />\n <error-widget *ngIf=\"isInvalidFieldRequired() && isTouched()\" required=\"{{ 'FORM.FIELD.REQUIRED' | translate }}\" />\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/component-selector */\n\nimport { Component, ElementRef, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { ErrorWidgetComponent, FormService, GroupModel, WidgetComponent } from '@alfresco/adf-core';\nimport { catchError, debounceTime, distinctUntilChanged, switchMap, tap } from 'rxjs/operators';\nimport { merge, of } from 'rxjs';\nimport { ReactiveFormsModule, UntypedFormControl } from '@angular/forms';\nimport { PeopleProcessService } from '../../../services/people-process.service';\nimport { CommonModule } from '@angular/common';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n selector: 'functional-group-widget',\n imports: [\n CommonModule,\n MatFormFieldModule,\n TranslatePipe,\n MatInputModule,\n ReactiveFormsModule,\n MatAutocompleteModule,\n ErrorWidgetComponent,\n MatChipsModule,\n MatIconModule\n ],\n templateUrl: './functional-group.widget.html',\n styleUrls: ['./functional-group.widget.scss'],\n host: {\n '(click)': 'event($event)',\n '(blur)': 'event($event)',\n '(change)': 'event($event)',\n '(focus)': 'event($event)',\n '(focusin)': 'event($event)',\n '(focusout)': 'event($event)',\n '(input)': 'event($event)',\n '(invalid)': 'event($event)',\n '(select)': 'event($event)'\n },\n encapsulation: ViewEncapsulation.None\n})\nexport class FunctionalGroupWidgetComponent extends WidgetComponent implements OnInit {\n minTermLength: number = 1;\n groupId: string;\n searchTerm = new UntypedFormControl();\n groups$ = merge(this.searchTerm.valueChanges).pipe(\n distinctUntilChanged(),\n tap((search: GroupModel | string) => {\n const isValid = typeof search !== 'string';\n const empty = search === '';\n this.validateGroup(isValid, empty);\n }),\n debounceTime(300),\n switchMap((searchTerm) => {\n if (typeof searchTerm !== 'string' || searchTerm.length < this.minTermLength) {\n return of([]);\n }\n return this.peopleProcessService.getWorkflowGroups(searchTerm, this.groupId).pipe(catchError(() => of([])));\n })\n );\n selectedGroups: GroupModel[] = [];\n multiSelect = false;\n\n @ViewChild('inputValue', { static: true })\n input: ElementRef;\n\n constructor(public peopleProcessService: PeopleProcessService, public formService: FormService, public elementRef: ElementRef) {\n super(formService);\n }\n\n ngOnInit() {\n if (this.field) {\n if (this.field.value) {\n Array.isArray(this.field.value) ? this.selectedGroups.push(...this.field.value) : this.selectedGroups.push(this.field.value);\n }\n if (this.field.readOnly) {\n this.searchTerm.disable();\n }\n\n const params = this.field.params;\n if (params?.restrictWithGroup) {\n const restrictWithGroup = params.restrictWithGroup;\n this.groupId = restrictWithGroup.id;\n }\n if (params?.multiple) {\n this.multiSelect = params.multiple;\n this.field.value = this.selectedGroups;\n }\n\n if (this.field.value?.name) {\n this.searchTerm.setValue(this.field.value.name);\n }\n }\n }\n\n updateOption(option?: GroupModel) {\n if (option) {\n if (this.multiSelect) {\n if (!this.isGroupAlreadySelected(option)) {\n this.field.value = this.selectedGroups;\n } else {\n return;\n }\n } else {\n this.field.value = option;\n }\n this.selectedGroups.push(option);\n } else {\n this.field.value = null;\n }\n\n this.searchTerm.setValue('');\n this.input.nativeElement.value = '';\n this.field.updateForm();\n }\n\n validateGroup(valid: boolean, empty: boolean) {\n const isEmpty = !this.field.required && (empty || valid);\n const hasValue = this.field.required && valid;\n\n if (hasValue || isEmpty) {\n this.field.validationSummary.message = '';\n this.field.validate();\n this.field.form.validateForm();\n } else {\n this.field.validationSummary.message = 'FORM.FIELD.VALIDATOR.INVALID_VALUE';\n this.field.markAsInvalid();\n this.field.form.markAsInvalid();\n }\n }\n\n getDisplayName(model: GroupModel | string) {\n if (model) {\n return typeof model === 'string' ? model : model.name;\n }\n return '';\n }\n\n onRemove(group: GroupModel): void {\n const index = this.selectedGroups.indexOf(group);\n if (index >= 0) {\n this.selectedGroups.splice(index, 1);\n this.field.value = this.selectedGroups;\n }\n }\n\n isGroupAlreadySelected(group: GroupModel): boolean {\n return this.selectedGroups?.some((selectedGroup) => selectedGroup.id === group.id);\n }\n}\n","<div\n class=\"adf-group-widget {{field.className}}\"\n [class.is-dirty]=\"!!field.value\"\n [class.adf-invalid]=\"!field.isValid && isTouched()\"\n [class.adf-readonly]=\"field.readOnly\"\n id=\"functional-group-div\"\n>\n <label class=\"adf-label\" [attr.for]=\"field.id\"\n >{{field.name | translate }}<span class=\"adf-asterisk\" [style.visibility]=\"isRequired() ? 'visible' : 'hidden'\">*</span></label\n >\n <mat-form-field class=\"adf-group-widget-field\">\n <mat-chip-grid #chipGrid>\n <mat-chip-row\n *ngFor=\"let group of selectedGroups\"\n (removed)=\"onRemove(group)\"\n [disabled]=\"field.readOnly\"\n [attr.data-automation-id]=\"'adf-group-widget-chip-' + group.id\"\n class=\"adf-group-widget-field-chip\"\n >\n {{ getDisplayName(group) }}\n <button matChipRemove [attr.aria-label]=\"'remove ' + group.name\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-chip-row>\n <input\n matInput\n class=\"adf-input\"\n type=\"text\"\n data-automation-id=\"adf-group-search-input\"\n [matChipInputFor]=\"chipGrid\"\n [id]=\"field.id\"\n [formControl]=\"searchTerm\"\n [disabled]=\"!multiSelect && selectedGroups.length > 0 || field.readOnly\"\n [placeholder]=\"field.placeholder\"\n (blur)=\"markAsTouched()\"\n [matAutocomplete]=\"auto\"\n #inputValue\n />\n </mat-chip-grid>\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"updateOption($event.option.value)\" [displayWith]=\"getDisplayName\">\n <mat-option\n *ngFor=\"let item of groups$ | async; let i = index\"\n id=\"adf-group-widget-user-{{i}}\"\n [id]=\"field.id +'-'+item.id\"\n [value]=\"item\"\n [disabled]=\"isGroupAlreadySelected(item)\"\n >\n <span id=\"adf-group-label-name\">{{item.name}}</span>\n </mat-option>\n </mat-autocomplete>\n </mat-form-field>\n <error-widget [error]=\"field.validationSummary\" />\n <error-widget *ngIf=\"isInvalidFieldRequired() && isTouched()\" required=\"{{ 'FORM.FIELD.REQUIRED' | translate }}\" />\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AlfrescoApiService } from '@alfresco/adf-content-services';\nimport { FormFieldOption } from '@alfresco/adf-core';\nimport { Injectable } from '@angular/core';\nimport { Observable, from, throwError } from 'rxjs';\nimport { ProcessDefinitionsApi } from '@alfresco/js-api';\nimport { catchError } from 'rxjs/operators';\nimport { DynamicTableColumnOption } from '../widgets/dynamic-table/editors/models/dynamic-table-column-option.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ProcessDefinitionService {\n static UNKNOWN_ERROR_MESSAGE: string = 'Unknown error';\n static GENERIC_ERROR_MESSAGE: string = 'Server error';\n\n private _processDefinitionsApi: ProcessDefinitionsApi;\n get processDefinitionsApi(): ProcessDefinitionsApi {\n this._processDefinitionsApi = this._processDefinitionsApi ?? new ProcessDefinitionsApi(this.apiService.getInstance());\n return this._processDefinitionsApi;\n }\n\n constructor(private apiService: AlfrescoApiService) {}\n\n /**\n * Gets values of fields populated by a REST backend using a process ID.\n *\n * @param processDefinitionId Process identifier\n * @param field Field identifier\n * @returns Field values\n */\n getRestFieldValuesByProcessId(processDefinitionId: string, field: string): Observable<FormFieldOption[]> {\n return from(this.processDefinitionsApi.getRestFieldValues(processDefinitionId, field)).pipe(catchError((err) => this.handleError(err)));\n }\n\n /**\n * Gets column values of fields populated by a REST backend using a process ID.\n *\n * @param processDefinitionId Process identifier\n * @param field Field identifier\n * @param column Column identifier\n * @returns Field values\n */\n getRestFieldValuesColumnByProcessId(processDefinitionId: string, field: string, column?: string): Observable<DynamicTableColumnOption[]> {\n return from(this.processDefinitionsApi.getRestTableFieldValues(processDefinitionId, field, column)).pipe(\n catchError((err) => this.handleError(err))\n );\n }\n\n /**\n * Creates a JSON representation of form data.\n *\n * @param res Object representing form data\n * @returns JSON data\n */\n toJson(res: any) {\n if (res) {\n return res || {};\n }\n return {};\n }\n\n /**\n * Reports an error message.\n *\n * @param error Data object with optional `message` and `status` fields for the error\n * @returns Error message\n */\n private handleError(error: any): Observable<any> {\n let errMsg = ProcessDefinitionService.UNKNOWN_ERROR_MESSAGE;\n if (error) {\n errMsg = error.message\n ? error.message\n : error.status\n ? `${error.status} - ${error.statusText}`\n : ProcessDefinitionService.GENERIC_ERROR_MESSAGE;\n }\n return throwError(errMsg);\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/component-selector */\n\nimport { ErrorWidgetComponent, FormService, WidgetComponent } from '@alfresco/adf-core';\nimport { Component, OnInit, ViewEncapsulation } from '@angular/core';\nimport { TaskFormService } from '../../services/task-form.service';\nimport { ProcessDefinitionService } from '../../services/process-definition.service';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n selector: 'radio-buttons-widget',\n imports: [CommonModule, TranslatePipe, MatRadioModule, FormsModule, ErrorWidgetComponent],\n templateUrl: './radio-buttons.widget.html',\n styleUrls: ['./radio-buttons.widget.scss'],\n host: {\n '(click)': 'event($event)',\n '(blur)': 'event($event)',\n '(change)': 'event($event)',\n '(focus)': 'event($event)',\n '(focusin)': 'event($event)',\n '(focusout)': 'event($event)',\n '(input)': 'event($event)',\n '(invalid)': 'event($event)',\n '(select)': 'event($event)'\n },\n encapsulation: ViewEncapsulation.None\n})\nexport class RadioButtonsWidgetComponent extends WidgetComponent implements OnInit {\n constructor(\n public formService: FormService,\n private taskFormService: TaskFormService,\n private processDefinitionService: ProcessDefinitionService\n ) {\n super(formService);\n }\n\n ngOnInit() {\n if (this.isValidRestConfig() && !this.isReadOnlyForm()) {\n if (this.field.form.taskId) {\n this.getOptionsByTaskId();\n } else {\n this.getOptionsByProcessDefinitionId();\n }\n }\n }\n\n getOptionsByTaskId() {\n this.taskFormService.getRestFieldValues(this.field.form.taskId, this.field.id).subscribe((formFieldOption) => {\n this.field.options = formFieldOption || [];\n this.field.updateForm();\n });\n }\n\n getOptionsByProcessDefinitionId() {\n this.processDefinitionService\n .getRestFieldValuesByProcessId(this.field.form.processDefinitionId, this.field.id)\n .subscribe((formFieldOption) => {\n this.field.options = formFieldOption || [];\n this.field.updateForm();\n });\n }\n\n onOptionClick(optionSelected: any) {\n this.field.value = optionSelected;\n this.fieldChanged.emit(this.field);\n }\n\n private isRestType(): boolean {\n return this.field?.optionType === 'rest';\n }\n\n private isReadOnlyForm(): boolean {\n return !!this.field?.form?.readOnly;\n }\n\n private hasRestUrl(): boolean {\n return !!this.field?.restUrl;\n }\n\n private isValidRestConfig(): boolean {\n return this.isRestType() && this.hasRestUrl();\n }\n}\n","<div class=\"adf-radio-buttons-widget {{field.className}}\" [class.adf-readonly]=\"field.readOnly\" [id]=\"field.id\">\n <div class=\"adf-radio-button-container\">\n <label class=\"adf-label\" [attr.for]=\"field.id\"\n >{{field.name | translate }}<span class=\"adf-asterisk\" [style.visibility]=\"isRequired() ? 'visible' : 'hidden'\">*</span></label\n >\n <mat-radio-group class=\"adf-radio-group\" [(ngModel)]=\"field.value\" [disabled]=\"field.readOnly\">\n <mat-radio-button\n [title]=\"field.tooltip\"\n [id]=\"field.id + '-' + opt.id\"\n [name]=\"field.id\"\n [value]=\"opt.id\"\n [checked]=\"field.value === opt.id\"\n (change)=\"onOptionClick(opt.id)\"\n color=\"primary\"\n class=\"adf-radio-button\"\n *ngFor=\"let opt of field.options\"\n >\n {{opt.name}}\n </mat-radio-button>\n </mat-radio-group>\n </div>\n <error-widget [error]=\"field.validationSummary\" />\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/component-selector */\n\nimport { Component, DestroyRef, inject, OnInit, ViewEncapsulation } from '@angular/core';\nimport {\n FormService,\n FormFieldOption,\n WidgetComponent,\n ErrorWidgetComponent,\n ErrorMessageModel,\n FormFieldModel,\n ReactiveFormWidget\n} from '@alfresco/adf-core';\nimport { ProcessDefinitionService } from '../../services/process-definition.service';\nimport { TaskFormService } from '../../services/task-form.service';\nimport { CommonModule } from '@angular/common';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { AbstractControl, FormControl, ReactiveFormsModule, ValidationErrors, ValidatorFn } from '@angular/forms';\nimport { filter } from 'rxjs/operators';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'dropdown-widget',\n imports: [CommonModule, TranslatePipe, MatFormFieldModule, MatSelectModule, ReactiveFormsModule, ErrorWidgetComponent],\n templateUrl: './dropdown.widget.html',\n styleUrls: ['./dropdown.widget.scss'],\n host: {\n '(click)': 'event($event)',\n '(blur)': 'event($event)',\n '(change)': 'event($event)',\n '(focus)': 'event($event)',\n '(focusin)': 'event($event)',\n '(focusout)': 'event($event)',\n '(input)': 'event($event)',\n '(invalid)': 'event($event)',\n '(select)': 'event($event)'\n },\n encapsulation: ViewEncapsulation.None\n})\nexport class DropdownWidgetComponent extends WidgetComponent implements OnInit, ReactiveFormWidget {\n public formService = inject(FormService);\n public taskFormService = inject(TaskFormService);\n public processDefinitionService = inject(ProcessDefinitionService);\n private readonly destroyRef = inject(DestroyRef);\n\n dropdownControl = new FormControl<FormFieldOption | string>(undefined);\n\n get isReadOnlyType(): boolean {\n return this.field.type === 'readonly';\n }\n\n get isReadOnlyField(): boolean {\n return this.field.readOnly;\n }\n\n private get isRestType(): boolean {\n return this.field?.optionType === 'rest';\n }\n\n private get hasRestUrl(): boolean {\n return !!this.field?.restUrl;\n }\n\n private get isValidRestConfig(): boolean {\n return this.isRestType && this.hasRestUrl;\n }\n\n ngOnInit() {\n if (this.isValidRestConfig && !this.isReadOnlyForm()) {\n if (this.field.form.taskId) {\n this.getValuesByTaskId();\n } else {\n this.getValuesByProcessDefinitionId();\n }\n }\n\n this.setFormControlValue();\n this.updateFormControlState();\n this.subscribeToInputChanges();\n this.handleErrors();\n }\n\n updateReactiveFormControl(): void {\n this.updateFormControlState();\n this.handleErrors();\n }\n\n getValuesByTaskId() {\n this.taskFormService.getRestFieldValues(this.field.form.taskId, this.field.id).subscribe((formFieldOption) => {\n const options = [];\n if (this.field.emptyOption) {\n options.push(this.field.emptyOption);\n }\n this.field.options = options.concat(formFieldOption || []);\n this.field.updateForm();\n });\n }\n\n getValuesByProcessDefinitionId() {\n this.processDefinitionService\n .getRestFieldValuesByProcessId(this.field.form.processDefinitionId, this.field.id)\n .subscribe((formFieldOption) => {\n const options = [];\n if (this.field.emptyOption) {\n options.push(this.field.emptyOption);\n }\n this.field.options = options.concat(formFieldOption || []);\n this.field.updateForm();\n });\n }\n\n private isReadOnlyForm(): boolean {\n return !!this.field?.form?.readOnly;\n }\n\n private subscribeToInputChanges(): void {\n this.dropdownControl.valueChanges\n .pipe(\n filter(() => !!this.field),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe((value) => {\n this.setOptionValue(value, this.field);\n this.handleErrors();\n this.onFieldChanged(this.field);\n });\n }\n\n private setFormControlValue(): void {\n this.dropdownControl.setValue(this.getOptionValue(this.field?.value), { emitEvent: false });\n }\n\n private updateFormControlState(): void {\n this.dropdownControl.setValidators(this.isRequired() && this.field?.isVisible ? [this.customRequiredValidator(this.field)] : []);\n this.field?.readOnly || this.readOnly\n ? this.dropdownControl.disable({ emitEvent: false })\n : this.dropdownControl.enable({ emitEvent: false });\n\n this.dropdownControl.updateValueAndValidity({ emitEvent: false });\n }\n\n private handleErrors() {\n if (!this.field) {\n return;\n }\n\n if (this.dropdownControl.valid) {\n this.field.validationSummary = new ErrorMessageModel('');\n this.field.markAsValid();\n return;\n }\n\n if (this.dropdownControl.invalid && this.dropdownControl.errors.required) {\n this.field.validationSummary = new ErrorMessageModel({ message: 'FORM.FIELD.REQUIRED' });\n this.field.markAsInvalid();\n }\n }\n\n private setOptionValue(option: string | FormFieldOption, field: FormFieldModel) {\n if (typeof option === 'string') {\n field.value = option;\n return;\n }\n if (option.id === 'empty' || option.name !== field.value) {\n field.value = option.id;\n return;\n }\n\n field.value = option.name;\n }\n\n private getOptionValue(value?: string | FormFieldOption) {\n if (this.field?.readOnly || this.readOnly) {\n return value;\n }\n\n if (typeof value === 'string') {\n return this.field.options.find((option) => option.id === value || option.name === value);\n }\n\n return value as FormFieldOption | undefined;\n }\n\n private customRequiredValidator(field: FormFieldModel): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const isEmptyInputValue = (value: any) => value == null || ((typeof value === 'string' || Array.isArray(value)) && value.length === 0);\n const isEqualToEmptyValue = (value: any) =>\n field.hasEmptyValue &&\n (value === field.emptyOption.id ||\n value === field.emptyOption.name ||\n (value.id === field.emptyOption.id && value.name === field.emptyOption.name));\n\n return isEmptyInputValue(control.value) || isEqualToEmptyValue(control.value) ? { required: true } : null;\n };\n }\n}\n","<div\n class=\"adf-dropdown-widget {{field.className}}\"\n [class.adf-invalid]=\"dropdownControl.invalid && dropdownControl.touched\"\n [class.adf-readonly]=\"field.readOnly\"\n>\n <label class=\"adf-label\" [attr.for]=\"field.id\"\n >{{field.name | translate }}<span class=\"adf-asterisk\" [style.visibility]=\"isRequired() ? 'visible' : 'hidden'\">*</span></label\n >\n <mat-form-field>\n <mat-select class=\"adf-select\" [id]=\"field.id\" [formControl]=\"dropdownControl\">\n <mat-option *ngFor=\"let opt of field.options\" [value]=\"opt\" [id]=\"opt.id\">{{opt.name}}</mat-option>\n <mat-option id=\"readonlyOption\" *ngIf=\"dropdownControl.disabled\" [value]=\"field.value\">{{field.value}}</mat-option>\n </mat-select>\n </mat-form-field>\n <ng-container *ngIf=\"!isReadOnlyField && dropdownControl.touched\">\n <error-widget [error]=\"field.validationSummary\" />\n </ng-container>\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/component-selector */\n\nimport { FormService, FormFieldOption, WidgetComponent, ErrorWidgetComponent } from '@alfresco/adf-core';\nimport { ENTER, ESCAPE } from '@angular/cdk/keycodes';\nimport { Component, OnInit, ViewEncapsulation } from '@angular/core';\nimport { TaskFormService } from '../../services/task-form.service';\nimport { ProcessDefinitionService } from '../../services/process-definition.service';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { FormsModule } from '@angular/forms';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatInputModule } from '@angular/material/input';\n\n@Component({\n selector: 'typeahead-widget',\n imports: [CommonModule, TranslatePipe, MatFormFieldModule, FormsModule, MatAutocompleteModule, ErrorWidgetComponent, MatInputModule],\n templateUrl: './typeahead.widget.html',\n styleUrls: ['./typeahead.widget.scss'],\n host: {\n '(click)': 'event($event)',\n '(blur)': 'event($event)',\n '(change)': 'event($event)',\n '(focus)': 'event($event)',\n '(focusin)': 'event($event)',\n '(focusout)': 'event($event)',\n '(input)': 'event($event)',\n '(invalid)': 'event($event)',\n '(select)': 'event($event)'\n },\n encapsulation: ViewEncapsulation.None\n})\nexport class TypeaheadWidgetComponent extends WidgetComponent implements OnInit {\n minTermLength: number = 1;\n value: string;\n oldValue: string;\n options: FormFieldOption[] = [];\n\n constructor(\n public formService: FormService,\n private taskFormService: TaskFormService,\n private processDefinitionService: ProcessDefinitionService\n ) {\n super(formService);\n }\n\n ngOnInit() {\n if (this.field.form.taskId && this.field.restUrl) {\n this.getValuesByTaskId();\n } else if (this.field.form.processDefinitionId && this.field.restUrl) {\n this.getValuesByProcessDefinitionId();\n }\n if (this.isReadOnlyType()) {\n this.value = this.field.value;\n }\n }\n\n getValuesByTaskId() {\n this.taskFormService.getRestFieldValues(this.field.form.taskId, this.field.id).subscribe((formFieldOption) => {\n const options = formFieldOption || [];\n this.field.options = options;\n\n const fieldValue = this.field.value;\n if (fieldValue) {\n const toSelect = options.find((item) => item.id === fieldValue || item.name.toLocaleLowerCase() === fieldValue.toLocaleLowerCase());\n if (toSelect) {\n this.value = toSelect.name;\n }\n }\n this.onFieldChanged(this.field);\n this.field.updateForm();\n });\n }\n\n getValuesByProcessDefinitionId() {\n this.processDefinitionService\n .getRestFieldValuesByProcessId(this.field.form.processDefinitionId, this.field.id)\n .subscribe((formFieldOption) => {\n const options = formFieldOption || [];\n this.field.options = options;\n\n const fieldValue = this.field.value;\n if (fieldValue) {\n const toSelect = options.find((item) => item.id === fieldValue);\n if (toSelect) {\n this.value = toSelect.name;\n }\n }\n this.onFieldChanged(this.field);\n this.field.updateForm();\n });\n }\n\n getOptions(): FormFieldOption[] {\n const val = this.value.trim().toLocaleLowerCase();\n return this.field.options.filter((item) => {\n const name = item.name.toLocaleLowerCase();\n return name.indexOf(val) > -1;\n });\n }\n\n isValidOptionName(optionName: string): boolean {\n const option = this.field.options.find((item) => item.name && item.name.toLocaleLowerCase() === optionName.toLocaleLowerCase());\n return !!option;\n }\n\n onKeyUp(event: KeyboardEvent) {\n if (this.value && this.value.trim().length >= this.minTermLength && this.oldValue !== this.value) {\n if (event.keyCode !== ESCAPE && event.keyCode !== ENTER) {\n if (this.value.length >= this.minTermLength) {\n this.options = this.getOptions();\n this.oldValue = this.value;\n if (this.isValidOptionName(this.value)) {\n this.field.value = this.options[0].id;\n }\n }\n }\n }\n if (this.isValueDefined() && this.value.trim().length === 0) {\n this.oldValue = this.value;\n this.options = [];\n }\n }\n\n onItemSelect(item: FormFieldOption) {\n if (item) {\n this.field.value = item.id;\n this.value = item.name;\n this.onFieldChanged(this.field);\n }\n }\n\n validate() {\n this.field.value = this.value;\n }\n\n isValueDefined() {\n return this.value !== null && this.value !== undefined;\n }\n\n isReadOnlyType(): boolean {\n return this.field.type === 'readonly';\n }\n}\n","<div class=\"adf-typeahead-widget-container\">\n <div class=\"adf-typeahead-widget {{field.className}}\"\n [class.is-dirty]=\"value\"\n [class.adf-invalid]=\"!field.isValid\"\n [class.adf-readonly]=\"field.readOnly\"\n id=\"typehead-div\">\n <mat-form-field>\n <label class=\"adf-label\" [attr.for]=\"field.id\">{{field.name | translate }}</label>\n <input matInput class=\"adf-input\"\n type=\"text\"\n [id]=\"field.id\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"validate()\"\n (keyup)=\"onKeyUp($event)\"\n [disabled]=\"field.readOnly\"\n data-automation-id=\"adf-typeahed-search-input\"\n placeholder=\"{{field.placeholder}}\"\n [matAutocomplete]=\"auto\">\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"onItemSelect($event.option.value)\">\n <mat-option *ngFor=\"let item of options; let i = index\" id=\"adf-typeahed-widget-user-{{i}}\" [value]=\"item\">\n <span id=\"adf-typeahed-label-name\">{{item.name}}</span>\n </mat-option>\n </mat-autocomplete>\n </mat-form-field>\n\n <error-widget [error]=\"field.validationSummary\" />\n <error-widget *ngIf=\"isInvalidFieldRequired()\" required=\"{{ 'FORM.FIELD.REQUIRED' | translate }}\" />\n </div>\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseViewerWidgetComponent, ErrorWidgetComponent, FormService } from '@alfresco/adf-core';\nimport { Component, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { AlfrescoViewerComponent } from '@alfresco/adf-content-services';\n\n/* eslint-disable @angular-eslint/component-selector */\n\n@Component({\n selector: 'file-viewer-widget',\n imports: [CommonModule, TranslatePipe, AlfrescoViewerComponent, ErrorWidgetComponent],\n templateUrl: './file-viewer.widget.html',\n styleUrls: ['./file-viewer.widget.scss'],\n host: {\n '(click)': 'event($event)',\n '(blur)': 'event($event)',\n '(change)': 'event($event)',\n '(focus)': 'event($event)',\n '(focusin)': 'event($event)',\n '(focusout)': 'event($event)',\n '(input)': 'event($event)',\n '(invalid)': 'event($event)',\n '(select)': 'event($event)'\n },\n encapsulation: ViewEncapsulation.None\n})\nexport class FileViewerWidgetComponent extends BaseViewerWidgetComponent {\n constructor(formService: FormService) {\n super(formService);\n }\n}\n","<div class=\"adf-file-viewer-widget {{field.className}}\" [class.adf-invalid]=\"!field.isValid\" [class.adf-readonly]=\"field.readOnly\">\n <label class=\"adf-label\" [attr.for]=\"field.id\"\n >{{field.name | translate }}<span class=\"adf-asterisk\" [style.visibility]=\"isRequired() ? 'visible' : 'hidden'\">*</span></label\n >\n <adf-alfresco-viewer [nodeId]=\"field.value\" [showViewer]=\"field.value\" [allowGoBack]=\"false\" />\n <error-widget [error]=\"field.validationSummary\" />\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FormFieldModel, FormFieldEvent, FormModel } from '@alfresco/adf-core';\nimport { DynamicRowValidationSummary } from '../widgets/dynamic-table/editors/models/dynamic-row-validation-summary.model';\nimport { DynamicTableRow } from '../widgets/dynamic-table/editors/models/dynamic-table-row.model';\n\nexport class ValidateDynamicTableRowEvent extends FormFieldEvent {\n\n isValid = true;\n\n constructor(form: FormModel,\n field: FormFieldModel,\n public row: DynamicTableRow,\n public summary: DynamicRowValidationSummary) {\n super(form, field);\n }\n\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/component-selector */\n\nimport { CellValidator } from './cell-validator.model';\nimport { DynamicRowValidationSummary } from './dynamic-row-validation-summary.model';\nimport { DynamicTableColumn } from './dynamic-table-column.model';\nimport { DynamicTableRow } from './dynamic-table-row.model';\nimport { isValid } from 'date-fns';\n\nexport class DateCellValidator implements CellValidator {\n static DATE_TYPE = 'Date';\n\n private supportedTypes: string[] = [DateCellValidator.DATE_TYPE];\n\n isSupported(column: DynamicTableColumn): boolean {\n return !!(column?.editable && this.supportedTypes.indexOf(column?.type) > -1);\n }\n\n validate(row: DynamicTableRow, column: DynamicTableColumn, summary?: DynamicRowValidationSummary): boolean {\n if (this.isSupported(column)) {\n const value = row?.value[column.id];\n\n if (value) {\n const dateValue = new Date(value);\n\n if (isValid(dateValue)) {\n return true;\n }\n\n if (summary) {\n summary.isValid = false;\n summary.message = `Invalid '${column.name}' format.`;\n }\n\n return false;\n } else {\n return !column.required;\n }\n }\n\n return true;\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ErrorMessageModel } from '@alfresco/adf-core';\n\nexport class DynamicRowValidationSummary extends ErrorMessageModel {\n isValid: boolean;\n\n constructor(json?: any) {\n super(json);\n\n this.isValid = json?.isValid;\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/component-selector */\n\nimport { CellValidator } from './cell-validator.model';\nimport { DynamicRowValidationSummary } from './dynamic-row-validation-summary.model';\nimport { DynamicTableColumn } from './dynamic-table-column.model';\nimport { DynamicTableRow } from './dynamic-table-row.model';\n\nexport class NumberCellValidator implements CellValidator {\n private supportedTypes: string[] = ['Number', 'Amount'];\n\n isSupported(column: DynamicTableColumn): boolean {\n return column?.required && this.supportedTypes.indexOf(column.type) > -1;\n }\n\n isNumber(value: any): boolean {\n if (value === null || value === undefined || value === '') {\n return false;\n }\n\n return !isNaN(+value);\n }\n\n validate(row: DynamicTableRow, column: DynamicTableColumn, summary?: DynamicRowValidationSummary): boolean {\n if (this.isSupported(column)) {\n const value = row.value[column.id];\n if (value === null || value === undefined || value === '' || this.isNumber(value)) {\n return true;\n }\n\n if (summary) {\n summary.isValid = false;\n summary.message = `Field '${column.name}' must be a number.`;\n }\n return false;\n }\n return true;\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/component-selector */\n\nimport { CellValidator } from './cell-validator.model';\nimport { DynamicRowValidationSummary } from './dynamic-row-validation-summary.model';\nimport { DynamicTableColumn } from './dynamic-table-column.model';\nimport { DynamicTableRow } from './dynamic-table-row.model';\n\nexport class RequiredCellValidator implements CellValidator {\n private supportedTypes: string[] = ['String', 'Number', 'Amount', 'Date', 'Dropdown'];\n\n isSupported(column: DynamicTableColumn): boolean {\n return column?.required && this.supportedTypes.indexOf(column.type) > -1;\n }\n\n validate(row: DynamicTableRow, column: DynamicTableColumn, summary?: DynamicRowValidationSummary): boolean {\n if (this.isSupported(column)) {\n const value = row.value[column.id];\n if (column.required) {\n if (value === null || value === undefined || value === '') {\n if (summary) {\n summary.isValid = false;\n summary.message = `Field '${column.name}' is required.`;\n }\n return false;\n }\n }\n }\n\n return true;\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ValidateDynamicTableRowEvent } from '../../../../events/validate-dynamic-table-row.event';\nimport { FormService, FormFieldModel, FormWidgetModel } from '@alfresco/adf-core';\nimport { CellValidator } from './cell-validator.model';\nimport { DateCellValidator } from './date-cell-validator-model';\nimport { DynamicRowValidationSummary } from './dynamic-row-validation-summary.model';\nimport { DynamicTableColumn } from './dynamic-table-column.model';\nimport { DynamicTableRow } from './dynamic-table-row.model';\nimport { NumberCellValidator } from './number-cell-validator.model';\nimport { RequiredCellValidator } from './required-cell-validator.model';\n\nexport class DynamicTableModel extends FormWidgetModel {\n field: FormFieldModel;\n columns: DynamicTableColumn[] = [];\n visibleColumns: DynamicTableColumn[] = [];\n rows: DynamicTableRow[] = [];\n\n private _selectedRow: DynamicTableRow;\n private readonly _validators: CellValidator[] = [];\n\n get selectedRow(): DynamicTableRow {\n return this._selectedRow;\n }\n\n set selectedRow(value: DynamicTableRow) {\n if (this._selectedRow && this._selectedRow === value) {\n this._selectedRow.selected = false;\n this._selectedRow = null;\n return;\n }\n\n this.rows.forEach((row) => (row.selected = false));\n\n this._selectedRow = value;\n\n if (value) {\n this._selectedRow.selected = true;\n }\n }\n\n constructor(field: FormFieldModel, private formService: FormService) {\n super(field.form, field.json);\n this.field = field;\n\n if (field.json) {\n const columns = this.getColumns(field);\n if (columns) {\n this.columns = columns;\n this.visibleColumns = this.columns.filter((col) => col.visible);\n }\n\n if (field.json.value) {\n this.rows = field.json.value.map((obj) => ({ selected: false, value: obj } as DynamicTableRow));\n }\n }\n\n this._validators = [new RequiredCellValidator(), new DateCellValidator(), new NumberCellValidator()];\n }\n\n private getColumns(field: FormFieldModel): DynamicTableColumn[] {\n if (field?.json) {\n let definitions = field.json.columnDefinitions;\n if (!definitions && field.json.params?.field) {\n definitions = field.json.params.field.columnDefinitions;\n }\n\n if (definitions) {\n return definitions.map((obj) => obj as DynamicTableColumn);\n }\n }\n return null;\n }\n\n flushValue() {\n if (this.field) {\n this.field.value = this.rows.map((r) => r.value);\n this.field.updateForm();\n }\n }\n\n moveRow(row: DynamicTableRow, offset: number) {\n const oldIndex = this.rows.indexOf(row);\n if (oldIndex > -1) {\n let newIndex = oldIndex + offset;\n\n if (newIndex < 0) {\n newIndex = 0;\n } else if (newIndex >= this.rows.length) {\n newIndex = this.rows.length;\n }\n\n const arr = this.rows.slice();\n arr.splice(oldIndex, 1);\n arr.splice(newIndex, 0, row);\n this.rows = arr;\n\n this.flushValue();\n }\n }\n\n deleteRow(row: DynamicTableRow) {\n if (row) {\n if (this.selectedRow === row) {\n this.selectedRow = null;\n }\n const idx = this.rows.indexOf(row);\n if (idx > -1) {\n this.rows.splice(idx, 1);\n this.flushValue();\n }\n }\n }\n\n addRow(row: DynamicTableRow) {\n if (row) {\n this.rows.push(row);\n // this.selectedRow = row;\n }\n }\n\n validateRow(row: DynamicTableRow): DynamicRowValidationSummary {\n const summary = new DynamicRowValidationSummary({\n isValid: true,\n message: null\n });\n\n const event = new ValidateDynamicTableRowEvent(this.form, this.field, row, summary);\n this.formService.validateDynamicTableRow.next(event);\n\n if (event.defaultPrevented || !summary.isValid) {\n return summary;\n }\n\n if (row) {\n for (const col of this.columns) {\n for (const validator of this._validators) {\n if (!validator.validate(row, col, summary)) {\n return summary;\n }\n }\n }\n }\n\n return summary;\n }\n\n getCellValue(row: DynamicTableRow, column: DynamicTableColumn): any {\n const rowValue = row.value[column.id];\n\n if (column.type === 'Dropdown') {\n if (rowValue) {\n return rowValue.name;\n }\n }\n\n if (column.type === 'Boolean') {\n return !!rowValue;\n }\n\n if (column.type === 'Date') {\n if (rowValue) {\n return new Date(rowValue.split('T')[0]);\n }\n }\n\n return rowValue || '';\n }\n\n getDisplayText(column: DynamicTableColumn): string {\n let columnName = column.name;\n if (column.type === 'Amount') {\n const currency = column.amountCurrency || '$';\n columnName = `${column.name} (${currency})`;\n }\n return columnName;\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/component-selector */\n\nimport { FormService, FormFieldModel } from '@alfresco/adf-core';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { DynamicTableColumnOption } from '../models/dynamic-table-column-option.model';\nimport { DynamicTableColumn } from '../models/dynamic-table-column.model';\nimport { DynamicTableRow } from '../models/dynamic-table-row.model';\nimport { DynamicTableModel } from '../models/dynamic-table.widget.model';\nimport { ProcessDefinitionService } from '../../../../services/process-definition.service';\nimport { TaskFormService } from '../../../../services/task-form.service';\nimport { CommonModule } from '@angular/common';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n selector: 'adf-dropdown-editor',\n imports: [CommonModule, MatFormFieldModule, MatSelectModule, FormsModule],\n templateUrl: './dropdown.editor.html',\n styleUrls: ['./dropdown.editor.scss']\n})\nexport class DropdownEditorComponent implements OnInit {\n value: any = null;\n options: DynamicTableColumnOption[] = [];\n\n @Input()\n table: DynamicTableModel;\n\n @Input()\n row: DynamicTableRow;\n\n @Input()\n column: DynamicTableColumn;\n\n constructor(\n public formService: FormService,\n private taskFormService: TaskFormService,\n private processDefinitionService: ProcessDefinitionService\n ) {}\n\n ngOnInit() {\n const field = this.table.field;\n if (field) {\n if (this.column.optionType === 'rest') {\n if (this.table.form?.taskId) {\n this.getValuesByTaskId(field);\n } else {\n this.getValuesByProcessDefinitionId(field);\n }\n } else {\n this.options = this.column.options || [];\n this.value = this.table.getCellValue(this.row, this.column);\n }\n }\n }\n\n getValuesByTaskId(field: FormFieldModel) {\n this.taskFormService.getRestFieldValuesColumn(field.form.taskId, field.id, this.column.id).subscribe((dynamicTableColumnOption) => {\n this.column.options = dynamicTableColumnOption || [];\n this.options = this.column.options;\n this.value = this.table.getCellValue(this.row, this.column);\n });\n }\n\n getValuesByProcessDefinitionId(field: FormFieldModel) {\n this.processDefinitionService\n .getRestFieldValuesColumnByProcessId(field.form.processDefinitionId, field.id, this.column.id)\n .subscribe((dynamicTableColumnOption) => {\n this.column.options = dynamicTableColumnOption || [];\n this.options = this.column.options;\n this.value = this.table.getCellValue(this.row, this.column);\n });\n }\n\n onValueChanged(row: DynamicTableRow, column: DynamicTableColumn, event: any) {\n let value: any = event.value;\n value = column.options.find((opt) => opt.name === value);\n row.value[column.id] = value;\n }\n}\n","<div class=\"dropdown-editor\">\n <label [attr.for]=\"column.id\">{{column.name}}</label>\n <mat-form-field>\n <mat-select\n floatPlaceholder=\"never\"\n class=\"adf-dropdown-editor-select\"\n [id]=\"column.id\"\n [(ngModel)]=\"value\"\n [required]=\"column.required\"\n [disabled]=\"!column.editable\"\n (selectionChange)=\"onValueChanged(row, column, $event)\">\n <mat-option />\n <mat-option *ngFor=\"let opt of options\" [value]=\"opt.name\" [id]=\"opt.id\">{{opt.name}}</mat-option>\n </mat-select>\n </mat-form-field>\n <span *ngFor=\"let opt of options\" id=\"testme\">{{opt | json}}</span>\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/component-selector */\n\nimport { Component, Input, OnInit } from '@angular/core';\nimport { DynamicTableColumn } from '../models/dynamic-table-column.model';\nimport { DynamicTableRow } from '../models/dynamic-table-row.model';\nimport { DynamicTableModel } from '../models/dynamic-table.widget.model';\nimport { CommonModule } from '@angular/common';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\n\n@Component({\n selector: 'adf-amount-editor',\n imports: [CommonModule, MatFormFieldModule, MatInputModule],\n templateUrl: './amount.editor.html',\n styleUrls: ['./amount.editor.scss']\n})\nexport class AmountEditorComponent implements OnInit {\n @Input()\n table: DynamicTableModel;\n\n @Input()\n row: DynamicTableRow;\n\n @Input()\n column: DynamicTableColumn;\n\n displayName: string;\n\n ngOnInit() {\n this.displayName = this.table.getDisplayText(this.column);\n }\n\n onValueChanged(row: DynamicTableRow, column: DynamicTableColumn, event: any) {\n const value: number = Number(event.target.value);\n row.value[column.id] = value;\n }\n}\n","<div class=\"adf-amount-editor\">\n <mat-form-field>\n <label [attr.for]=\"column.id\">{{displayName}}</label>\n <input matInput\n type=\"number\"\n [value]=\"table.getCellValue(row, column)\"\n (keyup)=\"onValueChanged(row, column, $event)\"\n [required]=\"column.required\"\n [disabled]=\"!column.editable\"\n [id]=\"column.id\">\n </mat-form-field>\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/component-selector */\n\nimport { Component, Input } from '@angular/core';\nimport { DynamicTableColumn } from '../models/dynamic-table-column.model';\nimport { DynamicTableRow } from '../models/dynamic-table-row.model';\nimport { DynamicTableModel } from '../models/dynamic-table.widget.model';\nimport { CommonModule } from '@angular/common';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\n\n@Component({\n selector: 'adf-boolean-editor',\n imports: [CommonModule, MatCheckboxModule],\n templateUrl: './boolean.editor.html',\n styleUrls: ['./boolean.editor.scss']\n})\nexport class BooleanEditorComponent {\n @Input()\n table: DynamicTableModel;\n\n @Input()\n row: DynamicTableRow;\n\n @Input()\n column: DynamicTableColumn;\n\n onValueChanged(row: DynamicTableRow, column: DynamicTableColumn, event: any) {\n const value: boolean = event.checked;\n row.value[column.id] = value;\n }\n}\n"," <label [attr.for]=\"column.id\">\n <mat-checkbox\n color=\"primary\"\n [id]=\"column.id\"\n [checked]=\"table.getCellValue(row, column)\"\n [required]=\"column.required\"\n [disabled]=\"!column.editable\"\n (change)=\"onValueChanged(row, column, $event)\">\n <span class=\"adf-checkbox-label\">{{column.name}}</span>\n </mat-checkbox>\n</label>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ADF_DATE_FORMATS, AdfDateFnsAdapter, DateFnsUtils } from '@alfresco/adf-core';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { DateAdapter, MAT_DATE_FORMATS } from '@angular/material/core';\nimport { MatDatepickerInputEvent, MatDatepickerModule } from '@angular/material/datepicker';\nimport { DynamicTableColumn } from '../models/dynamic-table-column.model';\nimport { DynamicTableRow } from '../models/dynamic-table-row.model';\nimport { DynamicTableModel } from '../models/dynamic-table.widget.model';\nimport { isValid } from 'date-fns';\nimport { CommonModule } from '@angular/common';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n selector: 'adf-date-editor',\n imports: [CommonModule, MatFormFieldModule, MatDatepickerModule, MatInputModule, FormsModule],\n templateUrl: './date.editor.html',\n providers: [\n { provide: MAT_DATE_FORMATS, useValue: ADF_DATE_FORMATS },\n { provide: DateAdapter, useClass: AdfDateFnsAdapter }\n ],\n styleUrls: ['./date.editor.scss']\n})\nexport class DateEditorComponent implements OnInit {\n DATE_FORMAT: string = 'DD-MM-YYYY';\n\n @Input()\n value: Date;\n\n @Input()\n table: DynamicTableModel;\n\n @Input()\n row: DynamicTableRow;\n\n @Input()\n column: DynamicTableColumn;\n\n minDate: Date;\n maxDate: Date;\n\n constructor(private dateAdapter: DateAdapter<Date>) {}\n\n ngOnInit() {\n const dateAdapter = this.dateAdapter as AdfDateFnsAdapter;\n dateAdapter.displayFormat = this.DATE_FORMAT;\n\n this.value = this.table.getCellValue(this.row, this.column) as Date;\n }\n\n onDateChanged(newDateValue: MatDatepickerInputEvent<Date> | string) {\n if (typeof newDateValue === 'string') {\n const newValue = DateFnsUtils.parseDate(newDateValue, this.DATE_FORMAT);\n\n if (isValid(newValue)) {\n this.row.value[this.column.id] = `${DateFnsUtils.formatDate(newValue, 'yyyy-MM-dd')}T00:00:00.000Z`;\n this.table.flushValue();\n } else {\n this.row.value[this.column.id] = newDateValue;\n }\n } else if (newDateValue?.value) {\n this.row.value[this.column.id] = `${DateFnsUtils.formatDate(newDateValue?.value, 'yyyy-MM-dd')}T00:00:00.000Z`;\n this.table.flushValue();\n } else {\n this.row.value[this.column.id] = '';\n }\n }\n}\n","<div>\n <mat-form-field class=\"adf-date-editor\">\n <label [attr.for]=\"column.id\">{{column.name}} ({{DATE_FORMAT}})</label>\n <input matInput\n id=\"dateInput\"\n type=\"text\"\n [matDatepicker]=\"datePicker\"\n [(ngModel)]=\"value\"\n [id]=\"column.id\"\n [required]=\"column.required\"\n [disabled]=\"!column.editable\"\n (focusout)=\"onDateChanged($any($event).target.value)\"\n (dateChange)=\"onDateChanged($event)\">\n <mat-datepicker-toggle *ngIf=\"column.editable\" matSuffix [for]=\"datePicker\" class=\"adf-date-editor-button\" />\n </mat-form-field>\n <mat-datepicker #datePicker [touchUi]=\"true\" />\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ADF_DATETIME_FORMATS, ADF_DATE_FORMATS, AdfDateFnsAdapter, AdfDateTimeFnsAdapter, DateFnsUtils } from '@alfresco/adf-core';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { DateAdapter, MAT_DATE_FORMATS } from '@angular/material/core';\nimport { DynamicTableColumn } from '../models/dynamic-table-column.model';\nimport { DynamicTableRow } from '../models/dynamic-table-row.model';\nimport { DynamicTableModel } from '../models/dynamic-table.widget.model';\nimport { DatetimeAdapter, MAT_DATETIME_FORMATS, MatDatetimepickerInputEvent, MatDatetimepickerModule } from '@mat-datetimepicker/core';\nimport { CommonModule } from '@angular/common';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n selector: 'adf-datetime-editor',\n imports: [CommonModule, MatFormFieldModule, MatInputModule, MatDatetimepickerModule, FormsModule],\n templateUrl: './datetime.editor.html',\n providers: [\n { provide: MAT_DATE_FORMATS, useValue: ADF_DATE_FORMATS },\n { provide: MAT_DATETIME_FORMATS, useValue: ADF_DATETIME_FORMATS },\n { provide: DateAdapter, useClass: AdfDateFnsAdapter },\n { provide: DatetimeAdapter, useClass: AdfDateTimeFnsAdapter }\n ],\n styleUrls: ['./datetime.editor.scss']\n})\nexport class DateTimeEditorComponent implements OnInit {\n DATE_TIME_FORMAT: string = 'DD/MM/YYYY HH:mm';\n\n @Input()\n value: Date;\n\n @Input()\n table: DynamicTableModel;\n\n @Input()\n row: DynamicTableRow;\n\n @Input()\n column: DynamicTableColumn;\n\n minDate: Date;\n maxDate: Date;\n\n constructor(private dateAdapter: DateAdapter<Date>) {}\n\n ngOnInit() {\n const momentDateAdapter = this.dateAdapter as AdfDateFnsAdapter;\n momentDateAdapter.displayFormat = this.DATE_TIME_FORMAT;\n\n this.value = this.table.getCellValue(this.row, this.column) as Date;\n }\n\n onDateChanged(newDateValue: MatDatetimepickerInputEvent<Date> | string) {\n if (typeof newDateValue === 'string') {\n const newValue = DateFnsUtils.parseDate(newDateValue, this.DATE_TIME_FORMAT);\n this.value = newValue;\n this.row.value[this.column.id] = newValue.toISOString();\n this.table.flushValue();\n } else if (newDateValue.value) {\n const newValue = DateFnsUtils.formatDate(newDateValue.value, this.DATE_TIME_FORMAT);\n this.row.value[this.column.id] = newValue;\n this.value = newDateValue.value;\n this.table.flushValue();\n } else {\n this.row.value[this.column.id] = '';\n }\n }\n}\n","<div>\n <mat-form-field class=\"adf-date-editor\">\n <label [attr.for]=\"column.id\">{{column.name}} {{DATE_TIME_FORMAT}}</label>\n <input matInput\n [matDatetimepicker]=\"datetimePicker\"\n [(ngModel)]=\"value\"\n [id]=\"column.id\"\n [required]=\"column.required\"\n [disabled]=\"!column.editable\"\n (focusout)=\"onDateChanged($any($event).target.value)\"\n (dateChange)=\"onDateChanged($event)\">\n <mat-datetimepicker-toggle\n matSuffix\n [for]=\"datetimePicker\"\n class=\"adf-date-editor-button\" />\n </mat-form-field>\n <mat-datetimepicker\n #datetimePicker\n type=\"datetime\"\n [openOnFocus]=\"true\"\n [timeInterval]=\"5\" />\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/component-selector */\n\nimport { Component, Input, OnInit } from '@angular/core';\nimport { DynamicTableColumn } from '../models/dynamic-table-column.model';\nimport { DynamicTableRow } from '../models/dynamic-table-row.model';\nimport { DynamicTableModel } from '../models/dynamic-table.widget.model';\nimport { CommonModule } from '@angular/common';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\n\n@Component({\n selector: 'adf-text-editor',\n imports: [CommonModule, MatFormFieldModule, MatInputModule],\n templateUrl: './text.editor.html',\n styleUrls: ['./text.editor.scss']\n})\nexport class TextEditorComponent implements OnInit {\n @Input()\n table: DynamicTableModel;\n\n @Input()\n row: DynamicTableRow;\n\n @Input()\n column: DynamicTableColumn;\n\n displayName: string;\n\n ngOnInit() {\n this.displayName = this.table.getDisplayText(this.column);\n }\n\n onValueChanged(row: DynamicTableRow, column: DynamicTableColumn, event: any) {\n const value: any = event.target.value;\n row.value[column.id] = value;\n }\n}\n","<div class=\"adf-text-editor\">\n <mat-form-field>\n <label [attr.for]=\"column.id\">{{displayName}}</label>\n <input matInput\n type=\"text\"\n [value]=\"table.getCellValue(row, column)\"\n (keyup)=\"onValueChanged(row, column, $event)\"\n [required]=\"column.required\"\n [disabled]=\"!column.editable\"\n [id]=\"column.id\">\n </mat-form-field>\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/component-selector */\n\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { DynamicRowValidationSummary } from '../models/dynamic-row-validation-summary.model';\nimport { DynamicTableColumn } from '../models/dynamic-table-column.model';\nimport { DynamicTableRow } from '../models/dynamic-table-row.model';\nimport { DynamicTableModel } from '../models/dynamic-table.widget.model';\nimport { CommonModule } from '@angular/common';\nimport { DropdownEditorComponent } from '../dropdown/dropdown.editor';\nimport { DateEditorComponent } from '../date/date.editor';\nimport { DateTimeEditorComponent } from '../datetime/datetime.editor';\nimport { BooleanEditorComponent } from '../boolean/boolean.editor';\nimport { AmountEditorComponent } from '../amount/amount.editor';\nimport { TextEditorComponent } from '../text/text.editor';\nimport { ErrorWidgetComponent } from '@alfresco/adf-core';\nimport { MatButtonModule } from '@angular/material/button';\n\nexport interface RowEditorReturnType {\n table: DynamicTableModel;\n row: DynamicTableRow;\n column: DynamicTableColumn;\n}\n\n@Component({\n selector: 'row-editor',\n imports: [\n CommonModule,\n DropdownEditorComponent,\n DateEditorComponent,\n DateTimeEditorComponent,\n BooleanEditorComponent,\n AmountEditorComponent,\n TextEditorComponent,\n ErrorWidgetComponent,\n MatButtonModule\n ],\n templateUrl: './row.editor.html',\n styleUrls: ['./row.editor.css']\n})\nexport class RowEditorComponent {\n @Input()\n table: DynamicTableModel;\n\n @Input()\n row: DynamicTableRow;\n\n @Input()\n column: DynamicTableColumn;\n\n @Output()\n save = new EventEmitter<RowEditorReturnType>();\n\n @Output()\n cancel = new EventEmitter<RowEditorReturnType>();\n\n validationSummary: DynamicRowValidationSummary;\n\n constructor() {\n this.validationSummary = new DynamicRowValidationSummary({ isValid: true, message: '' });\n }\n\n onCancelChanges() {\n this.cancel.emit({\n table: this.table,\n row: this.row,\n column: this.column\n });\n }\n\n onSaveChanges() {\n this.validate();\n if (this.isValid()) {\n this.save.emit({\n table: this.table,\n row: this.row,\n column: this.column\n });\n }\n }\n\n private isValid(): boolean {\n return this.validationSummary?.isValid;\n }\n\n private validate() {\n this.validationSummary = this.table.validateRow(this.row);\n }\n}\n","<div class=\"row-editor mdl-shadow--2dp\"\n [class.row-editor__invalid]=\"!validationSummary.isValid\">\n <div class=\"mdl-grid\" *ngFor=\"let column of table.columns\">\n <div class=\"mdl-cell mdl-cell--6-col\" [ngSwitch]=\"column.type\">\n <div *ngSwitchCase=\"'Dropdown'\">\n <adf-dropdown-editor\n [table]=\"table\"\n [row]=\"row\"\n [column]=\"column\" />\n </div>\n <div *ngSwitchCase=\"'Date'\">\n <adf-date-editor\n [table]=\"table\"\n [row]=\"row\"\n [column]=\"column\" />\n </div>\n <div *ngSwitchCase=\"'Datetime'\">\n <adf-datetime-editor\n [table]=\"table\"\n [row]=\"row\"\n [column]=\"column\" />\n </div>\n <div *ngSwitchCase=\"'Boolean'\">\n <adf-boolean-editor\n [table]=\"table\"\n [row]=\"row\"\n [column]=\"column\" />\n </div>\n <div *ngSwitchCase=\"'Amount'\">\n <adf-amount-editor\n [table]=\"table\"\n [row]=\"row\"\n [column]=\"column\" />\n </div>\n <div *ngSwitchDefault>\n <adf-text-editor\n [table]=\"table\"\n [row]=\"row\"\n [column]=\"column\" />\n </div>\n </div>\n </div>\n <error-widget [error]=\"validationSummary\" />\n <div>\n <button mat-button (click)=\"onCancelChanges()\">Cancel</button>\n <button mat-button (click)=\"onSaveChanges()\">Save</button>\n </div>\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/component-selector */\n\nimport { WidgetVisibilityService, WidgetComponent, FormService, ErrorWidgetComponent } from '@alfresco/adf-core';\nimport { ChangeDetectorRef, Component, ElementRef, OnInit, ViewEncapsulation } from '@angular/core';\nimport { DynamicTableColumn } from './editors/models/dynamic-table-column.model';\nimport { DynamicTableRow } from './editors/models/dynamic-table-row.model';\nimport { DynamicTableModel } from './editors/models/dynamic-table.widget.model';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { RowEditorComponent } from './editors/row-editor/row.editor';\n\n@Component({\n selector: 'dynamic-table-widget',\n imports: [CommonModule, TranslatePipe, MatCheckboxModule, MatButtonModule, MatIconModule, RowEditorComponent, ErrorWidgetComponent],\n templateUrl: './dynamic-table.widget.html',\n styleUrls: ['./dynamic-table.widget.scss'],\n host: {\n '(click)': 'event($event)',\n '(blur)': 'event($event)',\n '(change)': 'event($event)',\n '(focus)': 'event($event)',\n '(focusin)': 'event($event)',\n '(focusout)': 'event($event)',\n '(input)': 'event($event)',\n '(invalid)': 'event($event)',\n '(select)': 'event($event)'\n },\n encapsulation: ViewEncapsulation.None\n})\nexport class DynamicTableWidgetComponent extends WidgetComponent implements OnInit {\n content: DynamicTableModel;\n\n editMode: boolean = false;\n editRow: DynamicTableRow = null;\n\n private selectArrayCode = [32, 0, 13];\n\n constructor(\n public formService: FormService,\n public elementRef: ElementRef,\n private visibilityService: WidgetVisibilityService,\n private cd: ChangeDetectorRef\n ) {\n super(formService);\n }\n\n ngOnInit() {\n if (this.field) {\n this.content = new DynamicTableModel(this.field, this.formService);\n this.visibilityService.refreshVisibility(this.field.form);\n if (this.field.type === 'readonly') {\n this.readOnly = true;\n }\n }\n }\n\n forceFocusOnAddButton() {\n if (this.content) {\n this.cd.detectChanges();\n const buttonAddRow = this.elementRef.nativeElement.querySelector('#' + this.content.id + '-add-row') as HTMLButtonElement;\n if (this.isDynamicTableReady(buttonAddRow)) {\n buttonAddRow.focus();\n }\n }\n }\n\n private isDynamicTableReady(buttonAddRow: HTMLButtonElement) {\n return this.field && !this.editMode && buttonAddRow;\n }\n\n isValid() {\n let valid = true;\n\n if (this.content?.field) {\n valid = this.content.field.isValid;\n }\n\n return valid;\n }\n\n onRowClicked(row: DynamicTableRow) {\n if (this.content) {\n this.content.selectedRow = row;\n }\n }\n\n onKeyPressed($event: KeyboardEvent, row: DynamicTableRow) {\n if (this.content && this.isEnterOrSpacePressed($event.keyCode)) {\n this.content.selectedRow = row;\n }\n }\n\n private isEnterOrSpacePressed(keyCode: number) {\n return this.selectArrayCode.indexOf(keyCode) !== -1;\n }\n\n hasSelection(): boolean {\n return !!this.content?.selectedRow;\n }\n\n moveSelectionUp(): boolean {\n if (this.content && !this.readOnly) {\n this.content.moveRow(this.content.selectedRow, -1);\n return true;\n }\n return false;\n }\n\n moveSelectionDown(): boolean {\n if (this.content && !this.readOnly) {\n this.content.moveRow(this.content.selectedRow, 1);\n return true;\n }\n return false;\n }\n\n deleteSelection(): boolean {\n if (this.content && !this.readOnly) {\n this.content.deleteRow(this.content.selectedRow);\n return true;\n }\n return false;\n }\n\n addNewRow(): boolean {\n if (this.content && !this.readOnly) {\n this.editRow = {\n isNew: true,\n selected: false,\n value: {}\n };\n this.editMode = true;\n return true;\n }\n return false;\n }\n\n editSelection(): boolean {\n if (this.content && !this.readOnly) {\n this.editRow = this.copyRow(this.content.selectedRow);\n this.editMode = true;\n return true;\n }\n return false;\n }\n\n getCellValue(row: DynamicTableRow, column: DynamicTableColumn): any {\n if (this.content) {\n const cellValue = this.content.getCellValue(row, column);\n if (column.type === 'Amount') {\n return (column.amountCurrency || '$') + ' ' + (cellValue || 0);\n }\n return cellValue;\n }\n return null;\n }\n\n onSaveChanges() {\n if (this.content) {\n if (this.editRow.isNew) {\n const row = this.copyRow(this.editRow);\n this.content.selectedRow = null;\n this.content.addRow(row);\n this.editRow.isNew = false;\n } else {\n this.content.selectedRow.value = this.copyObject(this.editRow.value);\n }\n this.content.flushValue();\n }\n this.editMode = false;\n this.forceFocusOnAddButton();\n }\n\n onCancelChanges() {\n this.editMode = false;\n this.editRow = null;\n this.forceFocusOnAddButton();\n }\n\n copyRow(row: DynamicTableRow): DynamicTableRow {\n return { value: this.copyObject(row.value) } as DynamicTableRow;\n }\n\n private copyObject(obj: any): any {\n let result = obj;\n\n if (typeof obj === 'object' && obj !== null && obj !== undefined) {\n result = Object.assign({}, obj);\n Object.keys(obj).forEach((key) => {\n if (typeof obj[key] === 'object') {\n result[key] = this.copyObject(obj[key]);\n }\n });\n }\n\n return result;\n }\n}\n","<div class=\"adf-dynamic-table-scrolling {{field.className}}\" [class.adf-invalid]=\"!isValid()\">\n <div class=\"adf-label\">{{content.name | translate }}<span class=\"adf-asterisk\" [style.visibility]=\"isRequired() ? 'visible' : 'hidden'\">*</span></div>\n\n <div *ngIf=\"!editMode\">\n <div class=\"adf-table-container\">\n <table class=\"adf-full-width adf-dynamic-table\" id=\"dynamic-table-{{content.id}}\">\n <thead>\n <tr>\n <th *ngFor=\"let column of content.visibleColumns\">{{column.name}}</th>\n </tr>\n </thead>\n <tbody>\n <tr\n *ngFor=\"let row of content.rows; let idx = index\"\n role=\"button\"\n tabindex=\"0\"\n id=\"{{content.id}}-row-{{idx}}\"\n [class.adf-dynamic-table-widget__row-selected]=\"row.selected\"\n (keyup)=\"onKeyPressed($event, row)\"\n >\n <td\n *ngFor=\"let column of content.visibleColumns\"\n tabindex=\"0\"\n role=\"button\"\n (keyup.enter)=\"onRowClicked(row)\"\n (click)=\"onRowClicked(row)\"\n >\n <span *ngIf=\"column.type !== 'Boolean' else checkbox\"> {{ getCellValue(row, column) }} </span>\n <ng-template #checkbox>\n <mat-checkbox disabled [checked]=\"getCellValue(row, column)\" />\n </ng-template>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n\n <div *ngIf=\"!readOnly\">\n <button mat-button\n data-automation-id=\"dynamic-table-button-move-up\"\n [disabled]=\"!hasSelection()\"\n (click)=\"moveSelectionUp()\">\n <mat-icon>arrow_upward</mat-icon>\n </button>\n <button mat-button\n data-automation-id=\"dynamic-table-button-move-down\"\n [disabled]=\"!hasSelection()\"\n (click)=\"moveSelectionDown()\">\n <mat-icon>arrow_downward</mat-icon>\n </button>\n <button mat-button\n data-automation-id=\"dynamic-table-button-add-row\"\n [disabled]=\"field.readOnly\"\n id=\"{{content.id}}-add-row\"\n (click)=\"addNewRow()\">\n <mat-icon>add_circle_outline</mat-icon>\n </button>\n <button mat-button\n data-automation-id=\"dynamic-table-button-remove\"\n [disabled]=\"!hasSelection()\"\n (click)=\"deleteSelection()\">\n <mat-icon>remove_circle_outline</mat-icon>\n </button>\n <button mat-button\n data-automation-id=\"dynamic-table-button-edit\"\n [disabled]=\"!hasSelection()\"\n (click)=\"editSelection()\">\n <mat-icon>edit</mat-icon>\n </button>\n </div>\n </div>\n\n <row-editor *ngIf=\"editMode\" [table]=\"content\" [row]=\"editRow\" (save)=\"onSaveChanges()\" (cancel)=\"onCancelChanges()\" />\n <error-widget [error]=\"field.validationSummary\" />\n <error-widget *ngIf=\"isInvalidFieldRequired()\" required=\"{{ 'FORM.FIELD.REQUIRED' | translate }}\" />\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/component-selector */\n\nexport interface DynamicTableRow {\n isNew: boolean;\n selected: boolean;\n value: any;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DropdownEditorComponent } from './editors/dropdown/dropdown.editor';\nimport { AmountEditorComponent } from './editors/amount/amount.editor';\nimport { BooleanEditorComponent } from './editors/boolean/boolean.editor';\nimport { DateEditorComponent } from './editors/date/date.editor';\nimport { RowEditorComponent } from './editors/row-editor/row.editor';\nimport { TextEditorComponent } from './editors/text/text.editor';\nimport { DateTimeEditorComponent } from './editors/datetime/datetime.editor';\nimport { DynamicTableWidgetComponent } from './dynamic-table.widget';\n\nexport * from './editors/dropdown/dropdown.editor';\nexport * from './editors/amount/amount.editor';\nexport * from './editors/boolean/boolean.editor';\nexport * from './editors/date/date.editor';\nexport * from './editors/datetime/datetime.editor';\nexport * from './editors/row-editor/row.editor';\nexport * from './editors/text/text.editor';\nexport * from './editors/models/dynamic-table-row.model';\nexport * from './dynamic-table.widget';\n\nexport const DYNAMIC_TABLE_WIDGET_DIRECTIVES = [\n DynamicTableWidgetComponent,\n DropdownEditorComponent,\n AmountEditorComponent,\n BooleanEditorComponent,\n DateEditorComponent,\n DateTimeEditorComponent,\n RowEditorComponent,\n TextEditorComponent\n] as const;\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './public-api';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Injectable } from '@angular/core';\nimport { AlfrescoApi } from '@alfresco/js-api';\nimport { AlfrescoApiService } from '@alfresco/adf-content-services';\n\n@Injectable({ providedIn: 'root' })\nexport class ExternalAlfrescoApiService extends AlfrescoApiService {\n init(ecmHost: string, contextRoot: string) {\n const domainPrefix = this.createPrefixFromHost(ecmHost);\n\n const config = {\n provider: 'ECM',\n hostEcm: ecmHost,\n authType: 'BASIC',\n contextRoot,\n domainPrefix\n };\n this.setup(config);\n this.alfrescoApiInitialized.next(true);\n }\n\n private setup(config) {\n if (this.alfrescoApi) {\n this.alfrescoApi.setConfig(config);\n } else {\n this.alfrescoApi = new AlfrescoApi(config);\n }\n }\n\n private createPrefixFromHost(url: string): string {\n const match = url.match(/:\\/\\/(www[0-9]?\\.)?(.[^/:]+)/i);\n let result = null;\n if (match != null && match.length > 2 && typeof match[2] === 'string' && match[2].length > 0) {\n result = match[2];\n }\n return result;\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, DestroyRef, inject, Inject, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { AuthenticationService, LoginDialogPanelComponent, TranslationService } from '@alfresco/adf-core';\nimport { AttachFileWidgetDialogComponentData } from './attach-file-widget-dialog-component.interface';\nimport {\n AlfrescoApiService,\n ContentNodeSelectorPanelComponent,\n DocumentListService,\n SearchService,\n SitesService\n} from '@alfresco/adf-content-services';\nimport { ExternalAlfrescoApiService } from '../../services/external-alfresco-api.service';\nimport { Node } from '@alfresco/js-api';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'adf-attach-file-widget-dialog',\n imports: [CommonModule, MatDialogModule, LoginDialogPanelComponent, MatButtonModule, TranslatePipe, ContentNodeSelectorPanelComponent],\n templateUrl: './attach-file-widget-dialog.component.html',\n styleUrls: ['./attach-file-widget-dialog.component.scss'],\n encapsulation: ViewEncapsulation.None,\n providers: [\n AuthenticationService,\n DocumentListService,\n SitesService,\n SearchService,\n { provide: AlfrescoApiService, useClass: ExternalAlfrescoApiService }\n ]\n})\nexport class AttachFileWidgetDialogComponent implements OnInit {\n @ViewChild('adfLoginPanel')\n loginPanel: LoginDialogPanelComponent;\n\n title: string;\n action: string;\n buttonActionName: string;\n chosenNode: Node[];\n\n private readonly destroyRef = inject(DestroyRef);\n\n constructor(\n private translation: TranslationService,\n @Inject(MAT_DIALOG_DATA) public data: AttachFileWidgetDialogComponentData,\n private externalApiService: AlfrescoApiService,\n private authenticationService: AuthenticationService,\n private matDialogRef: MatDialogRef<AttachFileWidgetDialogComponent>\n ) {\n (externalApiService as ExternalAlfrescoApiService).init(data.ecmHost, data.context);\n this.action = data.actionName ? data.actionName.toUpperCase() : 'CHOOSE';\n this.buttonActionName = `ATTACH-FILE.ACTIONS.${this.action}`;\n this.updateTitle('DROPDOWN.MY_FILES_OPTION');\n }\n\n ngOnInit() {\n this.authenticationService.onLogin.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => this.registerAndClose());\n\n if (this.isLoggedIn()) {\n this.registerAndClose();\n }\n }\n isLoggedIn(): boolean {\n return !!this.externalApiService.getInstance()?.isLoggedIn();\n }\n\n performLogin() {\n this.loginPanel.submitForm();\n }\n\n close() {\n this.data.selected.complete();\n }\n\n onSelect(nodeList: Node[]) {\n this.chosenNode = nodeList;\n }\n\n onSiteChange(siteTitle: string) {\n this.updateTitle(siteTitle);\n }\n\n onClick() {\n this.data.selected.next(this.chosenNode);\n this.data.selected.complete();\n }\n\n updateTitle(siteTitle: string) {\n if (this.action === 'CHOOSE' && siteTitle) {\n this.title = this.getTitleTranslation(this.action, siteTitle);\n }\n }\n\n getTitleTranslation(action: string, name?: string): string {\n return this.translation.instant(`ATTACH-FILE.ACTIONS.${action}_ITEM`, { name: this.translation.instant(name) });\n }\n\n hasNodeSelected(): boolean {\n return this.chosenNode?.length > 0;\n }\n\n private registerAndClose() {\n if (this.data) {\n this.data.registerExternalHost?.(this.data.accountIdentifier, this.externalApiService);\n\n if (this.data.loginOnly) {\n this.data.selected?.complete();\n this.matDialogRef.close();\n }\n }\n }\n}\n","<header\n mat-dialog-title\n data-automation-id=\"content-node-selector-title\">\n <span *ngIf=\"isLoggedIn(); else loginTitle\">{{title}}</span>\n <ng-template #loginTitle>{{data.title}}</ng-template>\n</header>\n\n<mat-dialog-content class=\"adf-login-dialog-content\">\n <adf-login-dialog-panel id=\"attach-file-login-panel\" #adfLoginPanel *ngIf=\"!isLoggedIn()\" />\n <adf-content-node-selector-panel *ngIf=\"isLoggedIn()\"\n id=\"attach-file-content-node\"\n [currentFolderId]=\"data?.currentFolderId\"\n [isSelectionValid]=\"data?.isSelectionValid\"\n [showFilesInResult]=\"data?.showFilesInResult\"\n (select)=\"onSelect($event)\"\n (siteChange)=\"onSiteChange($event)\" />\n</mat-dialog-content>\n\n<mat-dialog-actions class=\"adf-login-dialog-actions\" align=\"end\">\n <button\n mat-button\n (click)=\"close()\"\n data-automation-id=\"attach-file-dialog-actions-cancel\">{{ 'ATTACH-FILE.ACTIONS.CANCEL' | translate }}\n </button>\n\n <button *ngIf=\"!isLoggedIn()\"\n mat-button\n (click)=\"performLogin()\"\n data-automation-id=\"attach-file-dialog-actions-login\">{{ 'ATTACH-FILE.ACTIONS.LOGIN' | translate }}\n </button>\n\n <button *ngIf=\"isLoggedIn()\"\n mat-button\n [disabled]=\"!hasNodeSelected()\"\n class=\"adf-choose-action\"\n (click)=\"onClick()\"\n data-automation-id=\"attach-file-dialog-actions-choose\">{{ buttonActionName | translate }}\n </button>\n\n</mat-dialog-actions>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AlfrescoApiService } from '@alfresco/adf-content-services';\nimport { MatDialog } from '@angular/material/dialog';\nimport { EventEmitter, Injectable, Output } from '@angular/core';\nimport { TranslationService } from '@alfresco/adf-core';\nimport { Observable, of, Subject } from 'rxjs';\nimport { AttachFileWidgetDialogComponentData } from './attach-file-widget-dialog-component.interface';\nimport { AlfrescoEndpointRepresentation, Node, ContentApi } from '@alfresco/js-api';\nimport { AttachFileWidgetDialogComponent } from './attach-file-widget-dialog.component';\nimport { switchMap } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport class AttachFileWidgetDialogService {\n /** Emitted when an error occurs. */\n @Output()\n error = new EventEmitter<any>();\n\n private externalApis: { [key: string]: AlfrescoApiService } = {};\n\n constructor(private dialog: MatDialog, private translation: TranslationService) {}\n\n /**\n * Opens a dialog to choose a file to upload.\n *\n * @param repository Alfresco endpoint that represents the content service\n * @param currentFolderId Upload file from specific folder\n * @param accountIdentifier account identifier\n * @returns Information about the chosen file(s)\n */\n openLogin(repository: AlfrescoEndpointRepresentation, currentFolderId = '-my-', accountIdentifier?: string): Observable<Node[]> {\n const { title, ecmHost, selected, registerExternalHost } = this.constructPayload(repository);\n const data: AttachFileWidgetDialogComponentData = {\n title,\n selected,\n ecmHost,\n currentFolderId,\n isSelectionValid: (entry: Node) => entry.isFile,\n showFilesInResult: true,\n registerExternalHost,\n accountIdentifier\n };\n\n this.openLoginDialog(data, 'adf-attach-file-widget-dialog', '630px');\n return selected;\n }\n\n downloadURL(repository: AlfrescoEndpointRepresentation, sourceId: string): Observable<string> {\n const { accountIdentifier } = this.constructPayload(repository);\n\n if (this.externalApis[accountIdentifier]?.getInstance()) {\n const contentApi = new ContentApi(this.externalApis[accountIdentifier].getInstance());\n\n if (this.externalApis[accountIdentifier].getInstance().isLoggedIn()) {\n return of(contentApi.getContentUrl(sourceId));\n }\n }\n\n return this.showExternalHostLoginDialog(repository).pipe(\n switchMap(() => {\n const contentApi = new ContentApi(this.externalApis[accountIdentifier].getInstance());\n return of(contentApi.getContentUrl(sourceId));\n })\n );\n }\n\n addService(accountIdentifier: string, apiService: AlfrescoApiService) {\n if (!this.externalApis[accountIdentifier]) {\n this.externalApis[accountIdentifier] = apiService;\n }\n }\n\n /** Closes the currently open dialog. */\n close() {\n this.dialog.closeAll();\n }\n\n private openLoginDialog(data: AttachFileWidgetDialogComponentData, currentPanelClass: string, chosenWidth: string) {\n this.dialog.open(AttachFileWidgetDialogComponent, { data, panelClass: currentPanelClass, width: chosenWidth });\n }\n\n private showExternalHostLoginDialog(repository: AlfrescoEndpointRepresentation): Observable<AlfrescoApiService> {\n const data = {\n ...this.constructPayload(repository),\n loginOnly: true\n };\n return this.dialog.open(AttachFileWidgetDialogComponent, { data, panelClass: 'adf-attach-file-widget-dialog', width: '630px' }).afterClosed();\n }\n\n private constructPayload(repository: AlfrescoEndpointRepresentation) {\n const accountIdentifier = 'alfresco-' + repository.id + '-' + repository.name;\n const ecmHost = repository.repositoryUrl.replace('/alfresco', '');\n const selected = new Subject<Node[]>();\n selected.subscribe({\n complete: this.close.bind(this)\n });\n const title = this.getLoginTitleTranslation(ecmHost);\n const registerExternalHost = this.addService.bind(this);\n return { ecmHost, accountIdentifier, selected, title, registerExternalHost };\n }\n\n private getLoginTitleTranslation(ecmHost: string): string {\n return this.translation.instant(`ATTACH-FILE.DIALOG.LOGIN`, { ecmHost });\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AlfrescoApiService, SitesService } from '@alfresco/adf-content-services';\nimport { ExternalContent } from '@alfresco/adf-core';\nimport { Injectable } from '@angular/core';\nimport {\n IntegrationAlfrescoOnPremiseApi,\n Node,\n RelatedContentRepresentation,\n ActivitiContentApi,\n AlfrescoEndpointRepresentation,\n AlfrescoContentRepresentation\n} from '@alfresco/js-api';\nimport { Observable, from, throwError } from 'rxjs';\nimport { map, catchError } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ActivitiContentService {\n static UNKNOWN_ERROR_MESSAGE: string = 'Unknown error';\n static GENERIC_ERROR_MESSAGE: string = 'Server error';\n\n private _integrationAlfrescoOnPremiseApi: IntegrationAlfrescoOnPremiseApi;\n get integrationAlfrescoOnPremiseApi(): IntegrationAlfrescoOnPremiseApi {\n this._integrationAlfrescoOnPremiseApi =\n this._integrationAlfrescoOnPremiseApi ?? new IntegrationAlfrescoOnPremiseApi(this.apiService.getInstance());\n return this._integrationAlfrescoOnPremiseApi;\n }\n\n private _contentApi: ActivitiContentApi;\n get contentApi(): ActivitiContentApi {\n this._contentApi = this._contentApi ?? new ActivitiContentApi(this.apiService.getInstance());\n return this._contentApi;\n }\n\n constructor(private apiService: AlfrescoApiService, private sitesService: SitesService) {}\n\n /**\n * Returns a list of child nodes below the specified folder\n *\n * @param accountId account id\n * @param folderId folder id\n * @returns list of external content instances\n */\n getAlfrescoNodes(accountId: string, folderId: string): Observable<AlfrescoContentRepresentation[]> {\n const accountShortId = accountId.replace('alfresco-', '');\n return from(this.integrationAlfrescoOnPremiseApi.getContentInFolder(accountShortId, folderId)).pipe(\n map((res) => res?.data || []),\n catchError((err) => this.handleError(err))\n );\n }\n\n /**\n * Returns a list of all the repositories configured\n *\n * @param tenantId tenant id\n * @param includeAccount include accounts\n * @returns list of endpoints\n */\n getAlfrescoRepositories(tenantId?: string, includeAccount?: boolean): Observable<AlfrescoEndpointRepresentation[]> {\n const opts = {\n tenantId,\n includeAccounts: includeAccount ? includeAccount : true\n };\n return from(this.integrationAlfrescoOnPremiseApi.getRepositories(opts)).pipe(\n map((res) => res?.data || []),\n catchError((err) => this.handleError(err))\n );\n }\n\n /**\n * Returns a list of child nodes below the specified folder\n *\n * @param accountId account id\n * @param node node details\n * @param siteId site id\n * @returns link to external content\n */\n linkAlfrescoNode(accountId: string, node: ExternalContent, siteId: string): Observable<RelatedContentRepresentation> {\n return from(\n this.contentApi.createTemporaryRelatedContent({\n link: true,\n name: node.title,\n simpleType: node.simpleType,\n source: accountId,\n sourceId: node.id + '@' + siteId\n })\n ).pipe(\n map((res) => res || {}),\n catchError((err) => this.handleError(err))\n );\n }\n\n applyAlfrescoNode(node: Node, siteId: string, accountId: string): Observable<RelatedContentRepresentation> {\n const currentSideId = siteId ? siteId : this.sitesService.getSiteNameFromNodePath(node);\n const params: RelatedContentRepresentation = {\n source: accountId,\n mimeType: node?.content?.mimeType,\n sourceId: node.id + ';' + node.properties?.['cm:versionLabel'] + '@' + currentSideId,\n name: node.name,\n link: node.isLink\n };\n return from(this.contentApi.createTemporaryRelatedContent(params)).pipe(\n map((res) => res || {}),\n catchError((err) => this.handleError(err))\n );\n }\n\n private handleError(error: any): Observable<never> {\n let errMsg = ActivitiContentService.UNKNOWN_ERROR_MESSAGE;\n if (error) {\n errMsg = error.message\n ? error.message\n : error.status\n ? `${error.status} - ${error.statusText}`\n : ActivitiContentService.GENERIC_ERROR_MESSAGE;\n }\n return throwError(errMsg);\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/component-selector */\n\nimport { Component, DestroyRef, inject, isDevMode, OnInit, ViewEncapsulation } from '@angular/core';\nimport { AppConfigService, AppConfigValues, DownloadService, ErrorWidgetComponent, FormService, ThumbnailService } from '@alfresco/adf-core';\nimport { AlfrescoIconComponent, ContentNodeDialogService, ContentService } from '@alfresco/adf-content-services';\nimport { AlfrescoEndpointRepresentation, Node, NodeChildAssociation, RelatedContentRepresentation } from '@alfresco/js-api';\nimport { from, of, zip } from 'rxjs';\nimport { mergeMap } from 'rxjs/operators';\nimport { AttachFileWidgetDialogService } from './attach-file-widget-dialog.service';\nimport { UploadWidgetComponent } from '../upload/upload.widget';\nimport { ProcessContentService } from '../../services/process-content.service';\nimport { ActivitiContentService } from '../../services/activiti-alfresco.service';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatListModule } from '@angular/material/list';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'attach-widget',\n imports: [CommonModule, TranslatePipe, MatIconModule, MatButtonModule, MatMenuModule, MatListModule, ErrorWidgetComponent, AlfrescoIconComponent],\n templateUrl: './attach-file-widget.component.html',\n styleUrls: ['./attach-file-widget.component.scss'],\n host: {\n '(click)': 'event($event)',\n '(blur)': 'event($event)',\n '(change)': 'event($event)',\n '(focus)': 'event($event)',\n '(focusin)': 'event($event)',\n '(focusout)': 'event($event)',\n '(input)': 'event($event)',\n '(invalid)': 'event($event)',\n '(select)': 'event($event)'\n },\n encapsulation: ViewEncapsulation.None\n})\nexport class AttachFileWidgetComponent extends UploadWidgetComponent implements OnInit {\n typeId = 'AttachFileWidgetComponent';\n repositoryList: AlfrescoEndpointRepresentation[] = [];\n isStartProcessPage = false;\n\n private tempFilesList = [];\n\n private readonly destroyRef = inject(DestroyRef);\n\n constructor(\n public formService: FormService,\n public thumbnails: ThumbnailService,\n public processContentService: ProcessContentService,\n private activitiContentService: ActivitiContentService,\n private contentService: ContentService,\n private contentDialog: ContentNodeDialogService,\n private appConfigService: AppConfigService,\n private downloadService: DownloadService,\n private router: Router,\n private activatedRoute: ActivatedRoute,\n private attachDialogService: AttachFileWidgetDialogService\n ) {\n super(formService, thumbnails, processContentService);\n }\n\n ngOnInit() {\n super.ngOnInit();\n this.isStartProcessPage = this.router.url.split('?')[0].includes('start-process');\n if (Array.isArray(this.field.value) && this.isFileSourceConfigured()) {\n this.tempFilesList.push(...this.field.value);\n }\n\n this.activitiContentService.getAlfrescoRepositories().subscribe((repoList) => {\n this.repositoryList = repoList;\n });\n\n this.formService.taskSaved.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((formSaved) => {\n if (formSaved.form.id === this.field.form.id) {\n this.tempFilesList = [];\n }\n });\n }\n\n isFileSourceConfigured(): boolean {\n return !!this.field.params?.fileSource;\n }\n\n isMultipleSourceUpload(): boolean {\n return !this.field.readOnly && this.isFileSourceConfigured() && !this.isOnlyLocalSourceSelected();\n }\n\n isAllFileSourceSelected(): boolean {\n return this.field.params?.fileSource?.serviceId === 'all-file-sources' && !this.field.params.link;\n }\n\n isOnlyLocalSourceSelected(): boolean {\n return this.field.params?.fileSource?.serviceId === 'local-file';\n }\n\n isSimpleUploadButton(): boolean {\n return (this.isUploadButtonVisible() && !this.isFileSourceConfigured()) || this.isOnlyLocalSourceSelected();\n }\n\n isUploadButtonVisible(): boolean {\n return (!this.hasFile || this.multipleOption) && !this.field.readOnly;\n }\n\n isDefinedSourceFolder(): boolean {\n return !!this.field.params?.fileSource?.selectedFolder;\n }\n\n isTemporaryFile(file: { name?: string }): boolean {\n return this.tempFilesList.findIndex((elem) => elem.name === file.name) >= 0;\n }\n\n getNodeFromTempFile(file: { name?: string }): NodeChildAssociation {\n return this.tempFilesList.find((elem) => elem.name === file.name);\n }\n\n openSelectDialogFromFileSource() {\n const params = this.field.params;\n const repository = this.repositoryList.find((repo) => repo.name === params?.fileSource?.name);\n if (repository && this.isExternalHost(repository)) {\n this.uploadFileFromExternalCS(repository, params?.fileSource?.selectedFolder?.pathId);\n } else {\n this.contentDialog.openFileBrowseDialogByFolderId(params.fileSource.selectedFolder.pathId).subscribe((selections: Node[]) => {\n this.tempFilesList.push(...selections);\n this.updateNodesParams();\n this.uploadFileFromCS(\n selections,\n this.field.params.fileSource.selectedFolder.accountId,\n this.field.params.fileSource.selectedFolder.siteId\n );\n });\n }\n }\n\n onAttachFileChanged(event: any) {\n this.tempFilesList.push(...Array.from(event.target.files));\n this.onFileChanged(event);\n }\n\n onRemoveAttachFile(file: File | RelatedContentRepresentation) {\n if (this.isTemporaryFile(file)) {\n this.tempFilesList.splice(this.tempFilesList.indexOf((file as RelatedContentRepresentation).contentBlob), 1);\n this.updateNodesParams();\n }\n this.removeFile(file);\n }\n\n onAttachFileClicked(file: any) {\n if (file.isExternal || (!file.sourceId && (this.isStartProcessPage || !file.contentAvailable))) {\n return;\n }\n if (this.isTemporaryFile(file)) {\n this.formService.formContentClicked.next(file);\n } else {\n this.fileClicked(file);\n }\n }\n\n downloadContent(file: any | RelatedContentRepresentation): void {\n if (this.isTemporaryFile(file)) {\n const fileBlob = (file as RelatedContentRepresentation).contentBlob;\n if (fileBlob) {\n this.downloadService.downloadBlob(fileBlob, file.name);\n } else {\n const nodeUploaded: NodeChildAssociation = this.getNodeFromTempFile(file);\n const nodeUrl = this.contentService.getContentUrl(nodeUploaded.id);\n this.downloadService.downloadUrl(nodeUrl, file.name);\n }\n }\n if (file.sourceId) {\n const sourceHost = this.findSource(file.source);\n if (sourceHost && this.isExternalHost(sourceHost)) {\n this.attachDialogService.downloadURL(sourceHost, file.sourceId).subscribe((nodeUrl) => {\n this.downloadService.downloadUrl(nodeUrl, file.name);\n });\n } else {\n const nodeUrl = this.contentService.getContentUrl(file.sourceId);\n this.downloadService.downloadUrl(nodeUrl, file.name);\n }\n } else {\n this.processContentService.getFileRawContent(file.id).subscribe(\n (blob: Blob) => {\n this.downloadService.downloadBlob(blob, file.name);\n },\n () => {}\n );\n }\n }\n\n openSelectDialog(repository: AlfrescoEndpointRepresentation) {\n if (this.isExternalHost(repository) && !isDevMode()) {\n this.uploadFileFromExternalCS(repository);\n } else {\n this.contentDialog.openFileBrowseDialogByDefaultLocation().subscribe((selections: Node[]) => {\n if (selections.length) {\n this.tempFilesList.push(...selections);\n this.updateNodesParams();\n this.uploadFileFromCS(selections, `alfresco-${repository.id}-${repository.name}Alfresco`);\n }\n });\n }\n }\n\n isSelected(): boolean {\n return this.hasFile;\n }\n\n private isExternalHost(repository: AlfrescoEndpointRepresentation): boolean {\n const currentECMHost = this.getDomainHost(this.appConfigService.get(AppConfigValues.ECMHOST));\n const chosenRepositoryHost = this.getDomainHost(repository.repositoryUrl);\n return chosenRepositoryHost !== currentECMHost;\n }\n\n private findSource(sourceIdentifier: string): AlfrescoEndpointRepresentation {\n return this.repositoryList.find((repository) => sourceIdentifier === `alfresco-${repository.id}-${repository.name}`);\n }\n\n private uploadFileFromExternalCS(repository: AlfrescoEndpointRepresentation, currentFolderId?: string) {\n const accountIdentifier = `alfresco-${repository.id}-${repository.name}Alfresco`;\n this.attachDialogService.openLogin(repository, currentFolderId, accountIdentifier).subscribe((selections) => {\n selections.forEach((node) => (node['isExternal'] = true));\n this.tempFilesList.push(...selections);\n this.uploadFileFromCS(selections, accountIdentifier);\n });\n }\n\n private uploadFileFromCS(fileNodeList: Node[], accountId: string, siteId?: string) {\n const filesSaved = [];\n\n fileNodeList.forEach((node) => {\n node.isLink = this.field.params.link;\n });\n\n from(fileNodeList)\n .pipe(\n mergeMap((node) =>\n zip(of(node?.content?.mimeType), this.activitiContentService.applyAlfrescoNode(node, siteId, accountId), of(node['isExternal']))\n )\n )\n .subscribe(\n ([mimeType, res, isExternal]) => {\n res.mimeType = mimeType;\n res['isExternal'] = isExternal;\n filesSaved.push(res);\n },\n () => {},\n () => {\n const previousFiles = this.field.value ? this.field.value : [];\n this.field.value = [...previousFiles, ...filesSaved];\n this.field.json.value = [...previousFiles, ...filesSaved];\n this.hasFile = true;\n }\n );\n }\n\n private updateNodesParams(): void {\n this.router.navigate([], {\n relativeTo: this.activatedRoute,\n queryParams: { nodes: this.tempFilesList.map((file) => file.id).join(',') },\n queryParamsHandling: 'merge'\n });\n }\n\n private getDomainHost(urlToCheck: string): string {\n const result = urlToCheck.match('^(?:https?://)?(?:[^@/\\n]+@)?(?:www\\\\.)?([^:/?\\n]+)');\n return result[1];\n }\n}\n","<div class=\"adf-attach-widget {{ field.className }}\" [class.adf-readonly]=\"field.readOnly\">\n <label class=\"adf-label\" [attr.for]=\"field.id\"\n >{{ field.name | translate }}\n <span class=\"adf-asterisk\" [style.visibility]=\"isRequired() ? 'visible' : 'hidden'\">*</span>\n </label>\n <div class=\"adf-attach-widget-container\">\n <div id=\"adf-attach-widget-simple-upload\" *ngIf=\"isSimpleUploadButton() && isUploadButtonVisible()\">\n <a mat-raised-button color=\"primary\">\n {{ 'FORM.FIELD.UPLOAD' | translate }}\n <mat-icon>file_upload</mat-icon>\n <input #uploadFiles [multiple]=\"multipleOption\" type=\"file\" [id]=\"field.id\" (change)=\"onAttachFileChanged($event)\" />\n </a>\n </div>\n <div class=\"adf-attach-widget__menu-upload\" (focusout)=\"markAsTouched()\" *ngIf=\"isUploadButtonVisible() && isMultipleSourceUpload()\">\n <button mat-raised-button color=\"primary\" [matMenuTriggerFor]=\"menu\" [id]=\"field.id\">\n <mat-icon>attach_file</mat-icon>\n {{ 'FORM.FIELD.UPLOAD' | translate }}\n </button>\n <mat-menu #menu=\"matMenu\" class=\"adf-attach-widget__menu-content\">\n <button mat-menu-item (click)=\"uploadFile.click()\" id=\"attach-local-file\" *ngIf=\"isAllFileSourceSelected()\">\n {{ 'FORM.FIELD.LOCALSTORAGE' | translate }}\n <mat-icon>file_upload</mat-icon>\n <input\n #uploadFile\n class=\"adf-attach-widget__input-type\"\n [multiple]=\"multipleOption\"\n type=\"file\"\n [id]=\"field.id\"\n (change)=\"onAttachFileChanged($event)\"\n />\n </button>\n <button\n mat-menu-item\n *ngIf=\"isDefinedSourceFolder()\"\n id=\"attach-{{ field.params?.fileSource?.name }}\"\n (click)=\"openSelectDialogFromFileSource()\"\n >\n <mat-icon>\n <adf-alfresco-icon />\n </mat-icon>\n {{ field.params?.fileSource?.name }}\n </button>\n <div *ngIf=\"!isDefinedSourceFolder()\">\n <button mat-menu-item *ngFor=\"let repo of repositoryList\" id=\"attach-{{ repo?.name }}\" (click)=\"openSelectDialog(repo)\">\n <mat-icon>\n <adf-alfresco-icon />\n </mat-icon>\n {{ repo.name }}\n </button>\n </div>\n </mat-menu>\n </div>\n </div>\n</div>\n\n<div data-automation-id=\"adf-attach-widget-readonly-list\">\n <mat-list *ngIf=\"hasFile\">\n <mat-list-item class=\"adf-attach-files-row\" *ngFor=\"let file of field.value; index as i\">\n <mat-icon matListItemIcon>\n <img class=\"adf-attach-widget__icon\"\n [id]=\"'file-'+file.id+'-icon'\"\n [src]=\"file.content ? getIcon(file.content.mimeType) : getIcon(file.mimeType)\"\n [alt]=\"mimeTypeIcon\"\n (click)=\"onAttachFileClicked(file)\"\n (keyup.enter)=\"onAttachFileClicked(file)\"\n [attr.aria-label]=\"file.name\"\n [tabindex]=\"i\"/>\n </mat-icon>\n\n <div matListItemLine class=\"adf-attach-widget__label\">\n <span id=\"{{'file-'+file.id}}\"\n (click)=\"onAttachFileClicked(file)\"\n [title]=\"file.name\"\n (keyup.enter)=\"onAttachFileClicked(file)\"\n [tabindex]=\"i\" class=\"adf-file\">\n {{file.name}}\n </span>\n <button id=\"{{'file-'+file.id+'-option-menu'}}\" mat-icon-button [matMenuTriggerFor]=\"fileActionMenu\"\n [attr.aria-label]=\"'ADF_PROCESS_LIST.DETAILS.BUTTON.FILE_OPTION_MENU' | translate\">\n <mat-icon>more_vert</mat-icon>\n </button>\n </div>\n <mat-menu #fileActionMenu=\"matMenu\" xPosition=\"before\">\n <button\n id=\"{{ 'file-' + file.id + '-show-file' }}\"\n [disabled]=\"file.isExternal || !file.mimeType || (!file.sourceId && (isStartProcessPage || !file.contentAvailable))\"\n mat-menu-item\n (click)=\"onAttachFileClicked(file)\"\n >\n <mat-icon>visibility</mat-icon>\n <span>{{ 'FORM.FIELD.VIEW_FILE' | translate }}</span>\n </button>\n <button\n id=\"{{ 'file-' + file.id + '-download-file' }}\"\n [disabled]=\"file.isExternal || !file.mimeType\"\n mat-menu-item\n (click)=\"downloadContent(file)\"\n >\n <mat-icon>file_download</mat-icon>\n <span>{{ 'FORM.FIELD.DOWNLOAD_FILE' | translate }}</span>\n </button>\n <button\n *ngIf=\"!field.readOnly\"\n mat-menu-item\n [id]=\"'file-' + file.id + '-remove'\"\n (click)=\"onRemoveAttachFile(file)\"\n (keyup.enter)=\"onRemoveAttachFile(file)\"\n >\n <mat-icon class=\"mat-24\">highlight_off</mat-icon>\n <span>{{ 'FORM.FIELD.REMOVE_FILE' | translate }}</span>\n </button>\n </mat-menu>\n </mat-list-item>\n </mat-list>\n</div>\n\n<error-widget [error]=\"field.validationSummary\" />\n<error-widget *ngIf=\"!field.isValid && isTouched() && !isSelected()\" required=\"{{ 'FORM.FIELD.REQUIRED' | translate }}\" />\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/component-selector */\n\nimport { Component, ViewEncapsulation, OnInit } from '@angular/core';\nimport { WidgetComponent, FormService, ErrorWidgetComponent } from '@alfresco/adf-core';\nimport { ContentNodeDialogService, NodesApiService } from '@alfresco/adf-content-services';\nimport { Node } from '@alfresco/js-api';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatLineModule } from '@angular/material/core';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'attach-folder-widget',\n imports: [CommonModule, TranslatePipe, MatIconModule, MatLineModule, MatButtonModule, ErrorWidgetComponent],\n templateUrl: './attach-folder-widget.component.html',\n styleUrls: ['./attach-folder-widget.component.scss'],\n host: {\n '(click)': 'event($event)',\n '(blur)': 'event($event)',\n '(change)': 'event($event)',\n '(focus)': 'event($event)',\n '(focusin)': 'event($event)',\n '(focusout)': 'event($event)',\n '(input)': 'event($event)',\n '(invalid)': 'event($event)',\n '(select)': 'event($event)'\n },\n encapsulation: ViewEncapsulation.None\n})\nexport class AttachFolderWidgetComponent extends WidgetComponent implements OnInit {\n typeId = 'AttachFolderWidgetComponent';\n hasFolder: boolean = false;\n selectedFolderName: string = '';\n\n constructor(private contentDialog: ContentNodeDialogService, public formService: FormService, private nodeService: NodesApiService) {\n super();\n }\n\n ngOnInit() {\n if (this.field?.value) {\n this.hasFolder = true;\n this.nodeService.getNode(this.field.value).subscribe((node: Node) => {\n this.selectedFolderName = node.name;\n });\n }\n }\n\n isDefinedSourceFolder(): boolean {\n return !!this.field.params?.folderSource?.selectedFolder;\n }\n\n openSelectDialogFromFileSource() {\n const params = this.field.params;\n if (this.isDefinedSourceFolder()) {\n this.contentDialog.openFolderBrowseDialogByFolderId(params.folderSource.selectedFolder.pathId).subscribe((selections: Node[]) => {\n this.selectedFolderName = selections[0].name;\n this.field.value = selections[0].id;\n this.hasFolder = true;\n });\n } else {\n this.contentDialog.openFolderBrowseDialogBySite().subscribe((selections: Node[]) => {\n this.selectedFolderName = selections[0].name;\n this.field.value = selections[0].id;\n this.hasFolder = true;\n });\n }\n }\n\n removeFolder() {\n this.field.value = null;\n this.selectedFolderName = '';\n this.hasFolder = false;\n }\n}\n","<div class=\"adf-attach-folder-widget {{ field.className }}\" [class.adf-invalid]=\"!field.isValid\" [class.adf-readonly]=\"field.readOnly\">\n <label class=\"adf-label\" [attr.for]=\"field.id\"\n >{{ field.name | translate }}<span [style.visibility]=\"isRequired() ? 'visible' : 'hidden'\">*</span></label\n >\n <div class=\"adf-attach-folder-widget-container\">\n <div *ngIf=\"hasFolder\" class=\"adf-attach-folder-result\">\n <mat-icon>folder</mat-icon>\n <div class=\"adf-attach-folder-files-row\">\n <span matLine id=\"{{ 'folder-' + field?.id }}\" role=\"button\" tabindex=\"0\" class=\"adf-folder\">{{ selectedFolderName }}</span>\n <button *ngIf=\"!field.readOnly\" mat-icon-button [id]=\"'folder-' + field?.id + '-remove'\" (click)=\"removeFolder()\">\n <mat-icon class=\"mat-24\">highlight_off</mat-icon>\n </button>\n </div>\n </div>\n\n <div *ngIf=\"!hasFolder && !field.readOnly\">\n <button\n mat-raised-button\n color=\"primary\"\n (click)=\"openSelectDialogFromFileSource()\"\n [id]=\"'folder-' + field?.id + '-button'\"\n class=\"adf-attach-folder-menu-trigger\"\n >\n {{ 'FORM.FIELD.UPLOAD' | translate }}\n <mat-icon>cloud_upload</mat-icon>\n </button>\n </div>\n </div>\n <error-widget [error]=\"field.validationSummary\" />\n <error-widget *ngIf=\"isInvalidFieldRequired()\" required=\"{{ 'FORM.FIELD.REQUIRED' | translate }}\" />\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Subject } from 'rxjs';\nimport { Node } from '@alfresco/js-api';\n\nexport interface AttachFileWidgetDialogComponentData {\n title: string;\n actionName?: string;\n selected: Subject<Node[]>;\n currentFolderId: string;\n ecmHost: string;\n context?: string;\n isSelectionValid?: (entry: Node) => boolean;\n showFilesInResult?: boolean;\n loginOnly?: boolean;\n accountIdentifier?: string;\n registerExternalHost?: (...args) => void;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './attach-file-widget.component';\nexport * from './attach-folder-widget.component';\nexport * from './attach-file-widget-dialog-component.interface';\nexport * from './attach-file-widget-dialog.component';\nexport * from './attach-file-widget-dialog.service';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './public-api';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { UploadWidgetComponent } from './upload/upload.widget';\nimport { DocumentWidgetComponent } from './document/document.widget';\nimport { ContentWidgetComponent } from './document/content.widget';\nimport { PeopleWidgetComponent } from './people/people.widget';\nimport { FunctionalGroupWidgetComponent } from './functional-group/functional-group.widget';\nimport { RadioButtonsWidgetComponent } from './radio-buttons/radio-buttons.widget';\nimport { DropdownWidgetComponent } from './dropdown/dropdown.widget';\nimport { TypeaheadWidgetComponent } from './typeahead/typeahead.widget';\nimport { FileViewerWidgetComponent } from './file-viewer/file-viewer.widget';\nimport { DYNAMIC_TABLE_WIDGET_DIRECTIVES } from './dynamic-table';\nimport { AttachFileWidgetComponent, AttachFileWidgetDialogComponent, AttachFolderWidgetComponent } from './content-widget';\n\nexport * from './content-widget/public-api';\nexport * from './document/content.widget';\nexport * from './document/document.widget';\nexport * from './people/people.widget';\nexport * from './radio-buttons/radio-buttons.widget';\nexport * from './functional-group/functional-group.widget';\nexport * from './typeahead/typeahead.widget';\nexport * from './dropdown/dropdown.widget';\nexport * from './file-viewer/file-viewer.widget';\nexport * from './dynamic-table/index';\nexport * from './upload/upload.widget';\n\nexport const WIDGET_DIRECTIVES = [\n AttachFileWidgetComponent,\n AttachFolderWidgetComponent,\n AttachFileWidgetDialogComponent,\n ContentWidgetComponent,\n DocumentWidgetComponent,\n DropdownWidgetComponent,\n ...DYNAMIC_TABLE_WIDGET_DIRECTIVES,\n FileViewerWidgetComponent,\n FunctionalGroupWidgetComponent,\n PeopleWidgetComponent,\n RadioButtonsWidgetComponent,\n TypeaheadWidgetComponent,\n UploadWidgetComponent\n];\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './public-api';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './activiti-alfresco.service';\nexport * from './ecm-model.service';\nexport * from './editor.service';\nexport * from './external-alfresco-api.service';\nexport * from './model.service';\nexport * from './process-content.service';\nexport * from './process-definition.service';\nexport * from './task.service';\nexport * from './task-form.service';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Injectable } from '@angular/core';\nimport {\n FormFieldTypes,\n FormRenderingService\n} from '@alfresco/adf-core';\nimport { AttachFileWidgetComponent } from './widgets/content-widget/attach-file-widget.component';\nimport { AttachFolderWidgetComponent } from './widgets/content-widget/attach-folder-widget.component';\nimport { DocumentWidgetComponent } from './widgets/document/document.widget';\nimport { PeopleWidgetComponent } from './widgets/people/people.widget';\nimport { FunctionalGroupWidgetComponent } from './widgets/functional-group/functional-group.widget';\nimport { RadioButtonsWidgetComponent } from './widgets/radio-buttons/radio-buttons.widget';\nimport { TypeaheadWidgetComponent } from './widgets/typeahead/typeahead.widget';\nimport { DynamicTableWidgetComponent } from './widgets/dynamic-table/dynamic-table.widget';\nimport { DropdownWidgetComponent } from './widgets/dropdown/dropdown.widget';\nimport { FileViewerWidgetComponent } from './widgets/file-viewer/file-viewer.widget';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ProcessFormRenderingService extends FormRenderingService {\n constructor() {\n super();\n\n this.register({\n [FormFieldTypes.DROPDOWN]: () => DropdownWidgetComponent,\n [FormFieldTypes.TYPEAHEAD]: () => TypeaheadWidgetComponent,\n [FormFieldTypes.RADIO_BUTTONS]: () => RadioButtonsWidgetComponent,\n [FormFieldTypes.UPLOAD]: () => AttachFileWidgetComponent,\n [FormFieldTypes.ATTACH_FOLDER]: () => AttachFolderWidgetComponent,\n [FormFieldTypes.DOCUMENT]: () => DocumentWidgetComponent,\n [FormFieldTypes.PEOPLE]: () => PeopleWidgetComponent,\n [FormFieldTypes.FUNCTIONAL_GROUP]: () => FunctionalGroupWidgetComponent,\n [FormFieldTypes.DYNAMIC_TABLE]: () => DynamicTableWidgetComponent,\n [FormFieldTypes.ALFRESCO_FILE_VIEWER]: () => FileViewerWidgetComponent\n }, true);\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FormListComponent } from './form-list/form-list.component';\nimport { FormCustomOutcomesComponent } from './form-custom-outcomes.component';\nimport { StartFormComponent } from './start-form/start-form.component';\nimport { WIDGET_DIRECTIVES } from './widgets';\nimport { FormComponent } from './form.component';\n\nexport * from './events/validate-dynamic-table-row.event';\nexport * from './form-list/form-list.component';\nexport * from './model/form-definition.model';\nexport * from './services';\nexport * from './start-form/start-form.component';\nexport * from './widgets/public-api';\nexport * from './form.component';\nexport * from './form-custom-outcomes.component';\nexport * from './process-form-rendering.service';\n\nexport const FORM_DIRECTIVES = [FormListComponent, FormCustomOutcomesComponent, StartFormComponent, FormComponent, ...WIDGET_DIRECTIVES];\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './public-api';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, EventEmitter, inject, Input, OnChanges, OnInit, Output, SimpleChanges, ViewEncapsulation } from '@angular/core';\nimport {\n ContentLinkModel,\n EmptyContentComponent,\n FormFieldModel,\n FormFieldValidator,\n FormModel,\n FormOutcomeEvent,\n TranslationService\n} from '@alfresco/adf-core';\nimport { TaskListService } from '../../services/tasklist.service';\nimport { TaskRepresentation, UserRepresentation } from '@alfresco/js-api';\nimport { Observable } from 'rxjs';\nimport { PeopleProcessService } from '../../../services/people-process.service';\nimport { CommonModule } from '@angular/common';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatButtonModule } from '@angular/material/button';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { ClaimTaskDirective } from './claim-task.directive';\nimport { UnclaimTaskDirective } from './unclaim-task.directive';\nimport { TaskStandaloneComponent } from '../task-standalone/task-standalone.component';\nimport { FormComponent, FormCustomOutcomesComponent } from '../../../form';\n\n@Component({\n selector: 'adf-task-form',\n imports: [\n CommonModule,\n MatCardModule,\n EmptyContentComponent,\n MatButtonModule,\n TranslatePipe,\n MatProgressSpinnerModule,\n ClaimTaskDirective,\n UnclaimTaskDirective,\n TaskStandaloneComponent,\n FormComponent,\n FormCustomOutcomesComponent\n ],\n templateUrl: './task-form.component.html',\n styleUrls: ['./task-form.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class TaskFormComponent implements OnInit, OnChanges {\n /** (**required**) The id of the task whose details we are asking for. */\n @Input({ required: true })\n taskId: string;\n\n /** Toggles rendering of the form title. */\n @Input()\n showFormTitle: boolean = false;\n\n /** Toggles rendering of the `Complete` outcome button. */\n @Input()\n showFormCompleteButton: boolean = true;\n\n /** Toggles rendering of the `Save` outcome button. */\n @Input()\n showFormSaveButton: boolean = true;\n\n /** Toggle rendering of the `Cancel` button. */\n @Input()\n showCancelButton: boolean = true;\n\n /**\n * Toggles read-only state of the form. All form widgets render as read-only if enabled.\n */\n @Input()\n readOnlyForm: boolean = false;\n\n /** Toggles rendering of the `Refresh` button. */\n @Input()\n showFormRefreshButton: boolean = true;\n\n /** Toggle rendering of the validation icon next to the form title. */\n @Input()\n showFormValidationIcon: boolean = true;\n\n /** Field validators for use with the form. */\n @Input()\n fieldValidators: FormFieldValidator[] = [];\n\n /** Emitted when the form is submitted with the `Save` or custom outcomes. */\n @Output()\n formSaved = new EventEmitter<FormModel>();\n\n /** Emitted when the form is submitted with the `Complete` outcome. */\n @Output()\n formCompleted = new EventEmitter<FormModel>();\n\n /** Emitted when the form field content is clicked. */\n @Output()\n formContentClicked = new EventEmitter<ContentLinkModel>();\n\n /** Emitted when the form is loaded or reloaded. */\n @Output()\n formLoaded = new EventEmitter<FormModel>();\n\n /** Emitted when the form associated with the form task is attached. */\n @Output()\n showAttachForm = new EventEmitter<void>();\n\n /**\n * Emitted when any outcome is executed. Default behaviour can be prevented\n * via `event.preventDefault()`.\n */\n @Output()\n executeOutcome = new EventEmitter<FormOutcomeEvent>();\n\n /** Emitted when the form associated with the task is completed. */\n @Output()\n completed = new EventEmitter<void>();\n\n /** Emitted when the supplied form values have a validation error. */\n @Output()\n formError = new EventEmitter<FormFieldModel[]>();\n\n /** Emitted when an error occurs. */\n @Output()\n error = new EventEmitter<any>();\n\n /** Emitted when the \"Cancel\" button is clicked. */\n @Output()\n cancel = new EventEmitter<void>();\n\n /** Emitted when the task is claimed. */\n @Output()\n taskClaimed = new EventEmitter<string>();\n\n /** Emitted when the task is unclaimed (ie, requeued).. */\n @Output()\n taskUnclaimed = new EventEmitter<string>();\n\n taskDetails: TaskRepresentation;\n currentLoggedUser: UserRepresentation;\n loading: boolean = false;\n internalReadOnlyForm: boolean = false;\n\n private taskListService = inject(TaskListService);\n private peopleProcessService = inject(PeopleProcessService);\n private translationService = inject(TranslationService);\n\n ngOnInit() {\n this.peopleProcessService.getCurrentUserInfo().subscribe((user) => {\n this.currentLoggedUser = user;\n });\n this.loadTask(this.taskId);\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const taskId = changes['taskId'];\n if (taskId?.currentValue) {\n this.loadTask(this.taskId);\n return;\n }\n }\n\n loadTask(taskId: string) {\n this.loading = true;\n if (taskId) {\n this.taskListService.getTaskDetails(taskId).subscribe((res) => {\n this.taskDetails = res;\n\n if (!this.taskDetails.name) {\n this.taskDetails.name = 'No name';\n }\n\n const endDate: any = res.endDate;\n if (endDate && !isNaN(endDate.getTime())) {\n this.internalReadOnlyForm = true;\n } else {\n this.internalReadOnlyForm = this.readOnlyForm;\n }\n this.loading = false;\n });\n }\n }\n\n onFormSaved(savedForm: FormModel) {\n this.formSaved.emit(savedForm);\n }\n\n onFormCompleted(form: FormModel) {\n this.formCompleted.emit(form);\n }\n\n onFormLoaded(form: FormModel): void {\n this.formLoaded.emit(form);\n }\n\n onFormContentClick(content: ContentLinkModel): void {\n this.formContentClicked.emit(content);\n }\n\n onFormExecuteOutcome(outcome: FormOutcomeEvent) {\n this.executeOutcome.emit(outcome);\n }\n\n onFormError(error: any) {\n this.formError.emit(error);\n }\n\n onError(error: any) {\n this.error.emit(error);\n }\n\n onCompleteTask() {\n this.taskListService.completeTask(this.taskDetails.id).subscribe(\n () => this.completed.emit(),\n (error) => this.error.emit(error)\n );\n }\n\n onCancel() {\n this.cancel.emit();\n }\n\n onShowAttachForm() {\n this.showAttachForm.emit();\n }\n\n hasFormKey(): boolean {\n return !!this.taskDetails?.formKey;\n }\n\n isStandaloneTask(): boolean {\n return !this.taskDetails?.processDefinitionId;\n }\n\n isCompletedTask(): boolean {\n return !!this.taskDetails?.endDate;\n }\n\n isCompleteButtonVisible(): boolean {\n return !this.hasFormKey() && this.isTaskActive() && this.isCompleteButtonEnabled();\n }\n\n isTaskActive() {\n return this.taskDetails?.duration === null;\n }\n\n isAssigned(): boolean {\n return !!this.taskDetails.assignee;\n }\n\n isAssignedToMe(): boolean {\n return this.isAssigned() && this.hasEmailAddress() ? this.isEmailEqual() : this.isExternalIdEqual();\n }\n\n isCompleteButtonEnabled(): boolean {\n return this.isAssignedToMe() || this.canInitiatorComplete();\n }\n\n canInitiatorComplete(): boolean {\n return !!this.taskDetails?.initiatorCanCompleteTask;\n }\n\n isReadOnlyForm(): boolean {\n let readOnlyForm: boolean;\n if (this.isCandidateMember()) {\n readOnlyForm = this.internalReadOnlyForm || !this.isAssignedToMe();\n } else {\n readOnlyForm =\n this.internalReadOnlyForm || !(this.isAssignedToMe() || this.canCurrentUserAsInitiatorComplete() || this.isCurrentUserInvolved());\n }\n\n return readOnlyForm;\n }\n\n isCurrentUserInvolved(): boolean {\n let isInvolved = false;\n if (this.taskDetails.involvedPeople && this.currentLoggedUser) {\n const userInvolved = this.taskDetails.involvedPeople.find(\n (involvedUser) =>\n involvedUser.email.toLocaleLowerCase() === this.currentLoggedUser.email.toLocaleLowerCase() ||\n involvedUser.id + '' === this.currentLoggedUser.externalId\n );\n isInvolved = !!userInvolved;\n }\n\n if (this.taskDetails.involvedGroups?.length && this.currentLoggedUser.groups?.length && !isInvolved) {\n const userGroup = this.taskDetails.involvedGroups.find((involvedGroup) =>\n this.currentLoggedUser.groups.find((group) => group.name === involvedGroup.name.toLocaleLowerCase() || group.id === involvedGroup.id)\n );\n isInvolved = !!userGroup;\n }\n return isInvolved;\n }\n\n canCurrentUserAsInitiatorComplete(): boolean {\n return this.canInitiatorComplete() && this.isProcessInitiator();\n }\n\n isProcessInitiator(): boolean {\n return this.currentLoggedUser && this.currentLoggedUser.id === +this.taskDetails.processInstanceStartUserId;\n }\n\n isSaveButtonVisible(): boolean {\n return this.showFormSaveButton && (!this.canInitiatorComplete() || this.isAssignedToMe() || this.isCurrentUserInvolved());\n }\n\n canCompleteNoFormTask(): boolean {\n return this.isReadOnlyForm();\n }\n\n getCompletedTaskTranslatedMessage(): Observable<string> {\n return this.translationService.get('ADF_TASK_FORM.COMPLETED_TASK.TITLE', { taskName: this.taskDetails.name });\n }\n\n isCandidateMember(): boolean {\n return this.taskDetails.managerOfCandidateGroup || this.taskDetails.memberOfCandidateGroup || this.taskDetails.memberOfCandidateUsers;\n }\n\n isTaskClaimable(): boolean {\n return this.isCandidateMember() && !this.isAssigned();\n }\n\n isTaskClaimedByCandidateMember(): boolean {\n return this.isCandidateMember() && this.isAssignedToMe() && !this.isCompletedTask();\n }\n\n reloadTask() {\n this.loadTask(this.taskId);\n }\n\n onClaimTask(taskId: string) {\n this.taskClaimed.emit(taskId);\n }\n\n onClaimTaskError(error: any) {\n this.error.emit(error);\n }\n\n onUnclaimTask(taskId: string) {\n this.taskUnclaimed.emit(taskId);\n }\n\n onUnclaimTaskError(error: any) {\n this.error.emit(error);\n }\n\n private hasEmailAddress(): boolean {\n return !!this.taskDetails.assignee.email;\n }\n\n private isEmailEqual(): boolean {\n return (\n this.taskDetails.assignee &&\n this.currentLoggedUser &&\n this.taskDetails.assignee.email.toLocaleLowerCase() === this.currentLoggedUser.email.toLocaleLowerCase()\n );\n }\n\n private isExternalIdEqual(): boolean {\n return this.taskDetails.assignee && this.currentLoggedUser && this.taskDetails.assignee.externalId === this.currentLoggedUser.externalId;\n }\n}\n","<ng-container *ngIf=\"!loading; else loadingTemplate\">\n <adf-form *ngIf=\"hasFormKey(); else withoutForm\"\n [taskId]=\"taskDetails?.id\"\n [showTitle]=\"showFormTitle\"\n [showValidationIcon]=\"showFormValidationIcon\"\n [showRefreshButton]=\"showFormRefreshButton\"\n [showCompleteButton]=\"showFormCompleteButton\"\n [showSaveButton]=\"isSaveButtonVisible()\"\n [disableCompleteButton]=\"!isCompleteButtonEnabled()\"\n [readOnly]=\"isReadOnlyForm()\"\n [fieldValidators]=\"fieldValidators\"\n (formSaved)='onFormSaved($event)'\n (formCompleted)='onFormCompleted($event)'\n (formContentClicked)='onFormContentClick($event)'\n (formLoaded)='onFormLoaded($event)'\n (formError)='onFormError($event)'\n (error)='onError($event)'\n (executeOutcome)='onFormExecuteOutcome($event)'>\n <adf-form-custom-outcomes>\n <ng-template [ngTemplateOutlet]=\"taskFormButtons\" />\n </adf-form-custom-outcomes>\n </adf-form>\n <ng-template #withoutForm>\n <adf-task-standalone *ngIf=\"isStandaloneTask(); else emptyFormMessage\"\n [taskName]=\"taskDetails.name\"\n [taskId]=\"taskDetails.id\"\n [isCompleted]=\"isCompletedTask()\"\n [hasCompletePermission]=\"isCompleteButtonVisible()\"\n [hideCancelButton]=\"showCancelButton\"\n (complete)=\"onCompleteTask()\"\n (showAttachForm)=\"onShowAttachForm()\" />\n <ng-template #emptyFormMessage>\n <mat-card appearance=\"outlined\" class=\"adf-task-form-container\">\n <mat-card-header>\n <mat-card-title>\n <h4>\n <span class=\"adf-form-title\">\n {{taskDetails.name}}\n <ng-container *ngIf=\"!taskDetails.name\">\n {{'FORM.FORM_RENDERER.NAMELESS_TASK' | translate}}\n </ng-container>\n </span>\n </h4>\n </mat-card-title>\n </mat-card-header>\n <mat-card-content>\n <adf-empty-content *ngIf=\"isCompletedTask(); else emptyFormTemplate\"\n [icon]=\"'description'\"\n [title]=\"getCompletedTaskTranslatedMessage() | async\"\n [subtitle]=\"'ADF_TASK_FORM.COMPLETED_TASK.SUBTITLE'\" />\n <ng-template #emptyFormTemplate>\n <adf-empty-content\n [icon]=\"'description'\"\n [title]=\"'ADF_TASK_LIST.STANDALONE_TASK.NO_FORM_MESSAGE'\"\n [subtitle]=\"'ADF_TASK_FORM.EMPTY_FORM.SUBTITLE'\" />\n </ng-template>\n </mat-card-content>\n <mat-card-actions align=\"end\">\n <div class=\"adf-task-form-actions\">\n <ng-template [ngTemplateOutlet]=\"taskFormButtons\" />\n <button mat-button\n *ngIf=\"!isCompletedTask()\" id=\"adf-no-form-complete-button\"\n color=\"primary\"\n class=\"adf-task-form-actions-button\"\n [disabled]=\"canCompleteNoFormTask()\"\n (click)=\"onCompleteTask()\">\n {{'ADF_TASK_FORM.EMPTY_FORM.BUTTONS.COMPLETE' | translate}}\n </button>\n </div>\n </mat-card-actions>\n </mat-card>\n </ng-template>\n </ng-template>\n\n <ng-template #taskFormButtons>\n <button mat-button id=\"adf-no-form-cancel-button\"\n *ngIf=\"showCancelButton\"\n (click)=\"onCancel()\">\n {{'ADF_TASK_FORM.EMPTY_FORM.BUTTONS.CANCEL' | translate}}\n </button>\n <button mat-button data-automation-id=\"adf-task-form-claim-button\"\n *ngIf=\"isTaskClaimable()\"\n adf-claim-task\n [taskId]=\"taskId\"\n (success)=\"onClaimTask($event)\"\n (error)=\"onClaimTaskError($event)\">\n {{ 'ADF_TASK_FORM.EMPTY_FORM.BUTTONS.CLAIM' | translate }}\n </button>\n <button mat-button data-automation-id=\"adf-task-form-unclaim-button\"\n *ngIf=\"isTaskClaimedByCandidateMember()\"\n adf-unclaim-task\n [taskId]=\"taskId\"\n (success)=\"onUnclaimTask($event)\"\n (error)=\"onUnclaimTaskError($event)\">\n {{ 'ADF_TASK_FORM.EMPTY_FORM.BUTTONS.UNCLAIM' | translate }}\n </button>\n </ng-template>\n</ng-container>\n<ng-template #loadingTemplate>\n <div class=\"adf-task-form-spinner-container\">\n <mat-spinner />\n </div>\n</ng-template>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, EventEmitter, Input, OnChanges, OnInit, Output } from '@angular/core';\nimport { Form } from '../../models/form.model';\nimport { TaskListService } from '../../services/tasklist.service';\nimport { ReactiveFormsModule, UntypedFormControl, Validators } from '@angular/forms';\nimport { ModelService } from '../../../form/services/model.service';\nimport { TaskFormService } from '../../../form/services/task-form.service';\nimport { CommonModule } from '@angular/common';\nimport { MatCardModule } from '@angular/material/card';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatButtonModule } from '@angular/material/button';\nimport { FormComponent } from '../../../form';\n\n@Component({\n selector: 'adf-attach-form',\n imports: [CommonModule, MatCardModule, TranslatePipe, MatFormFieldModule, MatSelectModule, ReactiveFormsModule, MatButtonModule, FormComponent],\n templateUrl: './attach-form.component.html',\n styleUrls: ['./attach-form.component.scss']\n})\nexport class AttachFormComponent implements OnInit, OnChanges {\n /** Id of the task. */\n @Input({ required: true })\n taskId: any;\n\n /** Identifier of the form to attach. */\n @Input()\n formKey: any;\n\n /** Emitted when the \"Cancel\" button is clicked. */\n @Output()\n cancelAttachForm = new EventEmitter<void>();\n\n /** Emitted when the form is attached successfully. */\n @Output()\n success = new EventEmitter<void>();\n\n /** Emitted when an error occurs. */\n @Output()\n error = new EventEmitter<any>();\n\n forms: Form[];\n\n formId: number;\n disableSubmit: boolean = true;\n selectedFormId: number;\n\n attachFormControl: UntypedFormControl;\n\n constructor(private taskService: TaskListService, private modelService: ModelService, private taskFormService: TaskFormService) {}\n\n ngOnInit() {\n this.attachFormControl = new UntypedFormControl('', Validators.required);\n this.attachFormControl.valueChanges.subscribe((currentValue) => {\n if (this.attachFormControl.valid) {\n this.disableSubmit = this.formId === currentValue;\n }\n });\n }\n\n ngOnChanges() {\n this.formId = undefined;\n this.disableSubmit = true;\n this.loadFormsTask();\n if (this.formKey) {\n this.onFormAttached();\n }\n }\n\n onCancelButtonClick(): void {\n this.selectedFormId = this.formId;\n this.cancelAttachForm.emit();\n }\n\n onRemoveButtonClick(): void {\n this.taskService.deleteForm(this.taskId).subscribe(\n () => {\n this.formId = this.selectedFormId = null;\n this.success.emit();\n },\n (err) => {\n this.error.emit(err);\n }\n );\n }\n\n onAttachFormButtonClick(): void {\n this.attachForm(this.taskId, this.selectedFormId);\n }\n\n private loadFormsTask(): void {\n this.taskService.getFormList().subscribe(\n (form: Form[]) => {\n this.forms = form;\n },\n (err) => {\n this.error.emit(err);\n }\n );\n }\n\n private onFormAttached() {\n this.taskFormService.getTaskForm(this.taskId).subscribe(\n (res) => {\n this.modelService.getFormDefinitionByName(res.name).subscribe((formDef) => {\n this.formId = this.selectedFormId = formDef;\n });\n },\n (err) => {\n this.error.emit(err);\n }\n );\n }\n\n private attachForm(taskId: string, formId: number) {\n if (taskId && formId) {\n this.taskService.attachFormToATask(taskId, formId).subscribe(\n () => {\n this.success.emit();\n },\n (err) => {\n this.error.emit(err);\n }\n );\n }\n }\n}\n","<div class=\"adf-attach-form\">\n <mat-card appearance=\"outlined\">\n <mat-card-content>\n <div class=\"adf-attache-form-message-container\">\n <mat-card-title class=\"mat-card-title\">\n <h4 class=\"adf-form-title\">{{ 'ADF_TASK_LIST.ATTACH_FORM.SELECT_FORM' | translate }}</h4>\n </mat-card-title>\n <div class=\"adf-attach-form-row\">\n <mat-form-field class=\"adf-grid-full-width\">\n <mat-select [formControl]=\"attachFormControl\" placeholder=\"{{ 'ADF_TASK_LIST.ATTACH_FORM.SELECT_OPTION' | translate }}\" id=\"form_id\" [(ngModel)]=\"selectedFormId\">\n <mat-option *ngFor=\"let form of forms\" [value]=\"form.id\">{{ form.name }}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <adf-form *ngIf=\"this.attachFormControl.valid\"\n [formId]=\"selectedFormId\"\n [readOnly]=\"true\"\n [showCompleteButton]=\"false\"\n [showRefreshButton]=\"false\"\n [showValidationIcon]=\"false\" />\n </div>\n </mat-card-content>\n\n <mat-card-actions class=\"adf-attach-form-mat-card-actions\">\n <div>\n <button mat-button id=\"adf-attach-form-remove-button\" color=\"warn\" *ngIf=\"formKey\" (click)=\"onRemoveButtonClick()\">{{ 'ADF_TASK_LIST.ATTACH_FORM.REMOVE_FORM' | translate }}</button>\n </div>\n <div>\n <button mat-button id=\"adf-attach-form-cancel-button\" (click)=\"onCancelButtonClick()\">{{ 'ADF_TASK_LIST.START_TASK.FORM.ACTION.CANCEL' | translate }}</button>\n <button mat-button id=\"adf-attach-form-attach-button\" [disabled]=\"disableSubmit\" color=\"primary\" (click)=\"onAttachFormButtonClick()\">{{ 'ADF_TASK_LIST.START_TASK.FORM.LABEL.ATTACHFORM' | translate }}</button>\n </div>\n </mat-card-actions>\n </mat-card>\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges, ViewChild } from '@angular/core';\nimport { MatDialog, MatDialogModule } from '@angular/material/dialog';\nimport { TaskListService } from '../../services/tasklist.service';\nimport { TaskRepresentation } from '@alfresco/js-api';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n selector: 'adf-checklist',\n imports: [\n CommonModule,\n TranslatePipe,\n MatChipsModule,\n MatButtonModule,\n MatIconModule,\n MatDialogModule,\n MatFormFieldModule,\n MatInputModule,\n FormsModule\n ],\n templateUrl: './checklist.component.html',\n styleUrls: ['./checklist.component.scss']\n})\nexport class ChecklistComponent implements OnChanges {\n /**\n * The id of the parent task to which subtasks are attached.\n */\n @Input()\n taskId: string;\n\n /**\n * Toggle readonly state of the form.\n * All form widgets will render as readonly if enabled.\n */\n @Input()\n readOnly: boolean = false;\n\n /** (required) The assignee id that the subtasks are assigned to. */\n @Input()\n assignee: number;\n\n /** Emitted when a new checklist task is created. */\n @Output()\n checklistTaskCreated = new EventEmitter<TaskRepresentation>();\n\n /** Emitted when a checklist task is deleted. */\n @Output()\n checklistTaskDeleted: EventEmitter<string> = new EventEmitter<string>();\n\n /** Emitted when an error occurs. */\n @Output()\n error = new EventEmitter<any>();\n\n @ViewChild('dialog', { static: true })\n addNewDialog: any;\n\n taskName: string;\n\n checklist: TaskRepresentation[] = [];\n\n constructor(private taskListService: TaskListService, private dialog: MatDialog) {}\n\n ngOnChanges(changes: SimpleChanges) {\n const taskId = changes['taskId'];\n if (taskId?.currentValue) {\n this.getTaskChecklist();\n return;\n }\n }\n\n getTaskChecklist() {\n this.checklist = [];\n if (this.taskId) {\n this.taskListService.getTaskChecklist(this.taskId).subscribe(\n (taskDetailsModel) => {\n taskDetailsModel.forEach((task) => {\n this.checklist.push(task);\n });\n },\n (error) => {\n this.error.emit(error);\n }\n );\n } else {\n this.checklist = [];\n }\n }\n\n showDialog() {\n this.dialog.open(this.addNewDialog, { width: '350px' });\n }\n\n public add() {\n const newTask = new TaskRepresentation({\n name: this.taskName,\n parentTaskId: this.taskId,\n assignee: { id: this.assignee }\n });\n this.taskListService.addTask(newTask).subscribe(\n (taskDetailsModel) => {\n this.checklist.push(taskDetailsModel);\n this.checklistTaskCreated.emit(taskDetailsModel);\n this.taskName = '';\n },\n (error) => {\n this.error.emit(error);\n }\n );\n this.cancel();\n }\n\n public delete(taskId: string) {\n this.taskListService.deleteTask(taskId).subscribe(\n () => {\n this.checklist = this.checklist.filter((check) => check.id !== taskId);\n this.checklistTaskDeleted.emit(taskId);\n },\n (error) => {\n this.error.emit(error);\n }\n );\n }\n\n public cancel() {\n this.dialog.closeAll();\n this.taskName = '';\n }\n}\n","<div class=\"adf-checklist-control\">\n <mat-chip-listbox data-automation-id=\"checklist-label\">\n <span class=\"adf-activiti-label\">{{ 'ADF_TASK_LIST.DETAILS.LABELS.CHECKLIST' | translate }}</span>\n <mat-chip-option class=\"adf-process-badge\" color=\"accent\" selected=\"true\">{{checklist?.length}}</mat-chip-option>\n </mat-chip-listbox>\n\n\n <button mat-icon-button *ngIf=\"!readOnly\" title=\"Add a checklist\"\n id=\"add-checklist\" class=\"adf-add-to-checklist-button\" (click)=\"showDialog()\">\n <mat-icon>add</mat-icon>\n </button>\n</div>\n\n<div class=\"adf-checklist-menu-container\" *ngIf=\"checklist?.length > 0\">\n <mat-chip-listbox class=\"mat-chip-list-stacked\">\n <mat-chip-option id=\"check-{{check.id}}\" class=\"adf-checklist-chip\" *ngFor=\"let check of checklist\"\n (removed)=\"delete(check.id)\">\n <span>{{check.name}}</span>\n <mat-icon *ngIf=\"!readOnly && !check.endDate\" id=\"remove-{{check.id}}\" matChipRemove>cancel\n </mat-icon>\n </mat-chip-option>\n </mat-chip-listbox>\n\n</div>\n<div *ngIf=\"checklist?.length === 0\" id=\"checklist-none-message\" class=\"adf-checklist-none-message\">\n {{ 'ADF_TASK_LIST.DETAILS.CHECKLIST.NONE' | translate }}\n</div>\n\n<ng-template #dialog>\n <div class=\"adf-checklist-dialog\" id=\"checklist-dialog\">\n <h4 matDialogTitle id=\"add-checklist-title\">{{ 'ADF_TASK_LIST.DETAILS.CHECKLIST.DIALOG.TITLE' | translate }}</h4>\n <mat-dialog-content>\n <mat-form-field>\n <input matInput placeholder=\"{{ 'ADF_TASK_LIST.DETAILS.CHECKLIST.DIALOG.PLACEHOLDER' | translate }}\" [(ngModel)]=\"taskName\" id=\"checklist-name\"\n data-automation-id=\"checklist-name\">\n </mat-form-field>\n </mat-dialog-content>\n <mat-dialog-actions class=\"adf-checklist-dialog-actions\">\n <button mat-button type=\"button\" id=\"close-check-dialog\" (click)=\"cancel()\">{{ 'ADF_TASK_LIST.DETAILS.CHECKLIST.DIALOG.CANCEL-BUTTON' | translate | uppercase }}</button>\n <button mat-button type=\"button\" id=\"add-check\" (click)=\"add()\">{{ 'ADF_TASK_LIST.DETAILS.CHECKLIST.DIALOG.ADD-BUTTON' | translate | uppercase }}</button>\n </mat-dialog-actions>\n </div>\n</ng-template>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { inject, Injectable } from '@angular/core';\nimport { Observable, forkJoin, from } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { UserFiltersApi, UserTaskFilterRepresentation } from '@alfresco/js-api';\nimport { AlfrescoApiService } from '@alfresco/adf-content-services';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TaskFilterService {\n protected apiService = inject(AlfrescoApiService);\n\n private _userFiltersApi: UserFiltersApi;\n get userFiltersApi(): UserFiltersApi {\n this._userFiltersApi = this._userFiltersApi ?? new UserFiltersApi(this.apiService.getInstance());\n return this._userFiltersApi;\n }\n\n /**\n * Creates and returns the default filters for a process app.\n *\n * @param appId ID of the target app\n * @returns Array of default filters just created\n */\n public createDefaultFilters(appId: number): Observable<UserTaskFilterRepresentation[]> {\n const myTasksFilter = this.getMyTasksFilterInstance(appId, 0);\n const myTaskObservable = this.addFilter(myTasksFilter);\n\n const overdueTasksFilter = this.getOverdueTasksFilterInstance(appId, 1);\n const overdueObservable = this.addFilter(overdueTasksFilter);\n\n const unassignedTasksFilter = this.getUnassignedTasksFilterInstance(appId, 2);\n const unassignedObservable = this.addFilter(unassignedTasksFilter);\n\n const completedTasksFilter = this.getCompletedTasksFilterInstance(appId, 3);\n const completeObservable = this.addFilter(completedTasksFilter);\n\n return new Observable((observer) => {\n forkJoin([myTaskObservable, overdueObservable, unassignedObservable, completeObservable]).subscribe((res) => {\n const filters: UserTaskFilterRepresentation[] = [];\n res.forEach((filter) => {\n if (!this.isFilterAlreadyExisting(filters, filter.name)) {\n if (filter.name === overdueTasksFilter.name) {\n filters.push(\n new UserTaskFilterRepresentation({\n ...filter,\n filter: overdueTasksFilter.filter,\n appId\n })\n );\n } else if (filter.name === myTasksFilter.name) {\n filters.push(\n new UserTaskFilterRepresentation({\n ...filter,\n filter: myTasksFilter.filter,\n appId\n })\n );\n } else if (filter.name === unassignedTasksFilter.name) {\n filters.push(\n new UserTaskFilterRepresentation({\n ...filter,\n filter: unassignedTasksFilter.filter,\n appId\n })\n );\n } else if (filter.name === completedTasksFilter.name) {\n filters.push(\n new UserTaskFilterRepresentation({\n ...filter,\n filter: completedTasksFilter.filter,\n appId\n })\n );\n }\n }\n });\n observer.next(filters);\n observer.complete();\n });\n });\n }\n\n /**\n * Gets all task filters for a process app.\n *\n * @param appId Optional ID for a specific app\n * @returns Array of task filter details\n */\n getTaskListFilters(appId?: number): Observable<UserTaskFilterRepresentation[]> {\n return from(this.callApiTaskFilters(appId)).pipe(\n map((response) => {\n const filters: UserTaskFilterRepresentation[] = [];\n response.data.forEach((filter: UserTaskFilterRepresentation) => {\n if (!this.isFilterAlreadyExisting(filters, filter.name)) {\n const filterModel = new UserTaskFilterRepresentation(filter);\n filters.push(filterModel);\n }\n });\n return filters;\n })\n );\n }\n\n /**\n * Checks if a filter with the given name already exists in the list of filters.\n *\n * @param filters - An array of objects representing the existing filters.\n * @param filterName - The name of the filter to check for existence.\n * @returns - True if a filter with the specified name already exists, false otherwise.\n */\n isFilterAlreadyExisting(filters: UserTaskFilterRepresentation[], filterName: string): boolean {\n return filters.some((existingFilter) => existingFilter.name === filterName);\n }\n\n /**\n * Gets a task filter by ID.\n *\n * @param filterId ID of the filter\n * @param appId ID of the app for the filter\n * @returns Details of task filter\n */\n getTaskFilterById(filterId: number, appId?: number): Observable<UserTaskFilterRepresentation> {\n return from(this.callApiTaskFilters(appId)).pipe(map((response) => response.data.find((filter) => filter.id === filterId)));\n }\n\n /**\n * Gets a task filter by name.\n *\n * @param taskName Name of the filter\n * @param appId ID of the app for the filter\n * @returns Details of task filter\n */\n getTaskFilterByName(taskName: string, appId?: number): Observable<UserTaskFilterRepresentation> {\n return from(this.callApiTaskFilters(appId)).pipe(map((response) => response.data.find((filter) => filter.name === taskName)));\n }\n\n /**\n * Adds a new task filter\n *\n * @param filter The new filter to add\n * @returns Details of task filter just added\n */\n addFilter(filter: UserTaskFilterRepresentation): Observable<UserTaskFilterRepresentation> {\n return from(this.userFiltersApi.createUserTaskFilter(filter));\n }\n\n /**\n * Update a task filter\n *\n * @param filterId existing filter id\n * @param updatedFilter updated filter body\n * @returns Observable<UserTaskFilterRepresentation>\n */\n updateTaskFilter(filterId: number, updatedFilter: UserTaskFilterRepresentation): Observable<UserTaskFilterRepresentation> {\n return from(this.userFiltersApi.updateUserTaskFilter(filterId, updatedFilter));\n }\n\n /**\n * Calls `getUserTaskFilters` from the Alfresco JS API.\n *\n * @param appId ID of the target app\n * @returns List of task filters\n */\n callApiTaskFilters(appId?: number): Promise<any> {\n if (appId) {\n return this.userFiltersApi.getUserTaskFilters({ appId });\n } else {\n return this.userFiltersApi.getUserTaskFilters();\n }\n }\n\n /**\n * Creates and returns a filter for \"My Tasks\" task instances.\n *\n * @param appId ID of the target app\n * @param index of the filter (optional)\n * @returns The newly created filter\n */\n getMyTasksFilterInstance(appId: number, index?: number): UserTaskFilterRepresentation {\n return new UserTaskFilterRepresentation({\n name: 'My Tasks',\n appId,\n recent: false,\n icon: 'glyphicon-inbox',\n filter: {\n sort: 'created-desc',\n name: '',\n state: 'open',\n assignment: 'assignee'\n },\n index\n });\n }\n\n /**\n * Creates and returns a filter for \"Overdue\" task instances.\n *\n * @param appId ID of the target app\n * @param index of the filter (optional)\n * @returns The newly created filter\n */\n getOverdueTasksFilterInstance(appId: number, index?: number): UserTaskFilterRepresentation {\n return new UserTaskFilterRepresentation({\n name: 'Overdue Tasks',\n appId,\n recent: false,\n icon: 'glyphicon-align-left',\n filter: { sort: 'created-desc', name: '', state: 'open', assignment: 'assignee' },\n index\n });\n }\n\n /**\n * Creates and returns a filter for \"Unassigned Tasks\" task instances.\n *\n * @param appId ID of the target app\n * @param index of the filter (optional)\n * @returns The newly created filter\n */\n getUnassignedTasksFilterInstance(appId: number, index?: number): UserTaskFilterRepresentation {\n return new UserTaskFilterRepresentation({\n name: 'Unassigned Tasks',\n appId,\n recent: false,\n icon: 'glyphicon-record',\n filter: { sort: 'created-desc', name: '', state: 'open', assignment: 'candidate' },\n index\n });\n }\n\n /**\n * Creates and returns a filter for \"Completed\" task instances.\n *\n * @param appId ID of the target app\n * @param index of the filter (optional)\n * @returns The newly created filter\n */\n getCompletedTasksFilterInstance(appId: number, index?: number): UserTaskFilterRepresentation {\n return new UserTaskFilterRepresentation({\n name: 'Completed Tasks',\n appId,\n recent: true,\n icon: 'glyphicon-ok-sign',\n filter: { sort: 'created-desc', name: '', state: 'completed', assignment: 'involved' },\n index\n });\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AppsProcessService } from '../../../services/apps-process.service';\nimport { Component, DestroyRef, EventEmitter, inject, Input, OnChanges, OnInit, Output, SimpleChanges, ViewEncapsulation } from '@angular/core';\nimport { TaskFilterService } from '../../services/task-filter.service';\nimport { TaskListService } from '../../services/tasklist.service';\nimport { IconModel } from '../../../app-list/icon.model';\nimport { ActivatedRoute, NavigationStart, Router } from '@angular/router';\nimport { filter } from 'rxjs/operators';\nimport { UserTaskFilterRepresentation } from '@alfresco/js-api';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { IconComponent } from '@alfresco/adf-core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { forkJoin, Observable } from 'rxjs';\n\n@Component({\n selector: 'adf-task-filters',\n imports: [CommonModule, TranslatePipe, MatButtonModule, IconComponent],\n templateUrl: './task-filters.component.html',\n styleUrls: ['./task-filters.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class TaskFiltersComponent implements OnInit, OnChanges {\n /**\n * Parameters to use for the task filter. If there is no match then\n * the default filter (the first one the list) is selected.\n */\n @Input()\n filterParam: UserTaskFilterRepresentation;\n\n /** Emitted when a filter is being clicked from the UI. */\n @Output()\n filterClicked = new EventEmitter<UserTaskFilterRepresentation>();\n\n /** Emitted when a filter is being selected based on the filterParam input. */\n @Output()\n filterSelected = new EventEmitter<UserTaskFilterRepresentation>();\n\n /** Emitted when the list is loaded. */\n @Output()\n success = new EventEmitter<any>();\n\n /** Emitted when an error occurs during loading. */\n @Output()\n error = new EventEmitter<any>();\n\n /** Display filters available to the current user for the application with the specified ID. */\n @Input()\n appId: number;\n\n /** Display filters available to the current user for the application with the specified name. */\n @Input()\n appName: string;\n\n /** Toggles display of the filter's icon. */\n @Input()\n showIcon: boolean;\n\n currentFilter: UserTaskFilterRepresentation;\n filters: UserTaskFilterRepresentation[] = [];\n\n isTaskRoute: boolean;\n isTaskActive: boolean;\n\n private iconsMDL: IconModel;\n\n private readonly destroyRef = inject(DestroyRef);\n\n constructor(\n private taskFilterService: TaskFilterService,\n private taskListService: TaskListService,\n private appsProcessService: AppsProcessService,\n private router: Router,\n private activatedRoute: ActivatedRoute\n ) {}\n\n ngOnInit() {\n this.iconsMDL = new IconModel();\n this.router.events\n .pipe(\n filter((event) => event instanceof NavigationStart),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe((navigationStart: NavigationStart) => {\n const activeRoute = navigationStart.url;\n this.isTaskActive = activeRoute.includes('tasks');\n });\n this.activatedRoute.url.subscribe((segments) => {\n const currentRoute = segments.join('/');\n this.isTaskRoute = currentRoute.includes('tasks');\n });\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const appName = changes['appName'];\n const appId = changes['appId'];\n const filterParam = changes['filterParam'];\n if (appName?.currentValue) {\n this.getFiltersByAppName(appName.currentValue);\n } else if (appId && appId.currentValue !== appId.previousValue) {\n this.getFiltersByAppId(appId.currentValue);\n } else if (filterParam && filterParam.currentValue !== filterParam.previousValue) {\n this.selectFilterAndEmit(filterParam.currentValue);\n }\n }\n\n isActiveRoute(filterActive: UserTaskFilterRepresentation): boolean {\n return (this.isTaskActive || this.isTaskRoute) && this.currentFilter === filterActive;\n }\n\n /**\n * Return the filter list filtered by appId\n *\n * @param appId - optional\n */\n getFiltersByAppId(appId?: number) {\n this.taskFilterService.getTaskListFilters(appId).subscribe(\n (res) => {\n if (res.length === 0 && this.isFilterListEmpty()) {\n this.createFiltersByAppId(appId);\n } else {\n const migratedFilters = this.migrateObsoleteFilters(res);\n if (migratedFilters.length > 0) {\n forkJoin(migratedFilters).subscribe(() => {\n this.setTaskFilters(res);\n });\n } else {\n this.setTaskFilters(res);\n }\n }\n },\n (err: any) => {\n this.error.emit(err);\n }\n );\n }\n\n /**\n * Return the filter list filtered by appName\n *\n * @param appName application name\n */\n getFiltersByAppName(appName: string): void {\n this.appsProcessService.getDeployedApplicationsByName(appName).subscribe(\n (application) => {\n this.getFiltersByAppId(application.id);\n },\n (err) => {\n this.error.emit(err);\n }\n );\n }\n\n /**\n * Create default filters by appId\n *\n * @param appId application id\n */\n private createFiltersByAppId(appId?: number): void {\n this.taskFilterService.createDefaultFilters(appId).subscribe(\n (resDefault) => {\n this.setTaskFilters(resDefault);\n },\n (errDefault: any) => {\n this.error.emit(errDefault);\n }\n );\n }\n\n /**\n * Pass the selected filter as next\n *\n * @param newFilter new filter model\n */\n public selectFilter(newFilter: UserTaskFilterRepresentation): void {\n if (newFilter) {\n this.currentFilter = this.filters.find(\n (entry, index) =>\n newFilter.index === index ||\n newFilter.id === entry.id ||\n (newFilter.name && newFilter.name.toLocaleLowerCase() === entry.name.toLocaleLowerCase())\n );\n }\n }\n\n private selectFilterAndEmit(newFilter: UserTaskFilterRepresentation) {\n this.selectFilter(newFilter);\n this.filterSelected.emit(this.currentFilter);\n }\n\n /**\n * Selects and emits the clicked filter.\n *\n * @param filterParams filter parameters model\n */\n onFilterClick(filterParams: UserTaskFilterRepresentation) {\n this.selectFilter(filterParams);\n this.filterClicked.emit(this.currentFilter);\n }\n\n /**\n * Select filter with task\n *\n * @param taskId task id\n */\n selectFilterWithTask(taskId: string): void {\n const filteredFilterList: UserTaskFilterRepresentation[] = [];\n this.taskListService.getFilterForTaskById(taskId, this.filters).subscribe(\n (filterModel) => {\n filteredFilterList.push(filterModel);\n },\n (err) => {\n this.error.emit(err);\n },\n () => {\n if (filteredFilterList.length > 0) {\n this.selectFilter(filteredFilterList[0]);\n this.filterSelected.emit(this.currentFilter);\n }\n }\n );\n }\n\n /**\n * Get the current filter\n *\n * @returns filter model\n */\n getCurrentFilter(): UserTaskFilterRepresentation {\n return this.currentFilter;\n }\n\n /**\n * Check if the filter list is empty\n *\n * @returns `true` if filter list is empty, otherwise `false`\n */\n isFilterListEmpty(): boolean {\n return this.filters === undefined || (this.filters && this.filters.length === 0);\n }\n\n /**\n * Get the material icons equivalent of the glyphicon icon\n *\n * @param icon glyphicon name\n * @returns material icons equivalent of the icon\n */\n getFilterIcon(icon: string): string {\n return this.iconsMDL.mapGlyphiconToMaterialDesignIcons(icon);\n }\n\n /**\n * Reset the filters properties\n */\n private resetFilter() {\n this.filters = [];\n this.currentFilter = undefined;\n }\n\n /**\n * Migrate \"Involved\" and \"Queued\" filters to \"Overdue\" and \"Unassigned\" filters\n *\n * @param filters - list of filters to migrate\n * @returns list of observables for each migrated filter\n */\n private migrateObsoleteFilters(filters: UserTaskFilterRepresentation[]): Observable<UserTaskFilterRepresentation>[] {\n const migratedFilters: Observable<UserTaskFilterRepresentation>[] = [];\n filters.forEach((filterToMigrate) => {\n switch (filterToMigrate.name) {\n case 'Involved Tasks':\n migratedFilters.push(\n this.taskFilterService.updateTaskFilter(filterToMigrate.id, this.taskFilterService.getOverdueTasksFilterInstance(this.appId))\n );\n break;\n case 'Queued Tasks':\n migratedFilters.push(\n this.taskFilterService.updateTaskFilter(\n filterToMigrate.id,\n this.taskFilterService.getUnassignedTasksFilterInstance(this.appId)\n )\n );\n break;\n default:\n break;\n }\n });\n return migratedFilters;\n }\n\n private setTaskFilters(taskFilters: UserTaskFilterRepresentation[]): void {\n this.resetFilter();\n this.filters = taskFilters;\n this.selectFilter(this.filterParam);\n this.success.emit(taskFilters);\n }\n}\n","<div *ngFor=\"let filter of filters\" class=\"adf-filters__entry\" [class.adf-active]=\"isActiveRoute(filter)\">\n <button\n (click)=\"onFilterClick(filter)\"\n [attr.aria-label]=\"filter.name | translate\"\n [id]=\"filter.id\"\n [attr.data-automation-id]=\"filter.name + '_filter'\"\n mat-button\n class=\"adf-filter-action-button adf-full-width\">\n <ng-container *ngIf=\"showIcon\">\n <adf-icon data-automation-id=\"adf-filter-icon\" [value]=\"getFilterIcon(filter.icon)\" />\n </ng-container>\n <span data-automation-id=\"adf-filter-label\" class=\"adf-filter-action-button__label\">{{ filter.name | translate }}</span>\n </button>\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport const taskPresetsDefaultModel = {\n default: [\n {\n key: 'name',\n type: 'text',\n title: 'ADF_TASK_LIST.PROPERTIES.NAME',\n sortable: true\n },\n {\n key: 'created',\n type: 'text',\n title: 'ADF_TASK_LIST.PROPERTIES.CREATED',\n cssClass: 'hidden',\n sortable: true\n },\n {\n key: 'assignee',\n type: 'text',\n title: 'ADF_TASK_LIST.PROPERTIES.ASSIGNEE',\n cssClass: 'hidden',\n sortable: true\n }\n ]\n};\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AppConfigService,\n CustomEmptyContentTemplateDirective,\n CustomLoadingContentTemplateDirective,\n DataCellEvent,\n DataRowEvent,\n DataTableAdapter,\n DataTableComponent,\n DataTableSchema,\n DEFAULT_PAGINATION,\n EmptyContentComponent,\n LoadingContentTemplateDirective,\n NoContentTemplateDirective,\n PaginatedComponent,\n PaginationModel,\n UserPreferencesService,\n UserPreferenceValues\n} from '@alfresco/adf-core';\nimport {\n AfterContentInit,\n Component,\n ContentChild,\n DestroyRef,\n EventEmitter,\n inject,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges\n} from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { taskPresetsDefaultModel } from '../../models/task-preset.model';\nimport { TaskListService } from '../../services/tasklist.service';\nimport { finalize } from 'rxjs/operators';\nimport { TaskQueryRepresentation, TaskRepresentation } from '@alfresco/js-api';\nimport { CommonModule } from '@angular/common';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nexport const PRESET_KEY = 'adf-task-list.presets';\n\n@Component({\n selector: 'adf-tasklist',\n imports: [\n CommonModule,\n MatProgressSpinnerModule,\n EmptyContentComponent,\n TranslatePipe,\n DataTableComponent,\n LoadingContentTemplateDirective,\n NoContentTemplateDirective\n ],\n templateUrl: './task-list.component.html',\n styleUrls: ['./task-list.component.css']\n})\nexport class TaskListComponent extends DataTableSchema implements OnChanges, AfterContentInit, PaginatedComponent, OnInit {\n @ContentChild(CustomEmptyContentTemplateDirective)\n customEmptyContent: CustomEmptyContentTemplateDirective;\n\n @ContentChild(CustomLoadingContentTemplateDirective)\n customLoadingContent: CustomLoadingContentTemplateDirective;\n\n /** The id of the app. */\n @Input()\n appId: number;\n\n /** The Instance Id of the process. */\n @Input()\n processInstanceId: string;\n\n /** The Definition Id of the process. */\n @Input()\n processDefinitionId: string;\n\n /** Current state of the process. Possible values are: `completed`, `active`. */\n @Input()\n state: string;\n\n /**\n * The assignment of the process. Possible values are: \"assignee\" (the current user\n * is the assignee), \"candidate\" (the current user is a task candidate, \"group_x\" (the task\n * is assigned to a group where the current user is a member,\n * no value (the current user is involved).\n */\n @Input()\n assignment: string;\n\n /**\n * Define the sort order of the tasks. Possible values are : `created-desc`,\n * `created-asc`, `due-desc`, `due-asc`\n */\n @Input()\n sort: string;\n\n /** Name of the tasklist. */\n @Input()\n name: string;\n\n /**\n * Define which task id should be selected after reloading. If the task id doesn't\n * exist or nothing is passed then the first task will be selected.\n */\n @Input()\n landingTaskId: string;\n\n /**\n * Data source object that represents the number and the type of the columns that\n * you want to show.\n */\n @Input()\n data: DataTableAdapter;\n\n /**\n * Row selection mode. Can be none, `single` or `multiple`. For `multiple` mode,\n * you can use Cmd (macOS) or Ctrl (Win) modifier key to toggle selection for\n * multiple rows.\n */\n @Input()\n selectionMode: string = 'single'; // none|single|multiple\n\n /** Toggles multiple row selection, renders checkboxes at the beginning of each row */\n @Input()\n multiselect: boolean = false;\n\n /** Toggles default selection of the first row */\n @Input()\n selectFirstRow: boolean = true;\n\n /** The id of a task */\n @Input()\n taskId: string;\n\n /** Toggles inclusion of Process Instances */\n @Input()\n includeProcessInstance: boolean;\n\n /** Starting point of the list within the full set of tasks. */\n @Input()\n start: number;\n\n /** Toggles custom context menu for the component. */\n @Input()\n showContextMenu: boolean = false;\n\n /** Toggles the sticky header mode. */\n @Input()\n stickyHeader: boolean = false;\n\n /** Enables column resizing for datatable */\n @Input()\n isResizingEnabled = false;\n\n /** Enables blur when resizing datatable columns */\n @Input()\n blurOnResize = true;\n\n /** Emitted before the context menu is displayed for a row. */\n @Output()\n showRowContextMenu = new EventEmitter<DataCellEvent>();\n\n /** Emitted when a task in the list is clicked */\n @Output()\n rowClick = new EventEmitter<string>();\n\n /** Emitted when rows are selected/unselected */\n @Output()\n rowsSelected = new EventEmitter<any[]>();\n\n /** Emitted when the task list is loaded */\n @Output()\n success = new EventEmitter<any>();\n\n /** Emitted when an error occurs. */\n @Output()\n error = new EventEmitter<any>();\n\n /** The page number of the tasks to fetch. */\n @Input()\n page: number = 0;\n\n /** The number of tasks to fetch. Default value: 25. */\n @Input()\n size: number = DEFAULT_PAGINATION.maxItems;\n\n /** Filter the tasks. Display only tasks with `created_date` after `dueAfter`. */\n @Input()\n dueAfter: string;\n\n /** Filter the tasks. Display only tasks with `created_date` before `dueBefore`. */\n @Input()\n dueBefore: string;\n\n requestNode: TaskQueryRepresentation;\n currentInstanceId: string;\n selectedInstances: any[];\n pagination: BehaviorSubject<PaginationModel>;\n rows: any[] = [];\n isLoading: boolean = true;\n sorting: any[] = ['created', 'desc'];\n\n /**\n * Toggles custom data source mode.\n * When enabled the component reloads data from it's current source instead of the server side.\n * This allows generating and displaying custom data sets (i.e. filtered out content).\n */\n hasCustomDataSource: boolean = false;\n\n private readonly destroyRef = inject(DestroyRef);\n\n constructor(private taskListService: TaskListService, appConfigService: AppConfigService, private userPreferences: UserPreferencesService) {\n super(appConfigService, PRESET_KEY, taskPresetsDefaultModel);\n\n this.pagination = new BehaviorSubject<PaginationModel>({\n maxItems: this.size,\n skipCount: 0,\n totalItems: 0\n });\n }\n\n ngAfterContentInit() {\n this.createDatatableSchema();\n if (this.data && this.data.getColumns().length === 0) {\n this.data.setColumns(this.columns);\n }\n\n if (this.appId) {\n this.reload();\n }\n }\n\n ngOnInit() {\n this.userPreferences\n .select(UserPreferenceValues.PaginationSize)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((pageSize) => (this.size = pageSize));\n }\n\n setCustomDataSource(rows: any[]): void {\n if (rows) {\n this.rows = rows;\n this.hasCustomDataSource = true;\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (this.isPropertyChanged(changes)) {\n if (this.isSortChanged(changes)) {\n this.sorting = this.sort ? this.sort.split('-') : this.sorting;\n }\n this.reload();\n }\n\n const presetColumnChanges = changes['presetColumn'];\n if (presetColumnChanges && !presetColumnChanges.firstChange) {\n this.columns = this.mergeJsonAndHtmlSchema();\n }\n }\n\n reload(): void {\n if (!this.hasCustomDataSource) {\n this.requestNode = this.createRequestNode();\n this.load();\n } else {\n this.isLoading = false;\n }\n }\n\n /**\n * Select the task given in input if present\n *\n * @param taskIdSelected selected task id\n */\n selectTask(taskIdSelected: string): void {\n if (!this.isListEmpty()) {\n let dataRow = null;\n\n if (taskIdSelected) {\n dataRow = this.rows.find((currentRow: any) => currentRow['id'] === taskIdSelected);\n }\n\n if (!dataRow && this.selectFirstRow) {\n dataRow = this.rows[0];\n }\n\n if (dataRow) {\n dataRow.isSelected = true;\n this.currentInstanceId = dataRow['id'];\n }\n } else {\n this.currentInstanceId = null;\n }\n }\n\n /**\n * Return the current instance id\n *\n * @returns the current instance id\n */\n getCurrentId(): string {\n return this.currentInstanceId;\n }\n\n /**\n * Check if the taskId is the same of the selected task\n *\n * @param taskId task id\n * @returns `true` if current instance id is the same as task id, otherwise `false`\n */\n isEqualToCurrentId(taskId: string): boolean {\n return this.currentInstanceId === taskId;\n }\n\n /**\n * Check if the list is empty\n *\n * @returns `true` if list is empty, otherwise `false`\n */\n isListEmpty(): boolean {\n return !this.rows || this.rows.length === 0;\n }\n\n onRowClick(item: DataRowEvent) {\n this.currentInstanceId = item.value.getValue('id');\n this.rowClick.emit(this.currentInstanceId);\n }\n\n onRowSelect(event: CustomEvent) {\n this.selectedInstances = [...event.detail.selection];\n this.rowsSelected.emit(this.selectedInstances);\n }\n\n onRowUnselect(event: CustomEvent) {\n this.selectedInstances = [...event.detail.selection];\n this.rowsSelected.emit(this.selectedInstances);\n }\n\n onRowKeyUp(event: CustomEvent) {\n if (event.detail.keyboardEvent.key === 'Enter') {\n event.preventDefault();\n\n this.currentInstanceId = event.detail.row.getValue('id');\n this.rowClick.emit(this.currentInstanceId);\n }\n }\n\n onShowRowContextMenu(event: DataCellEvent) {\n this.showRowContextMenu.emit(event);\n }\n\n updatePagination(params: PaginationModel) {\n const needsReload = params.maxItems || params.skipCount;\n\n this.size = params.maxItems;\n this.page = this.currentPage(params.skipCount, params.maxItems);\n\n if (needsReload) {\n this.reload();\n }\n }\n\n currentPage(skipCount: number, maxItems: number): number {\n return skipCount && maxItems ? Math.floor(skipCount / maxItems) : 0;\n }\n\n private isSortChanged(changes: SimpleChanges): boolean {\n const actualSort = changes['sort'];\n return actualSort?.currentValue && actualSort.currentValue !== actualSort.previousValue;\n }\n\n private isPropertyChanged(changes: SimpleChanges): boolean {\n let changed: boolean = true;\n\n const landingTaskId = changes['landingTaskId'];\n const page = changes['page'];\n const size = changes['size'];\n if (landingTaskId?.currentValue && this.isEqualToCurrentId(landingTaskId.currentValue)) {\n changed = false;\n } else if (page && page.currentValue !== page.previousValue) {\n changed = true;\n } else if (size && size.currentValue !== size.previousValue) {\n changed = true;\n }\n\n return changed;\n }\n\n private load() {\n this.isLoading = true;\n\n this.taskListService\n .findTasksByState(this.requestNode)\n .pipe(finalize(() => (this.isLoading = false)))\n .subscribe(\n (tasks) => {\n this.rows = this.optimizeTaskDetails(tasks.data);\n this.selectTask(this.landingTaskId);\n this.success.emit(tasks);\n this.pagination.next({\n count: tasks.data.length,\n maxItems: this.size,\n skipCount: this.page * this.size,\n totalItems: tasks.total\n });\n },\n (error) => {\n this.error.emit(error);\n }\n );\n }\n\n /**\n * Optimize name field\n *\n * @param instances task detail models\n * @returns list of task detail models\n */\n private optimizeTaskDetails(instances: TaskRepresentation[]): TaskRepresentation[] {\n instances = instances.map((task) => {\n if (!task.name) {\n task.name = 'No name';\n }\n return task;\n });\n return instances;\n }\n\n private createRequestNode() {\n return new TaskQueryRepresentation({\n appDefinitionId: this.appId,\n dueAfter: this.dueAfter ? new Date(this.dueAfter) : null,\n dueBefore: this.dueBefore ? new Date(this.dueBefore) : null,\n processInstanceId: this.processInstanceId,\n processDefinitionId: this.processDefinitionId,\n text: this.name,\n assignment: this.assignment,\n state: this.state,\n sort: this.sort,\n page: this.page,\n size: this.size,\n start: this.start,\n taskId: this.taskId,\n includeProcessInstance: this.includeProcessInstance\n });\n }\n}\n","<adf-datatable\n *ngIf=\"requestNode; else noMessagesTemplate\"\n [data]=\"data\"\n [rows]=\"rows\"\n [columns]=\"columns\"\n [sorting]=\"sorting\"\n [loading]=\"isLoading\"\n [isResizingEnabled]=\"isResizingEnabled\"\n [blurOnResize]=\"blurOnResize\"\n [stickyHeader]=\"stickyHeader\"\n [multiselect]=\"multiselect\"\n [selectionMode]=\"selectionMode\"\n [contextMenu]=\"showContextMenu\"\n (showRowContextMenu)=\"onShowRowContextMenu($event)\"\n (row-select)=\"onRowSelect($any($event))\"\n (row-unselect)=\"onRowUnselect($any($event))\"\n (rowClick)=\"onRowClick($any($event))\"\n (row-keyup)=\"onRowKeyUp($any($event))\"\n>\n <adf-loading-content-template>\n <ng-template>\n <!--Add your custom loading template here-->\n <mat-progress-spinner *ngIf=\"!customLoadingContent\" class=\"adf-task-list-loading-margin\" color=\"primary\" mode=\"indeterminate\" />\n <ng-content select=\"adf-custom-loading-content-template\" />\n </ng-template>\n </adf-loading-content-template>\n <adf-no-content-template>\n <ng-template>\n <adf-empty-content\n *ngIf=\"!customEmptyContent\"\n icon=\"assignment\"\n [title]=\"'ADF_TASK_LIST.LIST.MESSAGES.TITLE' | translate\"\n [subtitle]=\"'ADF_TASK_LIST.LIST.MESSAGES.SUBTITLE' | translate\"\n />\n <ng-content select=\"adf-custom-empty-content-template\" />\n </ng-template>\n </adf-no-content-template>\n</adf-datatable>\n\n<ng-template #noMessagesTemplate>\n <div>{{ 'ADF_TASK_LIST.FILTERS.MESSAGES.NONE' | translate }}</div>\n</ng-template>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport const getDisplayUser = (firstName: string, lastName: string, delimiter: string = '-'): string => {\n firstName = (firstName !== null ? firstName : '');\n lastName = (lastName !== null ? lastName : '');\n return firstName + delimiter + lastName;\n};\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DataTableComponent, DataCellEvent, DataColumnListComponent, ShowHeaderMode } from '@alfresco/adf-core';\nimport { AfterContentInit, Component, ContentChild, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { UserEventModel } from '../../../task-list/models/user-event.model';\nimport { LightUserRepresentation } from '@alfresco/js-api';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'adf-people-list',\n imports: [CommonModule, DataTableComponent],\n templateUrl: './people-list.component.html',\n styleUrls: ['./people-list.component.scss']\n})\nexport class PeopleListComponent implements AfterContentInit {\n @ContentChild(DataColumnListComponent)\n columnList: DataColumnListComponent;\n\n @ViewChild('dataTable', { static: true })\n peopleDataTable: DataTableComponent;\n\n /** The array of user data used to populate the people list. */\n @Input()\n users: LightUserRepresentation[];\n\n /** Toggles if actions should be visible, i.e. the 'Three-Dots' menu. */\n @Input()\n actions: boolean = false;\n\n /** Emitted when the user clicks a row in the people list. */\n @Output()\n clickRow = new EventEmitter<LightUserRepresentation>();\n\n /** Emitted when the user clicks in the 'Three Dots' drop down menu for a row. */\n @Output()\n clickAction = new EventEmitter<UserEventModel>();\n\n user: LightUserRepresentation;\n showHeader = ShowHeaderMode.Never;\n\n ngAfterContentInit() {\n this.peopleDataTable.columnList = this.columnList;\n }\n\n selectUser(event: any) {\n this.user = event.value.obj;\n this.clickRow.emit(this.user);\n }\n\n hasActions(): boolean {\n return this.actions;\n }\n\n onShowRowActionsMenu(event: DataCellEvent) {\n const removeAction = {\n title: 'Remove',\n name: 'remove'\n };\n\n event.value.actions = [removeAction];\n }\n\n onExecuteRowAction(event: any) {\n const args = event.value;\n const action = args.action;\n this.clickAction.emit({ type: action.name, value: args.row.obj });\n }\n}\n","<adf-datatable\n #dataTable\n class=\"adf-task-people-list\"\n [rows]=\"users\"\n [actions]=\"hasActions()\"\n [showHeader]=\"showHeader\"\n (rowClick)=\"selectUser($event)\"\n (rowDblClick)=\"selectUser($event)\"\n (showRowActionsMenu)=\"onShowRowActionsMenu($event)\"\n (executeRowAction)=\"onExecuteRowAction($event)\" />\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DataColumnComponent, DataColumnListComponent, TranslationService } from '@alfresco/adf-core';\nimport { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { ReactiveFormsModule, UntypedFormControl } from '@angular/forms';\nimport { debounceTime, switchMap } from 'rxjs/operators';\nimport { Observable, of } from 'rxjs';\nimport { PerformSearchCallback } from '../../interfaces/perform-search-callback.interface';\nimport { getDisplayUser } from '../../helpers/get-display-user';\nimport { PeopleProcessService } from '../../../services/people-process.service';\nimport { LightUserRepresentation } from '@alfresco/js-api';\nimport { CommonModule } from '@angular/common';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { PeopleListComponent } from '../people-list/people-list.component';\n\n@Component({\n selector: 'adf-people-search-field',\n imports: [\n CommonModule,\n MatFormFieldModule,\n MatInputModule,\n ReactiveFormsModule,\n PeopleListComponent,\n DataColumnListComponent,\n DataColumnComponent\n ],\n templateUrl: './people-search-field.component.html',\n styleUrls: ['./people-search-field.component.scss'],\n host: { class: 'adf-people-search-field' },\n encapsulation: ViewEncapsulation.None\n})\nexport class PeopleSearchFieldComponent {\n @Input()\n performSearch: PerformSearchCallback;\n\n @Input()\n placeholder: string;\n\n @Output()\n rowClick = new EventEmitter<LightUserRepresentation>();\n\n users$: Observable<LightUserRepresentation[]>;\n searchUser: UntypedFormControl = new UntypedFormControl();\n\n defaultPlaceholder = 'ADF_TASK_LIST.PEOPLE.SEARCH_USER';\n\n constructor(public peopleProcessService: PeopleProcessService, private translationService: TranslationService) {\n this.users$ = this.searchUser.valueChanges.pipe(\n debounceTime(200),\n switchMap((searchWord: string) => {\n if (searchWord?.trim()) {\n return this.performSearch(searchWord);\n } else {\n return of([]);\n }\n })\n );\n\n this.defaultPlaceholder = this.translationService.instant(this.defaultPlaceholder);\n }\n\n reset() {\n this.searchUser.reset();\n }\n\n get searchPlaceholder(): string {\n return this.placeholder || this.defaultPlaceholder;\n }\n\n onRowClick(model: LightUserRepresentation) {\n this.rowClick.emit(model);\n }\n\n getDisplayUser(firstName: string, lastName: string, delimiter: string = '-'): string {\n return getDisplayUser(firstName, lastName, delimiter);\n }\n\n getInitialUserName(firstName: string, lastName: string): string {\n firstName = firstName !== null && firstName !== '' ? firstName[0] : '';\n lastName = lastName !== null && lastName !== '' ? lastName[0] : '';\n return this.getDisplayUser(firstName, lastName, '');\n }\n}\n","<mat-form-field class=\"adf-search-text-container\">\n <input\n matInput\n placeholder=\"{{ searchPlaceholder }}\"\n type=\"text\"\n id=\"userSearchText\"\n [value]=\"\"\n [formControl]=\"searchUser\"\n data-automation-id=\"adf-people-search-input\">\n</mat-form-field>\n<ng-container *ngIf=\"users$ | async; let users\">\n <div class=\"adf-search-list-container\" id=\"search-people-list\" *ngIf=\"users.length > 0\">\n <adf-people-list [users]=\"users\" (clickRow)=\"onRowClick($event)\">\n <data-columns>\n <data-column key=\"firstName\">\n <ng-template let-entry=\"$implicit\">\n <div *ngIf=\"!entry.row.obj.pictureId\" class=\"adf-people-pic\">\n {{getInitialUserName(entry.row.obj.firstName, entry.row.obj.lastName)}}</div>\n <div>\n <img [alt]=\"getDisplayUser(entry.row.obj.firstName, entry.row.obj.lastName, ' ')\" *ngIf=\"entry.row.obj.pictureId\" class=\"adf-people-img\"\n [src]=\"peopleProcessService.getUserImage(entry.row.obj.id.toString())\"/>\n </div>\n </ng-template>\n </data-column>\n <data-column key=\"email\" class=\"adf-full-width\">\n <ng-template let-entry=\"$implicit\">\n <div [attr.data-automation-id]=\"'adf-people-full-name-'+ getDisplayUser(entry.row.obj.firstName, entry.row.obj.lastName, '-')\" class=\"adf-people-full-name\">{{ getDisplayUser(entry.row.obj.firstName, entry.row.obj.lastName, ' ') }}</div>\n </ng-template>\n </data-column>\n </data-columns>\n </adf-people-list>\n </div>\n</ng-container>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, EventEmitter, Input, OnInit, Output, ViewEncapsulation } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { PerformSearchCallback } from '../../interfaces/perform-search-callback.interface';\nimport { map } from 'rxjs/operators';\nimport { LightUserRepresentation } from '@alfresco/js-api';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { PeopleSearchFieldComponent } from '../people-search-field/people-search-field.component';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'adf-people-search',\n imports: [CommonModule, TranslatePipe, PeopleSearchFieldComponent, MatButtonModule],\n templateUrl: './people-search.component.html',\n styleUrls: ['./people-search.component.scss'],\n host: {\n class: 'adf-people-search'\n },\n encapsulation: ViewEncapsulation.None\n})\nexport class PeopleSearchComponent implements OnInit {\n @Input()\n headerTitle?: string;\n\n @Input()\n actionLabel?: string;\n\n /** Parameters for displaying the list. */\n @Input({ required: true })\n results: Observable<LightUserRepresentation[]>;\n\n /** Emitted when a search is performed with a new keyword. */\n @Output()\n searchPeople = new EventEmitter<any>();\n\n /** Emitted when a user is selected and the action button is clicked. */\n @Output()\n success = new EventEmitter<LightUserRepresentation>();\n\n /** Emitted when the \"close\" button is clicked. */\n @Output()\n closeSearch = new EventEmitter();\n\n filteredResults$: Observable<LightUserRepresentation[]>;\n selectedUser: LightUserRepresentation = {} as any;\n performSearch: PerformSearchCallback;\n\n ngOnInit() {\n this.filteredResults$ = this.results.pipe(map((users) => users.filter((user) => user.id !== this.selectedUser.id)));\n this.performSearch = this.performSearchCallback.bind(this);\n }\n\n onRowClick(user: LightUserRepresentation) {\n this.selectedUser = user;\n }\n\n closeSearchList() {\n this.closeSearch.emit();\n }\n\n involveUserAndClose() {\n this.involveUser();\n this.closeSearchList();\n }\n\n involveUser() {\n if (this.selectedUser === undefined) {\n return;\n }\n this.success.emit(this.selectedUser);\n }\n\n private performSearchCallback(event: any): Observable<LightUserRepresentation[]> {\n this.searchPeople.emit(event);\n return this.filteredResults$;\n }\n}\n","<div class=\"adf-search-text-header\" *ngIf=\"headerTitle\">\n {{headerTitle | translate}}\n</div>\n\n<adf-people-search-field [performSearch]=\"performSearch\" (rowClick)=\"onRowClick($event)\" />\n\n<div class=\"search-list-action-container\">\n <button mat-button type=\"button\" id=\"close-people-search\" (click)=\"closeSearchList()\">\n {{'ADF_TASK_LIST.PEOPLE.DIALOG_CLOSE' | translate }}\n </button>\n <button mat-button type=\"button\" id=\"add-people\" (click)=\"involveUserAndClose()\">\n {{actionLabel | translate}}\n </button>\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, EventEmitter, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { Observable, Observer } from 'rxjs';\nimport { UserEventModel } from '../../../task-list/models/user-event.model';\nimport { PeopleSearchComponent } from '../people-search/people-search.component';\nimport { share } from 'rxjs/operators';\nimport { PeopleProcessService } from '../../../services/people-process.service';\nimport { LightUserRepresentation } from '@alfresco/js-api';\nimport { CommonModule } from '@angular/common';\nimport { MatCardModule } from '@angular/material/card';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { PeopleListComponent } from '../people-list/people-list.component';\nimport { DataColumnComponent, DataColumnListComponent } from '@alfresco/adf-core';\n\n@Component({\n selector: 'adf-people',\n imports: [\n CommonModule,\n MatCardModule,\n TranslatePipe,\n MatIconModule,\n PeopleSearchComponent,\n PeopleListComponent,\n DataColumnListComponent,\n DataColumnComponent\n ],\n templateUrl: './people.component.html',\n styleUrls: ['./people.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class PeopleComponent {\n /** The array of User objects to display. */\n @Input()\n people: LightUserRepresentation[] = [];\n\n /** The numeric ID of the task. */\n @Input()\n taskId: string = '';\n\n /** Should the data be read-only? */\n @Input()\n readOnly: boolean = false;\n\n @ViewChild('peopleSearch')\n peopleSearch: PeopleSearchComponent;\n\n @Output()\n error = new EventEmitter<any>();\n\n showAssignment: boolean = false;\n peopleSearch$: Observable<LightUserRepresentation[]>;\n\n private peopleSearchObserver: Observer<LightUserRepresentation[]>;\n\n constructor(public peopleProcessService: PeopleProcessService) {\n this.peopleSearch$ = new Observable<LightUserRepresentation[]>((observer) => (this.peopleSearchObserver = observer)).pipe(share());\n }\n\n searchUser(searchedWord: string) {\n this.peopleProcessService.getWorkflowUsers(this.taskId, searchedWord).subscribe({\n next: (users) => {\n this.peopleSearchObserver.next(users);\n },\n error: (error) => this.error.emit(error)\n });\n }\n\n involveUser(user: LightUserRepresentation) {\n if (user?.id !== undefined) {\n this.peopleProcessService.involveUserWithTask(this.taskId, user.id.toString()).subscribe({\n next: () => (this.people = [...this.people, user]),\n error: () => this.error.emit('Impossible to involve user with task')\n });\n }\n }\n\n removeInvolvedUser(user: LightUserRepresentation) {\n this.peopleProcessService.removeInvolvedUser(this.taskId, user.id.toString()).subscribe({\n next: () => {\n this.people = this.people.filter((involvedUser) => involvedUser.id !== user.id);\n },\n error: () => this.error.emit('Impossible to remove involved user from task')\n });\n }\n\n getDisplayUser(firstName: string, lastName: string, delimiter: string = '-'): string {\n firstName = firstName !== null ? firstName : '';\n lastName = lastName !== null ? lastName : '';\n return firstName + delimiter + lastName;\n }\n\n getInitialUserName(firstName: string, lastName: string) {\n firstName = firstName !== null && firstName !== '' ? firstName[0] : '';\n lastName = lastName !== null && lastName !== '' ? lastName[0] : '';\n return this.getDisplayUser(firstName, lastName, '');\n }\n\n onAddAssignment() {\n this.showAssignment = true;\n }\n\n onClickAction(event: UserEventModel) {\n if (event?.value && event.type === 'remove') {\n this.removeInvolvedUser(event.value);\n }\n }\n\n hasPeople(): boolean {\n return this.people && this.people.length > 0;\n }\n\n isEditMode(): boolean {\n return !this.readOnly;\n }\n\n onCloseSearch() {\n this.showAssignment = false;\n }\n}\n","<mat-card appearance=\"outlined\" class=\"adf-assignment-top-container\">\n <div mat-card-content class=\"adf-assignment-top-container-content\">\n <div class=\"assignment-header\">\n <div *ngIf=\"hasPeople()\" class=\"adf-assignment-count\" id=\"people-title\">\n {{ 'ADF_TASK_LIST.DETAILS.LABELS.PEOPLE' | translate }} {{ ' (' + people.length + ')' }}\n </div>\n <div *ngIf=\"!hasPeople()\" class=\"adf-assignment-count\" id=\"no-people-label\">\n {{ 'ADF_TASK_LIST.DETAILS.PEOPLE.NONE' | translate }}\n </div>\n <div *ngIf=\"isEditMode()\" class=\"adf-add-people\" (click)=\"onAddAssignment()\" role=\"button\" tabindex=\"0\" (keyup.enter)=\"onAddAssignment()\">\n <mat-icon class=\"adf-add-person-icon\">person_add</mat-icon>\n </div>\n </div>\n <div class=\"adf-assignment-container\" *ngIf=\"showAssignment\">\n <adf-people-search\n #peopleSearch\n [headerTitle]=\"'ADF_TASK_LIST.DETAILS.LABELS.ADD_PEOPLE'\"\n [actionLabel]=\"'ADF_TASK_LIST.PEOPLE.ADD_USER'\"\n (searchPeople)=\"searchUser($event)\"\n (success)=\"involveUser($event)\"\n (closeSearch)=\"onCloseSearch()\"\n [results]=\"peopleSearch$\"\n />\n </div>\n <div class=\"adf-assignment-list-container\" id=\"assignment-people-list\" *ngIf=\"hasPeople()\">\n <adf-people-list [users]=\"people\" [actions]=\"isEditMode()\" (clickAction)=\"onClickAction($event)\">\n <data-columns>\n <data-column key=\"firstName\">\n <ng-template let-entry=\"$implicit\">\n <div *ngIf=\"!entry.row.obj.pictureId\" class=\"adf-people-search-people-pic\">\n {{ getInitialUserName(entry.row.obj.firstName, entry.row.obj.lastName) }}\n </div>\n <div>\n <img\n [alt]=\"getDisplayUser(entry.row.obj.firstName, entry.row.obj.lastName, ' ')\"\n *ngIf=\"entry.row.obj.pictureId\"\n class=\"adf-people-img\"\n [src]=\"peopleProcessService.getUserImage(entry.row.obj.id.toString())\"\n />\n </div>\n </ng-template>\n </data-column>\n <data-column key=\"email\" class=\"adf-full-width\">\n <ng-template let-entry=\"$implicit\">\n <div class=\"adf-people-user-info\">\n <div\n [attr.data-automation-id]=\"\n 'adf-people-full-name-' + getDisplayUser(entry.row.obj.firstName, entry.row.obj.lastName, '-')\n \"\n class=\"adf-people-full-name\"\n >\n {{ getDisplayUser(entry.row.obj.firstName, entry.row.obj.lastName, ' ') }}\n </div>\n <div\n [attr.data-automation-id]=\"\n 'adf-people-email-' + getDisplayUser(entry.row.obj.firstName, entry.row.obj.lastName, '-')\n \"\n class=\"adf-people-email\"\n >\n {{ entry.row.obj.email }}\n </div>\n </div>\n </ng-template>\n </data-column>\n </data-columns>\n </adf-people-list>\n </div>\n </div>\n</mat-card>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, ViewChild, ViewEncapsulation, EventEmitter, Input, Output } from '@angular/core';\nimport { PerformSearchCallback } from '../../interfaces/perform-search-callback.interface';\nimport { TranslationService } from '@alfresco/adf-core';\nimport { PeopleSearchFieldComponent } from '../people-search-field/people-search-field.component';\nimport { getDisplayUser } from '../../helpers/get-display-user';\nimport { Observable, of } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { PeopleProcessService } from '../../../services/people-process.service';\nimport { LightUserRepresentation } from '@alfresco/js-api';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\n\nconst DEFAULT_ASSIGNEE_PLACEHOLDER = 'ADF_TASK_LIST.PEOPLE.ASSIGNEE';\n\n@Component({\n selector: 'adf-people-selector',\n imports: [CommonModule, PeopleSearchFieldComponent, MatButtonModule, MatIconModule],\n templateUrl: './people-selector.component.html',\n styleUrls: ['./people-selector.component.scss'],\n host: { class: 'adf-people-selector' },\n encapsulation: ViewEncapsulation.None\n})\nexport class PeopleSelectorComponent {\n @Input()\n peopleId: LightUserRepresentation;\n\n // Poorly documented Angular magic for [(peopleId)]\n @Output()\n peopleIdChange: EventEmitter<number>;\n\n @ViewChild('peopleSearchField', { static: true })\n searchFieldComponent: PeopleSearchFieldComponent;\n\n performSearch: PerformSearchCallback;\n selectedUser: LightUserRepresentation;\n defaultPlaceholder: string;\n\n constructor(private peopleProcessService: PeopleProcessService, private translationService: TranslationService) {\n this.peopleIdChange = new EventEmitter();\n this.performSearch = this.searchUser.bind(this);\n this.defaultPlaceholder = this.translationService.instant(DEFAULT_ASSIGNEE_PLACEHOLDER);\n }\n\n searchUser(searchWord: string): Observable<any | LightUserRepresentation[]> {\n return this.peopleProcessService.getWorkflowUsers(undefined, searchWord).pipe(catchError(() => of([])));\n }\n\n userSelected(user: LightUserRepresentation): void {\n this.updateUserSelection(user);\n }\n\n userDeselected(): void {\n this.updateUserSelection(undefined);\n }\n\n private updateUserSelection(user: LightUserRepresentation): void {\n this.selectedUser = user;\n this.peopleIdChange.emit(user?.id);\n this.searchFieldComponent.reset();\n }\n\n get placeholder() {\n if (!this.selectedUser) {\n return this.defaultPlaceholder;\n }\n\n return getDisplayUser(this.selectedUser.firstName, this.selectedUser.lastName, ' ');\n }\n}\n","<adf-people-search-field\n #peopleSearchField\n class=\"adf-people-selector-field\"\n [performSearch]=\"performSearch\"\n [placeholder]=\"placeholder\"\n (rowClick)=\"userSelected($event)\" />\n<button\n *ngIf=\"selectedUser\"\n mat-icon-button\n class=\"adf-people-selector-deselect\"\n data-automation-id=\"adf-people-selector-deselect\"\n (click)=\"userDeselected()\">\n <mat-icon>cancel</mat-icon>\n</button>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Observable } from 'rxjs';\nimport { LightUserRepresentation } from '@alfresco/js-api';\n\nexport type PerformSearchCallback = (searchWord: string) => Observable<LightUserRepresentation[]>;\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { PeopleComponent } from './components/people/people.component';\nimport { PeopleSearchComponent } from './components/people-search/people-search.component';\nimport { PeopleSearchFieldComponent } from './components/people-search-field/people-search-field.component';\nimport { PeopleSelectorComponent } from './components/people-selector/people-selector.component';\nimport { PeopleListComponent } from './components/people-list/people-list.component';\n\nexport * from './components/people/people.component';\nexport * from './components/people-list/people-list.component';\nexport * from './components/people-search/people-search.component';\nexport * from './components/people-search-field/people-search-field.component';\nexport * from './components/people-selector/people-selector.component';\nexport * from './interfaces/perform-search-callback.interface';\n\nexport const PEOPLE_DIRECTIVES = [\n PeopleComponent,\n PeopleSearchComponent,\n PeopleSearchFieldComponent,\n PeopleSelectorComponent,\n PeopleListComponent\n] as const;\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './public-api';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CardViewItemValidator } from '@alfresco/adf-core';\n\nexport class TaskDescriptionValidator implements CardViewItemValidator {\n\n message: string = 'ADF_CLOUD_TASK_HEADER.FORM_VALIDATION.INVALID_FIELD';\n\n isValid(value: string): boolean {\n const isWhitespace = (value || '').trim().length === 0;\n return value.length === 0 || !isWhitespace;\n }\n\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, DestroyRef, EventEmitter, inject, Input, OnChanges, OnInit, Output, SimpleChanges, ViewEncapsulation } from '@angular/core';\nimport {\n AppConfigService,\n CardViewBaseItemModel,\n CardViewComponent,\n CardViewDateItemModel,\n CardViewIntItemModel,\n CardViewItemLengthValidator,\n CardViewMapItemModel,\n CardViewSelectItemModel,\n CardViewSelectItemOption,\n CardViewTextItemModel,\n CardViewUpdateService,\n TranslationService\n} from '@alfresco/adf-core';\nimport { PeopleProcessService } from '../../../services/people-process.service';\nimport { TaskDescriptionValidator } from '../../validators/task-description.validator';\nimport { TaskRepresentation } from '@alfresco/js-api';\nimport { CommonModule } from '@angular/common';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatButtonModule } from '@angular/material/button';\nimport { UnclaimTaskDirective } from '../task-form/unclaim-task.directive';\nimport { ClaimTaskDirective } from '../task-form/claim-task.directive';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { debounceTime, filter, map, switchMap } from 'rxjs/operators';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'adf-task-header',\n imports: [CommonModule, MatCardModule, MatButtonModule, UnclaimTaskDirective, ClaimTaskDirective, TranslatePipe, CardViewComponent],\n templateUrl: './task-header.component.html',\n styleUrls: ['./task-header.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class TaskHeaderComponent implements OnChanges, OnInit {\n /** The name of the form. */\n @Input()\n formName: string = null;\n\n /** (required) Details related to the task. */\n @Input({ required: true })\n taskDetails: TaskRepresentation;\n\n /** Toggles display of the claim/release button. */\n @Input()\n showClaimRelease = true;\n\n /**\n * (optional) This flag sets read-only mode, preventing changes.\n */\n @Input()\n readOnly = false;\n\n /**\n * Refreshes the card data when an event emitted.\n */\n @Input()\n resetChanges = new Subject<void>();\n\n /** Emitted when the task is claimed. */\n @Output()\n claim: EventEmitter<any> = new EventEmitter<any>();\n\n /** Emitted when the task is unclaimed (ie, requeue). */\n @Output()\n unclaim: EventEmitter<any> = new EventEmitter<any>();\n\n properties: any[] = [];\n displayDateClearAction = false;\n dateFormat: string;\n dateLocale: string;\n\n private currentUserId: number;\n private readonly usersSubject$ = new BehaviorSubject<CardViewSelectItemOption<number>[]>([]);\n users$ = this.usersSubject$.asObservable();\n\n private readonly destroyRef = inject(DestroyRef);\n\n constructor(\n private peopleProcessService: PeopleProcessService,\n private translationService: TranslationService,\n private readonly appConfig: AppConfigService,\n private readonly cardViewUpdateService: CardViewUpdateService\n ) {\n this.dateFormat = this.appConfig.get('dateValues.defaultDateFormat');\n this.dateLocale = this.appConfig.get('dateValues.defaultDateLocale');\n }\n\n ngOnInit() {\n this.peopleProcessService\n .getCurrentUserInfo()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((res) => {\n this.currentUserId = res ? +res.id : null;\n this.initData();\n });\n\n this.cardViewUpdateService.autocompleteInputValue$\n .pipe(\n filter((res) => res.length > 0),\n debounceTime(300),\n switchMap((res) => this.getUsers(res)),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe((users) => {\n this.usersSubject$.next(users);\n });\n\n this.resetChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.initData();\n });\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const taskDetailsChange = changes['taskDetails'];\n if (\n taskDetailsChange?.currentValue?.id !== taskDetailsChange?.previousValue?.id ||\n taskDetailsChange?.currentValue?.assignee?.id !== taskDetailsChange?.previousValue?.assignee?.id\n ) {\n this.initData();\n } else {\n this.refreshData();\n }\n }\n\n /**\n * Refresh the card data\n */\n initData() {\n if (this.taskDetails) {\n const parentInfoMap = this.getParentInfo();\n const defaultProperties = this.initDefaultProperties(parentInfoMap);\n const filteredProperties: string[] = this.appConfig.get('adf-task-header.presets.properties');\n this.properties = defaultProperties.filter((cardItem) => this.isValidSelection(filteredProperties, cardItem));\n }\n }\n\n /**\n * Refresh the card data\n */\n refreshData() {\n this.properties = this.properties.map((cardItem) => {\n if (cardItem.key === 'formName' && cardItem.value !== this.formName) {\n return new CardViewTextItemModel({\n label: 'ADF_TASK_LIST.PROPERTIES.FORM_NAME',\n value: this.formName,\n key: 'formName',\n default: this.translationService.instant('ADF_TASK_LIST.PROPERTIES.FORM_NAME_DEFAULT'),\n clickable: this.isFormClickable(),\n icon: 'create'\n });\n } else {\n return cardItem;\n }\n });\n }\n\n /**\n * Get the process parent information\n *\n * @returns a map of process instance and definition\n */\n private getParentInfo(): Map<string, string> {\n if (this.taskDetails.processInstanceId && this.taskDetails.processDefinitionName) {\n return new Map([[this.taskDetails.processInstanceId, this.taskDetails.processDefinitionName]]);\n }\n return new Map();\n }\n\n /**\n * Check if the task has an assignee\n *\n * @returns `true` if the task has an assignee, otherwise `false`\n */\n hasAssignee(): boolean {\n return !!this.taskDetails.assignee;\n }\n\n /**\n * Check if the task is assigned to a user\n *\n * @param userId the id of the user to check\n * @returns `true` if the task assigned to a user, otherwise `false`\n */\n isAssignedTo(userId: number): boolean {\n return this.hasAssignee() ? this.taskDetails.assignee.id === userId : false;\n }\n\n /**\n * Check if the task is assigned to the current user\n *\n * @returns `true` if the task assigned to current user, otherwise `false`\n */\n isAssignedToCurrentUser(): boolean {\n return this.hasAssignee() && this.isAssignedTo(this.currentUserId);\n }\n\n /**\n * Check if the user is a candidate member\n *\n * @returns `true` if user is a candidate member, otherwise false\n */\n isCandidateMember(): boolean {\n return this.taskDetails.managerOfCandidateGroup || this.taskDetails.memberOfCandidateGroup || this.taskDetails.memberOfCandidateUsers;\n }\n\n /**\n * Check if the task is claimable\n *\n * @returns `true` if task can be claimed, otherwise `false`\n */\n isTaskClaimable(): boolean {\n return !this.hasAssignee() && this.isCandidateMember();\n }\n\n /**\n * Return true if the task claimed by candidate member.\n *\n * @returns `true` if the task is claimed, otherwise `false`\n */\n isTaskClaimedByCandidateMember(): boolean {\n return this.isCandidateMember() && this.isAssignedToCurrentUser() && !this.isCompleted();\n }\n\n /**\n * Get the status of the task\n *\n * @returns `Completed` or `Running`\n */\n getTaskStatus(): 'Completed' | 'Running' {\n return this.taskDetails?.isCompleted() ? 'Completed' : 'Running';\n }\n\n /**\n * Emit the claim event\n *\n * @param taskId the id of the task to claim\n */\n onClaimTask(taskId: string) {\n this.claim.emit(taskId);\n }\n\n /**\n * Emit the unclaim event\n *\n * @param taskId the id of the task to unclaim\n */\n onUnclaimTask(taskId: string) {\n this.unclaim.emit(taskId);\n }\n\n /**\n * Returns the task completion state\n *\n * @returns `true` if the task is completed, otherwise `false`\n */\n isCompleted(): boolean {\n return !!this.taskDetails?.endDate;\n }\n\n /**\n * Check if the form is clickable\n *\n * @returns `true` if the form is clickable, otherwise `false`\n */\n isFormClickable(): boolean {\n return !!this.formName && !this.isCompleted();\n }\n\n /**\n * Get the task duration\n *\n * @returns the task duration in milliseconds\n */\n getTaskDuration(): string {\n return this.taskDetails.duration ? `${this.taskDetails.duration} ms` : '';\n }\n\n private getUsers(searchQuery: string): Observable<CardViewSelectItemOption<number>[]> {\n return this.peopleProcessService.getWorkflowUsers(undefined, searchQuery).pipe(\n map((users) =>\n users\n .filter((user) => user.id !== this.currentUserId)\n .map(({ id, firstName = '', lastName = '' }) => ({\n key: id,\n label: `${firstName} ${lastName}`.trim()\n }))\n )\n );\n }\n\n private initDefaultProperties(parentInfoMap: Map<string, string>): any[] {\n return [\n new CardViewSelectItemModel({\n label: 'ADF_TASK_LIST.PROPERTIES.ASSIGNEE',\n value: this.taskDetails.getFullName()\n ? this.taskDetails.getFullName()\n : this.translationService.instant('ADF_TASK_LIST.PROPERTIES.ASSIGNEE_DEFAULT'),\n key: 'assignee',\n editable: this.isAssignedToCurrentUser(),\n autocompleteBased: true,\n icon: 'create',\n options$: this.users$\n }),\n new CardViewTextItemModel({\n label: 'ADF_TASK_LIST.PROPERTIES.STATUS',\n value: this.getTaskStatus(),\n key: 'status'\n }),\n new CardViewIntItemModel({\n label: 'ADF_TASK_LIST.PROPERTIES.PRIORITY',\n value: this.taskDetails.priority,\n key: 'priority',\n editable: true,\n validators: [new CardViewItemLengthValidator(1, 10)]\n }),\n new CardViewDateItemModel({\n label: 'ADF_TASK_LIST.PROPERTIES.DUE_DATE',\n value: this.taskDetails.dueDate,\n key: 'dueDate',\n default: this.translationService.instant('ADF_TASK_LIST.PROPERTIES.DUE_DATE_DEFAULT'),\n editable: true,\n format: this.dateFormat,\n locale: this.dateLocale\n }),\n new CardViewTextItemModel({\n label: 'ADF_TASK_LIST.PROPERTIES.CATEGORY',\n value: this.taskDetails.category,\n key: 'category',\n default: this.translationService.instant('ADF_TASK_LIST.PROPERTIES.CATEGORY_DEFAULT')\n }),\n new CardViewMapItemModel({\n label: 'ADF_TASK_LIST.PROPERTIES.PARENT_NAME',\n value: parentInfoMap,\n key: 'parentName',\n default: this.translationService.instant('ADF_TASK_LIST.PROPERTIES.PARENT_NAME_DEFAULT'),\n clickable: true\n }),\n new CardViewDateItemModel({\n label: 'ADF_TASK_LIST.PROPERTIES.CREATED',\n value: this.taskDetails.created,\n key: 'created',\n format: this.dateFormat,\n locale: this.dateLocale\n }),\n new CardViewTextItemModel({\n label: 'ADF_TASK_LIST.PROPERTIES.DURATION',\n value: this.getTaskDuration(),\n key: 'duration'\n }),\n new CardViewTextItemModel({\n label: 'ADF_TASK_LIST.PROPERTIES.PARENT_TASK_ID',\n value: this.taskDetails.parentTaskId,\n key: 'parentTaskId'\n }),\n new CardViewDateItemModel({\n label: 'ADF_TASK_LIST.PROPERTIES.END_DATE',\n value: this.taskDetails.endDate,\n key: 'endDate',\n format: this.dateFormat,\n locale: this.dateLocale\n }),\n new CardViewTextItemModel({\n label: 'ADF_TASK_LIST.PROPERTIES.ID',\n value: this.taskDetails.id,\n key: 'id'\n }),\n new CardViewTextItemModel({\n label: 'ADF_TASK_LIST.PROPERTIES.DESCRIPTION',\n value: this.taskDetails.description,\n key: 'description',\n default: this.translationService.instant('ADF_TASK_LIST.PROPERTIES.DESCRIPTION_DEFAULT'),\n multiline: true,\n editable: true,\n validators: [new TaskDescriptionValidator()]\n }),\n new CardViewTextItemModel({\n label: 'ADF_TASK_LIST.PROPERTIES.FORM_NAME',\n value: this.formName,\n key: 'formName',\n default: this.translationService.instant('ADF_TASK_LIST.PROPERTIES.FORM_NAME_DEFAULT'),\n clickable: this.isFormClickable(),\n icon: 'create'\n })\n ];\n }\n\n private isValidSelection(filteredProperties: string[], cardItem: CardViewBaseItemModel): boolean {\n return filteredProperties ? filteredProperties.indexOf(cardItem.key) >= 0 : true;\n }\n}\n","<mat-card appearance=\"outlined\" *ngIf=\"taskDetails\" class=\"adf-card-container\">\n <mat-card-content>\n <adf-card-view [properties]=\"properties\" [editable]=\"!readOnly && !isCompleted()\" [displayClearAction]=\"displayDateClearAction\"/>\n </mat-card-content>\n\n <mat-card-actions class=\"adf-controls\" *ngIf=\"showClaimRelease\">\n <button *ngIf=\"isTaskClaimedByCandidateMember()\"\n mat-button\n data-automation-id=\"header-unclaim-button\"\n id=\"unclaim-task\"\n class=\"adf-claim-controls\"\n adf-unclaim-task\n [taskId]=\"taskDetails.id\"\n (success)=\"onUnclaimTask($event)\">\n {{ 'ADF_TASK_LIST.DETAILS.BUTTON.UNCLAIM' | translate }}\n </button>\n <button *ngIf=\"isTaskClaimable()\"\n mat-button\n data-automation-id=\"header-claim-button\"\n id=\"claim-task\"\n class=\"adf-claim-controls\"\n adf-claim-task\n [taskId]=\"taskDetails.id\"\n (success)=\"onClaimTask($event)\">\n {{ 'ADF_TASK_LIST.DETAILS.BUTTON.CLAIM' | translate }}\n </button>\n </mat-card-actions>\n</mat-card>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AlfrescoApiService } from '@alfresco/adf-content-services';\nimport { CommentModel, CommentsService } from '@alfresco/adf-core';\nimport { ActivitiCommentsApi } from '@alfresco/js-api';\nimport { inject, Injectable } from '@angular/core';\nimport { from, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { PeopleProcessService } from './people-process.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TaskCommentsService implements CommentsService {\n private _commentsApi: ActivitiCommentsApi;\n get commentsApi(): ActivitiCommentsApi {\n this._commentsApi = this._commentsApi ?? new ActivitiCommentsApi(this.apiService.getInstance());\n return this._commentsApi;\n }\n\n protected apiService = inject(AlfrescoApiService);\n protected peopleProcessService = inject(PeopleProcessService);\n\n /**\n * Gets all comments that have been added to a task.\n *\n * @param id ID of the target task\n * @returns Details for each comment\n */\n get(id: string): Observable<CommentModel[]> {\n return from(this.commentsApi.getTaskComments(id)).pipe(map((response) => response.data.map((comment) => new CommentModel(comment))));\n }\n\n /**\n * Adds a comment to a task.\n *\n * @param id ID of the target task\n * @param message Text for the comment\n * @returns Details about the comment\n */\n add(id: string, message: string): Observable<CommentModel> {\n return from(this.commentsApi.addTaskComment({ message }, id)).pipe(map((response) => new CommentModel(response)));\n }\n\n getUserImage(userId: string): string {\n return this.peopleProcessService.getUserImage(userId);\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { ADF_COMMENTS_SERVICE, CommentsComponent } from '@alfresco/adf-core';\nimport { TaskCommentsService } from '../services/task-comments.service';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'adf-task-comments',\n imports: [CommonModule, CommentsComponent],\n templateUrl: './task-comments.component.html',\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: ADF_COMMENTS_SERVICE,\n useClass: TaskCommentsService\n }\n ]\n})\nexport class TaskCommentsComponent {\n /** The numeric ID of the task. */\n @Input()\n taskId: string;\n\n /** Determines if comments are read only. */\n @Input()\n readOnly: boolean;\n}\n","<adf-comments \n [readOnly]=\"readOnly\"\n [id]=\"taskId\"\n/>","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { TaskCommentsComponent } from './task-comments.component';\n\nexport * from './task-comments.component';\nexport * from '../services/task-comments.service';\n\nexport const TASK_COMMENTS_DIRECTIVES = [TaskCommentsComponent] as const;\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ADF_COMMENTS_SERVICE,\n CardViewUpdateService,\n ClickNotification,\n ContentLinkModel,\n FormFieldValidator,\n FormModel,\n FormOutcomeEvent,\n InfoDrawerComponent,\n InfoDrawerTabComponent,\n UpdateNotification\n} from '@alfresco/adf-core';\nimport {\n Component,\n DestroyRef,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { MatDialog, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { Observable, Observer, of } from 'rxjs';\nimport { TaskListService } from '../../services/tasklist.service';\nimport { catchError, share } from 'rxjs/operators';\nimport { TaskFormComponent } from '../task-form/task-form.component';\nimport { PeopleProcessService } from '../../../services/people-process.service';\nimport { LightUserRepresentation, TaskQueryRepresentation, TaskRepresentation } from '@alfresco/js-api';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { AttachFormComponent } from '../attach-form/attach-form.component';\nimport { PeopleComponent, PeopleSearchComponent } from '../../../people';\nimport { TaskHeaderComponent } from '../task-header/task-header.component';\nimport { TaskCommentsComponent, TaskCommentsService } from '../../../task-comments';\nimport { ChecklistComponent } from '../checklist/checklist.component';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n/** @deprecated no longer used anywhere, and can be safely removed */\n@Component({\n selector: 'adf-task-details',\n imports: [\n CommonModule,\n TranslatePipe,\n TaskFormComponent,\n AttachFormComponent,\n PeopleSearchComponent,\n TaskHeaderComponent,\n PeopleComponent,\n TaskCommentsComponent,\n ChecklistComponent,\n MatDialogModule,\n MatButtonModule,\n InfoDrawerTabComponent,\n InfoDrawerComponent,\n MatCardModule\n ],\n providers: [\n {\n provide: ADF_COMMENTS_SERVICE,\n useClass: TaskCommentsService\n }\n ],\n templateUrl: './task-details.component.html',\n styleUrls: ['./task-details.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class TaskDetailsComponent implements OnInit, OnChanges {\n @ViewChild('errorDialog')\n errorDialog: TemplateRef<any>;\n\n @ViewChild('taskForm')\n taskFormComponent: TaskFormComponent;\n\n /** (**required**) The id of the task whose details we are asking for. */\n @Input({ required: true })\n taskId: string;\n\n /** Automatically renders the next task when the current one is completed. */\n @Input()\n showNextTask: boolean = true;\n\n /** Toggles task details Header component. */\n @Input()\n showHeader: boolean = true;\n\n /** Toggles collapsed/expanded state of the Header component. */\n @Input()\n showHeaderContent: boolean = true;\n\n /** Toggles `Involve People` feature for the Header component. */\n @Input()\n showInvolvePeople: boolean = true;\n\n /** Toggles `Comments` feature for the Header component. */\n @Input()\n showComments: boolean = true;\n\n /** Toggles `Checklist` feature for the Header component. */\n @Input()\n showChecklist: boolean = true;\n\n /** Toggles rendering of the form title. */\n @Input()\n showFormTitle: boolean = false;\n\n /** Toggles rendering of the `Complete` outcome button. */\n @Input()\n showFormCompleteButton: boolean = true;\n\n /** Toggles rendering of the `Save` outcome button. */\n @Input()\n showFormSaveButton: boolean = true;\n\n /**\n * Toggles read-only state of the form. All form widgets render as read-only\n * if enabled.\n */\n @Input()\n readOnlyForm: boolean = false;\n\n /** Toggles rendering of the `Refresh` button. */\n @Input()\n showFormRefreshButton: boolean = true;\n\n /** Field validators for use with the form. */\n @Input()\n fieldValidators: FormFieldValidator[] = [];\n\n /** Emitted when the form is submitted with the `Save` or custom outcomes. */\n @Output()\n formSaved = new EventEmitter<FormModel>();\n\n /** Emitted when the form is submitted with the `Complete` outcome. */\n @Output()\n formCompleted = new EventEmitter<FormModel>();\n\n /** Emitted when the form field content is clicked. */\n @Output()\n formContentClicked = new EventEmitter<ContentLinkModel>();\n\n /** Emitted when the form is loaded or reloaded. */\n @Output()\n formLoaded = new EventEmitter<FormModel>();\n\n /** Emitted when a checklist task is created. */\n @Output()\n taskCreated = new EventEmitter<TaskRepresentation>();\n\n /** Emitted when a checklist task is deleted. */\n @Output()\n taskDeleted = new EventEmitter<string>();\n\n /** Emitted when an error occurs. */\n @Output()\n error = new EventEmitter<any>();\n\n /**\n * Emitted when any outcome is executed. Default behaviour can be prevented\n * via `event.preventDefault()`.\n */\n @Output()\n executeOutcome = new EventEmitter<FormOutcomeEvent>();\n\n /** Emitted when a task is assigned. */\n @Output()\n assignTask = new EventEmitter<void>();\n\n /** Emitted when a task is claimed. */\n @Output()\n claimedTask = new EventEmitter<string>();\n\n /** Emitted when a task is unclaimed. */\n @Output()\n unClaimedTask = new EventEmitter<string>();\n\n taskDetails: TaskRepresentation;\n taskFormName: string = null;\n taskPeople: LightUserRepresentation[] = [];\n noTaskDetailsTemplateComponent: TemplateRef<any>;\n showAssignee = false;\n showAttachForm = false;\n internalReadOnlyForm = false;\n errorDialogRef: MatDialogRef<TemplateRef<any>>;\n peopleSearch: Observable<LightUserRepresentation[]>;\n data: any;\n\n private peopleSearchObserver: Observer<LightUserRepresentation[]>;\n\n constructor(\n private readonly taskListService: TaskListService,\n private readonly peopleProcessService: PeopleProcessService,\n private readonly cardViewUpdateService: CardViewUpdateService,\n private readonly dialog: MatDialog,\n private readonly destroyRef: DestroyRef\n ) {}\n\n ngOnInit() {\n this.peopleSearch = new Observable<LightUserRepresentation[]>((observer) => (this.peopleSearchObserver = observer)).pipe(share());\n\n if (this.taskId) {\n this.loadDetails(this.taskId);\n }\n\n this.cardViewUpdateService.itemUpdated$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(this.updateTaskDetails.bind(this));\n\n this.cardViewUpdateService.itemClicked$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(this.clickTaskDetails.bind(this));\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const taskId = changes.taskId;\n this.showAssignee = false;\n\n if (taskId && !taskId.currentValue) {\n this.reset();\n } else if (taskId?.currentValue) {\n this.loadDetails(taskId.currentValue);\n }\n }\n\n isAssigned(): boolean {\n return !!this.taskDetails.assignee;\n }\n\n /**\n * Complete button clicked\n */\n onComplete(): void {\n this.onFormCompleted(null);\n }\n\n onShowAttachForm() {\n this.showAttachForm = true;\n }\n\n onCancelAttachForm() {\n this.showAttachForm = false;\n }\n\n onCompleteAttachForm() {\n this.taskFormName = null;\n this.showAttachForm = false;\n this.taskFormComponent.loadTask(this.taskId);\n this.loadDetails(this.taskId);\n }\n\n onFormContentClick(content: ContentLinkModel): void {\n this.formContentClicked.emit(content);\n }\n\n onFormSaved(form: FormModel): void {\n this.formSaved.emit(form);\n }\n\n onFormCompleted(form: FormModel): void {\n this.formCompleted.emit(form);\n if (this.showNextTask && (this.taskDetails.processInstanceId || this.taskDetails.processDefinitionId)) {\n this.loadNextTask(this.taskDetails.processInstanceId, this.taskDetails.processDefinitionId);\n }\n }\n\n onFormLoaded(form: FormModel): void {\n this.taskFormName = form?.name;\n this.formLoaded.emit(form);\n }\n\n onChecklistTaskCreated(task: TaskRepresentation): void {\n this.taskCreated.emit(task);\n }\n\n onChecklistTaskDeleted(taskId: string): void {\n this.taskDeleted.emit(taskId);\n }\n\n onFormError(error: any): void {\n this.errorDialogRef = this.dialog.open(this.errorDialog, { width: '500px' });\n this.error.emit(error);\n }\n\n onFormExecuteOutcome(event: FormOutcomeEvent): void {\n this.executeOutcome.emit(event);\n }\n\n closeErrorDialog(): void {\n this.dialog.closeAll();\n }\n\n onClaimAction(taskId: string): void {\n this.claimedTask.emit(taskId);\n this.loadDetails(taskId);\n }\n\n onUnclaimAction(taskId: string): void {\n this.unClaimedTask.emit(taskId);\n this.loadDetails(taskId);\n }\n\n searchUser(searchedWord: string) {\n this.peopleProcessService.getWorkflowUsers(null, searchedWord).subscribe((users) => {\n users = users.filter((user) => user.id !== this.taskDetails.assignee.id);\n this.peopleSearchObserver.next(users);\n });\n }\n\n onCloseSearch() {\n this.showAssignee = false;\n }\n\n assignTaskToUser(selectedUser: LightUserRepresentation) {\n this.taskListService.assignTask(this.taskDetails.id, selectedUser).subscribe(() => {\n this.assignTask.emit();\n });\n this.showAssignee = false;\n }\n\n getTaskHeaderViewClass(): string {\n if (this.showAssignee) {\n return 'assign-edit-view';\n } else {\n return 'default-view';\n }\n }\n\n isReadOnlyComment(): boolean {\n return this.taskDetails?.isCompleted() && this.taskPeople?.length === 0;\n }\n\n private reset() {\n this.taskDetails = null;\n }\n\n private updateTaskDetails(updateNotification: UpdateNotification) {\n this.taskListService\n .updateTask(this.taskId, updateNotification.changed)\n .pipe(\n catchError(() => {\n this.cardViewUpdateService.updateElement(updateNotification.target);\n return of(null);\n })\n )\n .subscribe(() => this.loadDetails(this.taskId));\n }\n\n private clickTaskDetails(clickNotification: ClickNotification) {\n if (clickNotification.target.key === 'assignee') {\n this.showAssignee = true;\n }\n if (clickNotification.target.key === 'formName') {\n this.showAttachForm = true;\n }\n }\n\n private loadDetails(taskId: string) {\n this.taskPeople = [];\n\n if (taskId) {\n this.taskListService.getTaskDetails(taskId).subscribe((res) => {\n this.showAttachForm = false;\n this.taskDetails = res;\n\n if (this.taskDetails.name === 'null') {\n this.taskDetails.name = 'No name';\n }\n\n const endDate: any = res.endDate;\n if (endDate && !isNaN(endDate.getTime())) {\n this.internalReadOnlyForm = true;\n } else {\n this.internalReadOnlyForm = this.readOnlyForm;\n }\n\n if (this.taskDetails?.involvedPeople) {\n this.taskPeople.push(...this.taskDetails.involvedPeople);\n }\n });\n }\n }\n\n private loadNextTask(processInstanceId: string, processDefinitionId: string): void {\n const requestNode = new TaskQueryRepresentation({\n processInstanceId,\n processDefinitionId\n });\n this.taskListService.getTasks(requestNode).subscribe(\n (response) => {\n if (response && response.length > 0) {\n this.taskDetails = new TaskRepresentation(response[0]);\n } else {\n this.reset();\n }\n },\n (error) => {\n this.error.emit(error);\n }\n );\n }\n}\n","<div *ngIf=\"!taskDetails\" data-automation-id=\"adf-tasks-details--empty\">\n <ng-template *ngIf=\"noTaskDetailsTemplateComponent\" ngFor [ngForOf]=\"[data]\"\n [ngForTemplate]=\"noTaskDetailsTemplateComponent\">\n {{ 'ADF_TASK_LIST.DETAILS.MESSAGES.NONE' | translate }}\n </ng-template>\n <div *ngIf=\"!noTaskDetailsTemplateComponent\">\n {{ 'ADF_TASK_LIST.DETAILS.MESSAGES.NONE' | translate }}\n </div>\n</div>\n<div *ngIf=\"taskDetails\" class=\"adf-task-details\">\n\n <div *ngIf=\"showHeader\" class=\"adf-task-details-header\">\n <h2 class=\"adf-activiti-task-details__header\">\n <span>{{taskDetails.name || 'No name'}}</span>\n </h2>\n </div>\n\n <div class=\"adf-task-details-core\">\n <div class=\"adf-task-details-core-form\">\n <div *ngIf=\"isAssigned()\">\n <adf-task-form #taskForm\n [taskId]=\"taskDetails.id\"\n [showFormTitle]=\"showFormTitle\"\n [showFormRefreshButton]=\"showFormRefreshButton\"\n [showCancelButton]=\"true\"\n [fieldValidators]=\"fieldValidators\"\n (formSaved)='onFormSaved($event)'\n (formCompleted)='onFormCompleted($event)'\n (formContentClicked)='onFormContentClick($event)'\n (formLoaded)='onFormLoaded($event)'\n (completed)=\"onComplete()\"\n (showAttachForm)=\"onShowAttachForm()\"\n (executeOutcome)='onFormExecuteOutcome($event)'\n (taskClaimed)=\"onClaimAction($event)\"\n (taskUnclaimed)=\"onUnclaimAction($event)\"\n (error)=\"onFormError($event)\" />\n <adf-attach-form *ngIf=\"showAttachForm\"\n [taskId]=\"taskDetails.id\"\n [formKey]=\"taskDetails.formKey\"\n (cancelAttachForm)=\"onCancelAttachForm()\"\n (success)=\"onCompleteAttachForm()\" />\n </div>\n <div *ngIf=\"!isAssigned()\" id=\"claim-message-id\">\n {{ 'ADF_TASK_LIST.DETAILS.MESSAGES.CLAIM' | translate }}\n </div>\n </div>\n <div class=\"adf-task-details-core-sidebar\">\n <adf-info-drawer *ngIf=\"showHeaderContent\" title=\"ADF_TASK_LIST.DETAILS.LABELS.INFO_DRAWER_TITLE\" id=\"adf-task-details-core-sidebar-drawer\" class=\"adf-task-details-core-sidebar-drawer\">\n <adf-info-drawer-tab label=\"ADF_TASK_LIST.DETAILS.LABELS.INFO_DRAWER_TAB_DETAILS_TITLE\">\n <div class=\"adf-assignment-container\" *ngIf=\"showAssignee\">\n <adf-people-search\n [headerTitle]=\"'ADF_TASK_LIST.DETAILS.LABELS.ADD_ASSIGNEE'\"\n [actionLabel]=\"'ADF_TASK_LIST.PEOPLE.ADD_ASSIGNEE'\"\n (searchPeople)=\"searchUser($event)\"\n (success)=\"assignTaskToUser($event)\"\n (closeSearch)=\"onCloseSearch()\"\n [results]=\"peopleSearch\" />\n </div>\n <adf-task-header\n [class]=\"getTaskHeaderViewClass()\"\n [taskDetails]=\"taskDetails\"\n [formName]=\"taskFormName\"\n (claim)=\"onClaimAction($event)\"\n (unclaim)=\"onUnclaimAction($event)\" />\n <adf-people *ngIf=\"showInvolvePeople\"\n [people]=\"taskPeople\"\n [readOnly]=\"internalReadOnlyForm\"\n [taskId]=\"taskDetails.id\" />\n </adf-info-drawer-tab>\n\n <adf-info-drawer-tab label=\"ADF_TASK_LIST.DETAILS.LABELS.INFO_DRAWER_TAB_ACTIVITY_TITLE\">\n <mat-card appearance=\"outlined\" *ngIf=\"showComments\">\n <mat-card-content>\n <adf-task-comments\n [readOnly]=\"isReadOnlyComment()\"\n [taskId]=\"taskDetails.id\"\n />\n </mat-card-content>\n </mat-card>\n </adf-info-drawer-tab>\n\n </adf-info-drawer>\n\n <div *ngIf=\"showHeaderContent\" class=\"adf-task-details-core-sidebar-checklist\">\n <div *ngIf=\"showChecklist\">\n <adf-checklist\n [readOnly]=\"internalReadOnlyForm\"\n [taskId]=\"taskDetails.id\"\n [assignee]=\"taskDetails.assignee?.id\"\n (checklistTaskCreated)=\"onChecklistTaskCreated($event)\"\n (checklistTaskDeleted)=\"onChecklistTaskDeleted($event)\" />\n </div>\n </div>\n </div>\n </div>\n\n <ng-template #errorDialog>\n <h3 matDialogTitle>{{'ADF_TASK_LIST.DETAILS.ERROR.TITLE'|translate}}</h3>\n <mat-dialog-content>\n <p>{{'ADF_TASK_LIST.DETAILS.ERROR.DESCRIPTION'|translate}}</p>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button mat-button type=\"button\" (click)=\"closeErrorDialog()\">{{'ADF_TASK_LIST.DETAILS.ERROR.CLOSE'|translate}}\n </button>\n </mat-dialog-actions>\n </ng-template>\n\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ADF_DATE_FORMATS, AdfDateFnsAdapter, DateFnsUtils, FormFieldModel, FormModel } from '@alfresco/adf-core';\nimport { Component, DestroyRef, EventEmitter, inject, Input, OnInit, Output, ViewEncapsulation } from '@angular/core';\nimport { DateAdapter, MAT_DATE_FORMATS } from '@angular/material/core';\nimport { EMPTY, Observable } from 'rxjs';\nimport { Form } from '../../models/form.model';\nimport { TaskListService } from '../../services/tasklist.service';\nimport { defaultIfEmpty, switchMap } from 'rxjs/operators';\nimport { AbstractControl, ReactiveFormsModule, UntypedFormBuilder, UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms';\nimport { isValid } from 'date-fns';\nimport { TaskRepresentation } from '@alfresco/js-api';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatButtonModule } from '@angular/material/button';\nimport { PeopleWidgetComponent } from '../../../form';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nconst FORMAT_DATE = 'DD/MM/YYYY';\nconst MAX_LENGTH = 255;\n\n@Component({\n selector: 'adf-start-task',\n imports: [\n CommonModule,\n TranslatePipe,\n MatCardModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatInputModule,\n MatDatepickerModule,\n MatIconModule,\n MatSelectModule,\n MatButtonModule,\n PeopleWidgetComponent\n ],\n templateUrl: './start-task.component.html',\n styleUrls: ['./start-task.component.scss'],\n providers: [\n { provide: DateAdapter, useClass: AdfDateFnsAdapter },\n { provide: MAT_DATE_FORMATS, useValue: ADF_DATE_FORMATS }\n ],\n encapsulation: ViewEncapsulation.None\n})\nexport class StartTaskComponent implements OnInit {\n /** (required) The id of the app. */\n @Input({ required: true })\n appId: number;\n\n /** Default Task Name. */\n @Input()\n name: string = '';\n\n /** Emitted when the task is successfully created. */\n @Output()\n success = new EventEmitter<any>();\n\n /** Emitted when the cancel button is clicked by the user. */\n @Output()\n cancel = new EventEmitter<void>();\n\n /** Emitted when an error occurs. */\n @Output()\n error = new EventEmitter<any>();\n\n taskDetailsModel = new TaskRepresentation();\n forms$: Observable<Form[]>;\n assigneeId: number;\n field: FormFieldModel;\n taskForm: UntypedFormGroup;\n dateError: boolean = false;\n maxTaskNameLength: number = MAX_LENGTH;\n loading = false;\n\n private readonly destroyRef = inject(DestroyRef);\n\n constructor(private taskService: TaskListService, private formBuilder: UntypedFormBuilder) {}\n\n ngOnInit() {\n if (this.name) {\n this.taskDetailsModel.name = this.name;\n }\n\n this.validateMaxTaskNameLength();\n\n this.field = new FormFieldModel(new FormModel(), { id: this.assigneeId, value: this.assigneeId, placeholder: 'Assignee' });\n\n this.loadFormsTask();\n this.buildForm();\n }\n\n buildForm(): void {\n this.taskForm = this.formBuilder.group({\n name: new UntypedFormControl(this.taskDetailsModel.name, [\n Validators.required,\n Validators.maxLength(this.maxTaskNameLength),\n this.whitespaceValidator\n ]),\n description: new UntypedFormControl('', [this.whitespaceValidator]),\n formKey: new UntypedFormControl('')\n });\n\n this.taskForm.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((taskFormValues) => this.setTaskDetails(taskFormValues));\n }\n\n private whitespaceValidator(control: UntypedFormControl): any {\n if (control.value) {\n const isWhitespace = (control.value || '').trim().length === 0;\n const isControlValid = control.value.length === 0 || !isWhitespace;\n return isControlValid ? null : { whitespace: true };\n }\n return null;\n }\n\n setTaskDetails(form: any) {\n this.taskDetailsModel.name = form.name;\n this.taskDetailsModel.description = form.description;\n this.taskDetailsModel.formKey = form.formKey ? form.formKey.toString() : null;\n }\n\n isFormValid(): boolean {\n return this.taskForm.valid && !this.dateError && !this.loading;\n }\n\n saveTask(): void {\n this.loading = true;\n if (this.appId) {\n this.taskDetailsModel.category = this.appId.toString();\n }\n this.taskService\n .createNewTask(this.taskDetailsModel)\n .pipe(\n switchMap((createRes) =>\n this.attachForm(createRes.id, this.taskDetailsModel.formKey).pipe(\n defaultIfEmpty(createRes),\n switchMap((attachRes) => {\n const assigneeId = this.assigneeId ? this.assigneeId.toString() : null;\n return this.assignTaskByUserId(createRes.id, assigneeId).pipe(defaultIfEmpty(attachRes ? attachRes : createRes));\n })\n )\n )\n )\n .subscribe(\n (res: any) => {\n this.loading = false;\n this.success.emit(res);\n },\n (err) => {\n this.loading = false;\n this.error.emit(err);\n }\n );\n }\n\n setAssigneeId(userId: number): void {\n this.assigneeId = userId;\n }\n\n onCancel(): void {\n this.cancel.emit();\n }\n\n getDisplayUser(firstName: string, lastName: string, delimiter: string = '-'): string {\n firstName = firstName !== null ? firstName : '';\n lastName = lastName !== null ? lastName : '';\n return firstName + delimiter + lastName;\n }\n\n onDateChanged(newDateValue: Date | string) {\n this.dateError = false;\n\n if (newDateValue) {\n let date: Date;\n\n if (typeof newDateValue === 'string') {\n date = DateFnsUtils.parseDate(newDateValue, FORMAT_DATE);\n } else {\n date = newDateValue;\n }\n\n if (isValid(date)) {\n this.taskDetailsModel.dueDate = date;\n } else {\n this.dateError = true;\n this.taskDetailsModel.dueDate = null;\n }\n } else {\n this.taskDetailsModel.dueDate = null;\n }\n }\n\n private validateMaxTaskNameLength() {\n if (this.maxTaskNameLength > MAX_LENGTH) {\n this.maxTaskNameLength = MAX_LENGTH;\n }\n }\n\n get nameController(): AbstractControl {\n return this.taskForm.get('name');\n }\n\n get descriptionController(): AbstractControl {\n return this.taskForm.get('description');\n }\n\n private attachForm(taskId: string, formKey: string): Observable<any> {\n let response: any = EMPTY;\n if (taskId && formKey) {\n response = this.taskService.attachFormToATask(taskId, parseInt(formKey, 10));\n }\n return response;\n }\n\n private assignTaskByUserId(taskId: string, userId: string): Observable<TaskRepresentation> {\n if (taskId && userId) {\n return this.taskService.assignTaskByUserId(taskId, userId);\n }\n return EMPTY;\n }\n\n private loadFormsTask(): void {\n this.forms$ = this.taskService.getFormList();\n }\n}\n","<mat-card appearance=\"outlined\" class=\"adf-new-task-layout-card\">\n <mat-card-header class=\"adf-new-task-heading\">\n <mat-card-title>{{'ADF_TASK_LIST.START_TASK.FORM.TITLE' | translate}}</mat-card-title>\n </mat-card-header>\n <mat-card-content>\n <form [formGroup]=\"taskForm\" class=\"adf-new-task-form\">\n <div class=\"adf-task-name\">\n <mat-form-field>\n <mat-label>{{'ADF_TASK_LIST.START_TASK.FORM.LABEL.NAME' | translate}}</mat-label>\n <input\n matInput\n id=\"name_id\"\n formControlName=\"name\">\n <mat-error *ngIf=\"nameController.hasError('required') || nameController.hasError('whitespace')\">\n {{ 'ADF_TASK_LIST.START_TASK.FORM.ERROR.REQUIRED' | translate }}\n </mat-error>\n <mat-error *ngIf=\"nameController.hasError('maxlength')\">\n {{ 'ADF_TASK_LIST.START_TASK.FORM.ERROR.MAXIMUM_LENGTH' | translate : { characters : maxTaskNameLength } }}\n </mat-error>\n </mat-form-field>\n </div>\n <div class=\"adf-task-description\">\n <mat-form-field>\n <mat-label>{{'ADF_TASK_LIST.START_TASK.FORM.LABEL.DESCRIPTION' | translate}}</mat-label>\n <textarea\n matInput\n rows=\"1\"\n id=\"description_id\"\n formControlName=\"description\">\n </textarea>\n <mat-error *ngIf=\"descriptionController.hasError('whitespace')\">\n {{ 'ADF_TASK_LIST.START_TASK.FORM.ERROR.MESSAGE' | translate }}\n </mat-error>\n </mat-form-field>\n </div>\n <div class=\"adf-input-row\">\n <mat-form-field>\n <input\n matInput\n (keyup)=\"onDateChanged($any($event).srcElement.value)\"\n (dateInput)=\"onDateChanged($any($event).value)\"\n [matDatepicker]=\"taskDatePicker\"\n placeholder=\"{{'ADF_TASK_LIST.START_TASK.FORM.LABEL.DATE'|translate}}\"\n id=\"date_id\">\n <mat-datepicker-toggle\n matSuffix\n [for]=\"taskDatePicker\" />\n <mat-datepicker\n #taskDatePicker\n [touchUi]=\"true\" />\n <div class=\"adf-error-text-container\">\n <div *ngIf=\"dateError\">\n <div class=\"adf-error-text\">{{'ADF_TASK_LIST.START_TASK.FORM.ERROR.DATE'|translate}}</div>\n <mat-icon class=\"adf-error-icon\">warning</mat-icon>\n </div>\n </div>\n </mat-form-field>\n <people-widget\n (peopleSelected)=\"setAssigneeId($event)\"\n [field]=\"field\"\n class=\"adf-people-widget-content\" />\n </div>\n <mat-form-field class=\"adf-task-form\">\n <mat-label id=\"form_label\">{{'ADF_TASK_LIST.START_TASK.FORM.LABEL.FORM'|translate}}</mat-label>\n <mat-select\n id=\"form_id\"\n class=\"form-control\"\n formControlName=\"formKey\">\n <mat-option>{{'ADF_TASK_LIST.START_TASK.FORM.LABEL.NONE'|translate}}</mat-option>\n <mat-option *ngFor=\"let form of forms$ | async\" [value]=\"form.id\">{{ form.name }}</mat-option>\n </mat-select>\n </mat-form-field>\n </form>\n </mat-card-content>\n <mat-card-actions>\n <div class=\"adf-new-task-footer\">\n <button\n mat-button\n class=\"adf-uppercase\"\n (click)=\"onCancel()\"\n id=\"button-cancel\">\n {{ 'ADF_TASK_LIST.START_TASK.FORM.ACTION.CANCEL' | translate }}\n </button>\n <button\n color=\"primary\"\n mat-button\n class=\"adf-uppercase\"\n [disabled]=\"!isFormValid()\"\n (click)=\"saveTask()\"\n id=\"button-start\">\n {{ 'ADF_TASK_LIST.START_TASK.FORM.ACTION.START' | translate }}\n </button>\n </div>\n </mat-card-actions>\n</mat-card>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { UploadService } from '@alfresco/adf-content-services';\nimport { ActivitiContentApi, RelatedContentRepresentation } from '@alfresco/js-api';\nimport { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ProcessUploadService extends UploadService {\n private _contentApi: ActivitiContentApi;\n get contentApi(): ActivitiContentApi {\n this._contentApi = this._contentApi ?? new ActivitiContentApi(this.apiService.getInstance());\n return this._contentApi;\n }\n\n getUploadPromise(file: any): Promise<RelatedContentRepresentation> {\n const opts = {\n isRelatedContent: true\n };\n const processInstanceId = file.options.parentId;\n return this.contentApi.createRelatedContentOnProcessInstance(processInstanceId, file.file, opts);\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { UploadService } from '@alfresco/adf-content-services';\nimport { Injectable } from '@angular/core';\nimport { ActivitiContentApi, RelatedContentRepresentation } from '@alfresco/js-api';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TaskUploadService extends UploadService {\n private _contentApi: ActivitiContentApi;\n get contentApi(): ActivitiContentApi {\n this._contentApi = this._contentApi ?? new ActivitiContentApi(this.apiService.getInstance());\n return this._contentApi;\n }\n\n getUploadPromise(file: any): Promise<RelatedContentRepresentation> {\n const opts = {\n isRelatedContent: true\n };\n const taskId = file.options.parentId;\n return this.contentApi.createRelatedContentOnTask(taskId, file.file, opts);\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { TaskRepresentation } from '@alfresco/js-api';\n\nexport class TaskDetailsEvent {\n private _value: TaskRepresentation;\n private _defaultPrevented: boolean = false;\n\n get value(): TaskRepresentation {\n return this._value;\n }\n\n get defaultPrevented() {\n return this._defaultPrevented;\n }\n\n constructor(value: TaskRepresentation) {\n this._value = value;\n }\n\n preventDefault() {\n this._defaultPrevented = true;\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * This object represent the User Event.\n */\nexport interface UserEventModel {\n type: string;\n value: any;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * This object represent the process service user group.*\n */\n\nexport interface UserGroupModel {\n id?: number;\n name?: string;\n externalId?: string;\n status?: string;\n groups?: any;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ClaimTaskDirective } from './components/task-form/claim-task.directive';\nimport { UnclaimTaskDirective } from './components/task-form/unclaim-task.directive';\nimport { TaskFormComponent } from './components/task-form/task-form.component';\nimport { AttachFormComponent } from './components/attach-form/attach-form.component';\nimport { ChecklistComponent } from './components/checklist/checklist.component';\nimport { TaskFiltersComponent } from './components/task-filters/task-filters.component';\nimport { TaskListComponent } from './components/task-list/task-list.component';\nimport { TaskDetailsComponent } from './components/task-details/task-details.component';\nimport { TaskHeaderComponent } from './components/task-header/task-header.component';\nimport { StartTaskComponent } from './components/start-task/start-task.component';\nimport { TaskStandaloneComponent } from './components/task-standalone/task-standalone.component';\n\nexport * from './components/task-list/task-list.component';\nexport * from './components/checklist/checklist.component';\nexport * from './components/task-header/task-header.component';\nexport * from './components/task-filters/task-filters.component';\nexport * from './components/task-form/task-form.component';\nexport * from './components/task-form/claim-task.directive';\nexport * from './components/task-form/unclaim-task.directive';\nexport * from './components/task-details/task-details.component';\nexport * from './components/start-task/start-task.component';\nexport * from './components/task-standalone/task-standalone.component';\nexport * from './components/attach-form/attach-form.component';\n\nexport * from './services/tasklist.service';\nexport * from './services/process-upload.service';\nexport * from './services/task-upload.service';\nexport * from './services/task-filter.service';\n\nexport * from './models/form.model';\nexport * from './models/task-details.event';\nexport * from './models/user-event.model';\nexport * from './models/user-group.model';\n\nexport const TASK_LIST_DIRECTIVES = [\n TaskFormComponent,\n AttachFormComponent,\n ChecklistComponent,\n TaskFiltersComponent,\n TaskListComponent,\n TaskDetailsComponent,\n TaskHeaderComponent,\n StartTaskComponent,\n TaskStandaloneComponent,\n ClaimTaskDirective,\n UnclaimTaskDirective\n] as const;\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './public-api';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CommonModule, DatePipe } from '@angular/common';\nimport { Component, DestroyRef, EventEmitter, inject, Input, OnChanges, OnInit, Output, SimpleChanges, ViewChild } from '@angular/core';\nimport { MatDialog, MatDialogModule } from '@angular/material/dialog';\nimport { Observable, Observer } from 'rxjs';\nimport { TaskDetailsEvent } from '../../../task-list';\nimport { ProcessService } from '../../services/process.service';\nimport { share } from 'rxjs/operators';\nimport { ProcessInstanceRepresentation, TaskRepresentation } from '@alfresco/js-api';\nimport { MatButtonModule } from '@angular/material/button';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatListModule } from '@angular/material/list';\nimport { MatIconModule } from '@angular/material/icon';\nimport { StartFormComponent } from '../../../form';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'adf-process-instance-tasks',\n imports: [CommonModule, MatButtonModule, TranslatePipe, MatChipsModule, MatListModule, MatIconModule, MatDialogModule, StartFormComponent],\n templateUrl: './process-instance-tasks.component.html',\n styleUrls: ['./process-instance-tasks.component.css']\n})\nexport class ProcessInstanceTasksComponent implements OnInit, OnChanges {\n /** The ID of the process instance to display tasks for. */\n @Input({ required: true })\n processInstanceDetails: ProcessInstanceRepresentation;\n\n /**\n * Toggles whether to show a refresh button next to the list of tasks to allow\n * it to be updated from the server.\n */\n @Input()\n showRefreshButton: boolean = true;\n\n /** Emitted when an error occurs. */\n @Output()\n error = new EventEmitter<any>();\n\n @ViewChild('startDialog')\n startDialog: any;\n\n @ViewChild('taskDetails')\n taskDetails: any;\n\n /** Emitted when a task is clicked. */\n @Output()\n taskClick = new EventEmitter<TaskDetailsEvent>();\n\n activeTasks: TaskRepresentation[] = [];\n completedTasks: TaskRepresentation[] = [];\n task$: Observable<TaskRepresentation>;\n completedTask$: Observable<TaskRepresentation>;\n message: string;\n processId: string;\n\n private taskObserver: Observer<TaskRepresentation>;\n private completedTaskObserver: Observer<TaskRepresentation>;\n\n private readonly destroyRef = inject(DestroyRef);\n\n constructor(private processService: ProcessService, private dialog: MatDialog) {\n this.task$ = new Observable<TaskRepresentation>((observer) => (this.taskObserver = observer)).pipe(share());\n this.completedTask$ = new Observable<TaskRepresentation>((observer) => (this.completedTaskObserver = observer)).pipe(share());\n }\n\n ngOnInit() {\n this.task$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((task) => this.activeTasks.push(task));\n\n this.completedTask$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((task) => this.completedTasks.push(task));\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const processInstanceDetails = changes['processInstanceDetails'];\n if (processInstanceDetails?.currentValue) {\n this.load(processInstanceDetails.currentValue.id);\n }\n }\n\n load(processInstanceId: string) {\n this.loadActive(processInstanceId);\n this.loadCompleted(processInstanceId);\n }\n\n loadActive(processInstanceId: string) {\n this.activeTasks = [];\n if (processInstanceId) {\n this.processService.getProcessTasks(processInstanceId, null).subscribe(\n (res) => {\n res.forEach((task) => {\n this.taskObserver.next(task);\n });\n },\n (err) => {\n this.error.emit(err);\n }\n );\n } else {\n this.activeTasks = [];\n }\n }\n\n loadCompleted(processInstanceId: string) {\n this.completedTasks = [];\n if (processInstanceId) {\n this.processService.getProcessTasks(processInstanceId, 'completed').subscribe(\n (res) => {\n res.forEach((task) => {\n this.completedTaskObserver.next(task);\n });\n },\n (err) => {\n this.error.emit(err);\n }\n );\n } else {\n this.completedTasks = [];\n }\n }\n\n hasStartFormDefined(): boolean {\n return this.processInstanceDetails?.startFormDefined === true;\n }\n\n getUserFullName(user: any): string {\n if (user) {\n return (user.firstName && user.firstName !== 'null' ? user.firstName + ' ' : '') + user.lastName;\n }\n return 'Nobody';\n }\n\n getFormatDate(value: any, format: string): any {\n const datePipe = new DatePipe('en-US');\n try {\n return datePipe.transform(value, format);\n } catch {\n return value;\n }\n }\n\n clickTask(task: TaskRepresentation) {\n const args = new TaskDetailsEvent(task);\n this.taskClick.emit(args);\n }\n\n clickStartTask() {\n this.processId = this.processInstanceDetails.id;\n this.showStartDialog();\n }\n\n showStartDialog() {\n this.dialog.open(this.startDialog, { height: '500px', width: '700px' });\n }\n\n closeStartDialog() {\n this.dialog.closeAll();\n }\n\n onRefreshClicked() {\n this.load(this.processInstanceDetails.id);\n }\n\n onFormContentClick() {\n this.closeStartDialog();\n }\n}\n","<div *ngIf=\"showRefreshButton\" class=\"process-tasks-refresh\" >\n <button mat-icon-button (click)=\"onRefreshClicked()\">\n <mat-icon class=\"md-24\" [attr.aria-label]=\"'ADF_PROCESS_LIST.DETAILS.LABELS.REFRESH' | translate\">refresh</mat-icon>\n </button>\n</div>\n\n<!-- ACTIVE FORM -->\n\n<mat-chip-listbox>\n <span class=\"adf-chip-label\">{{ 'ADF_PROCESS_LIST.DETAILS.LABELS.TASKS_ACTIVE'|translate }}</span>\n <mat-chip-option class=\"adf-process-badge\" color=\"accent\" selected=\"true\">{{activeTasks?.length}}</mat-chip-option>\n</mat-chip-listbox>\n\n<div class=\"menu-container\" *ngIf=\"activeTasks?.length > 0\" data-automation-id=\"active-tasks\">\n <mat-list>\n <mat-list-item class=\"process-tasks__task-item\" *ngFor=\"let task of activeTasks\" (click)=\"clickTask(task)\">\n <mat-icon matListItemLine>assignment</mat-icon>\n <h3 matLine>{{task.name || 'Nameless task'}}</h3>\n <span matLine>\n {{ 'ADF_PROCESS_LIST.DETAILS.LABELS.TASK_SUBTITLE' | translate:{user: getUserFullName(task.assignee), created: getFormatDate(task.created, 'mediumDate') } }}\n </span>\n </mat-list-item>\n </mat-list>\n</div>\n\n<!-- START FORM -->\n\n<div *ngIf=\"activeTasks?.length === 0\" data-automation-id=\"active-tasks-none\" class=\"no-results\">\n {{ 'ADF_PROCESS_LIST.DETAILS.TASKS.NO_ACTIVE' | translate }}\n</div>\n\n<div *ngIf=\"hasStartFormDefined()\">\n <span class=\"adf-activiti-label\">{{ 'ADF_PROCESS_LIST.DETAILS.LABELS.START_FORM'|translate }}</span>\n\n <!--IF START TASK COMPLETED -->\n <div class=\"menu-container\" data-automation-id=\"start-form\">\n <mat-list>\n <mat-list-item class=\"process-tasks__task-item\" (click)=\"clickStartTask()\">\n <mat-icon matListItemLine>assignment</mat-icon>\n <h3 matLine>{{ 'ADF_PROCESS_LIST.DETAILS.LABELS.START_FORM'|translate }}</h3>\n <span matLine>\n {{ 'ADF_PROCESS_LIST.DETAILS.LABELS.TASK_SUBTITLE' | translate:{user:getUserFullName(processInstanceDetails.startedBy), created: getFormatDate(processInstanceDetails.started, 'mediumDate') } }}\n </span>\n </mat-list-item>\n </mat-list>\n </div>\n\n</div>\n\n<!-- COMPLETED FORM -->\n<mat-chip-listbox>\n <span class=\"adf-chip-label\">{{ 'ADF_PROCESS_LIST.DETAILS.LABELS.TASKS_COMPLETED'|translate }}</span>\n <mat-chip-option class=\"adf-process-badge\" color=\"accent\" selected=\"true\">{{completedTasks?.length}}</mat-chip-option>\n</mat-chip-listbox>\n\n<div class=\"menu-container\" *ngIf=\"completedTasks?.length > 0\" data-automation-id=\"completed-tasks\">\n <mat-list>\n <mat-list-item class=\"process-tasks__task-item\" *ngFor=\"let task of completedTasks\" (click)=\"clickTask(task)\">\n <mat-icon matListItemLine>assignment</mat-icon>\n <h3 matLine>{{task.name || 'Nameless task'}}</h3>\n <span matLine>\n {{ 'ADF_PROCESS_LIST.DETAILS.LABELS.TASK_SUBTITLE' | translate:{user:getUserFullName(task.assignee), created: getFormatDate(task.created, 'mediumDate') } }}\n </span>\n </mat-list-item>\n </mat-list>\n</div>\n\n<div *ngIf=\"completedTasks?.length === 0\" data-automation-id=\"completed-tasks-none\" class=\"no-results\">\n {{ 'ADF_PROCESS_LIST.DETAILS.TASKS.NO_COMPLETED' | translate }}\n</div>\n\n<ng-template *ngIf=\"hasStartFormDefined()\" #startDialog>\n <div id=\"adf-start-process-dialog\" class=\"adf-start-process-dialog\">\n <h4 matDialogTitle>{{ 'ADF_PROCESS_LIST.DETAILS.LABELS.START_FORM'|translate }}</h4>\n <div mat-dialog-content class=\"adf-start-process-dialog-content\">\n <adf-start-form [processId]=\"processId\"\n [showRefreshButton]=\"false\" [readOnlyForm]=\"true\"\n (formContentClicked)='onFormContentClick()' />\n </div>\n <div mat-dialog-actions class=\"adf-start-process-dialog-actions\">\n <button mat-button type=\"button\" (click)=\"closeStartDialog()\">{{ 'ADF_PROCESS_LIST.DETAILS.TASKS.TASK_CLOSE' | translate }}</button>\n </div>\n </div>\n</ng-template>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AlfrescoApiService } from '@alfresco/adf-content-services';\nimport { Injectable } from '@angular/core';\nimport { Observable, from } from 'rxjs';\nimport { CommentModel, CommentsService, User } from '@alfresco/adf-core';\nimport { map } from 'rxjs/operators';\nimport { ActivitiCommentsApi } from '@alfresco/js-api';\nimport { PeopleProcessService } from '../../services/people-process.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CommentProcessService implements CommentsService {\n private _commentsApi: ActivitiCommentsApi;\n get commentsApi(): ActivitiCommentsApi {\n this._commentsApi = this._commentsApi ?? new ActivitiCommentsApi(this.apiService.getInstance());\n return this._commentsApi;\n }\n\n constructor(private apiService: AlfrescoApiService, private peopleProcessService: PeopleProcessService) {}\n\n /**\n * Gets all comments that have been added to a process instance.\n *\n * @param id ID of the target process instance\n * @returns Details for each comment\n */\n get(id: string): Observable<CommentModel[]> {\n return from(this.commentsApi.getProcessInstanceComments(id)).pipe(\n map((response) =>\n response.data.map(\n (comment) =>\n new CommentModel({\n id: comment.id,\n message: comment.message,\n created: comment.created,\n createdBy: new User(comment.createdBy)\n })\n )\n )\n );\n }\n\n /**\n * Adds a comment to a process instance.\n *\n * @param id ID of the target process instance\n * @param message Text for the comment\n * @returns Details of the comment added\n */\n add(id: string, message: string): Observable<CommentModel> {\n return from(this.commentsApi.addProcessInstanceComment({ message }, id)).pipe(\n map(\n (response) =>\n new CommentModel({\n id: response.id,\n message: response.message,\n created: response.created,\n createdBy: new User(response.createdBy)\n })\n )\n );\n }\n\n getUserImage(userId: string): string {\n return this.peopleProcessService.getUserImage(userId);\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ADF_COMMENTS_SERVICE, CommentsComponent } from '@alfresco/adf-core';\nimport { CommentProcessService } from './services/comment-process.service';\nimport { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'adf-process-instance-comments',\n imports: [CommonModule, CommentsComponent],\n providers: [\n {\n provide: ADF_COMMENTS_SERVICE,\n useClass: CommentProcessService\n }\n ],\n templateUrl: './process-comments.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class ProcessCommentsComponent {\n /** (**required**) The numeric ID of the process instance to display comments for. */\n @Input({ required: true })\n processInstanceId: string;\n\n /** Should the comments be read-only? */\n @Input()\n readOnly: boolean;\n}\n","<adf-comments \n [readOnly]=\"readOnly\"\n [id]=\"processInstanceId\"\n/>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ProcessCommentsComponent } from './process-comments.component';\n\nexport * from './process-comments.component';\nexport * from './services/comment-process.service';\n\nexport const PROCESS_COMMENTS_DIRECTIVES = [ProcessCommentsComponent] as const;\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CommonModule, DatePipe } from '@angular/common';\nimport { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges, ViewChild } from '@angular/core';\nimport { TaskDetailsEvent } from '../../../task-list';\nimport { ProcessService } from '../../services/process.service';\nimport { ProcessInstanceHeaderComponent } from '../process-instance-header/process-instance-header.component';\nimport { ProcessInstanceTasksComponent } from '../process-instance-tasks/process-instance-tasks.component';\nimport { ProcessInstanceRepresentation } from '@alfresco/js-api';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatButtonModule } from '@angular/material/button';\nimport { ProcessCommentsComponent } from '../../../process-comments';\n\n@Component({\n selector: 'adf-process-instance-details',\n imports: [\n CommonModule,\n TranslatePipe,\n MatCardModule,\n MatButtonModule,\n ProcessCommentsComponent,\n ProcessInstanceTasksComponent,\n ProcessInstanceHeaderComponent\n ],\n templateUrl: './process-instance-details.component.html',\n styleUrls: ['./process-instance-details.component.css']\n})\nexport class ProcessInstanceDetailsComponent implements OnChanges {\n /** (required) The numeric ID of the process instance to display. */\n @Input({ required: true })\n processInstanceId: string;\n\n @ViewChild('processInstanceHeader')\n processInstanceHeader: ProcessInstanceHeaderComponent;\n\n @ViewChild('processInstanceTasks')\n tasksList: ProcessInstanceTasksComponent;\n\n /** Toggles whether to show or hide the title. */\n @Input()\n showTitle: boolean = true;\n\n /** Toggles whether to show or hide the refresh button. */\n @Input()\n showRefreshButton: boolean = true;\n\n /** Emitted when the current process is cancelled by the user from within the component. */\n @Output()\n processCancelled = new EventEmitter<any>();\n\n /** Emitted when an error occurs. */\n @Output()\n error = new EventEmitter<any>();\n\n /** Emitted when a task is clicked. */\n @Output()\n taskClick = new EventEmitter<TaskDetailsEvent>();\n\n /** Emitted when the \"show diagram\" button is clicked. */\n @Output()\n showProcessDiagram = new EventEmitter<any>();\n\n processInstanceDetails: ProcessInstanceRepresentation;\n\n constructor(private processService: ProcessService) {}\n\n ngOnChanges(changes: SimpleChanges) {\n const processInstanceId = changes['processInstanceId'];\n if (processInstanceId && !processInstanceId.currentValue) {\n this.reset();\n return;\n }\n if (processInstanceId?.currentValue) {\n this.load(processInstanceId.currentValue);\n return;\n }\n }\n\n /**\n * Reset the task detail\n */\n reset() {\n this.processInstanceDetails = null;\n }\n\n load(processId: string) {\n if (processId) {\n this.processService.getProcess(processId).subscribe((res) => {\n this.processInstanceDetails = res;\n });\n }\n }\n\n isRunning(): boolean {\n return this.processInstanceDetails && !this.processInstanceDetails.ended;\n }\n\n cancelProcess() {\n this.processService.cancelProcess(this.processInstanceId).subscribe(\n (data) => {\n this.processCancelled.emit(data);\n },\n (err) => {\n this.error.emit(err);\n }\n );\n }\n\n // bubbles (taskClick) event\n onTaskClicked(event: TaskDetailsEvent) {\n this.taskClick.emit(event);\n }\n\n getProcessNameOrDescription(dateFormat: string): string {\n let name = '';\n if (this.processInstanceDetails) {\n name =\n this.processInstanceDetails.name ||\n this.processInstanceDetails.processDefinitionName + ' - ' + this.getFormatDate(this.processInstanceDetails.started, dateFormat);\n }\n return name;\n }\n\n getFormatDate(value: any, format: string): any {\n const datePipe = new DatePipe('en-US');\n try {\n return datePipe.transform(value, format);\n } catch {\n return undefined;\n }\n }\n\n onShowProcessDiagram() {\n this.showProcessDiagram.emit({ value: this.processInstanceId });\n }\n}\n","<div *ngIf=\"!processInstanceDetails\">{{ 'ADF_PROCESS_LIST.DETAILS.MESSAGES.NONE' | translate }}</div>\n<mat-card *ngIf=\"processInstanceDetails\">\n <mat-card-header>\n <mat-card-title>{{ getProcessNameOrDescription('medium') }}</mat-card-title>\n </mat-card-header>\n <mat-card-content>\n <adf-process-instance-header\n #processInstanceHeader\n [processInstance]=\"processInstanceDetails\" />\n\n <button\n class=\"adf-in-medias-res-button\"\n id=\"show-diagram-button\"\n type=\"button\"\n mat-button\n mat-raised-button\n [disabled]=\"!isRunning()\"\n (click)=\"onShowProcessDiagram()\">{{ 'ADF_PROCESS_LIST.DETAILS.BUTTON.SHOW_DIAGRAM' | translate }}</button>\n\n <mat-card appearance=\"outlined\">\n <mat-card-content>\n <adf-process-instance-tasks\n #processInstanceTasks\n [processInstanceDetails]=\"processInstanceDetails\"\n (taskClick)=\"onTaskClicked($event)\" />\n </mat-card-content>\n </mat-card>\n\n <div data-automation-id=\"header-status\" *ngIf=\"isRunning()\" class=\"adf-in-medias-res-button\">\n <button mat-button type=\"button\" (click)=\"cancelProcess()\">{{ 'ADF_PROCESS_LIST.DETAILS.BUTTON.CANCEL' | translate }}</button>\n </div>\n\n <mat-card appearance=\"outlined\">\n <mat-card-content>\n <adf-process-instance-comments\n [readOnly]=\"false\"\n [processInstanceId]=\"processInstanceDetails.id\" />\n </mat-card-content>\n </mat-card>\n\n </mat-card-content>\n</mat-card>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n Component,\n DestroyRef,\n EventEmitter,\n inject,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { AppConfigService, AppConfigValues, EmptyContentComponent, FormValues, LocalizedDatePipe } from '@alfresco/adf-core';\nimport { AppsProcessService } from '../../../services/apps-process.service';\nimport { ProcessService } from '../../services/process.service';\nimport { AbstractControl, FormsModule, ReactiveFormsModule, UntypedFormControl, Validators } from '@angular/forms';\nimport { forkJoin, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { MatAutocompleteModule, MatAutocompleteTrigger } from '@angular/material/autocomplete';\nimport { MatSelectChange, MatSelectModule } from '@angular/material/select';\nimport { StartFormComponent } from '../../../form';\nimport {\n AppDefinitionRepresentation,\n Node,\n ProcessDefinitionRepresentation,\n ProcessInstanceRepresentation,\n RelatedContentRepresentation,\n RestVariable\n} from '@alfresco/js-api';\nimport { ActivitiContentService } from '../../../form/services/activiti-alfresco.service';\nimport { getTime } from 'date-fns';\nimport { CommonModule } from '@angular/common';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nconst MAX_LENGTH = 255;\nconst DATE_TIME_IDENTIFIER_REG_EXP = new RegExp('%{datetime}', 'i');\nconst PROCESS_DEFINITION_IDENTIFIER_REG_EXP = new RegExp('%{processdefinition}', 'i');\n\n@Component({\n selector: 'adf-start-process',\n imports: [\n CommonModule,\n MatProgressSpinnerModule,\n TranslatePipe,\n MatFormFieldModule,\n MatSelectModule,\n FormsModule,\n ReactiveFormsModule,\n MatAutocompleteModule,\n MatButtonModule,\n MatIconModule,\n MatInputModule,\n EmptyContentComponent,\n StartFormComponent\n ],\n templateUrl: './start-process.component.html',\n styleUrls: ['./start-process.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class StartProcessInstanceComponent implements OnChanges, OnInit {\n /**\n * Limit the list of processes that can be started to those\n * contained in the specified app.\n */\n @Input()\n appId?: number;\n\n /** Define the header of the component. */\n @Input()\n title?: string;\n\n /** Definition name of the process to start. */\n @Input()\n processDefinitionName?: string;\n\n /**\n * Variables in the input to the process\n * [RestVariable](https://github.com/Alfresco/alfresco-js-api/tree/master/src/alfresco-activiti-rest-api/docs/RestVariable.md).\n */\n @Input()\n variables: RestVariable[];\n\n /** Parameter to pass form field values in the start form if one is associated. */\n @Input()\n values: FormValues;\n\n /** Name to assign to the current process. */\n @Input()\n name?: string = '';\n\n /** Hide or show the process selection dropdown. */\n @Input()\n showSelectProcessDropdown = true;\n\n /** Hide or show application selection dropdown. */\n @Input()\n showSelectApplicationDropdown? = false;\n\n /** Parameter to enable selection of process when filtering. */\n @Input()\n processFilterSelector? = true;\n\n /** Emitted when the process starts. */\n @Output()\n start = new EventEmitter<ProcessInstanceRepresentation>();\n\n /** Emitted when the process is canceled. */\n @Output()\n cancel = new EventEmitter<void>();\n\n /** Emitted when an error occurs. */\n @Output()\n error = new EventEmitter<any>();\n\n /** Emitted when process definition selection changes. */\n @Output()\n processDefinitionSelection = new EventEmitter<ProcessDefinitionRepresentation>();\n\n /** Emitted when application selection changes. */\n @Output()\n applicationSelection = new EventEmitter<AppDefinitionRepresentation>();\n\n @ViewChild('startForm')\n startForm: StartFormComponent;\n\n @ViewChild(MatAutocompleteTrigger)\n inputAutocomplete: MatAutocompleteTrigger;\n\n processDefinitions: ProcessDefinitionRepresentation[] = [];\n selectedProcessDef: ProcessDefinitionRepresentation;\n processNameInput: UntypedFormControl;\n processDefinitionInput: UntypedFormControl;\n filteredProcessesDefinitions$: Observable<ProcessDefinitionRepresentation[]>;\n maxProcessNameLength: number = MAX_LENGTH;\n alfrescoRepositoryName: string;\n applications: AppDefinitionRepresentation[] = [];\n selectedApplication: AppDefinitionRepresentation;\n\n isProcessDefinitionsLoading = true;\n isAppsLoading = true;\n movedNodeToPS: FormValues;\n\n private readonly destroyRef = inject(DestroyRef);\n\n constructor(\n private processService: ProcessService,\n private contentService: ActivitiContentService,\n private appsProcessService: AppsProcessService,\n private appConfig: AppConfigService,\n private datePipe: LocalizedDatePipe\n ) {}\n\n ngOnInit() {\n this.processNameInput = new UntypedFormControl('', [\n Validators.required,\n Validators.maxLength(this.maxProcessNameLength),\n Validators.pattern('^[^\\\\s]+(\\\\s+[^\\\\s]+)*$')\n ]);\n this.processDefinitionInput = new UntypedFormControl();\n\n this.load(this.appId);\n\n this.filteredProcessesDefinitions$ = this.processDefinitionInput.valueChanges.pipe(\n map((value) => this._filter(value)),\n takeUntilDestroyed(this.destroyRef)\n );\n\n this.contentService.getAlfrescoRepositories().subscribe((repoList) => {\n if (repoList?.[0]) {\n const alfrescoRepository = repoList[0];\n this.alfrescoRepositoryName = `alfresco-${alfrescoRepository.id}-${alfrescoRepository.name}`;\n }\n });\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['values']?.currentValue) {\n this.moveNodeFromCStoPS();\n }\n\n const appId = changes['appId'];\n if (appId?.currentValue) {\n this.load(appId.currentValue);\n }\n\n const processDefinitionName = changes['processDefinitionName'];\n if (processDefinitionName?.currentValue) {\n this.filterProcessDefinitionByName(processDefinitionName.currentValue);\n }\n }\n\n private getSelectedProcess(selectedProcess: string): ProcessDefinitionRepresentation {\n return this.processDefinitions.find((process) => process.name.toLowerCase() === selectedProcess);\n }\n\n private load(appId?: number) {\n if (this.showSelectApplicationDropdown) {\n this.loadApps();\n } else {\n this.loadProcessDefinitions(appId);\n }\n }\n\n loadProcessDefinitions(appId: number): void {\n this.isProcessDefinitionsLoading = true;\n this.resetSelectedProcessDefinition();\n\n this.processService\n .getProcessDefinitions(appId)\n .pipe(\n map((processDefinitionRepresentations) => {\n let currentProcessDef: ProcessDefinitionRepresentation;\n\n if (processDefinitionRepresentations.length === 1) {\n currentProcessDef = processDefinitionRepresentations[0];\n }\n\n if (this.processDefinitionName) {\n const filteredProcessDefinition = processDefinitionRepresentations.find(\n (processDefinition) => processDefinition.name === this.processDefinitionName\n );\n if (filteredProcessDefinition) {\n currentProcessDef = filteredProcessDefinition;\n }\n }\n\n return { currentProcessDef, processDefinitionRepresentations };\n })\n )\n .subscribe(\n (filteredProcessDefinitions) => {\n this.processDefinitions = filteredProcessDefinitions.processDefinitionRepresentations;\n this.processDefinitionSelectionChanged(filteredProcessDefinitions.currentProcessDef);\n this.processDefinitionInput.setValue(this.selectedProcessDef ? this.selectedProcessDef.name : '');\n this.isProcessDefinitionsLoading = false;\n },\n (error) => {\n this.isProcessDefinitionsLoading = false;\n this.error.emit(error);\n }\n );\n }\n\n private filterProcessDefinitionByName(definitionName: string) {\n if (definitionName) {\n const filteredProcessDef = this.processDefinitions.find((processDefinition) => processDefinition.name === definitionName);\n\n if (filteredProcessDef) {\n this.processDefinitionSelectionChanged(filteredProcessDef);\n this.processDefinitionInput.setValue(this.selectedProcessDef ? this.selectedProcessDef.name : '');\n }\n }\n }\n\n private loadApps() {\n this.isAppsLoading = true;\n this.appsProcessService\n .getDeployedApplications()\n .pipe(\n map((response) => {\n const applications = response.filter((app) => app.id);\n\n let currentApplication: AppDefinitionRepresentation;\n\n if (applications && applications.length === 1) {\n currentApplication = applications[0];\n }\n\n const filteredApp = applications.find((app) => app.id === +this.appId);\n\n if (filteredApp) {\n currentApplication = filteredApp;\n }\n\n return { currentApplication, applications };\n })\n )\n .subscribe(\n (filteredApps) => {\n this.applications = filteredApps.applications;\n this.selectedApplication = filteredApps.currentApplication;\n this.applicationSelection.emit(this.selectedApplication);\n this.toggleProcessNameAndDefinitionsDropdown();\n this.isAppsLoading = false;\n this.loadProcessDefinitionsBasedOnSelectedApp();\n },\n (err) => {\n this.isAppsLoading = false;\n this.error.emit(err);\n }\n );\n }\n\n private loadProcessDefinitionsBasedOnSelectedApp() {\n if (this.selectedApplication?.id) {\n this.loadProcessDefinitions(this.selectedApplication ? this.selectedApplication.id : null);\n } else {\n this.isProcessDefinitionsLoading = false;\n this.resetProcessDefinitions();\n }\n }\n\n onAppSelectionChange(selectedApplication: MatSelectChange) {\n this.resetProcessDefinitions();\n this.selectedApplication = selectedApplication.value;\n this.applicationSelection.emit(this.selectedApplication);\n this.toggleProcessNameAndDefinitionsDropdown();\n this.loadProcessDefinitionsBasedOnSelectedApp();\n }\n\n hasApplications(): boolean {\n return this.applications?.length > 0;\n }\n\n hasProcessDefinitions(): boolean {\n return this.processDefinitions?.length > 0;\n }\n\n isProcessDefinitionSelected(): boolean {\n return !!this.selectedProcessDef?.id;\n }\n\n isDropdownDisabled(): boolean {\n return this.showSelectApplicationDropdown && !this.isAppSelected();\n }\n\n getAlfrescoRepositoryName(): string {\n let alfrescoRepositoryName = this.appConfig.get<string>(AppConfigValues.ALFRESCO_REPOSITORY_NAME);\n if (!alfrescoRepositoryName) {\n alfrescoRepositoryName = this.alfrescoRepositoryName;\n }\n return alfrescoRepositoryName + 'Alfresco';\n }\n\n moveNodeFromCStoPS(): void {\n const accountIdentifier = this.getAlfrescoRepositoryName();\n\n for (const key in this.values) {\n if (Object.prototype.hasOwnProperty.call(this.values, key)) {\n const currentValue = Array.isArray(this.values[key]) ? this.values[key] : [this.values[key]];\n const contents = currentValue\n .filter((value: any) => !!value?.isFile)\n .map((content: Node) => this.contentService.applyAlfrescoNode(content, null, accountIdentifier));\n forkJoin(contents).subscribe((res: RelatedContentRepresentation[]) => {\n this.movedNodeToPS = { [key]: [...res] };\n });\n }\n }\n }\n\n startProcess(outcome?: string) {\n if (this.selectedProcessDef?.id && this.nameController.value) {\n const formValues = this.startForm ? this.startForm.form.values : undefined;\n this.processService.startProcess(this.selectedProcessDef.id, this.nameController.value, outcome, formValues, this.variables).subscribe(\n (res) => {\n this.name = '';\n this.start.emit(res);\n },\n (err) => {\n this.error.emit(err);\n }\n );\n }\n }\n\n cancelStartProcess(): void {\n this.cancel.emit();\n }\n\n hasStartForm(): boolean {\n return this.selectedProcessDef?.hasStartForm;\n }\n\n private isStartFormMissingOrValid(): boolean {\n if (this.startForm) {\n return this.startForm.form?.isValid;\n } else {\n return true;\n }\n }\n\n validateForm(): boolean {\n return this.selectedProcessDef?.id && this.processNameInput.valid && this.isStartFormMissingOrValid();\n }\n\n onOutcomeClick(outcome: string) {\n this.startProcess(outcome);\n }\n\n reset(): void {\n this.resetSelectedProcessDefinition();\n this.name = '';\n if (this.startForm) {\n this.startForm.data = {};\n }\n }\n\n displayFn(process: any): string {\n if (process) {\n let processName = process;\n if (typeof process !== 'string') {\n processName = process.name;\n }\n return processName;\n }\n return undefined;\n }\n\n displayDropdown(event: Event) {\n event.stopPropagation();\n if (!this.inputAutocomplete.panelOpen) {\n this.processDefinitionInput.setValue('');\n this.inputAutocomplete.openPanel();\n } else {\n this.inputAutocomplete.closePanel();\n }\n }\n\n get nameController(): AbstractControl {\n return this.processNameInput;\n }\n\n get processDefinitionController(): AbstractControl {\n return this.processDefinitionInput;\n }\n\n processDefinitionSelectionChanged(processDefinition: ProcessDefinitionRepresentation) {\n if (processDefinition) {\n const processInstanceDetails: ProcessInstanceRepresentation = { processDefinitionName: processDefinition.name };\n const processName = this.formatProcessName(this.name, processInstanceDetails);\n this.processNameInput.setValue(processName);\n this.processNameInput.markAsDirty();\n this.processNameInput.markAsTouched();\n this.selectedProcessDef = processDefinition;\n this.processDefinitionSelection.emit(this.selectedProcessDef);\n } else {\n this.nameController.reset();\n }\n }\n\n isLoading(): boolean {\n return this.showSelectApplicationDropdown ? this.isAppsLoading : false;\n }\n\n private isAppSelected(): boolean {\n return !!this.selectedApplication?.id;\n }\n\n private resetSelectedProcessDefinition() {\n this.selectedProcessDef = undefined;\n if (this.processDefinitionInput) {\n this.processDefinitionInput.setValue('');\n }\n }\n\n private resetProcessDefinitions() {\n this.processDefinitions = [];\n this.resetSelectedProcessDefinition();\n }\n\n private toggleProcessNameAndDefinitionsDropdown() {\n if (!this.isAppSelected()) {\n this.processDefinitionController.disable();\n this.nameController.disable();\n } else {\n this.processDefinitionController.enable();\n this.nameController.enable();\n }\n }\n\n private _filter(value: string): ProcessDefinitionRepresentation[] {\n if (value !== null && value !== undefined) {\n const filterValue = value.toLowerCase();\n const filteredProcess = this.processDefinitions.filter((option) => option.name.toLowerCase().includes(filterValue));\n\n if (this.processFilterSelector) {\n this.selectedProcessDef = this.getSelectedProcess(filterValue);\n }\n return filteredProcess;\n }\n\n return [];\n }\n\n private formatProcessName(processNameFormat: string, processInstance?: ProcessInstanceRepresentation): string {\n let processName = processNameFormat;\n if (processName.match(DATE_TIME_IDENTIFIER_REG_EXP)) {\n const presentDateTime = getTime(new Date());\n processName = processName.replace(DATE_TIME_IDENTIFIER_REG_EXP, this.datePipe.transform(presentDateTime, 'medium'));\n }\n\n if (processName.match(PROCESS_DEFINITION_IDENTIFIER_REG_EXP)) {\n const selectedProcessDefinitionName = processInstance ? processInstance.processDefinitionName : '';\n processName = processName.replace(PROCESS_DEFINITION_IDENTIFIER_REG_EXP, selectedProcessDefinitionName);\n }\n return processName;\n }\n}\n","\n<ng-container *ngIf=\"isLoading(); then showLoadingTemplate; else showStartProcessTemplate\" />\n <ng-template #showLoadingTemplate>\n <mat-spinner class=\"adf-start-process-loading\" />\n </ng-template>\n<ng-template #showStartProcessTemplate>\n <ng-container *ngIf=\"hasApplications() || hasProcessDefinitions() ; else showEmptyTemplate\">\n <div class=\"adf-start-process\">\n <div class=\"adf-title\" *ngIf=\"title\">{{ title | translate}}</div>\n <div class=\"content\">\n <div class=\"adf-start-process-definition-container\">\n <mat-form-field *ngIf=\"showSelectApplicationDropdown\" [floatLabel]=\"'always'\" class=\"adf-start-process-app-list\" [subscriptSizing]=\"'dynamic'\">\n <mat-label>{{ 'ADF_PROCESS_LIST.START_PROCESS.FORM.LABEL.SELECT_APPLICATION' | translate }}</mat-label>\n <mat-select\n placeholder=\"{{ 'ADF_PROCESS_LIST.START_PROCESS.FORM.LABEL.SELECT_APPLICATION' | translate }}\"\n (selectionChange)=\"onAppSelectionChange($event)\"\n [(ngModel)]=\"selectedApplication\"\n class=\"adf-start-process-definition-select\"\n data-automation-id=\"adf-start-process-apps-drop-down\">\n <mat-option\n *ngFor=\"let application of applications\"\n [value]=\"application\"\n role=\"option\"\n [attr.data-automation-id]=\"'adf-start-process-apps-option-' + application.name\">\n {{ application.name }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field class=\"adf-process-input-container\" [floatLabel]=\"'always'\" [subscriptSizing]=\"'dynamic'\">\n <mat-label>{{'ADF_PROCESS_LIST.START_PROCESS.FORM.LABEL.TYPE' | translate}}</mat-label>\n <input\n type=\"text\"\n matInput\n [formControl]=\"processDefinitionInput\"\n [matAutocomplete]=\"auto\"\n id=\"processDefinitionName\">\n <div class=\"adf-process-input-autocomplete\">\n <mat-autocomplete\n #auto=\"matAutocomplete\"\n id=\"processDefinitionOptions\"\n [displayWith]=\"displayFn\">\n <mat-option *ngFor=\"let processDef of filteredProcessesDefinitions$ | async\" [value]=\"processDef.name\"\n (click)=\"processDefinitionSelectionChanged(processDef)\">\n {{ processDef.name }}\n </mat-option>\n </mat-autocomplete>\n <ng-container *ngIf=\"!isProcessDefinitionsLoading ; else showProcessDefLoadingTemplate\">\n <button\n class=\"adf-start-process-button\"\n id=\"adf-select-process-dropdown\"\n *ngIf=\"showSelectProcessDropdown\"\n mat-icon-button\n (click)=\"displayDropdown($event)\"\n [disabled]=\"isDropdownDisabled()\"\n [attr.aria-label]=\"'ADF_PROCESS_LIST.START_PROCESS.FORM.LABEL.TYPE' | translate | uppercase\">\n <mat-icon>arrow_drop_down</mat-icon>\n </button>\n </ng-container>\n <ng-template #showProcessDefLoadingTemplate>\n <mat-spinner id=\"adf-select-process-spinner\" [diameter]=\"20\" />\n </ng-template>\n </div>\n </mat-form-field>\n </div>\n <mat-form-field class=\"adf-process-input-container adf-process-input-container-process-name\" [floatLabel]=\"'always'\">\n <mat-label>{{'ADF_PROCESS_LIST.START_PROCESS.FORM.LABEL.NAME' | translate}}</mat-label>\n <input\n matInput\n [formControl]=\"processNameInput\"\n id=\"processName\"\n required/>\n <mat-error *ngIf=\"nameController.hasError('maxlength')\">\n {{ 'ADF_PROCESS_LIST.START_PROCESS.ERROR.MAXIMUM_LENGTH' | translate : { characters : maxProcessNameLength } }}\n </mat-error>\n <mat-error *ngIf=\"nameController.hasError('required')\">\n {{ 'ADF_PROCESS_LIST.START_PROCESS.ERROR.PROCESS_NAME_REQUIRED' | translate }}\n </mat-error>\n <mat-error *ngIf=\"nameController.hasError('pattern')\">\n {{ 'ADF_PROCESS_LIST.START_PROCESS.ERROR.SPACE_VALIDATOR' | translate }}\n </mat-error>\n </mat-form-field>\n\n <ng-container *ngIf=\"!isProcessDefinitionsLoading ; else showStartFormLoadingTemplate\">\n <ng-container *ngIf=\"isProcessDefinitionSelected() ; else emptyProcessDefTemplate\">\n <ng-container *ngIf=\"hasStartForm(); else noStartFormTemplate\">\n <adf-start-form\n #startForm\n [data]=\"movedNodeToPS\"\n [disableStartProcessButton]=\"processNameInput.invalid\"\n [processDefinitionId]=\"selectedProcessDef.id\"\n (outcomeClick)=\"onOutcomeClick($event)\"\n [showRefreshButton]=\"false\">\n <button\n class=\"adf-start-process-button\"\n adf-form-custom-button\n mat-button\n (click)=\"cancelStartProcess()\"\n id=\"cancel_process\">\n {{'ADF_PROCESS_LIST.START_PROCESS.FORM.ACTION.CANCEL'| translate | uppercase}}\n </button>\n </adf-start-form>\n </ng-container>\n <ng-template #noStartFormTemplate>\n <adf-empty-content\n class=\"adf-start-process-empty-template\"\n [icon]=\"'assessment'\"\n [title]=\"'ADF_PROCESS_LIST.START_PROCESS.NO_START_FORM' | translate\" />\n </ng-template>\n </ng-container>\n <ng-template #emptyProcessDefTemplate>\n <adf-empty-content class=\"adf-start-process-empty-template\"\n [icon]=\"'assessment'\"\n [title]=\"'ADF_PROCESS_LIST.START_PROCESS.NO_PROCESS_DEF_SELECTED' | translate\" />\n </ng-template>\n </ng-container>\n <ng-template #showStartFormLoadingTemplate>\n <mat-spinner class=\"adf-start-process-loading\" />\n </ng-template>\n </div>\n <div class=\"adf-start-process-content-actions\" *ngIf=\"!hasStartForm()\">\n <button\n class=\"adf-start-process-button\"\n mat-button\n *ngIf=\"!hasStartForm()\"\n (click)=\"cancelStartProcess()\"\n id=\"cancel_process\">\n {{'ADF_PROCESS_LIST.START_PROCESS.FORM.ACTION.CANCEL'| translate | uppercase}}\n </button>\n <button\n color=\"primary\"\n mat-button\n *ngIf=\"!hasStartForm()\"\n [disabled]=\"!validateForm()\"\n (click)=\"startProcess()\"\n data-automation-id=\"btn-start\"\n id=\"button-start\"\n class=\"btn-start adf-start-process-button\">\n {{'ADF_PROCESS_LIST.START_PROCESS.FORM.ACTION.START' | translate | uppercase}}\n </button>\n </div>\n </div>\n </ng-container>\n <ng-template #showEmptyTemplate>\n <adf-empty-content class=\"adf-start-process-empty-template\"\n [icon]=\"'assessment'\"\n [title]=\"'ADF_PROCESS_LIST.START_PROCESS.NO_PROCESS_DEFINITIONS' | translate\" />\n </ng-template>\n</ng-template>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/no-input-rename */\n\nimport { DownloadService } from '@alfresco/adf-core';\nimport { Directive, EventEmitter, Input, OnChanges, Output } from '@angular/core';\nimport { ProcessService } from '../../services/process.service';\n\nconst JSON_FORMAT: string = 'json';\nconst PDF_FORMAT: string = 'pdf';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'button[adf-process-audit]',\n host: {\n role: 'button',\n '(click)': 'onClickAudit()'\n }\n})\nexport class ProcessAuditDirective implements OnChanges {\n /** ID of the process. */\n @Input('process-id')\n processId: string;\n\n /** Name of the file to download (for PDF downloads). */\n @Input()\n fileName: string = 'Audit';\n\n /** Format for the audit information (can be \"pdf\" or \"json\"). */\n @Input()\n format: string = 'pdf';\n\n /** Enables downloading of the audit file on clicking. */\n @Input()\n download: boolean = true;\n\n /** Emitted when the decorated element is clicked. */\n @Output()\n clicked: EventEmitter<any> = new EventEmitter<any>();\n\n /** Emitted when an error occurs. */\n @Output()\n error: EventEmitter<any> = new EventEmitter<any>();\n\n constructor(private downloadService: DownloadService, private processListService: ProcessService) {}\n\n ngOnChanges(): void {\n if (!this.isValidType()) {\n this.setDefaultFormatType();\n }\n }\n\n isValidType() {\n return this.format && (this.isJsonFormat() || this.isPdfFormat());\n }\n\n setDefaultFormatType(): void {\n this.format = PDF_FORMAT;\n }\n\n /**\n * fetch the audit information in the requested format\n */\n fetchAuditInfo(): void {\n if (this.isPdfFormat()) {\n this.processListService.fetchProcessAuditPdfById(this.processId).subscribe(\n (blob: Blob) => {\n if (this.download) {\n this.downloadService.downloadBlob(blob, this.fileName + '.pdf');\n }\n this.clicked.emit({ format: this.format, value: blob, fileName: this.fileName });\n },\n (err) => this.error.emit(err)\n );\n } else {\n this.processListService.fetchProcessAuditJsonById(this.processId).subscribe(\n (res) => this.clicked.emit({ format: this.format, value: res, fileName: this.fileName }),\n (err) => this.error.emit(err)\n );\n }\n }\n\n onClickAudit() {\n this.fetchAuditInfo();\n }\n\n isJsonFormat() {\n return this.format === JSON_FORMAT;\n }\n\n isPdfFormat() {\n return this.format === PDF_FORMAT;\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// component\nimport { ProcessInstanceListComponent } from './components/process-list/process-list.component';\nimport { ProcessFiltersComponent } from './components/process-filters/process-filters.component';\nimport { ProcessInstanceDetailsComponent } from './components/process-instance-details/process-instance-details.component';\nimport { ProcessInstanceHeaderComponent } from './components/process-instance-header/process-instance-header.component';\nimport { ProcessInstanceTasksComponent } from './components/process-instance-tasks/process-instance-tasks.component';\nimport { StartProcessInstanceComponent } from './components/start-process/start-process.component';\nimport { ProcessAuditDirective } from './components/process-audit/process-audit.directive';\n\nexport * from './components/process-filters/process-filters.component';\nexport * from './components/process-instance-details/process-instance-details.component';\nexport * from './components/process-audit/process-audit.directive';\nexport * from './components/process-instance-header/process-instance-header.component';\nexport * from './components/process-instance-tasks/process-instance-tasks.component';\nexport * from './components/process-list/process-list.component';\nexport * from './components/start-process/start-process.component';\n\n// services\nexport * from './services/process.service';\nexport * from './services/process-filter.service';\n\nexport const PROCESS_LIST_DIRECTIVES = [\n ProcessAuditDirective,\n ProcessInstanceListComponent,\n ProcessFiltersComponent,\n ProcessInstanceDetailsComponent,\n ProcessInstanceHeaderComponent,\n ProcessInstanceTasksComponent,\n StartProcessInstanceComponent\n] as const;\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './public-api';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CustomEmptyContentTemplateDirective, EmptyContentComponent } from '@alfresco/adf-core';\nimport { AppsProcessService } from '../services/apps-process.service';\nimport { AfterContentInit, Component, ContentChild, EventEmitter, Input, OnInit, Output, ViewEncapsulation } from '@angular/core';\nimport { IconModel } from './icon.model';\nimport { finalize, map } from 'rxjs/operators';\nimport { AppDefinitionRepresentation } from '@alfresco/js-api';\nimport { CommonModule } from '@angular/common';\nimport { MatListModule } from '@angular/material/list';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatLineModule } from '@angular/material/core';\n\nconst DEFAULT_TASKS_APP_NAME: string = 'ADF_TASK_LIST.APPS.TASK_APP_NAME';\nconst DEFAULT_TASKS_APP_THEME: string = 'theme-2';\nconst DEFAULT_TASKS_APP_ICON: string = 'glyphicon-asterisk';\n\nexport const APP_LIST_LAYOUT_LIST: string = 'LIST';\nexport const APP_LIST_LAYOUT_GRID: string = 'GRID';\n\n@Component({\n selector: 'adf-apps',\n imports: [\n CommonModule,\n MatListModule,\n MatIconModule,\n MatCardModule,\n MatProgressSpinnerModule,\n TranslatePipe,\n EmptyContentComponent,\n MatLineModule\n ],\n templateUrl: './apps-list.component.html',\n styleUrls: ['./apps-list.component.scss'],\n encapsulation: ViewEncapsulation.None,\n host: { class: 'adf-apps' }\n})\nexport class AppsListComponent implements OnInit, AfterContentInit {\n @ContentChild(CustomEmptyContentTemplateDirective)\n emptyCustomContent: CustomEmptyContentTemplateDirective;\n\n /**\n * Defines the layout of the apps. There are two possible\n * values, \"GRID\" and \"LIST\".\n */\n @Input()\n layoutType: string = APP_LIST_LAYOUT_GRID;\n\n /** The default app to show when the component is loaded. */\n @Input()\n defaultAppId = 'tasks';\n\n /** Provides a way to filter the apps to show. */\n @Input()\n filtersAppId: AppDefinitionRepresentation[];\n\n /** Emitted when an app entry is clicked. */\n @Output()\n appClick = new EventEmitter<AppDefinitionRepresentation>();\n\n /** Emitted when an error occurs. */\n @Output()\n error = new EventEmitter<any>();\n\n currentApp: AppDefinitionRepresentation;\n appList: AppDefinitionRepresentation[] = [];\n loading: boolean = false;\n hasEmptyCustomContentTemplate: boolean = false;\n\n private iconsMDL: IconModel;\n constructor(private appsProcessService: AppsProcessService) {}\n\n ngOnInit() {\n if (!this.isValidType()) {\n this.setDefaultLayoutType();\n }\n\n this.iconsMDL = new IconModel();\n this.load();\n }\n\n ngAfterContentInit() {\n if (this.emptyCustomContent) {\n this.hasEmptyCustomContentTemplate = true;\n }\n }\n\n private isDefaultApp(app: AppDefinitionRepresentation): boolean {\n return app.defaultAppId === this.defaultAppId;\n }\n\n getAppName(app: AppDefinitionRepresentation): string {\n return this.isDefaultApp(app) ? DEFAULT_TASKS_APP_NAME : app.name || app.defaultAppId;\n }\n\n /**\n * Pass the selected app as next\n *\n * @param app application model\n */\n selectApp(app: AppDefinitionRepresentation) {\n this.currentApp = app;\n this.appClick.emit(app);\n }\n\n /**\n * Return true if the appId is the current app\n *\n * @param appId application id\n * @returns `true` if application is selected, otherwise `false`\n */\n isSelected(appId: number): boolean {\n return this.currentApp !== undefined && appId === this.currentApp.id;\n }\n\n /**\n * Check if the value of the layoutType property is an allowed value\n *\n * @returns `true` if layout type is valid, otherwise `false`\n */\n isValidType(): boolean {\n return this.layoutType && (this.layoutType === APP_LIST_LAYOUT_LIST || this.layoutType === APP_LIST_LAYOUT_GRID);\n }\n\n /**\n * Assign the default value to LayoutType\n */\n setDefaultLayoutType(): void {\n this.layoutType = APP_LIST_LAYOUT_GRID;\n }\n\n /**\n * Check if the layout type is LIST\n *\n * @returns `true` if current layout is in the list mode, otherwise `false`\n */\n isList(): boolean {\n return this.layoutType === APP_LIST_LAYOUT_LIST;\n }\n\n /**\n * Check if the layout type is GRID\n *\n * @returns `true` if current layout is in the grid mode, otherwise `false`\n */\n isGrid(): boolean {\n return this.layoutType === APP_LIST_LAYOUT_GRID;\n }\n\n isEmpty(): boolean {\n return this.appList.length === 0;\n }\n\n isLoading(): boolean {\n return this.loading;\n }\n\n getTheme(app: AppDefinitionRepresentation): string {\n return app.theme ? app.theme : '';\n }\n\n getBackgroundIcon(app: AppDefinitionRepresentation): string {\n return this.iconsMDL.mapGlyphiconToMaterialDesignIcons(app.icon);\n }\n\n private load() {\n this.loading = true;\n this.appsProcessService\n .getDeployedApplications()\n .pipe(\n map((apps) => apps.filter((app) => app.deploymentId !== undefined || app.defaultAppId === this.defaultAppId)),\n finalize(() => (this.loading = false))\n )\n .subscribe(\n (res) => {\n const apps = this.filterApps(res, this.filtersAppId).map((app) => {\n if (this.isDefaultApp(app)) {\n app.theme = DEFAULT_TASKS_APP_THEME;\n app.icon = DEFAULT_TASKS_APP_ICON;\n }\n\n return app;\n });\n\n this.appList = [...apps];\n },\n (err) => {\n this.error.emit(err);\n }\n );\n }\n\n filterApps(apps: AppDefinitionRepresentation[], filter: Partial<AppDefinitionRepresentation>[]): AppDefinitionRepresentation[] {\n return filter && filter.length > 0\n ? apps.filter((app) =>\n filter.some(\n (f) =>\n (f.defaultAppId && app.defaultAppId === f.defaultAppId) ||\n (f.deploymentId && app.deploymentId === f.deploymentId) ||\n (f.name && app.name === f.name) ||\n (f.id !== undefined && app.id === f.id) ||\n (f.modelId !== undefined && app.modelId === f.modelId) ||\n (f.tenantId !== undefined && app.tenantId === f.tenantId)\n )\n )\n : apps;\n }\n}\n","<div class=\"menu-container\" *ngIf=\"!isEmpty()\">\n <mat-list *ngIf=\"isList()\" class=\"adf-app-list\">\n <mat-list-item class=\"adf-app-list-item\" (click)=\"selectApp(app)\" (keyup.enter)=\"selectApp(app)\" *ngFor=\"let app of appList\" tabindex=\"0\" role=\"button\" title=\"{{app.name}}\">\n <mat-icon matListItemIcon>touch_app</mat-icon>\n <span matLine>{{getAppName(app) | translate}}</span>\n </mat-list-item>\n </mat-list>\n <div *ngIf=\"isGrid()\" class=\"adf-app-listgrid\">\n <div *ngFor=\"let app of appList\"\n class=\"adf-app-listgrid-item\">\n <mat-card appearance=\"outlined\" tabindex=\"0\"\n role=\"button\"\n class=\"adf-app-listgrid-item-card\"\n title=\"{{getAppName(app) | translate}}\"\n [ngClass]=\"[getTheme(app)]\"\n (click)=\"selectApp(app)\"\n (keyup.enter)=\"selectApp(app)\">\n <div class=\"adf-app-listgrid-item-card-logo\">\n <mat-icon class=\"adf-app-listgrid-item-card-logo-icon\">{{getBackgroundIcon(app)}}</mat-icon>\n </div>\n <div mat-card-title class=\"adf-app-listgrid-item-card-title\">\n <h1>{{getAppName(app) | translate}}</h1>\n </div>\n <mat-card-subtitle class=\"adf-app-listgrid-item-card-subtitle\">\n <div class=\"adf-line-clamp\">{{app.description}}</div>\n </mat-card-subtitle>\n\n <mat-card-actions class=\"adf-app-listgrid-item-card-actions\">\n <mat-icon class=\"adf-app-listgrid-item-card-actions-icon\" *ngIf=\"isSelected(app.id)\">done</mat-icon>\n </mat-card-actions>\n </mat-card>\n </div>\n </div>\n</div>\n\n<ng-container *ngIf=\"isLoading(); else empty\">\n <div class=\"adf-app-list-spinner\">\n <mat-progress-spinner mode=\"indeterminate\" />\n </div>\n</ng-container>\n\n<ng-template #empty>\n <div class=\"adf-app-list-empty\" *ngIf=\"isEmpty()\">\n <ng-content select=\"adf-custom-empty-content-template\"\n *ngIf=\"hasEmptyCustomContentTemplate; else defaultEmptyTemplate\"\n class=\"adf-custom-empty-template\" />\n\n <ng-template #defaultEmptyTemplate>\n <adf-empty-content\n icon=\"apps\"\n [title]=\"'ADF_TASK_LIST.APPS.TITLE' | translate\"\n [subtitle]=\"'ADF_TASK_LIST.APPS.SUBTITLE' | translate\" />\n </ng-template>\n </div>\n</ng-template>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, Inject, ViewEncapsulation } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { AppsProcessService } from '../../services/apps-process.service';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'adf-select-apps-dialog',\n imports: [CommonModule, TranslatePipe, MatDialogModule, MatSelectModule, MatButtonModule],\n templateUrl: './select-apps-dialog.component.html',\n styleUrls: ['./select-apps-dialog.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class SelectAppsDialogComponent {\n processApps: any;\n\n selectedProcess: any;\n\n constructor(\n private appsProcessService: AppsProcessService,\n public dialogRef: MatDialogRef<SelectAppsDialogComponent>,\n @Inject(MAT_DIALOG_DATA) public data: any\n ) {\n this.appsProcessService.getDeployedApplications().subscribe((apps) => {\n this.processApps = apps.filter((currentApp) => currentApp.id);\n });\n }\n\n onStart(): void {\n this.dialogRef.close(this.selectedProcess);\n }\n}\n","<header mat-dialog-title id=\"adf-select-app-dialog-title\">{{'APP.DIALOG.TITLE' | translate}}</header>\n<section mat-dialog-content>\n\n <mat-select id=\"adf-select-app-dialog-dropdown\" placeholder=\"{{'APP.DIALOG.LIST' | translate}}\" [(value)]=\"selectedProcess\" >\n <mat-option *ngFor=\"let currentProcessApp of processApps\" [value]=\"currentProcessApp\">\n {{ currentProcessApp.name }}\n </mat-option>\n </mat-select>\n\n</section>\n<footer mat-dialog-actions class=\"adf-select-apps-dialog-actions\">\n <button mat-button (click)=\"onStart()\">{{'APP.DIALOG.START' | translate}}</button>\n</footer>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AppsListComponent } from './apps-list.component';\nimport { SelectAppsDialogComponent } from './select-apps-dialog/select-apps-dialog.component';\n\nexport * from './apps-list.component';\nexport * from './select-apps-dialog/select-apps-dialog.component';\nexport * from '../services/apps-process.service';\n\nexport const APPS_LIST_DIRECTIVES = [AppsListComponent, SelectAppsDialogComponent] as const;\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './public-api';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n DataColumnComponent,\n DataColumnListComponent,\n DataTableComponent,\n DownloadService,\n EmptyListComponent,\n EmptyListHeaderDirective,\n LoadingContentTemplateDirective,\n NoContentTemplateDirective,\n ThumbnailService\n} from '@alfresco/adf-core';\nimport {\n AfterContentInit,\n Component,\n ContentChild,\n EventEmitter,\n Input,\n NgZone,\n OnChanges,\n Output,\n SimpleChanges,\n ViewEncapsulation\n} from '@angular/core';\nimport { ProcessContentService } from '../../form/services/process-content.service';\nimport { CommonModule } from '@angular/common';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { TranslatePipe } from '@ngx-translate/core';\n\n@Component({\n selector: 'adf-task-attachment-list',\n imports: [\n CommonModule,\n MatProgressSpinnerModule,\n DataTableComponent,\n EmptyListHeaderDirective,\n TranslatePipe,\n DataColumnListComponent,\n DataColumnComponent,\n LoadingContentTemplateDirective,\n EmptyListComponent,\n NoContentTemplateDirective\n ],\n styleUrls: ['./task-attachment-list.component.scss'],\n templateUrl: './task-attachment-list.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class TaskAttachmentListComponent implements OnChanges, AfterContentInit {\n @ContentChild(EmptyListComponent)\n emptyTemplate: EmptyListComponent;\n\n /** (**required**) The ID of the task to display. */\n @Input({ required: true })\n taskId: string;\n\n /** Disable/Enable read only mode for attachment list. */\n @Input()\n disabled: boolean = false;\n\n /**\n * Emitted when the attachment is double-clicked or a view\n * option is selected from the context menu by the user from within the component.\n * Returns a Blob representing the clicked object.\n */\n @Output()\n attachmentClick = new EventEmitter();\n\n /**\n * Emitted when the attachment list has fetched all the attachments.\n * Returns a list of attachments.\n */\n @Output()\n success = new EventEmitter();\n\n /** Emitted when an error occurs while fetching the attachments. */\n @Output()\n error = new EventEmitter<any>();\n\n hasCustomTemplate: boolean = false;\n\n attachments: any[] = [];\n isLoading: boolean = false;\n\n constructor(\n private activitiContentService: ProcessContentService,\n private downloadService: DownloadService,\n private thumbnailService: ThumbnailService,\n private ngZone: NgZone\n ) {}\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['taskId']?.currentValue) {\n this.loadAttachmentsByTaskId(changes['taskId'].currentValue);\n }\n }\n\n ngAfterContentInit() {\n if (this.emptyTemplate) {\n this.hasCustomTemplate = true;\n }\n }\n\n reset(): void {\n this.attachments = [];\n }\n\n reload(): void {\n this.ngZone.run(() => {\n this.loadAttachmentsByTaskId(this.taskId);\n });\n }\n\n add(content: any): void {\n this.ngZone.run(() => {\n this.attachments.push({\n id: content.id,\n name: content.name,\n created: content.created,\n createdBy: content.createdBy.firstName + ' ' + content.createdBy.lastName,\n icon: this.thumbnailService.getMimeTypeIcon(content.mimeType)\n });\n });\n }\n\n deleteAttachmentById(contentId: number) {\n if (contentId) {\n this.activitiContentService.deleteRelatedContent(contentId).subscribe(\n () => {\n this.attachments = this.attachments.filter((content) => content.id !== contentId);\n },\n (err) => {\n this.error.emit(err);\n }\n );\n }\n }\n\n onShowRowActionsMenu(event: any) {\n const viewAction = {\n title: 'ADF_TASK_LIST.MENU_ACTIONS.VIEW_CONTENT',\n name: 'view'\n };\n\n const removeAction = {\n title: 'ADF_TASK_LIST.MENU_ACTIONS.REMOVE_CONTENT',\n name: 'remove'\n };\n\n const downloadAction = {\n title: 'ADF_TASK_LIST.MENU_ACTIONS.DOWNLOAD_CONTENT',\n name: 'download'\n };\n\n event.value.actions = [viewAction, downloadAction];\n\n if (!this.disabled) {\n event.value.actions.splice(1, 0, removeAction);\n }\n }\n\n onExecuteRowAction(event: any) {\n const args = event.value;\n const action = args.action;\n if (action.name === 'view') {\n this.emitDocumentContent(args.row.obj);\n } else if (action.name === 'remove') {\n this.deleteAttachmentById(args.row.obj.id);\n } else if (action.name === 'download') {\n this.downloadContent(args.row.obj);\n }\n }\n\n openContent(event: any): void {\n const content = event.value.obj;\n this.emitDocumentContent(content);\n }\n\n emitDocumentContent(content: any) {\n this.activitiContentService.getContentPreview(content.id).subscribe(\n (blob: Blob) => {\n content.contentBlob = blob;\n this.attachmentClick.emit(content);\n },\n (err) => {\n this.error.emit(err);\n }\n );\n }\n\n downloadContent(content: any): void {\n this.activitiContentService.getFileRawContent(content.id).subscribe(\n (blob: Blob) => this.downloadService.downloadBlob(blob, content.name),\n (err) => {\n this.error.emit(err);\n }\n );\n }\n\n private loadAttachmentsByTaskId(taskId: string) {\n if (taskId) {\n this.isLoading = true;\n this.reset();\n const isRelatedContent = 'true';\n this.activitiContentService.getTaskRelatedContent(taskId, { isRelatedContent }).subscribe(\n (res) => {\n const attachList = [];\n res.data.forEach((content) => {\n attachList.push({\n id: content.id,\n name: content.name,\n created: content.created,\n createdBy: content.createdBy.firstName + ' ' + content.createdBy.lastName,\n icon: this.thumbnailService.getMimeTypeIcon(content.mimeType)\n });\n });\n this.attachments = attachList;\n this.success.emit(this.attachments);\n this.isLoading = false;\n },\n (err) => {\n this.error.emit(err);\n this.isLoading = false;\n }\n );\n }\n }\n}\n","<adf-datatable [rows]=\"attachments\"\n [actions]=\"true\"\n [loading]=\"isLoading\"\n (rowDblClick)=\"openContent($event)\"\n (showRowActionsMenu)=\"onShowRowActionsMenu($event)\"\n (executeRowAction)=\"onExecuteRowAction($event)\">\n <adf-no-content-template>\n <ng-template>\n <ng-content *ngIf=\"hasCustomTemplate; else defaultEmptyList\" class=\"adf-custom-empty-template\" />\n <ng-template #defaultEmptyList>\n <adf-empty-list>\n <div adf-empty-list-header class=\"adf-empty-list-header\">\n {{'ADF_TASK_LIST.ATTACHMENT.EMPTY.HEADER' | translate}}\n </div>\n </adf-empty-list>\n </ng-template>\n </ng-template>\n </adf-no-content-template>\n\n <data-columns>\n <data-column key=\"icon\" type=\"image\" [sr-title]=\"'ADF_TASK_LIST.PROPERTIES.THUMBNAIL'\" [sortable]=\"false\" />\n <data-column key=\"name\" type=\"text\" title=\"ADF_TASK_LIST.PROPERTIES.NAME\" class=\"adf-full-width adf-ellipsis-cell\" [sortable]=\"true\" />\n <data-column key=\"created\" type=\"date\" format=\"shortDate\" title=\"ADF_TASK_LIST.PROPERTIES.CREATED\" />\n </data-columns>\n <adf-loading-content-template>\n <ng-template>\n <!--Add your custom loading template here-->\n <mat-progress-spinner class=\"adf-attachment-list-loading-margin\" [color]=\"'primary'\" [mode]=\"'indeterminate'\" />\n </ng-template>\n </adf-loading-content-template>\n</adf-datatable>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n DataColumnComponent,\n DataColumnListComponent,\n DataTableComponent,\n DownloadService,\n EmptyListComponent,\n LoadingContentTemplateDirective,\n NoContentTemplateDirective,\n ThumbnailService\n} from '@alfresco/adf-core';\nimport {\n AfterContentInit,\n Component,\n ContentChild,\n EventEmitter,\n Input,\n NgZone,\n OnChanges,\n Output,\n SimpleChanges,\n ViewEncapsulation\n} from '@angular/core';\nimport { ProcessContentService } from '../../form/services/process-content.service';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\n\n@Component({\n selector: 'adf-process-attachment-list',\n imports: [\n CommonModule,\n TranslatePipe,\n MatProgressSpinnerModule,\n DataTableComponent,\n NoContentTemplateDirective,\n EmptyListComponent,\n DataColumnListComponent,\n DataColumnComponent,\n LoadingContentTemplateDirective\n ],\n styleUrls: ['./process-attachment-list.component.scss'],\n templateUrl: './process-attachment-list.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class ProcessAttachmentListComponent implements OnChanges, AfterContentInit {\n @ContentChild(EmptyListComponent)\n emptyTemplate: EmptyListComponent;\n\n /** (**required**) The ID of the process instance to display. */\n @Input({ required: true })\n processInstanceId: string;\n\n /** Disable/Enable read-only mode for attachment list. */\n @Input()\n disabled: boolean = false;\n\n /**\n * Emitted when the attachment is double-clicked or the\n * view option is selected from the context menu by the user from\n * within the component. Returns a Blob representing the object\n * that was clicked.\n */\n @Output()\n attachmentClick = new EventEmitter();\n\n /**\n * Emitted when the attachment list has fetched all the attachments.\n * Returns a list of attachments.\n */\n @Output()\n success = new EventEmitter();\n\n /**\n * Emitted when the attachment list is not able to fetch the attachments\n * (eg, following a network error).\n */\n @Output()\n error = new EventEmitter<any>();\n\n hasCustomTemplate: boolean = false;\n\n attachments: any[] = [];\n isLoading: boolean = false;\n\n constructor(\n private processContentService: ProcessContentService,\n private downloadService: DownloadService,\n private thumbnailService: ThumbnailService,\n private ngZone: NgZone\n ) {}\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['processInstanceId']?.currentValue) {\n this.loadAttachmentsByProcessInstanceId(changes['processInstanceId'].currentValue);\n }\n }\n\n ngAfterContentInit() {\n if (this.emptyTemplate) {\n this.hasCustomTemplate = true;\n }\n }\n\n reset() {\n this.attachments = [];\n }\n\n reload(): void {\n this.ngZone.run(() => {\n this.loadAttachmentsByProcessInstanceId(this.processInstanceId);\n });\n }\n\n add(content: any): void {\n this.ngZone.run(() => {\n this.attachments.push({\n id: content.id,\n name: content.name,\n created: content.created,\n createdBy: content.createdBy.firstName + ' ' + content.createdBy.lastName,\n icon: this.thumbnailService.getMimeTypeIcon(content.mimeType)\n });\n });\n }\n\n onShowRowActionsMenu(event: any) {\n const viewAction = {\n title: 'ADF_PROCESS_LIST.MENU_ACTIONS.VIEW_CONTENT',\n name: 'view'\n };\n\n const removeAction = {\n title: 'ADF_PROCESS_LIST.MENU_ACTIONS.REMOVE_CONTENT',\n name: 'remove'\n };\n\n const downloadAction = {\n title: 'ADF_PROCESS_LIST.MENU_ACTIONS.DOWNLOAD_CONTENT',\n name: 'download'\n };\n\n event.value.actions = [viewAction, downloadAction];\n\n if (!this.disabled) {\n event.value.actions.splice(1, 0, removeAction);\n }\n }\n\n onExecuteRowAction(event: any) {\n const args = event.value;\n const action = args.action;\n if (action.name === 'view') {\n this.emitDocumentContent(args.row.obj);\n } else if (action.name === 'remove') {\n this.deleteAttachmentById(args.row.obj.id);\n } else if (action.name === 'download') {\n this.downloadContent(args.row.obj);\n }\n }\n\n openContent(event: any): void {\n const content = event.value.obj;\n this.emitDocumentContent(content);\n }\n\n emitDocumentContent(content: any) {\n this.processContentService.getContentPreview(content.id).subscribe(\n (blob: Blob) => {\n content.contentBlob = blob;\n this.attachmentClick.emit(content);\n },\n (err) => {\n this.error.emit(err);\n }\n );\n }\n\n downloadContent(content: any): void {\n this.processContentService.getFileRawContent(content.id).subscribe(\n (blob: Blob) => this.downloadService.downloadBlob(blob, content.name),\n (err) => {\n this.error.emit(err);\n }\n );\n }\n\n private loadAttachmentsByProcessInstanceId(processInstanceId: string) {\n if (processInstanceId) {\n this.reset();\n this.isLoading = true;\n const isRelatedContent = 'true';\n this.processContentService.getProcessRelatedContent(processInstanceId, { isRelatedContent }).subscribe(\n (res) => {\n res.data.forEach((content) => {\n this.attachments.push({\n id: content.id,\n name: content.name,\n created: content.created,\n createdBy: content.createdBy.firstName + ' ' + content.createdBy.lastName,\n icon: this.thumbnailService.getMimeTypeIcon(content.mimeType)\n });\n });\n this.success.emit(this.attachments);\n this.isLoading = false;\n },\n (err) => {\n this.error.emit(err);\n this.isLoading = false;\n }\n );\n }\n }\n\n private deleteAttachmentById(contentId: number) {\n if (contentId) {\n this.processContentService.deleteRelatedContent(contentId).subscribe(\n () => {\n this.attachments = this.attachments.filter((content) => content.id !== contentId);\n },\n (err) => {\n this.error.emit(err);\n }\n );\n }\n }\n}\n","<adf-datatable [rows]=\"attachments\"\n [actions]=\"true\"\n [loading]=\"isLoading\"\n (rowDblClick)=\"openContent($event)\"\n (showRowActionsMenu)=\"onShowRowActionsMenu($event)\"\n (executeRowAction)=\"onExecuteRowAction($event)\">\n\n <adf-no-content-template>\n <ng-template>\n <ng-content *ngIf=\"hasCustomTemplate; else defaultEmptyList\" class=\"adf-custom-empty-template\" />\n <ng-template #defaultEmptyList>\n <adf-empty-list>\n <div adf-empty-list-header class=\"adf-empty-list-header\">\n {{'ADF_PROCESS_LIST.PROCESS-ATTACHMENT.EMPTY.HEADER' | translate}}\n </div>\n </adf-empty-list>\n </ng-template>\n </ng-template>\n </adf-no-content-template>\n\n <data-columns>\n <data-column key=\"icon\" type=\"image\" [sr-title]=\"'ADF_PROCESS_LIST.PROPERTIES.THUMBNAIL'\" [sortable]=\"false\" />\n <data-column key=\"name\" type=\"text\" title=\"{{'ADF_PROCESS_LIST.PROPERTIES.NAME' | translate}}\" class=\"adf-full-width adf-ellipsis-cell\" [sortable]=\"true\" />\n <data-column key=\"created\" type=\"date\" format=\"shortDate\" title=\"{{'ADF_PROCESS_LIST.PROPERTIES.CREATED' | translate}}\" />\n </data-columns>\n\n <adf-loading-content-template>\n <ng-template>\n <!--Add your custom loading template here-->\n <mat-progress-spinner class=\"adf-attachment-list-loading-margin\" [color]=\"'primary'\" [mode]=\"'indeterminate'\" />\n </ng-template>\n </adf-loading-content-template>\n\n</adf-datatable>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, EventEmitter, inject, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\nimport { ProcessContentService } from '../../form/services/process-content.service';\nimport { RelatedContentRepresentation } from '@alfresco/js-api';\nimport { CommonModule } from '@angular/common';\nimport { UploadDirective } from '@alfresco/adf-core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n selector: 'adf-create-process-attachment',\n imports: [CommonModule, UploadDirective, MatButtonModule, MatIconModule],\n styleUrls: ['./create-process-attachment.component.css'],\n templateUrl: './create-process-attachment.component.html'\n})\nexport class CreateProcessAttachmentComponent implements OnChanges {\n private processContentService = inject(ProcessContentService);\n\n /** (required) The ID of the process instance to display. */\n @Input({ required: true })\n processInstanceId: string;\n\n /**\n * Emitted when an error occurs while creating or uploading an attachment\n * from the user within the component.\n */\n @Output()\n error = new EventEmitter<any>();\n\n /**\n * Emitted when an attachment is successfully created or uploaded\n * from within the component.\n */\n @Output()\n success = new EventEmitter<RelatedContentRepresentation>();\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['processInstanceId']?.currentValue) {\n this.processInstanceId = changes['processInstanceId'].currentValue;\n }\n }\n\n onFileUpload(event: any) {\n const filesList: File[] = event.detail.files.map((obj) => obj.file);\n\n for (const fileInfoObj of filesList) {\n const file: File = fileInfoObj;\n const opts = {\n isRelatedContent: true\n };\n this.processContentService.createProcessRelatedContent(this.processInstanceId, file, opts).subscribe(\n (res) => {\n this.success.emit(res);\n },\n (err) => {\n this.error.emit(err);\n }\n );\n }\n }\n}\n","<button\n id=\"add_new_process_content_button\"\n color=\"primary\"\n mat-button\n class=\"adf-create-attachment\"\n [adf-upload]=\"true\"\n [mode]=\"['click']\"\n [multiple]=\"true\"\n (upload-files)=\"onFileUpload($event)\">\n <mat-icon>add</mat-icon>\n</button>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, EventEmitter, inject, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\nimport { ProcessContentService } from '../../form/services/process-content.service';\nimport { CommonModule } from '@angular/common';\nimport { RelatedContentRepresentation } from '@alfresco/js-api';\nimport { MatButtonModule } from '@angular/material/button';\nimport { UploadDirective } from '@alfresco/adf-core';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n selector: 'adf-create-task-attachment',\n imports: [CommonModule, MatButtonModule, UploadDirective, MatIconModule],\n styleUrls: ['./create-task-attachment.component.scss'],\n templateUrl: './create-task-attachment.component.html'\n})\nexport class AttachmentComponent implements OnChanges {\n private processContentService = inject(ProcessContentService);\n\n /** (required) The numeric ID of the task to display. */\n @Input({ required: true })\n taskId: string;\n\n /**\n * Emitted when an error occurs while creating or uploading an\n * attachment from the user within the component.\n */\n @Output()\n error = new EventEmitter<any>();\n\n /**\n * Emitted when an attachment is created or uploaded successfully\n * from within the component.\n */\n @Output()\n success = new EventEmitter<RelatedContentRepresentation>();\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['taskId']?.currentValue) {\n this.taskId = changes['taskId'].currentValue;\n }\n }\n\n onFileUpload(event: any) {\n const filesList: File[] = event.detail.files.map((obj) => obj.file);\n\n for (const fileInfoObj of filesList) {\n const file: File = fileInfoObj;\n const opts = {\n isRelatedContent: true\n };\n this.processContentService.createTaskRelatedContent(this.taskId, file, opts).subscribe(\n (res) => {\n this.success.emit(res);\n },\n (err) => {\n this.error.emit(err);\n }\n );\n }\n }\n}\n","<button\n color=\"primary\"\n mat-button\n class=\"adf-create-attachment\"\n [adf-upload]=\"true\"\n [mode]=\"['click']\"\n [multiple]=\"true\"\n (upload-files)=\"onFileUpload($event)\">\n <mat-icon>add</mat-icon>\n</button>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { TaskAttachmentListComponent } from './task-attachment-list/task-attachment-list.component';\nimport { ProcessAttachmentListComponent } from './process-attachment-list/process-attachment-list.component';\nimport { CreateProcessAttachmentComponent } from './create-process-attachment/create-process-attachment.component';\nimport { AttachmentComponent } from './create-task-attachment/create-task-attachment.component';\n\nexport * from './task-attachment-list/task-attachment-list.component';\nexport * from './process-attachment-list/process-attachment-list.component';\nexport * from './create-process-attachment/create-process-attachment.component';\nexport * from './create-task-attachment/create-task-attachment.component';\n\nexport const ATTACHMENT_DIRECTIVES = [\n TaskAttachmentListComponent,\n ProcessAttachmentListComponent,\n CreateProcessAttachmentComponent,\n AttachmentComponent\n] as const;\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './public-api';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { NgModule, ModuleWithProviders } from '@angular/core';\nimport { FormRenderingService, provideTranslations } from '@alfresco/adf-core';\nimport { ProcessFormRenderingService } from './form/process-form-rendering.service';\nimport { ATTACHMENT_DIRECTIVES } from './attachment';\nimport { APPS_LIST_DIRECTIVES } from './app-list';\nimport { PEOPLE_DIRECTIVES } from './people';\nimport { PROCESS_COMMENTS_DIRECTIVES } from './process-comments';\nimport { PROCESS_LIST_DIRECTIVES } from './process-list';\nimport { TASK_LIST_DIRECTIVES } from './task-list';\nimport { FORM_DIRECTIVES } from './form';\nimport { TASK_COMMENTS_DIRECTIVES } from './task-comments';\nimport { MAT_FORM_FIELD_DEFAULT_OPTIONS } from '@angular/material/form-field';\n\n/**\n * @deprecated use provider api instead, for example:\n * ```\n * providers: [\n * provideTranslations('adf-process-services', 'assets/adf-process-services'),\n * { provide: MAT_FORM_FIELD_DEFAULT_OPTIONS, useValue: { floatLabel: 'never' } }\n * FormRenderingService,\n * { provide: FormRenderingService, useClass: ProcessFormRenderingService }\n * ]\n * ```\n */\n@NgModule({\n imports: [\n ...PROCESS_COMMENTS_DIRECTIVES,\n ...PROCESS_LIST_DIRECTIVES,\n ...TASK_LIST_DIRECTIVES,\n ...TASK_COMMENTS_DIRECTIVES,\n ...APPS_LIST_DIRECTIVES,\n ...ATTACHMENT_DIRECTIVES,\n ...PEOPLE_DIRECTIVES,\n ...FORM_DIRECTIVES\n ],\n providers: [\n provideTranslations('adf-process-services', 'assets/adf-process-services'),\n { provide: MAT_FORM_FIELD_DEFAULT_OPTIONS, useValue: { floatLabel: 'never' } }\n ],\n exports: [\n ...PROCESS_COMMENTS_DIRECTIVES,\n ...PROCESS_LIST_DIRECTIVES,\n ...TASK_LIST_DIRECTIVES,\n ...TASK_COMMENTS_DIRECTIVES,\n ...APPS_LIST_DIRECTIVES,\n ...ATTACHMENT_DIRECTIVES,\n ...PEOPLE_DIRECTIVES,\n ...FORM_DIRECTIVES\n ]\n})\nexport class ProcessModule {\n static forRoot(): ModuleWithProviders<ProcessModule> {\n return {\n ngModule: ProcessModule,\n providers: [\n provideTranslations('adf-process-services', 'assets/adf-process-services'),\n FormRenderingService,\n { provide: FormRenderingService, useClass: ProcessFormRenderingService }\n ]\n };\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AppDefinitionRepresentation,\n LightUserRepresentation,\n ProcessInstanceRepresentation,\n RestVariable,\n UserRepresentation,\n UserTaskFilterRepresentation\n} from '@alfresco/js-api';\n\n/** @deprecated use js-api/ProcessInstanceRepresentation instead */\nexport type ProcessInstance = ProcessInstanceRepresentation;\n\n/** @deprecated use js-api/UserTaskFilterRepresentation instead */\nexport type FilterRepresentationModel = UserTaskFilterRepresentation;\n\n/** @deprecated use js-api/UserTaskFilterRepresentation instead */\nexport type FilterParamsModel = UserTaskFilterRepresentation;\n\n/** @deprecated use js-api/UserRepresentation instead */\nexport type BpmUserModel = UserRepresentation;\n\n/** @deprecated use js-api/AppDefinitionRepresentation instead */\nexport type AppDefinitionRepresentationModel = AppDefinitionRepresentation;\n\n/** @deprecated use js-api/LightUserRepresentation instead */\nexport type UserProcessModel = LightUserRepresentation;\n\n/** @deprecated use js-api/RestVariable instead */\nexport type ProcessInstanceVariable = RestVariable;\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './lib/process-list/index';\nexport * from './lib/task-list/index';\nexport * from './lib/app-list/index';\nexport * from './lib/attachment/index';\nexport * from './lib/process-comments/index';\nexport * from './lib/people/index';\nexport * from './lib/form/index';\nexport * from './lib/task-comments/index';\nexport * from './lib/process.module';\nexport * from './lib/compat/types';\nexport * from './lib/services/apps-process.service';\nexport * from './lib/services/people-process.service';\nexport * from './lib/services/task-comments.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["PRESET_KEY","i1.ProcessService","i2","i1","i1.ProcessFilterService","i2.AppsProcessService","i3","i4","i5","i1.TaskListService","i1.ModelService","i2.ProcessContentService","i6","i2.PeopleProcessService","i7","i9","i1.PeopleProcessService","i2.TaskFormService","i3.ProcessDefinitionService","i8","i3.ActivitiContentService","i6.AttachFileWidgetDialogService","i2.ModelService","i3.TaskFormService","i1.TaskFilterService","i2.TaskListService","i3.AppsProcessService","MAX_LENGTH","i10","i11","i2.ActivitiContentService","i12","i13","i2.ProcessService","i1.AppsProcessService","i1.ProcessContentService","i1.ProcessCommentsComponent","i2.ProcessAuditDirective","i3.ProcessInstanceListComponent","i4.ProcessFiltersComponent","i5.ProcessInstanceDetailsComponent","i6.ProcessInstanceHeaderComponent","i7.ProcessInstanceTasksComponent","i8.StartProcessInstanceComponent","i9.TaskFormComponent","i10.AttachFormComponent","i11.ChecklistComponent","i12.TaskFiltersComponent","i13.TaskListComponent","i14.TaskDetailsComponent","i15.TaskHeaderComponent","i16.StartTaskComponent","i17.TaskStandaloneComponent","i18.ClaimTaskDirective","i19.UnclaimTaskDirective","i20.TaskCommentsComponent","i21.AppsListComponent","i22.SelectAppsDialogComponent","i23.TaskAttachmentListComponent","i24.ProcessAttachmentListComponent","i25.CreateProcessAttachmentComponent","i26.AttachmentComponent","i27.PeopleComponent","i28.PeopleSearchComponent","i29.PeopleSearchFieldComponent","i30.PeopleSelectorComponent","i31.PeopleListComponent","i32.FormListComponent","i33.FormCustomOutcomesComponent","i34.StartFormComponent","i35.FormComponent","i36.AttachFileWidgetComponent","i37.AttachFolderWidgetComponent","i38.AttachFileWidgetDialogComponent","i39.ContentWidgetComponent","i40.DocumentWidgetComponent","i41.DropdownWidgetComponent","i42.DynamicTableWidgetComponent","i43.DropdownEditorComponent","i44.AmountEditorComponent","i45.BooleanEditorComponent","i46.DateEditorComponent","i47.DateTimeEditorComponent","i48.RowEditorComponent","i49.TextEditorComponent","i50.FileViewerWidgetComponent","i51.FunctionalGroupWidgetComponent","i52.PeopleWidgetComponent","i53.RadioButtonsWidgetComponent","i54.TypeaheadWidgetComponent","i55.UploadWidgetComponent"],"mappings":"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"}
|