{"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/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/models/dynamic-row-validation-summary.model.ts","../../../../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/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/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/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/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    LazyApi\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 readonly alfrescoApiService = inject(AlfrescoApiService);\n\n    @LazyApi((self: ProcessService) => new TasksApi(self.alfrescoApiService.getInstance()))\n    declare readonly tasksApi: TasksApi;\n\n    @LazyApi((self: ProcessService) => new ProcessDefinitionsApi(self.alfrescoApiService.getInstance()))\n    declare readonly processDefinitionsApi: ProcessDefinitionsApi;\n\n    @LazyApi((self: ProcessService) => new ProcessInstancesApi(self.alfrescoApiService.getInstance()))\n    declare readonly processInstancesApi: ProcessInstancesApi;\n\n    @LazyApi((self: ProcessService) => new ProcessInstanceVariablesApi(self.alfrescoApiService.getInstance()))\n    declare readonly processInstanceVariablesApi: ProcessInstanceVariablesApi;\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     * @deprecated This api is no longer used and will be removed in future releases.\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     * @deprecated This api is no longer used and will be removed in future releases.\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    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, inject } 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    private readonly processService = inject(ProcessService);\n    private readonly userPreferences = inject(UserPreferencesService);\n\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() {\n        super(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        };\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                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, inject } from '@angular/core';\nimport { Observable, from, forkJoin } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport {\n    LazyApi,\n    ResultListDataRepresentationUserProcessInstanceFilterRepresentation,\n    UserFiltersApi,\n    UserProcessInstanceFilterRepresentation\n} from '@alfresco/js-api';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class ProcessFilterService {\n    private readonly alfrescoApiService = inject(AlfrescoApiService);\n\n    @LazyApi((self: ProcessFilterService) => new UserFiltersApi(self.alfrescoApiService.getInstance()))\n    declare readonly userFiltersApi: UserFiltersApi;\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, inject } from '@angular/core';\nimport { RuntimeAppDefinitionsApi, AppDefinitionRepresentation, LazyApi } 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 readonly apiService = inject(AlfrescoApiService);\n\n    @LazyApi((self: AppsProcessService) => new RuntimeAppDefinitionsApi(self.apiService.getInstance()))\n    declare readonly appsApi: RuntimeAppDefinitionsApi;\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 readonly supportedIconTypes = ['glyphicon', 'fa' /*Font awesome*/];\n\n    private readonly 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 { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n    selector: 'adf-process-instance-filters',\n    imports: [CommonModule, TranslatePipe, MatButtonModule, MatIconModule],\n    templateUrl: './process-filters.component.html',\n    styleUrls: ['./process-filters.component.scss'],\n    encapsulation: ViewEncapsulation.None\n})\nexport class ProcessFiltersComponent implements OnInit, OnChanges {\n    private readonly processFilterService = inject(ProcessFilterService);\n    private readonly appsProcessService = inject(AppsProcessService);\n    private readonly router = inject(Router);\n    private readonly location = inject(Location);\n\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    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    >\n        <mat-icon data-automation-id=\"adf-filter-icon\" *ngIf=\"showIcon\" aria-hidden=\"true\">{{ getFilterIcon(filter.icon) }}</mat-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, inject } 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    private readonly translationService = inject(TranslationService);\n    private readonly appConfig = inject(AppConfigService);\n\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() {\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    LazyApi\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    @LazyApi((self: TaskListService) => new ModelsApi(self.apiService.getInstance()))\n    declare readonly modelsApi: ModelsApi;\n\n    @LazyApi((self: TaskListService) => new TasksApi(self.apiService.getInstance()))\n    declare readonly tasksApi: TasksApi;\n\n    @LazyApi((self: TaskListService) => new TaskActionsApi(self.apiService.getInstance()))\n    declare readonly taskActionsApi: TaskActionsApi;\n\n    @LazyApi((self: TaskListService) => new ChecklistsApi(self.apiService.getInstance()))\n    declare readonly checklistsApi: ChecklistsApi;\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, inject } 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    private readonly taskListService = inject(TaskListService);\n\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    @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, inject } 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    private readonly taskListService = inject(TaskListService);\n\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    @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, inject } 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, LazyApi } from '@alfresco/js-api';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class PeopleProcessService {\n    private readonly apiService = inject(AlfrescoApiService);\n\n    @LazyApi((self: PeopleProcessService) => new TaskActionsApi(self.apiService.getInstance()))\n    declare readonly taskActionsApi: TaskActionsApi;\n\n    @LazyApi((self: PeopleProcessService) => new UsersApi(self.apiService.getInstance()))\n    declare readonly userApi: UsersApi;\n\n    @LazyApi((self: PeopleProcessService) => new ActivitiGroupsApi(self.apiService.getInstance()))\n    declare readonly groupsApi: ActivitiGroupsApi;\n\n    @LazyApi((self: PeopleProcessService) => new UserProfileApi(self.apiService.getInstance()))\n    declare readonly profileApi: UserProfileApi;\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\" (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, inject } from '@angular/core';\nimport { Observable, from, throwError } from 'rxjs';\nimport { LazyApi, ModelsApi } from '@alfresco/js-api';\nimport { catchError, map } from 'rxjs/operators';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class ModelService {\n    private readonly apiService = inject(AlfrescoApiService);\n\n    static UNKNOWN_ERROR_MESSAGE: string = 'Unknown error';\n    static GENERIC_ERROR_MESSAGE: string = 'Server error';\n\n    @LazyApi((self: ModelService) => new ModelsApi(self.apiService.getInstance()))\n    declare readonly modelsApi: ModelsApi;\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, inject } 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    protected modelService = inject(ModelService);\n\n    /** The array that contains the information to show inside the list. */\n    @Input()\n    forms: any[] = [];\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, inject } from '@angular/core';\nimport { Observable, from } from 'rxjs';\nimport { map, catchError } from 'rxjs/operators';\nimport { CustomModelApi, LazyApi } from '@alfresco/js-api';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class EcmModelService {\n    private readonly apiService = inject(AlfrescoApiService);\n\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    @LazyApi((self: EcmModelService) => new CustomModelApi(self.apiService.getInstance()))\n    declare readonly customModelApi: CustomModelApi;\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, inject } from '@angular/core';\nimport { Observable, from, throwError } from 'rxjs';\nimport { FormModelsApi, FormRepresentation, LazyApi } 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    private readonly apiService = inject(AlfrescoApiService);\n\n    static UNKNOWN_ERROR_MESSAGE: string = 'Unknown error';\n    static GENERIC_ERROR_MESSAGE: string = 'Server error';\n\n    @LazyApi((self: EditorService) => new FormModelsApi(self.apiService.getInstance()))\n    declare readonly editorApi: FormModelsApi;\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, inject } from '@angular/core';\nimport { Observable, from, throwError } from 'rxjs';\nimport { LazyApi, TaskRepresentation, TasksApi } from '@alfresco/js-api';\nimport { catchError, map } from 'rxjs/operators';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class TaskService {\n    private readonly apiService = inject(AlfrescoApiService);\n\n    static UNKNOWN_ERROR_MESSAGE: string = 'Unknown error';\n    static GENERIC_ERROR_MESSAGE: string = 'Server error';\n\n    @LazyApi((self: TaskService) => new TasksApi(self.apiService.getInstance()))\n    declare readonly taskApi: TasksApi;\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, inject } from '@angular/core';\nimport { from, Observable, throwError } from 'rxjs';\nimport { CompleteFormRepresentation, LazyApi, 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    private readonly apiService = inject(AlfrescoApiService);\n\n    static UNKNOWN_ERROR_MESSAGE: string = 'Unknown error';\n    static GENERIC_ERROR_MESSAGE: string = 'Server error';\n\n    @LazyApi((self: TaskFormService) => new TaskFormsApi(self.apiService.getInstance()))\n    declare readonly taskFormsApi: TaskFormsApi;\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 readonly 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                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, inject } from '@angular/core';\nimport {\n    ActivitiContentApi,\n    RelatedContentRepresentation,\n    ResultListDataRepresentationRelatedProcessTask,\n    ResultListDataRepresentationRelatedContentRepresentation,\n    LazyApi\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    private readonly apiService = inject(AlfrescoApiService);\n\n    static UNKNOWN_ERROR_MESSAGE: string = 'Unknown error';\n    static GENERIC_ERROR_MESSAGE: string = 'Server error';\n\n    @LazyApi((self: ProcessContentService) => new ActivitiContentApi(self.apiService.getInstance()))\n    declare readonly contentApi: ActivitiContentApi;\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, 'preview').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, ContentLinkModel, WidgetComponent, ErrorWidgetComponent } from '@alfresco/adf-core';\nimport { Component, ElementRef, inject, 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    protected thumbnailService = inject(ThumbnailService);\n    protected processContentService = inject(ProcessContentService);\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 (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, inject } 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    protected formService = inject(FormService);\n    private readonly downloadService = inject(DownloadService);\n    private readonly urlService = inject(UrlService);\n    private readonly processContentService = inject(ProcessContentService);\n\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    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 { 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    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 { InitialUsernamePipe, WidgetComponent } from '@alfresco/adf-core';\nimport { Component, ElementRef, EventEmitter, inject, OnInit, Output, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule, UntypedFormControl, FormGroupDirective, NgForm } from '@angular/forms';\nimport { ErrorStateMatcher } from '@angular/material/core';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatIconModule } from '@angular/material/icon';\nimport { Observable, of } from 'rxjs';\nimport { catchError, debounceTime, 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        FormsModule,\n        ReactiveFormsModule,\n        MatAutocompleteModule,\n        InitialUsernamePipe\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        debounceTime(300),\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    public peopleProcessService = inject(PeopleProcessService);\n    errorStateMatcher: ErrorStateMatcher;\n\n    ngOnInit() {\n        this.initErrorStateMatcher();\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    private initErrorStateMatcher(): void {\n        this.errorStateMatcher = {\n            isErrorState: (_control: UntypedFormControl | null, _form: FormGroupDirective | NgForm | null): boolean =>\n                !!this.field.validationSummary?.message || (this.isInvalidFieldRequired() && this.isTouched())\n        };\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            [ngModel]=\"selectedUsers\" [errorStateMatcher]=\"errorStateMatcher\">\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        @if (field.validationSummary?.message || (isInvalidFieldRequired() && isTouched())) {\n            <mat-error>\n                <mat-icon class=\"adf-error-icon\">error_outline</mat-icon>\n                <span class=\"adf-error-text\"\n                    >@if (field.validationSummary?.message) {{{ field.validationSummary.message | translate }}} @else {{{ 'FORM.FIELD.REQUIRED' | translate }}}</span>\n            </mat-error>\n        }\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, ElementRef, inject, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { 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        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    public peopleProcessService = inject(PeopleProcessService);\n    public elementRef = inject(ElementRef);\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        @if (field.validationSummary?.message || (isInvalidFieldRequired() && isTouched())) {\n            <mat-error>\n                <mat-icon class=\"adf-error-icon\">error_outline</mat-icon>\n                <span class=\"adf-error-text\"\n                    >@if (field.validationSummary?.message) {{{ field.validationSummary.message | translate }}} @else {{{ 'FORM.FIELD.REQUIRED' | translate }}}</span>\n            </mat-error>\n        }\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\nimport { AlfrescoApiService } from '@alfresco/adf-content-services';\nimport { FormFieldOption } from '@alfresco/adf-core';\nimport { Injectable, inject } from '@angular/core';\nimport { Observable, from, throwError } from 'rxjs';\nimport { LazyApi, 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    private readonly apiService = inject(AlfrescoApiService);\n\n    static UNKNOWN_ERROR_MESSAGE: string = 'Unknown error';\n    static GENERIC_ERROR_MESSAGE: string = 'Server error';\n\n    @LazyApi((self: ProcessDefinitionService) => new ProcessDefinitionsApi(self.apiService.getInstance()))\n    declare readonly processDefinitionsApi: ProcessDefinitionsApi;\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, WidgetComponent } from '@alfresco/adf-core';\nimport { Component, inject, 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    private readonly taskFormService = inject(TaskFormService);\n    private readonly processDefinitionService = inject(ProcessDefinitionService);\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                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 { FormService, FormFieldOption, WidgetComponent, ErrorMessageModel, FormFieldModel, ReactiveFormWidget } 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 { MatIconModule } from '@angular/material/icon';\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, MatIconModule],\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        if (this.field?.form?.showAllValidationErrors) {\n            this.dropdownControl.markAsTouched();\n        }\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 class=\"adf-form-field-input\">\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        @if (!isReadOnlyField && dropdownControl.touched && (field.validationSummary?.message || dropdownControl.hasError('required'))) {\n            <mat-error data-automation-id=\"adf-dropdown-error\">\n                <mat-icon class=\"adf-error-icon\">error_outline</mat-icon>\n                <span class=\"adf-error-text\"\n                    >@if (field.validationSummary?.message) {{{ field.validationSummary.message | translate }}} @else {{{ 'FORM.FIELD.REQUIRED' | translate }}}</span>\n            </mat-error>\n        }\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 { FormFieldOption, WidgetComponent } from '@alfresco/adf-core';\nimport { ENTER, ESCAPE } from '@angular/cdk/keycodes';\nimport { Component, inject, OnInit, ViewEncapsulation } from '@angular/core';\nimport { FormsModule, FormGroupDirective, NgForm, UntypedFormControl } from '@angular/forms';\nimport { ErrorStateMatcher } from '@angular/material/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 { MatIconModule } from '@angular/material/icon';\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, MatInputModule, MatIconModule],\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    errorStateMatcher: ErrorStateMatcher;\n\n    private readonly taskFormService = inject(TaskFormService);\n    private readonly processDefinitionService = inject(ProcessDefinitionService);\n\n    ngOnInit() {\n        this.initErrorStateMatcher();\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    private initErrorStateMatcher(): void {\n        this.errorStateMatcher = {\n            isErrorState: (_control: UntypedFormControl | null, _form: FormGroupDirective | NgForm | null): boolean =>\n                !!this.field.validationSummary?.message || this.isInvalidFieldRequired()\n        };\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 class=\"adf-form-field-input\">\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                   [errorStateMatcher]=\"errorStateMatcher\"\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            @if (field.validationSummary?.message || isInvalidFieldRequired()) {\n                <mat-error>\n                    <mat-icon class=\"adf-error-icon\">error_outline</mat-icon>\n                    <span class=\"adf-error-text\"\n                        >@if (field.validationSummary?.message) {{{ field.validationSummary.message | translate }}} @else {{{ 'FORM.FIELD.REQUIRED' | translate }}}</span>\n                </mat-error>\n            }\n        </mat-form-field>\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 } 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    encapsulation: ViewEncapsulation.None\n})\nexport class FileViewerWidgetComponent extends BaseViewerWidgetComponent {}\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\n/* eslint-disable @angular-eslint/component-selector */\n\nimport { FormService, FormFieldModel } from '@alfresco/adf-core';\nimport { Component, Input, OnInit, inject } 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    formService = inject(FormService);\n    private readonly taskFormService = inject(TaskFormService);\n    private readonly processDefinitionService = inject(ProcessDefinitionService);\n\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    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        [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, inject } 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    private readonly dateAdapter = inject<DateAdapter<Date>>(DateAdapter);\n\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    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 { 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\nimport { ADF_DATETIME_FORMATS, ADF_DATE_FORMATS, AdfDateFnsAdapter, AdfDateTimeFnsAdapter, DateFnsUtils } from '@alfresco/adf-core';\nimport { Component, Input, OnInit, inject } 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    private readonly dateAdapter = inject<DateAdapter<Date>>(DateAdapter);\n\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    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\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 readonly 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\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 readonly 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 readonly 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(\n        field: FormFieldModel,\n        private readonly formService: FormService\n    ) {\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 { WidgetVisibilityService, WidgetComponent, ErrorWidgetComponent } from '@alfresco/adf-core';\nimport { ChangeDetectorRef, Component, ElementRef, inject, 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 readonly selectArrayCode = [32, 0, 13];\n\n    public elementRef = inject(ElementRef);\n    private readonly visibilityService = inject(WidgetVisibilityService);\n    private readonly cd = inject(ChangeDetectorRef);\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, 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    private readonly translation = inject(TranslationService);\n    data = inject<AttachFileWidgetDialogComponentData>(MAT_DIALOG_DATA);\n    private readonly externalApiService = inject(AlfrescoApiService);\n    private readonly authenticationService = inject(AuthenticationService);\n    private readonly matDialogRef = inject<MatDialogRef<AttachFileWidgetDialogComponent>>(MatDialogRef);\n\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        const data = this.data;\n        const externalApiService = this.externalApiService;\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, inject } 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    private readonly dialog = inject(MatDialog);\n    private readonly translation = inject(TranslationService);\n\n    /** Emitted when an error occurs. */\n    @Output()\n    error = new EventEmitter<any>();\n\n    private externalApis: { [key: string]: AlfrescoApiService } = {};\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, inject } from '@angular/core';\nimport {\n    IntegrationAlfrescoOnPremiseApi,\n    Node,\n    RelatedContentRepresentation,\n    ActivitiContentApi,\n    AlfrescoEndpointRepresentation,\n    AlfrescoContentRepresentation,\n    LazyApi\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    private readonly apiService = inject(AlfrescoApiService);\n    private readonly sitesService = inject(SitesService);\n\n    static UNKNOWN_ERROR_MESSAGE: string = 'Unknown error';\n    static GENERIC_ERROR_MESSAGE: string = 'Server error';\n\n    @LazyApi((self: ActivitiContentService) => new IntegrationAlfrescoOnPremiseApi(self.apiService.getInstance()))\n    declare readonly integrationAlfrescoOnPremiseApi: IntegrationAlfrescoOnPremiseApi;\n\n    @LazyApi((self: ActivitiContentService) => new ActivitiContentApi(self.apiService.getInstance()))\n    declare readonly contentApi: ActivitiContentApi;\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 } 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 { 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    encapsulation: ViewEncapsulation.None\n})\nexport class AttachFileWidgetComponent extends UploadWidgetComponent implements OnInit {\n    private readonly activitiContentService = inject(ActivitiContentService);\n    private readonly contentService = inject(ContentService);\n    private readonly contentDialog = inject(ContentNodeDialogService);\n    private readonly appConfigService = inject(AppConfigService);\n    private readonly downloadService = inject(DownloadService);\n    private readonly router = inject(Router);\n    private readonly activatedRoute = inject(ActivatedRoute);\n    private readonly attachDialogService = inject(AttachFileWidgetDialogService);\n\n    typeId = 'AttachFileWidgetComponent';\n    repositoryList: AlfrescoEndpointRepresentation[] = [];\n    isStartProcessPage = false;\n\n    private tempFilesList = [];\n\n    private readonly destroyRef = inject(DestroyRef);\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) || file.sourceId) {\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            return;\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>\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 [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, inject } 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    private readonly contentDialog = inject(ContentNodeDialogService);\n    formService = inject(FormService);\n    private readonly nodeService = inject(NodesApiService);\n\n    typeId = 'AttachFolderWidgetComponent';\n    hasFolder: boolean = false;\n    selectedFolderName: string = '';\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                (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 readonly taskListService = inject(TaskListService);\n    private readonly peopleProcessService = inject(PeopleProcessService);\n    private readonly 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                        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, inject } 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    private readonly taskService = inject(TaskListService);\n    private readonly modelService = inject(ModelService);\n    private readonly taskFormService = inject(TaskFormService);\n\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    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\" *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\" (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, inject } 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    private readonly taskListService = inject(TaskListService);\n    private readonly dialog = inject(MatDialog);\n\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    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\" 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 { LazyApi, 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    @LazyApi((self: TaskFilterService) => new UserFiltersApi(self.apiService.getInstance()))\n    declare readonly userFiltersApi: UserFiltersApi;\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 { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { forkJoin, Observable } from 'rxjs';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n    selector: 'adf-task-filters',\n    imports: [CommonModule, TranslatePipe, MatButtonModule, MatIconModule],\n    templateUrl: './task-filters.component.html',\n    styleUrls: ['./task-filters.component.scss'],\n    encapsulation: ViewEncapsulation.None\n})\nexport class TaskFiltersComponent implements OnInit, OnChanges {\n    private readonly taskFilterService = inject(TaskFilterService);\n    private readonly taskListService = inject(TaskListService);\n    private readonly appsProcessService = inject(AppsProcessService);\n    private readonly router = inject(Router);\n    private readonly activatedRoute = inject(ActivatedRoute);\n\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    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    >\n        <ng-container *ngIf=\"showIcon\">\n            <mat-icon data-automation-id=\"adf-filter-icon\" aria-hidden=\"true\">{{ getFilterIcon(filter.icon) }}</mat-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    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    private readonly taskListService = inject(TaskListService);\n    private readonly userPreferences = inject(UserPreferencesService);\n\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() {\n        super(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\" 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, inject } 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    peopleProcessService = inject(PeopleProcessService);\n    private readonly translationService = inject(TranslationService);\n\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() {\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, inject } 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    peopleProcessService = inject(PeopleProcessService);\n\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() {\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, inject } 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    private readonly peopleProcessService = inject(PeopleProcessService);\n    private readonly translationService = inject(TranslationService);\n\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() {\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    private readonly peopleProcessService = inject(PeopleProcessService);\n    private readonly translationService = inject(TranslationService);\n    private readonly appConfig = inject(AppConfigService);\n    private readonly cardViewUpdateService = inject(CardViewUpdateService);\n\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        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, LazyApi } 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    @LazyApi((self: TaskCommentsService) => new ActivitiCommentsApi(self.apiService.getInstance()))\n    declare readonly commentsApi: ActivitiCommentsApi;\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    inject\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    private readonly taskListService = inject(TaskListService);\n    private readonly peopleProcessService = inject(PeopleProcessService);\n    private readonly cardViewUpdateService = inject(CardViewUpdateService);\n    private readonly dialog = inject(MatDialog);\n    private readonly destroyRef = inject(DestroyRef);\n\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    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, ErrorStateMatcher, 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    private readonly taskService = inject(TaskListService);\n    private readonly formBuilder = inject(UntypedFormBuilder);\n\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    dateErrorStateMatcher: ErrorStateMatcher = {\n        isErrorState: () => this.dateError\n    };\n\n    private readonly destroyRef = inject(DestroyRef);\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                        @if (nameController.invalid) {\n                            <mat-error>\n                                <span class=\"adf-error-text\"\n                                    >@if (nameController.hasError('required') || nameController.hasError('whitespace')) {{{ 'ADF_TASK_LIST.START_TASK.FORM.ERROR.REQUIRED' | translate }}} @else if (nameController.hasError('maxlength')) {{{ 'ADF_TASK_LIST.START_TASK.FORM.ERROR.MAXIMUM_LENGTH' | translate : { characters : maxTaskNameLength } }}}</span>\n                            </mat-error>\n                        }\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                    @if (descriptionController.hasError('whitespace')) {\n                        <mat-error>\n                            <span class=\"adf-error-text\">{{ 'ADF_TASK_LIST.START_TASK.FORM.ERROR.MESSAGE' | translate }}</span>\n                        </mat-error>\n                    }\n                </mat-form-field>\n            </div>\n            <div class=\"adf-input-row\">\n                <mat-form-field class=\"adf-form-field-input\">\n                    <input\n                        matInput\n                        (keyup)=\"onDateChanged($any($event).srcElement.value)\"\n                        (dateInput)=\"onDateChanged($any($event).value)\"\n                        [matDatepicker]=\"taskDatePicker\"\n                        [errorStateMatcher]=\"dateErrorStateMatcher\"\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                    @if (dateError) {\n                        <mat-error>\n                            <mat-icon class=\"adf-error-icon\">warning</mat-icon>\n                            <span class=\"adf-error-text\">{{'ADF_TASK_LIST.START_TASK.FORM.ERROR.DATE'|translate}}</span>\n                        </mat-error>\n                    }\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                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, LazyApi, RelatedContentRepresentation } from '@alfresco/js-api';\nimport { Injectable } from '@angular/core';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class ProcessUploadService extends UploadService {\n    @LazyApi((self: ProcessUploadService) => new ActivitiContentApi(self.apiService.getInstance()))\n    declare readonly contentApi: ActivitiContentApi;\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, LazyApi, RelatedContentRepresentation } from '@alfresco/js-api';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class TaskUploadService extends UploadService {\n    @LazyApi((self: TaskUploadService) => new ActivitiContentApi(self.apiService.getInstance()))\n    declare readonly contentApi: ActivitiContentApi;\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 readonly _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    private readonly processService = inject(ProcessService);\n    private readonly dialog = inject(MatDialog);\n\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() {\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\" 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\" 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, inject } from '@angular/core';\nimport { Observable, from } from 'rxjs';\nimport { CommentModel, CommentsService, User } from '@alfresco/adf-core';\nimport { map } from 'rxjs/operators';\nimport { ActivitiCommentsApi, LazyApi } 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 readonly apiService = inject(AlfrescoApiService);\n    private readonly peopleProcessService = inject(PeopleProcessService);\n\n    @LazyApi((self: CommentProcessService) => new ActivitiCommentsApi(self.apiService.getInstance()))\n    declare readonly commentsApi: ActivitiCommentsApi;\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';\n\n@Component({\n    selector: 'adf-process-instance-comments',\n    imports: [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, inject } 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    private readonly processService = inject(ProcessService);\n\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    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, of } 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    private readonly processService = inject(ProcessService);\n    private readonly contentService = inject(ActivitiContentService);\n    private readonly appsProcessService = inject(AppsProcessService);\n    private readonly appConfig = inject(AppConfigService);\n    private readonly datePipe = inject(LocalizedDatePipe);\n\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    populatedFormData: FormValues;\n\n    private readonly destroyRef = inject(DestroyRef);\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.populateFormData();\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    populateFormData(): 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.map((content: Node) =>\n                    content.isFile ? this.contentService.applyAlfrescoNode(content, null, accountIdentifier) : of(content)\n                );\n                forkJoin(contents).subscribe((res: RelatedContentRepresentation[]) => {\n                    this.populatedFormData = { ...(this.populatedFormData || {}), [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\" class=\"adf-start-process-app-list\">\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\">\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\">\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]=\"populatedFormData\"\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                    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\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';\n\nexport * from './components/process-filters/process-filters.component';\nexport * from './components/process-instance-details/process-instance-details.component';\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\nexport * from './services/process.service';\nexport * from './services/process-filter.service';\n\n/* @deprecated use individual exports */\nexport const PROCESS_LIST_DIRECTIVES = [\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, inject } 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    private readonly appsProcessService = inject(AppsProcessService);\n\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\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, ViewEncapsulation, inject } 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    private readonly appsProcessService = inject(AppsProcessService);\n    dialogRef = inject<MatDialogRef<SelectAppsDialogComponent>>(MatDialogRef);\n    data = inject(MAT_DIALOG_DATA);\n\n    processApps: any;\n\n    selectedProcess: any;\n\n    constructor() {\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    inject\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    private readonly activitiContentService = inject(ProcessContentService);\n    private readonly downloadService = inject(DownloadService);\n    private readonly thumbnailService = inject(ThumbnailService);\n    private readonly ngZone = inject(NgZone);\n\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    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\" [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    inject\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    private readonly processContentService = inject(ProcessContentService);\n    private readonly downloadService = inject(DownloadService);\n    private readonly thumbnailService = inject(ThumbnailService);\n    private readonly ngZone = inject(NgZone);\n\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    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\" [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 readonly 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    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 readonly 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    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';\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: [provideTranslations('adf-process-services', 'assets/adf-process-services')],\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":["__decorate","PRESET_KEY","i2","i3","i4","i5","i6","i7","i1","MAX_LENGTH","i10","i8","i9","i1.ProcessCommentsComponent","i2.ProcessInstanceListComponent","i3.ProcessFiltersComponent","i4.ProcessInstanceDetailsComponent","i5.ProcessInstanceHeaderComponent","i6.ProcessInstanceTasksComponent","i7.StartProcessInstanceComponent","i8.TaskFormComponent","i9.AttachFormComponent","i10.ChecklistComponent","i11.TaskFiltersComponent","i12.TaskListComponent","i13.TaskDetailsComponent","i14.TaskHeaderComponent","i15.StartTaskComponent","i16.TaskStandaloneComponent","i17.ClaimTaskDirective","i18.UnclaimTaskDirective","i19.TaskCommentsComponent","i20.AppsListComponent","i21.SelectAppsDialogComponent","i22.TaskAttachmentListComponent","i23.ProcessAttachmentListComponent","i24.CreateProcessAttachmentComponent","i25.AttachmentComponent","i26.PeopleComponent","i27.PeopleSearchComponent","i28.PeopleSearchFieldComponent","i29.PeopleSelectorComponent","i30.PeopleListComponent","i31.FormListComponent","i32.FormCustomOutcomesComponent","i33.StartFormComponent","i34.FormComponent","i35.AttachFileWidgetComponent","i36.AttachFolderWidgetComponent","i37.AttachFileWidgetDialogComponent","i38.ContentWidgetComponent","i39.DocumentWidgetComponent","i40.DropdownWidgetComponent","i41.DynamicTableWidgetComponent","i42.DropdownEditorComponent","i43.AmountEditorComponent","i44.BooleanEditorComponent","i45.DateEditorComponent","i46.DateTimeEditorComponent","i47.RowEditorComponent","i48.TextEditorComponent","i49.FileViewerWidgetComponent","i50.FunctionalGroupWidgetComponent","i51.PeopleWidgetComponent","i52.RadioButtonsWidgetComponent","i53.TypeaheadWidgetComponent","i54.UploadWidgetComponent"],"mappings":"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"}