{"version":3,"file":"adf-process-services-cloud.mjs","sources":["../../../../lib/process-services-cloud/src/lib/app/models/application-instance.model.ts","../../../../lib/process-services-cloud/src/lib/app/components/app-details-cloud/app-details-cloud.component.ts","../../../../lib/process-services-cloud/src/lib/app/components/app-details-cloud/app-details-cloud.component.html","../../../../lib/process-services-cloud/src/lib/app/services/apps-process-cloud.service.ts","../../../../lib/process-services-cloud/src/lib/app/components/app-list-cloud/app-list-cloud.component.ts","../../../../lib/process-services-cloud/src/lib/app/components/app-list-cloud/app-list-cloud.component.html","../../../../lib/process-services-cloud/src/lib/app/app-list-cloud.module.ts","../../../../lib/process-services-cloud/src/lib/models/task-list-sorting.model.ts","../../../../lib/process-services-cloud/src/lib/models/filter-cloud-model.ts","../../../../lib/process-services-cloud/src/lib/task/models/task-details-cloud.model.ts","../../../../lib/process-services-cloud/src/lib/services/base-cloud.service.ts","../../../../lib/process-services-cloud/src/lib/task/models/start-task-cloud-request.model.ts","../../../../lib/process-services-cloud/src/lib/models/process-definition-cloud.model.ts","../../../../lib/process-services-cloud/src/lib/task/models/task.model.ts","../../../../lib/process-services-cloud/src/lib/people/services/identity-user.service.ts","../../../../lib/process-services-cloud/src/lib/task/services/task-cloud.service.ts","../../../../lib/process-services-cloud/src/lib/task/task-list/components/base-task-list-cloud.component.ts","../../../../lib/process-services-cloud/src/lib/services/cloud-token.service.ts","../../../../lib/process-services-cloud/src/lib/services/variable-mapper.sevice.ts","../../../../lib/process-services-cloud/src/lib/models/data-column-custom-data.ts","../../../../lib/process-services-cloud/src/lib/task/task-list/components/task-list/datatable/task-list-datatable-adapter.ts","../../../../lib/process-services-cloud/src/lib/task/task-list/components/task-list/task-list-cloud.component.ts","../../../../lib/process-services-cloud/src/lib/task/task-list/components/task-list/task-list-cloud.component.html","../../../../lib/process-services-cloud/src/lib/task/task-list/services/service-task-list-cloud.service.ts","../../../../lib/process-services-cloud/src/lib/services/form-fields.interfaces.ts","../../../../lib/process-services-cloud/src/lib/services/local-preference-cloud.service.ts","../../../../lib/process-services-cloud/src/lib/services/web-socket.service.ts","../../../../lib/process-services-cloud/src/lib/services/notification-cloud.service.ts","../../../../lib/process-services-cloud/src/lib/services/preference-cloud.interface.ts","../../../../lib/process-services-cloud/src/lib/services/task-list-cloud.service.interface.ts","../../../../lib/process-services-cloud/src/lib/services/user-preference-cloud.service.ts","../../../../lib/process-services-cloud/src/lib/services/public-api.ts","../../../../lib/process-services-cloud/src/lib/task/task-list/components/service-task-list/service-task-list-cloud.component.ts","../../../../lib/process-services-cloud/src/lib/task/task-list/components/service-task-list/service-task-list-cloud.component.html","../../../../lib/process-services-cloud/src/lib/task/task-list/task-list-cloud.module.ts","../../../../lib/process-services-cloud/src/lib/models/date-cloud-filter.model.ts","../../../../lib/process-services-cloud/src/lib/common/date-range-filter/date-range-filter.service.ts","../../../../lib/process-services-cloud/src/lib/task/task-filters/models/filter-cloud.model.ts","../../../../lib/process-services-cloud/src/lib/task/task-filters/services/task-filter-cloud.service.ts","../../../../lib/process-services-cloud/src/lib/task/task-filters/components/base-task-filters-cloud.component.ts","../../../../lib/process-services-cloud/src/lib/task/task-list/services/task-list-cloud.service.ts","../../../../lib/process-services-cloud/src/lib/task/task-filters/components/task-filters/task-filters-cloud.component.ts","../../../../lib/process-services-cloud/src/lib/task/task-filters/components/task-filters/task-filters-cloud.component.html","../../../../lib/process-services-cloud/src/lib/task/task-filters/services/service-task-filter-cloud.service.ts","../../../../lib/process-services-cloud/src/lib/task/task-filters/components/task-filter-dialog/task-filter-dialog-cloud.component.ts","../../../../lib/process-services-cloud/src/lib/task/task-filters/components/task-filter-dialog/task-filter-dialog-cloud.component.html","../../../../lib/process-services-cloud/src/lib/task/task-filters/components/edit-task-filters/base-edit-task-filter-cloud.component.ts","../../../../lib/process-services-cloud/src/lib/common/date-range-filter/date-range-filter.component.ts","../../../../lib/process-services-cloud/src/lib/common/date-range-filter/date-range-filter.component.html","../../../../lib/process-services-cloud/src/lib/people/components/people-cloud.component.ts","../../../../lib/process-services-cloud/src/lib/people/components/people-cloud.component.html","../../../../lib/process-services-cloud/src/lib/group/services/identity-group.service.ts","../../../../lib/process-services-cloud/src/lib/group/components/group-cloud.component.ts","../../../../lib/process-services-cloud/src/lib/group/components/group-cloud.component.html","../../../../lib/process-services-cloud/src/lib/task/task-filters/components/task-assignment-filter/task-assignment-filter.component.ts","../../../../lib/process-services-cloud/src/lib/task/task-filters/components/task-assignment-filter/task-assignment-filter.component.html","../../../../lib/process-services-cloud/src/lib/task/task-filters/components/edit-task-filters/edit-service-task-filter/edit-service-task-filter-cloud.component.ts","../../../../lib/process-services-cloud/src/lib/task/task-filters/components/edit-task-filters/edit-service-task-filter/edit-service-task-filter-cloud.component.html","../../../../lib/process-services-cloud/src/lib/task/task-filters/components/edit-task-filters/edit-task-filter/edit-task-filter-cloud.component.ts","../../../../lib/process-services-cloud/src/lib/task/task-filters/components/edit-task-filters/edit-task-filter/edit-task-filter-cloud.component.html","../../../../lib/process-services-cloud/src/lib/task/task-filters/components/service-task-filters/service-task-filters-cloud.component.ts","../../../../lib/process-services-cloud/src/lib/task/task-filters/components/service-task-filters/service-task-filters-cloud.component.html","../../../../lib/process-services-cloud/src/lib/task/task-filters/task-filters-cloud.module.ts","../../../../lib/process-services-cloud/src/lib/form/models/task-variable-cloud.model.ts","../../../../lib/process-services-cloud/src/lib/form/services/form-cloud.service.ts","../../../../lib/process-services-cloud/src/lib/form/components/spinner/form-spinner.component.ts","../../../../lib/process-services-cloud/src/lib/form/components/spinner/form-spinner.component.html","../../../../lib/process-services-cloud/src/lib/form/services/spinner/form-cloud-spinner.service.ts","../../../../lib/process-services-cloud/src/lib/form/services/display-mode.service.ts","../../../../lib/process-services-cloud/src/lib/form/components/form-cloud.component.ts","../../../../lib/process-services-cloud/src/lib/form/components/form-cloud.component.html","../../../../lib/process-services-cloud/src/lib/form/services/content-cloud-node-selector.service.ts","../../../../lib/process-services-cloud/src/lib/form/services/process-cloud-content.service.ts","../../../../lib/process-services-cloud/src/lib/form/models/form-cloud-representation.model.ts","../../../../lib/process-services-cloud/src/lib/form/components/widgets/upload/upload-cloud.widget.ts","../../../../lib/process-services-cloud/src/lib/form/components/widgets/upload/upload-cloud.widget.html","../../../../lib/process-services-cloud/src/lib/form/components/widgets/attach-file/file-properties-table/file-properties-table-cloud.component.ts","../../../../lib/process-services-cloud/src/lib/form/components/widgets/attach-file/file-properties-table/file-properties-table-cloud.component.html","../../../../lib/process-services-cloud/src/lib/form/components/widgets/attach-file/attach-file-cloud-widget.component.ts","../../../../lib/process-services-cloud/src/lib/form/components/widgets/attach-file/attach-file-cloud-widget.component.html","../../../../lib/process-services-cloud/src/lib/form/components/widgets/date/date-cloud.widget.ts","../../../../lib/process-services-cloud/src/lib/form/components/widgets/date/date-cloud.widget.html","../../../../lib/process-services-cloud/src/lib/form/services/form-utils.service.ts","../../../../lib/process-services-cloud/src/lib/form/components/widgets/dropdown/validators.ts","../../../../lib/process-services-cloud/src/lib/form/components/widgets/dropdown/dropdown-cloud.widget.ts","../../../../lib/process-services-cloud/src/lib/form/components/widgets/dropdown/dropdown-cloud.widget.html","../../../../lib/process-services-cloud/src/lib/task/task-form/components/user-task-cloud-buttons/unclaim-task/unclaim-task-cloud.directive.ts","../../../../lib/process-services-cloud/src/lib/task/task-form/components/user-task-cloud-buttons/claim-task/claim-task-cloud.directive.ts","../../../../lib/process-services-cloud/src/lib/task/task-form/components/user-task-cloud-buttons/user-task-cloud-buttons.component.ts","../../../../lib/process-services-cloud/src/lib/task/task-form/components/user-task-cloud-buttons/user-task-cloud-buttons.component.html","../../../../lib/process-services-cloud/src/lib/form/components/form-cloud-custom-outcomes.component.ts","../../../../lib/process-services-cloud/src/lib/task/task-form/components/task-form-cloud/task-form-cloud.component.ts","../../../../lib/process-services-cloud/src/lib/task/task-form/components/task-form-cloud/task-form-cloud.component.html","../../../../lib/process-services-cloud/src/lib/screen/services/provide-screen.ts","../../../../lib/process-services-cloud/src/lib/screen/services/screen-rendering.service.ts","../../../../lib/process-services-cloud/src/lib/screen/components/screen-cloud/screen-cloud.component.ts","../../../../lib/process-services-cloud/src/lib/screen/components/screen-cloud/screen-cloud.component.html","../../../../lib/process-services-cloud/src/lib/task/task-form/components/user-task-cloud/complete-task/complete-task.directive.ts","../../../../lib/process-services-cloud/src/lib/task/task-form/components/user-task-cloud/user-task-cloud.component.ts","../../../../lib/process-services-cloud/src/lib/task/task-form/components/user-task-cloud/user-task-cloud.component.html","../../../../lib/process-services-cloud/src/lib/task/task-form/task-form.module.ts","../../../../lib/process-services-cloud/src/lib/task/task-header/components/task-header-cloud.component.ts","../../../../lib/process-services-cloud/src/lib/task/task-header/components/task-header-cloud.component.html","../../../../lib/process-services-cloud/src/lib/task/task-cloud.module.ts","../../../../lib/process-services-cloud/src/lib/process/process-filters/models/process-filter-cloud.model.ts","../../../../lib/process-services-cloud/src/lib/process/process-filters/services/process-filter-cloud.service.ts","../../../../lib/process-services-cloud/src/lib/process/process-list/services/process-list-cloud.service.ts","../../../../lib/process-services-cloud/src/lib/process/process-list/models/process-list-sorting.model.ts","../../../../lib/process-services-cloud/src/lib/process/process-list/models/process-cloud-query-request.model.ts","../../../../lib/process-services-cloud/src/lib/process/process-filters/components/process-filters/process-filters-cloud.component.ts","../../../../lib/process-services-cloud/src/lib/process/process-filters/components/process-filters/process-filters-cloud.component.html","../../../../lib/process-services-cloud/src/lib/process/process-filters/components/process-filter-dialog/process-filter-dialog-cloud.component.ts","../../../../lib/process-services-cloud/src/lib/process/process-filters/components/process-filter-dialog/process-filter-dialog-cloud.component.html","../../../../lib/process-services-cloud/src/lib/process/services/process-cloud.service.ts","../../../../lib/process-services-cloud/src/lib/process/process-filters/components/edit-process-filter/edit-process-filter-cloud.component.ts","../../../../lib/process-services-cloud/src/lib/process/process-filters/components/edit-process-filter/edit-process-filter-cloud.component.html","../../../../lib/process-services-cloud/src/lib/process/process-filters/process-filters-cloud.module.ts","../../../../lib/process-services-cloud/src/lib/process/process-list/models/process-cloud-preset.model.ts","../../../../lib/process-services-cloud/src/lib/process/process-list/models/process-cloud-preferences.ts","../../../../lib/process-services-cloud/src/lib/process/process-list/datatable/process-list-datatable-adapter.ts","../../../../lib/process-services-cloud/src/lib/process/process-list/components/process-list-cloud.component.ts","../../../../lib/process-services-cloud/src/lib/process/process-list/components/process-list-cloud.component.html","../../../../lib/process-services-cloud/src/lib/process/process-list/process-list-cloud.module.ts","../../../../lib/process-services-cloud/src/lib/process/start-process/models/process-payload-cloud.model.ts","../../../../lib/process-services-cloud/src/lib/process/start-process/models/process-with-form-payload-cloud.model.ts","../../../../lib/process-services-cloud/src/lib/process/start-process/services/start-process-cloud.service.ts","../../../../lib/process-services-cloud/src/lib/process/start-process/components/start-process-cloud.component.ts","../../../../lib/process-services-cloud/src/lib/process/start-process/components/start-process-cloud.component.html","../../../../lib/process-services-cloud/src/lib/process/process-header/components/process-header-cloud.component.ts","../../../../lib/process-services-cloud/src/lib/process/process-header/components/process-header-cloud.component.html","../../../../lib/process-services-cloud/src/lib/process/process-cloud.module.ts","../../../../lib/process-services-cloud/src/lib/form/services/form-definition-selector-cloud.service.ts","../../../../lib/process-services-cloud/src/lib/form/components/form-definition-selector-cloud.component.ts","../../../../lib/process-services-cloud/src/lib/form/components/form-definition-selector-cloud.component.html","../../../../lib/process-services-cloud/src/lib/form/components/widgets/group/group-cloud.widget.ts","../../../../lib/process-services-cloud/src/lib/form/components/widgets/group/group-cloud.widget.html","../../../../lib/process-services-cloud/src/lib/form/components/widgets/people/people-cloud.widget.ts","../../../../lib/process-services-cloud/src/lib/form/components/widgets/people/people-cloud.widget.html","../../../../lib/process-services-cloud/src/lib/form/components/widgets/properties-viewer/properties-viewer-wrapper/properties-viewer-wrapper.component.ts","../../../../lib/process-services-cloud/src/lib/form/components/widgets/properties-viewer/properties-viewer-wrapper/properties-viewer-wrapper.component.html","../../../../lib/process-services-cloud/src/lib/form/components/widgets/properties-viewer/properties-viewer.widget.ts","../../../../lib/process-services-cloud/src/lib/form/components/widgets/properties-viewer/properties-viewer.widget.html","../../../../lib/process-services-cloud/src/lib/form/components/widgets/radio-buttons/radio-buttons-cloud.widget.ts","../../../../lib/process-services-cloud/src/lib/form/components/widgets/radio-buttons/radio-buttons-cloud.widget.html","../../../../lib/process-services-cloud/src/lib/form/components/widgets/file-viewer/file-viewer.widget.ts","../../../../lib/process-services-cloud/src/lib/form/components/widgets/file-viewer/file-viewer.widget.html","../../../../lib/process-services-cloud/src/lib/form/components/widgets/display-rich-text/display-rich-text.widget.ts","../../../../lib/process-services-cloud/src/lib/form/components/widgets/display-rich-text/display-rich-text.widget.html","../../../../lib/process-services-cloud/src/lib/form/form-cloud.module.ts","../../../../lib/process-services-cloud/src/lib/form/components/widgets/data-table/helpers/data-table-path-parser.helper.ts","../../../../lib/process-services-cloud/src/lib/form/components/widgets/data-table/data-table-adapter.widget.ts","../../../../lib/process-services-cloud/src/lib/form/components/widgets/data-table/data-table.widget.ts","../../../../lib/process-services-cloud/src/lib/form/components/widgets/data-table/data-table.widget.html","../../../../lib/process-services-cloud/src/lib/form/components/widgets/display-external-property/display-external-property.widget.ts","../../../../lib/process-services-cloud/src/lib/form/components/widgets/display-external-property/display-external-property.widget.html","../../../../lib/process-services-cloud/src/lib/form/components/cloud-form-rendering.service.ts","../../../../lib/process-services-cloud/src/lib/providers.ts","../../../../lib/process-services-cloud/src/lib/process-services-cloud.module.ts","../../../../lib/process-services-cloud/src/lib/app/public-api.ts","../../../../lib/process-services-cloud/src/lib/process/process-list/services/process-task-list-cloud.service.ts","../../../../lib/process-services-cloud/src/lib/process/process-list/public-api.ts","../../../../lib/process-services-cloud/src/lib/process/process-filters/public-api.ts","../../../../lib/process-services-cloud/src/lib/process/start-process/models/process-instance-cloud.model.ts","../../../../lib/process-services-cloud/src/lib/process/start-process/public-api.ts","../../../../lib/process-services-cloud/src/lib/process/process-header/process-header-cloud.module.ts","../../../../lib/process-services-cloud/src/lib/process/process-header/public-api.ts","../../../../lib/process-services-cloud/src/lib/process/public-api.ts","../../../../lib/process-services-cloud/src/lib/task/task-list/models/service-task-cloud.model.ts","../../../../lib/process-services-cloud/src/lib/task/task-list/public-api.ts","../../../../lib/process-services-cloud/src/lib/task/task-filters/public-api.ts","../../../../lib/process-services-cloud/src/lib/task/task-header/task-header-cloud.module.ts","../../../../lib/process-services-cloud/src/lib/task/task-header/public-api.ts","../../../../lib/process-services-cloud/src/lib/task/task-form/public-api.ts","../../../../lib/process-services-cloud/src/lib/task/public-api.ts","../../../../lib/process-services-cloud/src/lib/group/models/identity-group.model.ts","../../../../lib/process-services-cloud/src/lib/group/group-cloud.module.ts","../../../../lib/process-services-cloud/src/lib/group/public-api.ts","../../../../lib/process-services-cloud/src/lib/people/people-cloud.module.ts","../../../../lib/process-services-cloud/src/lib/people/models/identity-user.model.ts","../../../../lib/process-services-cloud/src/lib/people/public-api.ts","../../../../lib/process-services-cloud/src/lib/form/components/widgets/radio-buttons/radio-buttons-cloud.schema.ts","../../../../lib/process-services-cloud/src/lib/form/public-api.ts","../../../../lib/process-services-cloud/src/lib/screen/components/screen-cloud/screen-cloud.model.ts","../../../../lib/process-services-cloud/src/lib/screen/public-api.ts","../../../../lib/process-services-cloud/src/lib/types.ts","../../../../lib/process-services-cloud/src/lib/common/interface/environment.interface.ts","../../../../lib/process-services-cloud/src/lib/common/interface/public-api.ts","../../../../lib/process-services-cloud/src/lib/common/interface/index.ts","../../../../lib/process-services-cloud/src/lib/common/public-api.ts","../../../../lib/process-services-cloud/src/lib/common/index.ts","../../../../lib/process-services-cloud/src/lib/models/application-version.model.ts","../../../../lib/process-services-cloud/src/lib/models/engine-event-cloud.model.ts","../../../../lib/process-services-cloud/src/lib/models/task-cloud.model.ts","../../../../lib/process-services-cloud/src/lib/models/process-instance-variable.model.ts","../../../../lib/process-services-cloud/src/lib/models/variable-definition.ts","../../../../lib/process-services-cloud/src/lib/models/date-format-cloud.model.ts","../../../../lib/process-services-cloud/src/lib/models/process-variable-filter.model.ts","../../../../lib/process-services-cloud/src/public-api.ts","../../../../lib/process-services-cloud/src/adf-process-services-cloud.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\nexport const DEFAULT_APP_INSTANCE_THEME = 'theme-2';\nexport const DEFAULT_APP_INSTANCE_ICON = 'favorite_border';\n\nexport interface ApplicationInstanceModel {\n    name?: string;\n    displayName?: string;\n    canAccessAudit?: boolean;\n    createdAt?: any;\n    status?: string;\n    theme?: string;\n    icon?: string;\n    description?: string;\n    connectors?: any;\n    rollback?: boolean;\n    descriptor?: Descriptor;\n    environmentId?: string;\n    environment?: string;\n}\n\nexport interface Descriptor {\n    name?: string;\n    displayName?: string;\n    projectId?: string;\n    releaseId?: string;\n    releaseVersion?: number;\n    security?: DescriptorSecurity[];\n    infrastructure?: DescriptorInfrastructure;\n    variables?: DescriptorVariables;\n    version?: string;\n    runtimeBundleVersion?: string;\n    enableLocalDevelopment?: boolean;\n    customUIAuthFlowType?: DescriptorCustomUIAuthFlowType;\n}\n\nexport enum DescriptorCustomUIAuthFlowType {\n    CODE = 'CODE',\n    IMPLICIT = 'IMPLICIT'\n}\n\nexport interface DescriptorSecurity {\n    role: string;\n    groups: string[];\n    users: string[];\n}\n\nexport interface DescriptorVariables {\n    [key: string]: any;\n    connectors?: { [key: string]: any };\n}\n\nexport interface DescriptorInfrastructure {\n    [key: string]: 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 { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { ApplicationInstanceModel, DEFAULT_APP_INSTANCE_ICON, DEFAULT_APP_INSTANCE_THEME } from '../../models/application-instance.model';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatCardModule } from '@angular/material/card';\n\n@Component({\n    selector: 'adf-cloud-app-details',\n    imports: [CommonModule, TranslatePipe, MatIconModule, MatCardModule],\n    templateUrl: './app-details-cloud.component.html',\n    styleUrls: ['./app-details-cloud.component.scss'],\n    encapsulation: ViewEncapsulation.None\n})\nexport class AppDetailsCloudComponent {\n    @Input({ required: true })\n    applicationInstance: ApplicationInstanceModel;\n\n    @Output()\n    selectedApp = new EventEmitter<ApplicationInstanceModel>();\n\n    /**\n     * Pass the selected app as next\n     *\n     * @param app application model\n     */\n    onSelectApp(app: ApplicationInstanceModel): void {\n        this.selectedApp.emit(app);\n    }\n\n    /**\n     * Get application instance theme\n     *\n     * @returns the name of the theme\n     */\n    getTheme(): string {\n        return this.applicationInstance.theme || DEFAULT_APP_INSTANCE_THEME;\n    }\n\n    /**\n     * Get application instance icon\n     *\n     * @returns the name of the icon\n     */\n    getIcon(): string {\n        return this.applicationInstance.icon || DEFAULT_APP_INSTANCE_ICON;\n    }\n}\n","<div class=\"adf-app-listgrid\">\n    <div class=\"adf-app-listgrid-item\">\n        <mat-card\n            appearance=\"outlined\"\n            tabindex=\"0\"\n            role=\"button\"\n            class=\"adf-app-listgrid-item-card\"\n            title=\"{{applicationInstance.name}}\"\n            [ngClass]=\"getTheme()\"\n            (click)=\"onSelectApp(applicationInstance)\"\n            (keyup.enter)=\"onSelectApp(applicationInstance)\">\n            <div class=\"adf-app-listgrid-item-card-logo\">\n                <mat-icon class=\"adf-app-listgrid-item-card-logo-icon\">{{ getIcon() }}</mat-icon>\n            </div>\n            <div mat-card-title class=\"adf-app-listgrid-item-card-title\">\n                <h1 class=\"adf-app-listgrid-item-card-title-text\">{{applicationInstance.name}}</h1>\n            </div>\n            <mat-card-subtitle class=\"adf-app-listgrid-item-card-subtitle\">\n                <div class=\"adf-line-clamp\">{{applicationInstance.description}}</div>\n            </mat-card-subtitle>\n        </mat-card>\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 { Injectable } from '@angular/core';\nimport { Observable, from, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { AppConfigService } from '@alfresco/adf-core';\nimport { ApplicationInstanceModel } from '../models/application-instance.model';\nimport { Environment } from '../../common/interface/environment.interface';\nimport { AdfHttpClient } from '@alfresco/adf-core/api';\nimport { RequestOptions } from '@alfresco/js-api';\n\n@Injectable({ providedIn: 'root' })\nexport class AppsProcessCloudService {\n    deployedApps: ApplicationInstanceModel[];\n\n    constructor(\n        private readonly adfHttpClient: AdfHttpClient,\n        private readonly appConfigService: AppConfigService\n    ) {\n        this.loadApps();\n    }\n\n    /**\n     * Gets a list of deployed apps for this user by status.\n     *\n     * @param status Required status value\n     * @param roles to filter the apps\n     * @returns The list of deployed apps\n     */\n    getDeployedApplicationsByStatus(status: string, roles?: string | string[]): Observable<ApplicationInstanceModel[]> {\n        return this.hasDeployedApps() ? of(this.deployedApps) : this.getApplicationsByStatus(status, roles);\n    }\n\n    hasDeployedApps(): boolean {\n        return this.deployedApps && this.deployedApps.length > 0;\n    }\n\n    loadApps() {\n        const apps = this.appConfigService.get<{ theme: string; icon: string }[]>('alfresco-deployed-apps', []);\n        for (const app of apps) {\n            app.theme = app.theme ?? 'theme-1';\n            app.icon = app.icon ?? 'favorite';\n        }\n\n        this.deployedApps = apps;\n    }\n\n    getApplicationLabel(application: ApplicationInstanceModel, environmentList?: Environment[]): string {\n        const envName = environmentList?.find((env: Environment) => env.id === application.environmentId)?.name;\n\n        if (application.environmentId && environmentList && envName) {\n            return `${application.displayName} (${envName})`;\n        } else {\n            return application.displayName;\n        }\n    }\n\n    private getApplicationsByStatus(status: string, roles?: string | string[]): Observable<ApplicationInstanceModel[]> {\n        if (status === '') {\n            return of([]);\n        }\n        const path = this.getApplicationUrl();\n        const pathParams = {};\n        const queryParams = { status, roles, sort: 'name' };\n        const httpMethod = 'GET';\n        const headerParams = {};\n        const formParams = {};\n        const bodyParam = {};\n        const contentTypes = ['application/json'];\n        const accepts = ['application/json'];\n        const requestOptions: RequestOptions = {\n            path,\n            pathParams,\n            queryParams,\n            headerParams,\n            formParams,\n            bodyParam,\n            contentTypes,\n            accepts,\n            httpMethod\n        };\n\n        return from(this.adfHttpClient.request(path, requestOptions)).pipe(\n            map((applications) => applications.list.entries.map((application) => application.entry))\n        );\n    }\n\n    private getApplicationUrl(): string {\n        return `${this.appConfigService.get('bpmHost')}/deployment-service/v1/applications`;\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 { CustomEmptyContentTemplateDirective, EmptyContentComponent } from '@alfresco/adf-core';\nimport { AfterContentInit, Component, ContentChild, EventEmitter, Input, OnInit, Output, ViewEncapsulation } from '@angular/core';\nimport { Observable, of, Subject } from 'rxjs';\nimport { AppsProcessCloudService } from '../../services/apps-process-cloud.service';\nimport { ApplicationInstanceModel } from '../../models/application-instance.model';\nimport { catchError } from 'rxjs/operators';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { AppDetailsCloudComponent } from '../app-details-cloud/app-details-cloud.component';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatLineModule } from '@angular/material/core';\nimport { MatListModule } from '@angular/material/list';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\n\nexport const LAYOUT_LIST: string = 'LIST';\nexport const LAYOUT_GRID: string = 'GRID';\nexport const DEPLOYED_STATUS: string = 'DEPLOYED';\n\n@Component({\n    selector: 'adf-cloud-app-list',\n    imports: [\n        CommonModule,\n        TranslatePipe,\n        AppDetailsCloudComponent,\n        MatIconModule,\n        MatLineModule,\n        MatListModule,\n        EmptyContentComponent,\n        MatProgressSpinnerModule\n    ],\n    templateUrl: './app-list-cloud.component.html',\n    styleUrls: ['./app-list-cloud.component.scss'],\n    encapsulation: ViewEncapsulation.None\n})\nexport class AppListCloudComponent implements OnInit, AfterContentInit {\n    @ContentChild(CustomEmptyContentTemplateDirective)\n    emptyCustomContent: CustomEmptyContentTemplateDirective;\n\n    /**\n     * Defines the layout of the apps. There are two possible\n     * values, \"GRID\" and \"LIST\".\n     */\n    @Input()\n    layoutType: string = LAYOUT_GRID;\n\n    /** Emitted when an app entry is clicked. */\n    @Output()\n    appClick = new EventEmitter<ApplicationInstanceModel>();\n\n    apps$: Observable<any>;\n    loadingError$ = new Subject<boolean>();\n    hasEmptyCustomContentTemplate: boolean = false;\n\n    constructor(private appsProcessCloudService: AppsProcessCloudService) {}\n\n    ngOnInit() {\n        if (!this.isValidType()) {\n            this.setDefaultLayoutType();\n        }\n\n        this.apps$ = this.appsProcessCloudService.getDeployedApplicationsByStatus(DEPLOYED_STATUS).pipe(\n            catchError(() => {\n                this.loadingError$.next(true);\n                return of();\n            })\n        );\n    }\n\n    ngAfterContentInit() {\n        if (this.emptyCustomContent) {\n            this.hasEmptyCustomContentTemplate = true;\n        }\n    }\n\n    onSelectApp(app: ApplicationInstanceModel): void {\n        this.appClick.emit(app);\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        if (this.layoutType && (this.layoutType === LAYOUT_LIST || this.layoutType === LAYOUT_GRID)) {\n            return true;\n        }\n        return false;\n    }\n\n    /**\n     * Assign the default value to LayoutType\n     */\n    setDefaultLayoutType(): void {\n        this.layoutType = LAYOUT_GRID;\n    }\n\n    /**\n     * Check if the layout type is LIST\n     *\n     * @returns `true` if the layout is list, otherwise `false`\n     */\n    isList(): boolean {\n        return this.layoutType === LAYOUT_LIST;\n    }\n\n    /**\n     * Check if the layout type is GRID\n     *\n     * @returns `true` if layout is grid, otherwise `false`\n     */\n    isGrid(): boolean {\n        return this.layoutType === LAYOUT_GRID;\n    }\n}\n","<div class=\"menu-container\" *ngIf=\"apps$ | async as appsList; else loadingOrError\">\n    <ng-container *ngIf=\"appsList.length > 0; else noApps\">\n        <div\n            *ngIf=\"isGrid(); else appList\"\n            class=\"adf-app-apps-grid\">\n            <adf-cloud-app-details\n                *ngFor=\"let app of appsList\"\n                [applicationInstance]=\"app\"\n                (selectedApp)=\"onSelectApp($event)\" />\n        </div>\n\n        <ng-template #appList>\n            <mat-list class=\"adf-app-list\">\n                <mat-list-item class=\"adf-app-list-item\" (click)=\"onSelectApp(app)\" (keyup.enter)=\"onSelectApp(app)\"\n                    *ngFor=\"let app of appsList\" tabindex=\"0\" role=\"button\" title=\"{{app.name}}\">\n                    <mat-icon matListItemIcon>touch_app</mat-icon>\n                    <span class=\"adf-app-list-item-text\" matLine>{{app.name}}</span>\n                </mat-list-item>\n            </mat-list>\n        </ng-template>\n    </ng-container>\n</div>\n<ng-template #noApps>\n    <div class=\"adf-app-list-empty\">\n        <ng-content select=\"adf-custom-empty-content-template\" *ngIf=\"hasEmptyCustomContentTemplate; else defaultEmptyTemplate\"\n            class=\"adf-custom-empty-template\" />\n\n        <ng-template #defaultEmptyTemplate>\n            <adf-empty-content icon=\"apps\" [title]=\"'ADF_CLOUD_TASK_LIST.APPS.NO_APPS.TITLE' | translate\"\n                [subtitle]=\"'ADF_CLOUD_TASK_LIST.APPS.NO_APPS.SUBTITLE' | translate\" />\n        </ng-template>\n    </div>\n</ng-template>\n<ng-template #loadingOrError>\n    <div *ngIf=\"loadingError$ | async; else loading\" class=\"adf-app-list-error\">\n        <adf-empty-content icon=\"error_outline\" [title]=\"'ADF_CLOUD_TASK_LIST.APPS.ERROR.TITLE' | translate\"\n            [subtitle]=\"'ADF_CLOUD_TASK_LIST.APPS.ERROR.SUBTITLE' | translate\" />\n    </div>\n    <ng-template #loading>\n    <ng-container>\n        <div class=\"adf-app-list-spinner\">\n            <mat-spinner class=\"adf-app-list-cloud--spinner\" />\n        </div>\n    </ng-container>\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 { AppDetailsCloudComponent } from './components/app-details-cloud/app-details-cloud.component';\nimport { AppListCloudComponent } from './components/app-list-cloud/app-list-cloud.component';\n\nexport const APP_LIST_CLOUD_DIRECTIVES = [AppListCloudComponent, AppDetailsCloudComponent] 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 class TaskListCloudSortingModel {\n    orderBy: string;\n    direction: string;\n\n    constructor(obj: any) {\n        if (obj) {\n            this.orderBy = obj.orderBy;\n            this.direction = obj.direction;\n        }\n    }\n}\n\nexport class TaskListRequestSortingModel extends TaskListCloudSortingModel {\n    orderBy: string;\n    direction: string;\n\n    isFieldProcessVariable: boolean;\n    processVariableData?: {\n        processDefinitionKey: string;\n        type: string;\n    }\n\n    constructor(obj: TaskListRequestSortingModel) {\n        super(obj);\n        if (obj.isFieldProcessVariable) {\n            this.isFieldProcessVariable = true;\n            this.processVariableData = obj.processVariableData;\n            if (!this.processVariableData.processDefinitionKey || !this.processVariableData.type) {\n                throw new Error('missing required property when sorting by process variable');\n            }\n        } else {\n            this.isFieldProcessVariable = false;\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 { Pagination } from '@alfresco/js-api';\nimport { TaskListCloudSortingModel, TaskListRequestSortingModel } from './task-list-sorting.model';\nimport { TaskFilterCloudModel } from '../task/task-filters/models/filter-cloud.model';\nimport { ProcessVariableFilterModel } from './process-variable-filter.model';\n\nexport class TaskQueryCloudRequestModel {\n    appName: string;\n    appVersion?: string;\n    assignee?: string;\n    environmentId?: string;\n    claimedDate?: string;\n    createdDate?: Date;\n    createdFrom?: string;\n    createdTo?: string;\n    description?: string;\n    dueDate?: any;\n    lastModifiedFrom?: any;\n    lastModifiedTo?: any;\n    dueDateFrom?: any;\n    dueDateTo?: any;\n    id?: string;\n    name?: string;\n    owner?: string;\n    parentTaskId?: string;\n    standalone?: boolean;\n    priority?: number;\n    processDefinitionId?: string;\n    processDefinitionName?: string;\n    processInstanceId?: string;\n    status?: string;\n    completedBy?: string;\n    maxItems: number;\n    skipCount: number;\n    sorting?: TaskListCloudSortingModel[];\n    completedDate?: Date;\n    completedFrom?: string;\n    completedTo?: string;\n    candidateGroupId?: string;\n    variableKeys?: string[];\n\n    constructor(obj?: any) {\n        if (obj) {\n            this.appName = obj.appName;\n            this.appVersion = obj.appVersion;\n            this.assignee = obj.assignee;\n            this.environmentId = obj.environmentId;\n            this.claimedDate = obj.claimedDate;\n            this.createdDate = obj.createdDate;\n            this.createdFrom = obj.createdFrom;\n            this.createdTo = obj.createdTo;\n            this.description = obj.description;\n            this.dueDate = obj.dueDate;\n            this.lastModifiedFrom = obj.lastModifiedFrom;\n            this.lastModifiedTo = obj.lastModifiedTo;\n            this.dueDateFrom = obj.dueDateFrom;\n            this.dueDateTo = obj.dueDateTo;\n            this.id = obj.id;\n            this.name = obj.name;\n            this.owner = obj.owner;\n            this.parentTaskId = obj.parentTaskId;\n            this.standalone = obj.standalone;\n            this.priority = obj.priority;\n            this.processDefinitionId = obj.processDefinitionId;\n            this.processDefinitionName = obj.processDefinitionName;\n            this.processInstanceId = obj.processInstanceId;\n            this.status = obj.status;\n            this.completedBy = obj.completedBy;\n            this.maxItems = obj.maxItems;\n            this.skipCount = obj.skipCount;\n            this.sorting = obj.sorting;\n            this.completedFrom = obj.completedFrom;\n            this.completedTo = obj.completedTo;\n            this.completedDate = obj.completedDate;\n            this.candidateGroupId = obj.candidateGroupId;\n            this.variableKeys = obj.variableKeys;\n        }\n    }\n}\n\nexport class TaskListRequestModel {\n    appName: string;\n    pagination?: Pagination;\n    sorting?: TaskListRequestSortingModel;\n\n    onlyStandalone?: boolean;\n    onlyRoot?: boolean;\n    name?: string[];\n    description?: string[];\n    processDefinitionName?: string[];\n    id?: string[];\n    parentId?: string[];\n    processName?: string[];\n    priority?: string[];\n    status?: string[];\n    completedBy?: string[];\n    assignee?: string[];\n    processInstanceId?: string[];\n    createdFrom?: string;\n    createdTo?: string;\n    lastModifiedFrom?: string;\n    lastModifiedTo?: string;\n    lastClaimedFrom?: string;\n    lastClaimedTo?: string;\n    dueDateFrom?: string;\n    dueDateTo?: string;\n    completedFrom?: string;\n    completedTo?: string;\n    candidateUserId?: string[];\n    candidateGroupId?: string[];\n\n    processVariableKeys?: string[];\n    processVariableFilters?: ProcessVariableFilterModel[];\n\n    constructor(obj: Partial<TaskListRequestModel>) {\n        if (!obj.appName) {\n            throw new Error('appName not configured');\n        }\n\n        this.appName = obj.appName;\n        this.pagination = obj.pagination;\n        this.sorting = obj.sorting;\n\n        this.onlyStandalone = obj.onlyStandalone;\n        this.onlyRoot = obj.onlyRoot;\n        this.name = obj.name;\n        this.description = obj.description;\n        this.processDefinitionName = obj.processDefinitionName;\n        this.id = obj.id;\n        this.parentId = obj.parentId;\n        this.processName = obj.processName;\n        this.priority = obj.priority;\n        this.status = obj.status;\n        this.completedBy = obj.completedBy;\n        this.assignee = obj.assignee;\n        this.processInstanceId = obj.processInstanceId;\n        this.createdFrom = obj.createdFrom;\n        this.createdTo = obj.createdTo;\n        this.lastModifiedFrom = obj.lastModifiedFrom;\n        this.lastModifiedTo = obj.lastModifiedTo;\n        this.lastClaimedFrom = obj.lastClaimedFrom;\n        this.lastClaimedTo = obj.lastClaimedTo;\n        this.dueDateFrom = obj.dueDateFrom;\n        this.dueDateTo = obj.dueDateTo;\n        this.completedFrom = obj.completedFrom;\n        this.completedTo = obj.completedTo;\n        this.candidateUserId = obj.candidateUserId;\n        this.candidateGroupId = obj.candidateGroupId;\n        this.processVariableFilters = obj.processVariableFilters ?? [];\n        this.processVariableKeys = obj.processVariableKeys;\n    }\n}\n\nexport class TaskFilterCloudAdapter extends TaskListRequestModel {\n    constructor(filter: TaskFilterCloudModel) {\n        super({\n            appName: filter.appName,\n            pagination: { maxItems: 25, skipCount: 0 },\n            sorting: new TaskListRequestSortingModel({\n                orderBy: filter.sort,\n                direction: filter.order,\n                isFieldProcessVariable: false\n            }),\n\n            onlyStandalone: filter.standalone,\n            name: filter.taskNames,\n            processDefinitionName: filter.processDefinitionNames,\n            id: filter.taskIds,\n            parentId: filter.parentTaskIds,\n            processName: filter.processNames,\n            priority: filter.priorities?.map((priority) => priority.toString()),\n            status: filter.statuses,\n            completedBy: filter.completedByUsers,\n            assignee: filter.assignees,\n            processInstanceId: filter.processInstanceIds,\n            createdFrom: filter.createdFrom,\n            createdTo: filter.createdTo,\n            lastModifiedFrom: filter.lastModifiedFrom,\n            lastModifiedTo: filter.lastModifiedTo,\n            dueDateFrom: filter.dueDateFrom,\n            dueDateTo: filter.dueDateTo,\n            completedFrom: filter.completedFrom,\n            completedTo: filter.completedTo,\n            candidateGroupId: filter.candidateGroups?.map((group) => group.id),\n            processVariableFilters: filter.processVariableFilters\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\nexport interface TaskDetailsCloudModel {\n    id?: string;\n    name?: string;\n    appName?: string;\n    assignee?: string;\n    appVersion?: number;\n    createdDate?: Date;\n    claimedDate?: Date;\n    completedDate?: Date;\n    formKey?: any;\n    category?: any;\n    description?: string;\n    dueDate?: Date;\n    lastModified?: Date;\n    lastModifiedTo?: Date;\n    lastModifiedFrom?: Date;\n    owner?: any;\n    parentTaskId?: string;\n    permissions?: TaskPermissions[];\n    priority?: number;\n    processDefinitionId?: string;\n    processInstanceId?: string;\n    rootProcessInstanceId?: string;\n    status?: TaskStatus;\n    standalone?: boolean;\n    candidateUsers?: string[];\n    candidateGroups?: string[];\n    managerOfCandidateGroup?: boolean;\n    memberOfCandidateGroup?: boolean;\n    memberOfCandidateUsers?: boolean;\n    processDefinitionDeploymentId?: string;\n}\n\nexport interface StartTaskCloudResponseModel {\n    entry: TaskDetailsCloudModel;\n}\n\nexport type TaskStatus = 'COMPLETED' | 'CREATED' | 'ASSIGNED' | 'SUSPENDED' | 'CANCELLED';\n\nexport const TASK_COMPLETED_STATE: TaskStatus = 'COMPLETED';\nexport const TASK_CREATED_STATE: TaskStatus = 'CREATED';\nexport const TASK_ASSIGNED_STATE: TaskStatus = 'ASSIGNED';\nexport const TASK_SUSPENDED_STATE: TaskStatus = 'SUSPENDED';\nexport const TASK_CANCELLED_STATE: TaskStatus = 'CANCELLED';\n\nexport type TaskPermissions = 'VIEW' | 'CLAIM' | 'RELEASE' | 'UPDATE';\n\nexport const TASK_CLAIM_PERMISSION: TaskPermissions = 'CLAIM';\nexport const TASK_RELEASE_PERMISSION: TaskPermissions = 'RELEASE';\nexport const TASK_VIEW_PERMISSION: TaskPermissions = 'VIEW';\nexport const TASK_UPDATE_PERMISSION: TaskPermissions = 'UPDATE';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 { AppConfigService } from '@alfresco/adf-core';\nimport { Injectable, inject } from '@angular/core';\nimport { from, Observable } from 'rxjs';\nimport { AdfHttpClient } from '@alfresco/adf-core/api';\nimport { RequestOptions } from '@alfresco/js-api';\n\n@Injectable()\nexport class BaseCloudService {\n    protected apiService = inject(AlfrescoApiService);\n    protected appConfigService = inject(AppConfigService);\n\n    protected defaultParams: RequestOptions = {\n        path: '',\n        httpMethod: '',\n        contentTypes: ['application/json'],\n        accepts: ['application/json']\n    };\n\n    constructor(protected adfHttpClient: AdfHttpClient) {}\n\n    getBasePath(appName: string): string {\n        return appName ? `${this.contextRoot}/${appName}` : this.contextRoot;\n    }\n\n    protected post<T, R>(url: string, data?: T, queryParams?: any): Observable<R> {\n        return from(\n            this.callApi<R>(url, {\n                ...this.defaultParams,\n                path: url,\n                httpMethod: 'POST',\n                bodyParam: data,\n                queryParams\n            })\n        );\n    }\n\n    protected put<T, R>(url: string, data?: T): Observable<R> {\n        return from(\n            this.callApi<R>(url, {\n                ...this.defaultParams,\n                path: url,\n                httpMethod: 'PUT',\n                bodyParam: data\n            })\n        );\n    }\n\n    protected delete(url: string): Observable<void> {\n        return from(\n            this.callApi<void>(url, {\n                ...this.defaultParams,\n                path: url,\n                httpMethod: 'DELETE'\n            })\n        );\n    }\n\n    protected get<T>(url: string, queryParams?: any): Observable<T> {\n        return from(\n            this.callApi<T>(url, {\n                ...this.defaultParams,\n                path: url,\n                httpMethod: 'GET',\n                queryParams\n            })\n        );\n    }\n\n    protected callApi<T>(url: string, params: RequestOptions): Promise<T> {\n        return this.adfHttpClient.request(url, params);\n    }\n\n    protected get contextRoot() {\n        return this.appConfigService.get('bpmHost', '');\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\nexport class StartTaskCloudRequestModel {\n    name: string;\n    description: string;\n    assignee: string;\n    priority: string;\n    dueDate: Date;\n    candidateUsers: string[];\n    candidateGroups: string[];\n    payloadType: string;\n    formKey: string;\n\n    constructor(obj?: any) {\n        if (obj) {\n            this.name = obj.name || null;\n            this.description = obj.description || null;\n            this.assignee = obj.assignee || null;\n            this.priority = obj.priority || null;\n            this.dueDate = obj.dueDate || null;\n            this.candidateUsers = obj.candidateUsers || null;\n            this.candidateGroups = obj.candidateGroups || null;\n            this.formKey = obj.formKey || null;\n            this.payloadType = 'CreateTaskPayload';\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 { ConstantValues } from './constant-values.type';\nimport { ProcessVariableDefinition } from './variable-definition';\n\nexport class ProcessDefinitionCloud {\n    id: string;\n    appName: string;\n    key: string;\n    formKey?: string;\n    appVersion: number;\n    version: number;\n    name: string;\n    category: string;\n    description: string;\n    variableDefinitions?: ProcessVariableDefinition[];\n    constantValues?: ConstantValues;\n\n    constructor(obj?: any) {\n        this.id = obj?.id;\n        this.name = obj?.name;\n        this.appName = obj?.appName;\n        this.key = obj?.key;\n        this.formKey = obj?.formKey;\n        this.version = obj?.version || 0;\n        this.appVersion = obj?.appVersion || 0;\n        this.category = obj?.category || '';\n        this.description = obj?.description || '';\n        this.variableDefinitions = obj?.variableDefinitions ?? [];\n        this.constantValues = obj?.constantValues ?? {};\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\nexport interface TaskPriorityOption {\n    label: string;\n    key: string;\n    value: string;\n}\n\nexport const DEFAULT_TASK_PRIORITIES: TaskPriorityOption[] = [\n    { label: 'ADF_CLOUD_TASK_LIST.PROPERTIES.PRIORITY_VALUES.NONE', value: '0', key: '0' },\n    { label: 'ADF_CLOUD_TASK_LIST.PROPERTIES.PRIORITY_VALUES.LOW', value: '1', key: '1' },\n    { label: 'ADF_CLOUD_TASK_LIST.PROPERTIES.PRIORITY_VALUES.NORMAL', value: '2', key: '2' },\n    { label: 'ADF_CLOUD_TASK_LIST.PROPERTIES.PRIORITY_VALUES.HIGH', value: '3', key: '3' }\n];\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Injectable } from '@angular/core';\nimport { AppConfigService, JwtHelperService, OAuth2Service } from '@alfresco/adf-core';\nimport { EMPTY, Observable } from 'rxjs';\nimport { IdentityUserModel } from '../models/identity-user.model';\n\nconst IDENTITY_MICRO_SERVICE_INGRESS = 'identity-adapter-service';\n\nexport interface IdentityUserFilterInterface {\n    roles?: string[];\n    withinApplication?: string;\n    groups?: string[];\n}\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class IdentityUserService {\n    queryParams: { search: string; application?: string; roles?: string[]; groups?: string[] };\n\n    constructor(private jwtHelperService: JwtHelperService, private oAuth2Service: OAuth2Service, private appConfigService: AppConfigService) {}\n\n    /**\n     * Gets the name and other basic details of the current user.\n     *\n     * @returns The user's details\n     */\n    public getCurrentUserInfo(): IdentityUserModel {\n        const familyName = this.jwtHelperService.getValueFromLocalToken<string>(JwtHelperService.FAMILY_NAME);\n        const givenName = this.jwtHelperService.getValueFromLocalToken<string>(JwtHelperService.GIVEN_NAME);\n        const email = this.jwtHelperService.getValueFromLocalToken<string>(JwtHelperService.USER_EMAIL);\n        const username = this.jwtHelperService.getValueFromLocalToken<string>(JwtHelperService.USER_PREFERRED_USERNAME);\n        return { firstName: givenName, lastName: familyName, email, username };\n    }\n\n    /**\n     * Search users based on name input and filters.\n     *\n     * @param name Search query string\n     * @param [filters] Search query filters\n     * @returns List of users\n     */\n    public search(name: string, filters?: IdentityUserFilterInterface): Observable<IdentityUserModel[]> {\n        if (name.trim() === '') {\n            return EMPTY;\n        } else if (filters?.groups?.length > 0) {\n            return this.searchUsersWithGroups(name, filters);\n        } else if (filters?.withinApplication) {\n            return this.searchUsersWithinApp(name, filters.withinApplication, filters?.roles);\n        } else if (filters?.roles?.length > 0) {\n            return this.searchUsersWithGlobalRoles(name, filters.roles);\n        } else {\n            return this.searchUsersByName(name);\n        }\n    }\n\n    private searchUsersByName(name: string): Observable<IdentityUserModel[]> {\n        this.buildQueryParam(name);\n\n        return this.invokeIdentityUserApi();\n    }\n\n    private searchUsersWithGlobalRoles(name: string, roles: string[]): Observable<IdentityUserModel[]> {\n        this.buildQueryParam(name, { roles });\n\n        return this.invokeIdentityUserApi();\n    }\n\n    private searchUsersWithinApp(name: string, withinApplication: string, roles?: string[]): Observable<IdentityUserModel[]> {\n        this.buildQueryParam(name, { roles, withinApplication });\n\n        return this.invokeIdentityUserApi();\n    }\n\n    private searchUsersWithGroups(name: string, filters: IdentityUserFilterInterface): Observable<IdentityUserModel[]> {\n        this.buildQueryParam(name, filters);\n\n        return this.invokeIdentityUserApi();\n    }\n\n    private invokeIdentityUserApi(): Observable<any> {\n        const url = `${this.identityHost}/${IDENTITY_MICRO_SERVICE_INGRESS}/v1/users`;\n        return this.oAuth2Service.get({ url, queryParams: this.queryParams });\n    }\n\n    private buildQueryParam(name: string, filters?: IdentityUserFilterInterface) {\n        this.queryParams = { search: name };\n        this.addOptionalValueToQueryParam('application', filters?.withinApplication);\n        this.addOptionalCommaValueToQueryParam('role', filters?.roles);\n        this.addOptionalCommaValueToQueryParam('group', filters?.groups);\n    }\n\n    private addOptionalCommaValueToQueryParam(key: string, values: string[]) {\n        if (values?.length > 0) {\n            const valuesNotEmpty = this.filterOutEmptyValue(values);\n            if (valuesNotEmpty?.length > 0) {\n                this.queryParams[key] = valuesNotEmpty.join(',');\n            }\n        }\n    }\n\n    private addOptionalValueToQueryParam(key: string, value: string) {\n        if (value?.trim()) {\n            this.queryParams[key] = value;\n        }\n    }\n\n    private filterOutEmptyValue(values: string[]): string[] {\n        return values.filter((value) => value.trim());\n    }\n\n    private get identityHost(): string {\n        return `${this.appConfigService.get('bpmHost')}`;\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 { CardViewArrayItem, TranslationService } from '@alfresco/adf-core';\nimport { throwError, Observable, of, Subject } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport {\n    TaskDetailsCloudModel,\n    StartTaskCloudResponseModel,\n    TASK_ASSIGNED_STATE,\n    TASK_CLAIM_PERMISSION,\n    TASK_CREATED_STATE,\n    TASK_RELEASE_PERMISSION\n} from '../models/task-details-cloud.model';\nimport { BaseCloudService } from '../../services/base-cloud.service';\nimport { StartTaskCloudRequestModel } from '../models/start-task-cloud-request.model';\nimport { ProcessDefinitionCloud } from '../../models/process-definition-cloud.model';\nimport { DEFAULT_TASK_PRIORITIES, TaskPriorityOption } from '../models/task.model';\nimport { IdentityUserService } from '../../people/services/identity-user.service';\nimport { AdfHttpClient } from '@alfresco/adf-core/api';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class TaskCloudService extends BaseCloudService {\n    private translateService = inject(TranslationService);\n    private identityUserService = inject(IdentityUserService);\n\n    dataChangesDetected$ = new Subject();\n\n    constructor(adfHttpClient: AdfHttpClient) {\n        super(adfHttpClient);\n    }\n\n    /**\n     * Complete a task.\n     *\n     * @param appName Name of the app\n     * @param taskId ID of the task to complete\n     * @returns Details of the task that was completed\n     */\n    completeTask(appName: string, taskId: string): Observable<TaskDetailsCloudModel> {\n        if ((appName || appName === '') && taskId) {\n            const url = `${this.getBasePath(appName)}/rb/v1/tasks/${taskId}/complete`;\n            const payload = { payloadType: 'CompleteTaskPayload' };\n\n            return this.post<any, TaskDetailsCloudModel>(url, payload);\n        } else {\n            return throwError('AppName/TaskId not configured');\n        }\n    }\n\n    /**\n     * Validate if a task can be completed.\n     *\n     * @param taskDetails task details object\n     * @returns Boolean value if the task can be completed\n     */\n    canCompleteTask(taskDetails: TaskDetailsCloudModel): boolean {\n        return taskDetails && taskDetails.status === TASK_ASSIGNED_STATE && this.isAssignedToMe(taskDetails.assignee);\n    }\n\n    /**\n     * Validate if a task is editable.\n     *\n     * @param taskDetails task details object\n     * @returns Boolean value if the task is editable\n     */\n    isTaskEditable(taskDetails: TaskDetailsCloudModel): boolean {\n        return taskDetails && taskDetails.status === TASK_ASSIGNED_STATE && this.isAssignedToMe(taskDetails.assignee);\n    }\n\n    isAssigneePropertyClickable(\n        taskDetails: TaskDetailsCloudModel,\n        candidateUsers: CardViewArrayItem[],\n        candidateGroups: CardViewArrayItem[]\n    ): boolean {\n        let isClickable = false;\n        const states = [TASK_ASSIGNED_STATE];\n        if (candidateUsers?.length || candidateGroups?.length) {\n            isClickable = states.includes(taskDetails.status);\n        }\n        return isClickable;\n    }\n\n    /**\n     * Validate if a task can be claimed.\n     *\n     * @param taskDetails task details object\n     * @returns Boolean value if the task can be completed\n     */\n    canClaimTask(taskDetails: TaskDetailsCloudModel): boolean {\n        return taskDetails?.status === TASK_CREATED_STATE && taskDetails?.permissions.includes(TASK_CLAIM_PERMISSION) && !taskDetails?.standalone;\n    }\n\n    /**\n     * Validate if a task can be unclaimed.\n     *\n     * @param taskDetails task details object\n     * @returns Boolean value if the task can be completed\n     */\n    canUnclaimTask(taskDetails: TaskDetailsCloudModel): boolean {\n        const currentUser = this.identityUserService.getCurrentUserInfo().username;\n        return (\n            taskDetails?.status === TASK_ASSIGNED_STATE &&\n            taskDetails?.assignee === currentUser &&\n            taskDetails?.permissions.includes(TASK_RELEASE_PERMISSION) &&\n            !taskDetails?.standalone\n        );\n    }\n\n    /**\n     * Claims a task for an assignee.\n     *\n     * @param appName Name of the app\n     * @param taskId ID of the task to claim\n     * @param assignee User to assign the task to\n     * @returns Details of the claimed task\n     */\n    claimTask(appName: string, taskId: string, assignee: string): Observable<TaskDetailsCloudModel> {\n        if ((appName || appName === '') && taskId) {\n            const queryUrl = `${this.getBasePath(appName)}/rb/v1/tasks/${taskId}/claim?assignee=${assignee}`;\n\n            return this.post(queryUrl).pipe(\n                map((res: any) => {\n                    this.dataChangesDetected$.next(res);\n                    return res.entry;\n                })\n            );\n        } else {\n            return throwError('AppName/TaskId not configured');\n        }\n    }\n\n    /**\n     * Un-claims a task.\n     *\n     * @param appName Name of the app\n     * @param taskId ID of the task to unclaim\n     * @returns Details of the task that was unclaimed\n     */\n    unclaimTask(appName: string, taskId: string): Observable<TaskDetailsCloudModel> {\n        if ((appName || appName === '') && taskId) {\n            const queryUrl = `${this.getBasePath(appName)}/rb/v1/tasks/${taskId}/release`;\n\n            return this.post(queryUrl).pipe(\n                map((res: any) => {\n                    this.dataChangesDetected$.next(res);\n                    return res.entry;\n                })\n            );\n        } else {\n            return throwError('AppName/TaskId not configured');\n        }\n    }\n\n    /**\n     * Gets details of a task.\n     *\n     * @param appName Name of the app\n     * @param taskId ID of the task whose details you want\n     * @returns Task details\n     */\n    getTaskById(appName: string, taskId: string): Observable<TaskDetailsCloudModel> {\n        if ((appName || appName === '') && taskId) {\n            const queryUrl = `${this.getBasePath(appName)}/query/v1/tasks/${taskId}`;\n\n            return this.get(queryUrl).pipe(map((res: any) => res.entry));\n        } else {\n            return throwError('AppName/TaskId not configured');\n        }\n    }\n\n    /**\n     * Creates a new standalone task.\n     *\n     * @param startTaskRequest request model\n     * @param appName application name\n     * @returns Details of the newly created task\n     */\n    createNewTask(startTaskRequest: StartTaskCloudRequestModel, appName: string): Observable<TaskDetailsCloudModel> {\n        const queryUrl = `${this.getBasePath(appName)}/rb/v1/tasks`;\n        const payload = JSON.stringify(new StartTaskCloudRequestModel(startTaskRequest));\n\n        return this.post<any, StartTaskCloudResponseModel>(queryUrl, payload).pipe(map((response) => response.entry));\n    }\n\n    /**\n     * Updates the details (name, description, due date) for a task.\n     *\n     * @param appName Name of the app\n     * @param taskId ID of the task to update\n     * @param payload Data to update the task\n     * @returns Updated task details\n     */\n    updateTask(appName: string, taskId: string, payload: any): Observable<TaskDetailsCloudModel> {\n        if ((appName || appName === '') && taskId) {\n            payload.payloadType = 'UpdateTaskPayload';\n            const queryUrl = `${this.getBasePath(appName)}/rb/v1/tasks/${taskId}`;\n\n            return this.put(queryUrl, payload).pipe(map((res: any) => res.entry));\n        } else {\n            return throwError('AppName/TaskId not configured');\n        }\n    }\n\n    /**\n     * Gets candidate users of the task.\n     *\n     * @param appName Name of the app\n     * @param taskId ID of the task\n     * @returns Candidate users\n     */\n    getCandidateUsers(appName: string, taskId: string): Observable<string[]> {\n        if ((appName || appName === '') && taskId) {\n            const queryUrl = `${this.getBasePath(appName)}/query/v1/tasks/${taskId}/candidate-users`;\n            return this.get<string[]>(queryUrl);\n        } else {\n            return of([]);\n        }\n    }\n\n    /**\n     * Gets candidate groups of the task.\n     *\n     * @param appName Name of the app\n     * @param taskId ID of the task\n     * @returns Candidate groups\n     */\n    getCandidateGroups(appName: string, taskId: string): Observable<string[]> {\n        if ((appName || appName === '') && taskId) {\n            const queryUrl = `${this.getBasePath(appName)}/query/v1/tasks/${taskId}/candidate-groups`;\n            return this.get<string[]>(queryUrl);\n        } else {\n            return of([]);\n        }\n    }\n\n    /**\n     * Gets the process definitions associated with an app.\n     *\n     * @param appName Name of the target app\n     * @returns Array of process definitions\n     */\n    getProcessDefinitions(appName: string): Observable<ProcessDefinitionCloud[]> {\n        if (appName || appName === '') {\n            const url = `${this.getBasePath(appName)}/rb/v1/process-definitions`;\n\n            return this.get(url).pipe(map((res: any) => res.list.entries.map((processDefs) => new ProcessDefinitionCloud(processDefs.entry))));\n        } else {\n            return throwError('AppName not configured');\n        }\n    }\n\n    /**\n     * Updates the task assignee.\n     *\n     * @param appName Name of the app\n     * @param taskId ID of the task to update assignee\n     * @param assignee assignee to update current user task assignee\n     * @returns Updated task details with new assignee\n     */\n    assign(appName: string, taskId: string, assignee: string): Observable<TaskDetailsCloudModel> {\n        if (appName && taskId) {\n            const payLoad = { assignee, taskId, payloadType: 'AssignTaskPayload' };\n            const url = `${this.getBasePath(appName)}/rb/v1/tasks/${taskId}/assign`;\n\n            return this.post(url, payLoad).pipe(map((res: any) => res.entry));\n        } else {\n            return throwError('AppName/TaskId not configured');\n        }\n    }\n\n    getPriorityLabel(priority: number): string {\n        const priorityItem = this.priorities.find((item) => item.value === priority.toString()) || this.priorities[0];\n        return this.translateService.instant(priorityItem.label);\n    }\n\n    get priorities(): TaskPriorityOption[] {\n        return this.appConfigService.get('adf-cloud-priority-values') || DEFAULT_TASK_PRIORITIES;\n    }\n\n    protected isAssignedToMe(assignee: string): boolean {\n        const currentUser = this.identityUserService.getCurrentUserInfo().username;\n        return assignee === currentUser;\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    AfterContentInit,\n    ContentChild,\n    DestroyRef,\n    Directive,\n    EventEmitter,\n    inject,\n    Input,\n    OnChanges,\n    OnInit,\n    Output,\n    SimpleChanges\n} from '@angular/core';\nimport {\n    AppConfigService,\n    CustomEmptyContentTemplateDirective,\n    DataCellEvent,\n    DataColumn,\n    DataRow,\n    DataRowActionEvent,\n    DataRowEvent,\n    DataTableSchema,\n    ObjectDataTableAdapter,\n    PaginatedComponent,\n    PaginationModel,\n    UserPreferencesService,\n    UserPreferenceValues\n} from '@alfresco/adf-core';\nimport { TaskQueryCloudRequestModel } from '../../../models/filter-cloud-model';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { TaskListCloudSortingModel } from '../../../models/task-list-sorting.model';\nimport { map, take } from 'rxjs/operators';\nimport { TaskCloudService } from '../../services/task-cloud.service';\nimport { PreferenceCloudServiceInterface } from '../../../services/preference-cloud.interface';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n// eslint-disable-next-line no-shadow\nexport enum TasksListCloudPreferences {\n    columnOrder = 'tasks-list-cloud-columns-order',\n    columnsVisibility = 'tasks-list-cloud-columns-visibility',\n    columnsWidths = 'tasks-list-cloud-columns-widths'\n}\n\nconst taskPresetsCloudDefaultModel = {\n    default: [\n        {\n            id: 'name',\n            key: 'name',\n            type: 'text',\n            title: 'ADF_CLOUD_TASK_LIST.PROPERTIES.NAME',\n            sortable: true\n        },\n        {\n            id: 'created',\n            key: 'created',\n            type: 'text',\n            title: 'ADF_CLOUD_TASK_LIST.PROPERTIES.CREATED',\n            cssClass: 'hidden',\n            sortable: true\n        },\n        {\n            id: 'assignee',\n            key: 'assignee',\n            type: 'text',\n            title: 'ADF_CLOUD_TASK_LIST.PROPERTIES.ASSIGNEE',\n            cssClass: 'hidden',\n            sortable: true\n        }\n    ]\n};\n\n/* eslint-disable @typescript-eslint/brace-style */\n\n@Directive()\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport abstract class BaseTaskListCloudComponent<T = unknown>\n    extends DataTableSchema<T>\n    implements OnChanges, AfterContentInit, PaginatedComponent, OnInit\n{\n    @ContentChild(CustomEmptyContentTemplateDirective)\n    emptyCustomContent: CustomEmptyContentTemplateDirective;\n\n    /** The name of the application. */\n    @Input()\n    appName: string = '';\n\n    /**\n     * Row selection mode. Can be none, `single` or `multiple`. For `multiple` mode,\n     * you can use the 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, rendering a checkbox at the beginning of each row. */\n    @Input()\n    multiselect: boolean = false;\n\n    /** Toggles the sticky header mode. */\n    @Input()\n    stickyHeader: boolean = false;\n\n    /**\n     * Specifies how the table should be sorted. The parameters are for BE sorting.\n     */\n    @Input()\n    sorting: TaskListCloudSortingModel[];\n\n    /** Toggles the data actions column. */\n    @Input()\n    showActions: boolean = false;\n\n    /** Position of the actions dropdown menu. Can be \"left\" or \"right\". */\n    @Input()\n    actionsPosition: string = 'right'; // left|right\n\n    /** Toggles custom context menu for the component. */\n    @Input()\n    showContextMenu: boolean = false;\n\n    /** Toggles the provided actions. */\n    @Input()\n    showProvidedActions: boolean = false;\n\n    /** Toggles main datatable actions. */\n    @Input()\n    showMainDatatableActions: boolean = false;\n\n    /** Toggles main datatable column resizing feature. */\n    @Input()\n    isResizingEnabled: boolean = false;\n\n    /** Emitted before the context menu is displayed for a row. */\n    @Output()\n    showRowContextMenu = new EventEmitter<DataCellEvent>();\n\n    /** Emitted before the actions menu is displayed for a row. */\n    @Output()\n    showRowActionsMenu = new EventEmitter<DataCellEvent>();\n\n    /** Emitted when the user executes a row action. */\n    @Output()\n    executeRowAction = new EventEmitter<DataRowActionEvent>();\n\n    /** Emitted when a task in the list is clicked */\n    @Output()\n    rowClick: EventEmitter<string> = new EventEmitter<string>();\n\n    /** Emitted when rows are selected/unselected */\n    @Output()\n    rowsSelected: EventEmitter<unknown[]> = new EventEmitter<unknown[]>();\n\n    /** Emitted when the task list is loaded */\n    @Output()\n    success: EventEmitter<unknown> = new EventEmitter<unknown>();\n\n    /** Emitted when an error occurs. */\n    @Output()\n    error: EventEmitter<unknown> = new EventEmitter<unknown>();\n\n    pagination: BehaviorSubject<PaginationModel>;\n\n    requestNode: TaskQueryCloudRequestModel;\n    rows = [];\n    size: number;\n    skipCount: number = 0;\n    currentInstanceId: string;\n    selectedInstances: string[];\n    formattedSorting: string[];\n    dataAdapter: ObjectDataTableAdapter | undefined;\n\n    protected defaultSorting = { key: 'startDate', direction: 'desc' };\n    boundReplacePriorityValues: (row: DataRow, col: DataColumn) => unknown;\n\n    protected abstract isLoading$: Observable<boolean>;\n    protected isLoadingPreferences$ = new BehaviorSubject<boolean>(true);\n\n    protected readonly destroyRef = inject(DestroyRef);\n\n    constructor(\n        appConfigService: AppConfigService,\n        private taskCloudService: TaskCloudService,\n        private userPreferences: UserPreferencesService,\n        presetKey: string,\n        private cloudPreferenceService: PreferenceCloudServiceInterface\n    ) {\n        super(appConfigService, presetKey, taskPresetsCloudDefaultModel);\n        this.size = userPreferences.paginationSize;\n\n        this.pagination = new BehaviorSubject<PaginationModel>({\n            maxItems: this.size,\n            skipCount: 0,\n            totalItems: 0\n        });\n\n        this.boundReplacePriorityValues = this.replacePriorityValues.bind(this);\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    ngOnChanges(changes: SimpleChanges) {\n        if (changes['sorting']) {\n            this.formatSorting(changes['sorting'].currentValue);\n        }\n        if (changes['appName']) {\n            this.retrieveTasksPreferences();\n        }\n        this.reload();\n    }\n\n    private retrieveTasksPreferences(): void {\n        this.isLoadingPreferences$.next(true);\n        this.cloudPreferenceService\n            .getPreferences(this.appName)\n            .pipe(\n                take(1),\n                map((preferences) => {\n                    const preferencesList = preferences?.list?.entries ?? [];\n                    const columnsOrder = preferencesList.find((preference) => preference.entry.key === TasksListCloudPreferences.columnOrder);\n                    const columnsVisibility = preferencesList.find(\n                        (preference) => preference.entry.key === TasksListCloudPreferences.columnsVisibility\n                    );\n                    const columnsWidths = preferencesList.find((preference) => preference.entry.key === TasksListCloudPreferences.columnsWidths);\n\n                    return {\n                        columnsOrder: columnsOrder ? JSON.parse(columnsOrder.entry.value) : undefined,\n                        columnsVisibility: columnsVisibility ? JSON.parse(columnsVisibility.entry.value) : undefined,\n                        columnsWidths: columnsWidths ? JSON.parse(columnsWidths.entry.value) : undefined\n                    };\n                })\n            )\n            .subscribe(\n                ({ columnsOrder, columnsVisibility, columnsWidths }) => {\n                    if (columnsOrder) {\n                        this.columnsOrder = columnsOrder;\n                    }\n\n                    if (columnsVisibility) {\n                        this.columnsVisibility = columnsVisibility;\n                    }\n\n                    if (columnsWidths) {\n                        this.columnsWidths = columnsWidths;\n                    }\n\n                    this.createDatatableSchema();\n                    this.createColumns();\n                    this.isLoadingPreferences$.next(false);\n                },\n                (error) => {\n                    this.error.emit(error);\n                    this.isLoadingPreferences$.next(false);\n                }\n            );\n    }\n\n    ngAfterContentInit(): void {\n        this.retrieveTasksPreferences();\n    }\n\n    isListEmpty(): boolean {\n        return !this.rows || this.rows.length === 0;\n    }\n\n    /**\n     * Resets the pagination values\n     */\n    resetPagination() {\n        this.skipCount = 0;\n        this.size = this.userPreferences.paginationSize;\n        this.pagination.next({\n            skipCount: 0,\n            maxItems: this.size\n        });\n    }\n\n    /**\n     * Resets the pagination values and\n     * Reloads the task list\n     *\n     * @param pagination Pagination values to be set\n     */\n    updatePagination(pagination: PaginationModel) {\n        this.size = pagination.maxItems;\n        this.skipCount = pagination.skipCount;\n        this.pagination.next(pagination);\n        this.reload();\n    }\n\n    onSortingChanged(event: CustomEvent) {\n        this.setSorting(event.detail);\n        this.formatSorting(this.sorting);\n        this.reload();\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            this.currentInstanceId = event.detail.row.getValue('id');\n            this.rowClick.emit(this.currentInstanceId);\n        }\n    }\n\n    onShowRowActionsMenu(event: DataCellEvent) {\n        this.showRowActionsMenu.emit(event);\n    }\n\n    onShowRowContextMenu(event: DataCellEvent) {\n        this.showRowContextMenu.emit(event);\n    }\n\n    onExecuteRowAction(row: DataRowActionEvent) {\n        this.executeRowAction.emit(row);\n    }\n\n    onColumnOrderChanged(columnsWithNewOrder: DataColumn[]): void {\n        this.columnsOrder = columnsWithNewOrder.map((column) => column.id);\n        this.createColumns();\n\n        if (this.appName) {\n            this.cloudPreferenceService.updatePreference(this.appName, TasksListCloudPreferences.columnOrder, this.columnsOrder);\n        }\n    }\n\n    onColumnsVisibilityChange(columns: DataColumn[]): void {\n        this.columnsVisibility = columns.reduce((visibleColumnsMap, column) => {\n            if (column.isHidden !== undefined) {\n                visibleColumnsMap[column.id] = !column.isHidden;\n            }\n\n            return visibleColumnsMap;\n        }, {});\n\n        this.createColumns();\n        this.createDatatableSchema();\n\n        if (this.appName) {\n            this.cloudPreferenceService.updatePreference(this.appName, TasksListCloudPreferences.columnsVisibility, this.columnsVisibility);\n        }\n    }\n\n    onColumnsWidthChanged(columns: DataColumn[]): void {\n        const newColumnsWidths = columns.reduce((widthsColumnsMap, column) => {\n            if (column.width) {\n                widthsColumnsMap[column.id] = Math.ceil(column.width);\n            }\n            return widthsColumnsMap;\n        }, {});\n\n        this.columnsWidths = { ...this.columnsWidths, ...newColumnsWidths };\n\n        this.createColumns();\n\n        if (this.appName) {\n            this.cloudPreferenceService.updatePreference(this.appName, TasksListCloudPreferences.columnsWidths, this.columnsWidths);\n        }\n    }\n\n    setSorting(sortDetail) {\n        const sorting = sortDetail\n            ? {\n                  orderBy: sortDetail.sortingKey || sortDetail.key,\n                  direction: sortDetail.direction.toUpperCase()\n              }\n            : { ...this.defaultSorting };\n        this.sorting = [new TaskListCloudSortingModel(sorting)];\n    }\n\n    formatSorting(sorting: TaskListCloudSortingModel[]) {\n        this.formattedSorting = this.isValidSorting(sorting) ? [sorting[0].orderBy, sorting[0].direction.toLocaleLowerCase()] : null;\n    }\n\n    isValidSorting(sorting: TaskListCloudSortingModel[]) {\n        return sorting?.length && sorting[0].orderBy && sorting[0].direction;\n    }\n\n    replacePriorityValues(row: DataRow, column: DataColumn) {\n        return column.key.split('.').reduce((source, key) => {\n            if (key === 'priority' && source && typeof source[key] === 'number') {\n                return (source[key] = this.taskCloudService.getPriorityLabel(source[key]));\n            }\n            return source && typeof source === 'object' ? source[key] : undefined;\n        }, row.obj);\n    }\n\n    abstract reload();\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 { InjectionToken } from '@angular/core';\nimport { PreferenceCloudServiceInterface } from './preference-cloud.interface';\nimport { TaskListCloudServiceInterface } from './task-list-cloud.service.interface';\n\nexport const PROCESS_LISTS_PREFERENCES_SERVICE_TOKEN = new InjectionToken<PreferenceCloudServiceInterface>('proccesses-list-preferences-cloud');\n\nexport const TASK_LIST_PREFERENCES_SERVICE_TOKEN = new InjectionToken<PreferenceCloudServiceInterface>('tasks-list-preferences-cloud');\n\nexport const PROCESS_FILTERS_SERVICE_TOKEN = new InjectionToken<PreferenceCloudServiceInterface>('proccess-filters-cloud');\n\nexport const TASK_FILTERS_SERVICE_TOKEN = new InjectionToken<PreferenceCloudServiceInterface>('task-filters-cloud');\n\nexport const TASK_LIST_CLOUD_TOKEN = new InjectionToken<TaskListCloudServiceInterface>('task-list-cloud');\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 { DataColumn } from '@alfresco/adf-core';\nimport { ProcessListDataColumnCustomData } from '../models/data-column-custom-data';\nimport { ProcessInstanceVariable, WithVariablesMap } from '../models/process-instance-variable.model';\nimport { DataColumnType } from '@alfresco/adf-extensions';\n\n@Injectable({ providedIn: 'root' })\nexport class VariableMapperService {\n    mapVariablesByColumnTitle<T extends { variables?: ProcessInstanceVariable[] }>(\n        instancesList: T[] = [],\n        columnsSchema: DataColumn<ProcessListDataColumnCustomData>[] = []\n    ): Array<WithVariablesMap<T>> {\n        const columnsByVariables = this.mapColumnKeysByVariable(columnsSchema);\n\n        const rowsViewModel = instancesList.map<WithVariablesMap<T>>((instance) => {\n            if (!instance.variables?.length) {\n                return instance;\n            }\n\n            const variablesMap = (instance.variables ?? []).reduce<{ [columnTitle: string]: ProcessInstanceVariable }>(\n                (variableAccumulator, variable) => {\n                    const processVariableDefinitionPayload = `${variable.processDefinitionKey}/${variable.name}`;\n\n                    const column = columnsByVariables[processVariableDefinitionPayload];\n                    if (column) {\n                        variableAccumulator[column] = {\n                            ...variable,\n                            type: this.mapProcessVariableTypes(variable.type)\n                        };\n                    }\n\n                    return variableAccumulator;\n                },\n                {}\n            );\n\n            return {\n                ...instance,\n                variablesMap\n            };\n        });\n\n        return rowsViewModel;\n    }\n\n    private mapColumnKeysByVariable(columnsSchema: DataColumn<ProcessListDataColumnCustomData>[]): { [key: string]: string } {\n        const columnsByVariables = columnsSchema\n            .filter((column) => !!column.customData)\n            .reduce<{ [key: string]: string }>((columnsByVariable, column) => {\n                const variables = column.customData.variableDefinitionsPayload;\n\n                variables.forEach((key) => {\n                    columnsByVariable[key] = column.id;\n                });\n                return columnsByVariable;\n            }, {});\n\n        return columnsByVariables;\n    }\n\n    private mapProcessVariableTypes(variableType: string): DataColumnType {\n        switch (variableType) {\n            case 'boolean':\n                return 'boolean';\n            case 'integer':\n            case 'string':\n                return 'text';\n            case 'date':\n            case 'datetime':\n                return 'date';\n            default:\n                return 'text';\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\nexport const PROCESS_LIST_CUSTOM_VARIABLE_COLUMN = 'process-variable-column';\nexport interface ProcessListDataColumnCustomData {\n    assignedVariableDefinitionIds: string[];\n    variableDefinitionsPayload: string[];\n    columnType: string;\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 { DataColumn, DataRow, ObjectDataTableAdapter } from '@alfresco/adf-core';\nimport { ProcessListDataColumnCustomData, PROCESS_LIST_CUSTOM_VARIABLE_COLUMN } from '../../../../../models/data-column-custom-data';\nimport { TaskInstanceCloudListViewModel } from '../../../models/task-cloud-view.model';\n\nexport class TasksListDatatableAdapter extends ObjectDataTableAdapter {\n    constructor(data: TaskInstanceCloudListViewModel[], schema: DataColumn<ProcessListDataColumnCustomData>[]) {\n        super(data, schema, 'server');\n    }\n\n    getColumnType(row: DataRow, col: DataColumn<ProcessListDataColumnCustomData>): string {\n        if (col.customData?.columnType === PROCESS_LIST_CUSTOM_VARIABLE_COLUMN) {\n            const columnType = row.obj.variablesMap?.[col.id]?.type;\n            return columnType ?? 'text';\n        }\n\n        return super.getColumnType(row, col);\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, Inject, Input, ViewEncapsulation } from '@angular/core';\nimport {\n    AdfDateFnsAdapter,\n    AppConfigService,\n    ColumnsSelectorComponent,\n    DataTableComponent,\n    EmptyContentComponent,\n    LoadingContentTemplateDirective,\n    MainMenuDataTableTemplateDirective,\n    MOMENT_DATE_FORMATS,\n    NoContentTemplateDirective,\n    UserPreferencesService\n} from '@alfresco/adf-core';\nimport { TaskListRequestModel, TaskQueryCloudRequestModel } from '../../../../models/filter-cloud-model';\nimport { BaseTaskListCloudComponent } from '../base-task-list-cloud.component';\nimport { TaskCloudService } from '../../../services/task-cloud.service';\nimport { TASK_LIST_CLOUD_TOKEN, TASK_LIST_PREFERENCES_SERVICE_TOKEN } from '../../../../services/cloud-token.service';\nimport { PreferenceCloudServiceInterface } from '../../../../services/preference-cloud.interface';\nimport { TaskListCloudServiceInterface } from '../../../../services/task-list-cloud.service.interface';\nimport { BehaviorSubject, combineLatest, Subject } from 'rxjs';\nimport { filter, map, switchMap, take, tap } from 'rxjs/operators';\nimport { VariableMapperService } from '../../../../services/variable-mapper.sevice';\nimport { ProcessListDataColumnCustomData } from '../../../../models/data-column-custom-data';\nimport { TaskCloudModel } from '../../../../models/task-cloud.model';\nimport { PaginatedEntries } from '@alfresco/js-api';\nimport { TaskInstanceCloudListViewModel } from '../../models/task-cloud-view.model';\nimport { TasksListDatatableAdapter } from './datatable/task-list-datatable-adapter';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { TaskListRequestSortingModel } from '../../../../models/task-list-sorting.model';\nimport { ProcessVariableFilterModel } from '../../../../models/process-variable-filter.model';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { DateAdapter, MAT_DATE_FORMATS } from '@angular/material/core';\n\nconst PRESET_KEY = 'adf-cloud-task-list.presets';\n\n@Component({\n    selector: 'adf-cloud-task-list',\n    imports: [\n        CommonModule,\n        ColumnsSelectorComponent,\n        MainMenuDataTableTemplateDirective,\n        TranslatePipe,\n        EmptyContentComponent,\n        NoContentTemplateDirective,\n        MatProgressSpinnerModule,\n        LoadingContentTemplateDirective,\n        DataTableComponent\n    ],\n    providers: [\n        { provide: DateAdapter, useClass: AdfDateFnsAdapter },\n        { provide: MAT_DATE_FORMATS, useValue: MOMENT_DATE_FORMATS }\n    ],\n    templateUrl: './task-list-cloud.component.html',\n    styleUrls: ['./task-list-cloud.component.scss'],\n    encapsulation: ViewEncapsulation.None\n})\nexport class TaskListCloudComponent extends BaseTaskListCloudComponent<ProcessListDataColumnCustomData> {\n    /**\n     * The assignee of the process. Possible values are: \"assignee\" (the current user is the assignee),\n     * \"candidate\" (the current user is a task candidate\", \"group_x\" (the task is assigned to a group\n     * where the current user is a member, no value (the current user is involved).\n     */\n    @Input()\n    assignee: string = '';\n\n    /** Filter the tasks. Display only tasks created on the supplied date. */\n    @Input()\n    createdDate: Date;\n\n    /** Filter the tasks. Display only tasks with createdFrom equal to the supplied date. */\n    @Input()\n    createdFrom: string = '';\n\n    /** Filter the tasks. Display only tasks with createdTo equal to the supplied date. */\n    @Input()\n    createdTo: string = '';\n\n    /** Filter the tasks. Display only tasks with dueDate equal to the supplied date. */\n    @Input()\n    dueDate: Date;\n\n    /** Filter the tasks. Display only tasks with lastModifiedFrom equal to the supplied date. */\n    @Input()\n    lastModifiedFrom: string = '';\n\n    /** Filter the tasks. Display only tasks with lastModifiedTo equal to the supplied date. */\n    @Input()\n    lastModifiedTo: string = '';\n\n    /** Filter the tasks. Display only tasks with dueDate greater or equal than the supplied date. */\n    @Input()\n    dueDateFrom: string = '';\n\n    /** Filter the tasks. Display only tasks with dueDate less or equal to the supplied date. */\n    @Input()\n    dueDateTo: string = '';\n\n    /** Filter the tasks. Display only tasks with id equal to the supplied value. */\n    @Input()\n    id: string = '';\n\n    /** Filter the tasks. Display only tasks with the supplied name. */\n    @Input()\n    name: string = '';\n\n    /** Filter the tasks to display only the ones with this environment ID. */\n    @Input()\n    environmentId: string;\n\n    /** Filter the tasks. Display only tasks with parentTaskId equal to the supplied value. */\n    @Input()\n    parentTaskId: string = '';\n\n    /** Filter the tasks. Display only tasks with processDefinitionName equal to the supplied value. */\n    @Input()\n    processDefinitionName: string = '';\n\n    /** Filter the tasks. Display only tasks with processDefinitionId equal to the supplied value. */\n    @Input()\n    processDefinitionId: string = '';\n\n    /** Filter the tasks. Display only tasks with processInstanceId equal to the supplied value. */\n    @Input()\n    processInstanceId: string = '';\n\n    /** Filter the tasks. Display only tasks with status equal to the supplied value. */\n    @Input()\n    status: string = '';\n\n    /** Filter the tasks. Display only tasks with owner equal to the supplied value. */\n    @Input()\n    owner: string = '';\n\n    /** Filter the tasks. Display only tasks with priority equal to the supplied value. */\n    @Input()\n    priority: number;\n\n    /** Filter the tasks. Display only tasks with createdBy equal to the supplied value. */\n    @Input()\n    completedBy: number;\n\n    /** Filter the tasks. Display only the tasks that belong to a process in case is false or tasks that doesn't belong to a process in case of true. */\n    @Input()\n    standalone: boolean = false;\n\n    /** Filter the tasks. Display only tasks with completedDate equal to the supplied date. */\n    @Input()\n    completedDate: string = '';\n\n    /** Filter the tasks. Display only tasks with completedFrom equal to the supplied date. */\n    @Input()\n    completedFrom: string = '';\n\n    /** Filter the tasks. Display only tasks with completedTo equal to the supplied date. */\n    @Input()\n    completedTo: string = '';\n\n    /** Filter the tasks. Display only tasks with candidateGroups equal to the supplied value. */\n    @Input()\n    candidateGroupId: string = '';\n\n    /** From Activiti 8.7.0 forward, use the 'POST' value and array inputs to enable advanced filtering. */\n    @Input()\n    searchApiMethod: 'GET' | 'POST' = 'GET';\n\n    /**\n     * Filter the tasks. Display only tasks with names matching any of the supplied strings.\n     * This input will be used only if searchApiMethod input is provided with 'POST' value.\n     */\n    @Input()\n    names: string[] = [];\n\n    /**\n     * Filter the tasks. Display only tasks with assignees whose usernames are present in the array.\n     * This input will be used only if searchApiMethod input is provided with 'POST' value.\n     */\n    @Input()\n    assignees: string[] = [];\n\n    /**\n     * Filter the tasks. Display only tasks with provided statuses.\n     * This input will be used only if searchApiMethod input is provided with 'POST' value.\n     */\n    @Input()\n    statuses: string[] = [];\n\n    /**\n     * Filter the tasks. Display only tasks under processes with provided definition names.\n     * This input will be used only if searchApiMethod input is provided with 'POST' value.\n     */\n    @Input()\n    processDefinitionNames: string[] = [];\n\n    /**\n     * Filter the tasks. Display only tasks with Ids matching any of the supplied strings.\n     * This input will be used only if searchApiMethod input is provided with 'POST' value.\n     */\n    @Input()\n    ids: string[] = [];\n\n    /**\n     * Filter the tasks. Display only tasks with parentTaskIds matching any of the supplied strings.\n     * This input will be used only if searchApiMethod input is provided with 'POST' value.\n     */\n    @Input()\n    parentIds: string[] = [];\n\n    /**\n     * Filter the tasks. Display only tasks with processInstanceIds matching any of the supplied strings.\n     * This input will be used only if searchApiMethod input is provided with 'POST' value.\n     */\n    @Input()\n    processInstanceIds: string[] = [];\n\n    /**\n     * Filter the tasks. Display only tasks under processes with provided names.\n     * This input will be used only if searchApiMethod input is provided with 'POST' value.\n     */\n    @Input()\n    processNames: string[] = [];\n\n    /**\n     * Filter the tasks. Display only tasks with provided priorities.\n     * This input will be used only if searchApiMethod input is provided with 'POST' value.\n     */\n    @Input()\n    priorities: string[] = [];\n\n    /**\n     * Filter the tasks. Display only tasks completed by users whose usernames are present in the array.\n     * This input will be used only if searchApiMethod input is provided with 'POST' value.\n     */\n    @Input()\n    completedByUsers: string[] = [];\n\n    /**\n     * Filter the processes. Display only processes with specific process variables.\n     * This input will be used only if searchApiMethod input is provided with 'POST' value.\n     */\n    @Input()\n    processVariableFilters: ProcessVariableFilterModel[];\n\n    rows: TaskInstanceCloudListViewModel[] = [];\n    dataAdapter: TasksListDatatableAdapter | undefined;\n\n    private isReloadingSubject$ = new BehaviorSubject<boolean>(false);\n    isLoading$ = combineLatest([this.isLoadingPreferences$, this.isReloadingSubject$]).pipe(\n        map(([isLoadingPreferences, isReloading]) => isLoadingPreferences || isReloading)\n    );\n\n    private fetchProcessesTrigger$ = new Subject<void>();\n\n    constructor(\n        @Inject(TASK_LIST_CLOUD_TOKEN) public taskListCloudService: TaskListCloudServiceInterface,\n        appConfigService: AppConfigService,\n        taskCloudService: TaskCloudService,\n        userPreferences: UserPreferencesService,\n        @Inject(TASK_LIST_PREFERENCES_SERVICE_TOKEN) cloudPreferenceService: PreferenceCloudServiceInterface,\n        private viewModelCreator: VariableMapperService\n    ) {\n        super(appConfigService, taskCloudService, userPreferences, PRESET_KEY, cloudPreferenceService);\n\n        combineLatest([this.isLoadingPreferences$, this.isColumnSchemaCreated$, this.fetchProcessesTrigger$])\n            .pipe(\n                tap(() => this.isReloadingSubject$.next(true)),\n                filter(([isLoadingPreferences, isColumnSchemaCreated]) => !isLoadingPreferences && !!isColumnSchemaCreated),\n                switchMap(() => {\n                    if (this.searchApiMethod === 'POST') {\n                        const requestNode = this.createTaskListRequestNode();\n                        return this.taskListCloudService.fetchTaskList(requestNode).pipe(take(1));\n                    } else {\n                        const requestNode = this.createRequestNode();\n                        this.requestNode = requestNode;\n                        return this.taskListCloudService.getTaskByRequest(requestNode);\n                    }\n                }),\n                takeUntilDestroyed()\n            )\n            .subscribe({\n                next: (tasks: { list: PaginatedEntries<TaskCloudModel> }) => {\n                    const tasksWithVariables = tasks.list.entries.map((task) => ({\n                        ...task,\n                        variables: task.processVariables\n                    }));\n\n                    this.rows = this.viewModelCreator.mapVariablesByColumnTitle(tasksWithVariables, this.columns);\n\n                    this.dataAdapter = new TasksListDatatableAdapter(this.rows, this.columns);\n\n                    this.success.emit(tasks);\n                    this.isReloadingSubject$.next(false);\n                    this.pagination.next(tasks.list.pagination);\n                },\n                error: (error) => {\n                    console.error(error);\n                    this.error.emit(error);\n                    this.isReloadingSubject$.next(false);\n                }\n            });\n    }\n\n    reload() {\n        this.isReloadingSubject$.next(true);\n        this.fetchProcessesTrigger$.next();\n    }\n\n    private createTaskListRequestNode(): TaskListRequestModel {\n        const requestNode: TaskListRequestModel = {\n            appName: this.appName,\n            pagination: {\n                maxItems: this.size,\n                skipCount: this.skipCount\n            },\n            sorting: this.getTaskListRequestSorting(),\n            onlyStandalone: this.standalone,\n            name: this.names,\n            processDefinitionName: this.processDefinitionNames,\n            id: this.ids,\n            parentId: this.parentIds,\n            processName: this.processNames,\n            processInstanceId: this.processInstanceIds,\n            priority: this.priorities,\n            status: this.statuses,\n            completedBy: this.completedByUsers,\n            assignee: this.assignees,\n            createdFrom: this.createdFrom,\n            createdTo: this.createdTo,\n            lastModifiedFrom: this.lastModifiedFrom,\n            lastModifiedTo: this.lastModifiedTo,\n            dueDateFrom: this.dueDateFrom,\n            dueDateTo: this.dueDateTo,\n            completedFrom: this.completedFrom,\n            completedTo: this.completedTo,\n            processVariableKeys: this.getRequestNodeVariables(),\n            processVariableFilters: this.processVariableFilters ?? []\n        };\n\n        return new TaskListRequestModel(requestNode);\n    }\n\n    private createRequestNode(): TaskQueryCloudRequestModel {\n        const requestNode = {\n            appName: this.appName,\n            assignee: this.assignee,\n            id: this.id,\n            name: this.name,\n            environmentId: this.environmentId,\n            parentTaskId: this.parentTaskId,\n            processDefinitionName: this.processDefinitionName,\n            processDefinitionId: this.processDefinitionId,\n            processInstanceId: this.processInstanceId,\n            owner: this.owner,\n            priority: this.priority,\n            lastModifiedFrom: this.lastModifiedFrom,\n            lastModifiedTo: this.lastModifiedTo,\n            dueDateFrom: this.dueDateFrom,\n            dueDateTo: this.dueDateTo,\n            status: this.status,\n            dueDate: this.dueDate,\n            createdDate: this.createdDate,\n            createdFrom: this.createdFrom,\n            createdTo: this.createdTo,\n            maxItems: this.size,\n            skipCount: this.skipCount,\n            sorting: this.sorting,\n            standalone: this.standalone,\n            completedBy: this.completedBy,\n            completedFrom: this.completedFrom,\n            completedTo: this.completedTo,\n            completedDate: this.completedDate,\n            candidateGroupId: this.candidateGroupId,\n            variableKeys: this.getRequestNodeVariables()\n        };\n\n        return new TaskQueryCloudRequestModel(requestNode);\n    }\n\n    private getRequestNodeVariables(): string[] | undefined {\n        const displayedVariableColumns: string[] = (this.columns ?? [])\n            .filter((column) => column.customData?.columnType === 'process-variable-column' && column.isHidden !== true)\n            .map((column) => {\n                const variableDefinitionsPayload = column.customData.variableDefinitionsPayload;\n                return variableDefinitionsPayload;\n            })\n            .reduce((allRequestKeys, requestKeys) => [...requestKeys, ...allRequestKeys], []);\n\n        return displayedVariableColumns.length ? displayedVariableColumns : undefined;\n    }\n\n    private getTaskListRequestSorting(): TaskListRequestSortingModel {\n        if (!this.sorting?.length) {\n            return new TaskListRequestSortingModel({\n                orderBy: this.defaultSorting.key,\n                direction: this.defaultSorting.direction,\n                isFieldProcessVariable: false\n            });\n        }\n\n        const orderBy = this.sorting[0]?.orderBy;\n        const direction = this.sorting[0]?.direction;\n        const orderByColumn = this.columnList?.columns.find((column) => column.key === orderBy);\n        const isFieldProcessVariable = orderByColumn?.customData?.columnType === 'process-variable-column';\n\n        if (isFieldProcessVariable) {\n            const processDefinitionKey = orderByColumn.customData.variableDefinitionsPayload[0].split('/')[0];\n            const variableName = orderByColumn.customData.variableDefinitionsPayload[0].split('/')[1];\n            return new TaskListRequestSortingModel({\n                orderBy: variableName,\n                direction,\n                isFieldProcessVariable: true,\n                processVariableData: {\n                    processDefinitionKey,\n                    type: orderByColumn.customData.variableType\n                }\n            });\n        } else {\n            return new TaskListRequestSortingModel({ orderBy, direction, isFieldProcessVariable: false });\n        }\n    }\n}\n","<div *ngIf=\"!rows\">{{ 'ADF_CLOUD_TASK_LIST.FILTERS.MESSAGES.NONE' | translate }}</div>\n<ng-container *ngIf=\"rows\">\n        <adf-datatable\n            [rows]=\"rows\"\n            [columns]=\"columns\"\n            [data]=\"dataAdapter\"\n            [loading]=\"isLoading$ | async\"\n            [sorting]=\"formattedSorting\"\n            [multiselect]=\"multiselect\"\n            [selectionMode]=\"selectionMode\"\n            [stickyHeader]=\"stickyHeader\"\n            [actions]=\"showActions\"\n            [actionsPosition]=\"actionsPosition\"\n            [contextMenu]=\"showContextMenu\"\n            [resolverFn]=\"boundReplacePriorityValues\"\n            [showProvidedActions]=\"showProvidedActions\"\n            [showMainDatatableActions]=\"showMainDatatableActions\"\n            [isResizingEnabled]=\"isResizingEnabled\"\n            (showRowActionsMenu)=\"onShowRowActionsMenu($event)\"\n            (showRowContextMenu)=\"onShowRowContextMenu($event)\"\n            (executeRowAction)=\"onExecuteRowAction($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            (sorting-changed)=\"onSortingChanged($any($event))\"\n            (columnOrderChanged)=\"onColumnOrderChanged($event)\"\n            (columnsWidthChanged)=\"onColumnsWidthChanged($event)\"\n            >\n            <adf-loading-content-template>\n                <ng-template>\n                    <mat-progress-spinner\n                        class=\"adf-cloud-task-list-loading-margin\"\n                        [color]=\"'primary'\"\n                        [mode]=\"'indeterminate'\" />\n                </ng-template>\n            </adf-loading-content-template>\n            <adf-no-content-template>\n                <ng-template>\n                    <adf-empty-content\n                        *ngIf=\"!emptyCustomContent\"\n                        icon=\"assignment\"\n                        [title]=\"'ADF_CLOUD_TASK_LIST.LIST.MESSAGES.TITLE' | translate\"\n                        [subtitle]=\"'ADF_CLOUD_TASK_LIST.LIST.MESSAGES.SUBTITLE' | translate\" />\n                    <ng-content select=\"adf-custom-empty-content-template\" />\n                </ng-template>\n            </adf-no-content-template>\n\n            <adf-main-menu-datatable-template>\n                <ng-template let-mainMenuTrigger>\n                    <adf-datatable-column-selector\n                        [columns]=\"columns\"\n                        [mainMenuTrigger]=\"mainMenuTrigger\"\n                        (submitColumnsVisibility)=\"onColumnsVisibilityChange($event)\" />\n                </ng-template>\n            </adf-main-menu-datatable-template>\n        </adf-datatable>\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 { Injectable } from '@angular/core';\nimport { ServiceTaskQueryCloudRequestModel, ServiceTaskIntegrationContextCloudModel } from '../models/service-task-cloud.model';\nimport { Observable, throwError } from 'rxjs';\nimport { TaskListCloudSortingModel } from '../../../models/task-list-sorting.model';\nimport { BaseCloudService } from '../../../services/base-cloud.service';\nimport { map } from 'rxjs/operators';\n\n@Injectable({ providedIn: 'root' })\nexport class ServiceTaskListCloudService extends BaseCloudService {\n    /**\n     * Finds a task using an object with optional query properties.\n     *\n     * @param requestNode Query object\n     * @returns Task information\n     */\n    getServiceTaskByRequest(requestNode: ServiceTaskQueryCloudRequestModel): Observable<any> {\n        if (requestNode.appName || requestNode.appName === '') {\n            const queryUrl = `${this.getBasePath(requestNode.appName)}/query/admin/v1/service-tasks`;\n            const queryParams = this.buildQueryParams(requestNode);\n            const sortingParams = this.buildSortingParam(requestNode.sorting);\n            if (sortingParams) {\n                queryParams['sort'] = sortingParams;\n            }\n            return this.get(queryUrl, queryParams);\n        } else {\n            return throwError('Appname not configured');\n        }\n    }\n\n    /**\n     * Finds a service task integration context using an object with optional query properties.\n     *\n     * @param appName string\n     * @param serviceTaskId string\n     * @returns Service Task Integration Context information\n     */\n    getServiceTaskStatus(appName: string, serviceTaskId: string): Observable<ServiceTaskIntegrationContextCloudModel> {\n        if (appName) {\n            const queryUrl = `${this.getBasePath(appName)}/query/admin/v1/service-tasks/${serviceTaskId}/integration-context`;\n            return this.get(queryUrl).pipe(map((response: any) => response.entry));\n        } else {\n            return throwError('Appname not configured');\n        }\n    }\n\n    /**\n     * Replay a service task based on the related execution id and flow-node id\n     *\n     * @param appName string\n     * @param executionId string\n     * @param flowNodeId string\n     * @returns Replay task informations\n     */\n    replayServiceTaskRequest(appName: string, executionId: string, flowNodeId: string): Observable<any> {\n        if (appName && executionId && flowNodeId) {\n            const payload = { flowNodeId };\n            const queryUrl = `${this.getBasePath(appName)}/rb/admin/v1/executions/${executionId}/replay/service-task`;\n            return this.post(queryUrl, payload);\n        } else {\n            return throwError('Appname/executionId/flowNodeId not configured');\n        }\n    }\n\n    protected buildQueryParams(requestNode: ServiceTaskQueryCloudRequestModel): any {\n        const queryParam: any = {};\n        for (const property in requestNode) {\n            if (\n                Object.prototype.hasOwnProperty.call(requestNode, property) &&\n                !this.isExcludedField(property) &&\n                this.isPropertyValueValid(requestNode, property)\n            ) {\n                queryParam[property] = requestNode[property];\n            }\n        }\n        return queryParam;\n    }\n\n    protected isExcludedField(property: string): boolean {\n        return property === 'appName' || property === 'sorting';\n    }\n\n    protected isPropertyValueValid(requestNode: any, property: string): boolean {\n        return requestNode[property] !== '' && requestNode[property] !== null && requestNode[property] !== undefined;\n    }\n\n    protected buildSortingParam(models: TaskListCloudSortingModel[]): string {\n        let finalSorting: string = '';\n        if (models) {\n            for (const sort of models) {\n                if (!finalSorting) {\n                    finalSorting = `${sort.orderBy},${sort.direction}`;\n                } else {\n                    finalSorting = `${finalSorting}&${sort.orderBy},${sort.direction}`;\n                }\n            }\n        }\n        return encodeURI(finalSorting);\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\nexport interface FormContent {\n    formRepresentation: FormRepresentation;\n}\n\nexport interface FormRepresentation {\n    id: string;\n    name: string;\n    description: string;\n    version?: number;\n    formDefinition?: FormDefinition;\n    standAlone?: boolean;\n    displayMode?: string;\n}\n\nexport interface FormTab {\n    id: string;\n    title: string;\n    visibilityCondition: VisibilityCondition | null;\n}\n\nexport interface FormTheme {\n    form: {\n        [key: string]: string;\n    };\n    widgets: {\n        [key: string]: {\n            [key: string]: {\n                [key: string]: string;\n            };\n        };\n    };\n}\n\nexport interface FormOutcome {\n    id: string;\n    name: string;\n}\n\nexport interface FormDefinition {\n    tabs: FormTab[];\n    fields: Container[] | HeaderRepresentation[];\n    outcomes: FormOutcome[];\n    metadata: any;\n    variables: any[];\n    theme?: FormTheme;\n}\n\nexport interface Container {\n    id: string;\n    type: string;\n    tab: string;\n    name: string;\n    numberOfColumns: number;\n    fields: {\n        [key: string]: FormFieldRepresentation[];\n    };\n}\n\nexport type FormFieldRepresentation =\n    | DateField\n    | DateTimeField\n    | TextField\n    | AttachFileField\n    | DropDownField\n    | RadioField\n    | TypeaheadField\n    | PeopleField\n    | AmountField\n    | NumberField\n    | CheckboxField\n    | HyperlinkField;\n\nexport interface AttachFileField extends FormField {\n    required: boolean;\n}\n\nexport interface TypeaheadField extends RestField {\n    required: boolean;\n}\n\nexport interface RestField extends FormField {\n    required: boolean;\n    restUrl: string;\n    restResponsePath: string;\n    restIdProperty: string;\n    restLabelProperty: string;\n}\n\nexport interface HeaderRepresentation extends Container {\n    numberOfColumns: number;\n    params: {\n        [key: string]: any;\n    };\n    visibilityCondition: VisibilityCondition;\n}\n\nexport interface ColumnDefinitionRepresentation extends Container {\n    id: string;\n    name: string;\n    type: string;\n    value: any;\n    required: boolean;\n    editable: boolean;\n    sortable: boolean;\n    visible: boolean;\n}\n\nexport interface DynamicTableRepresentation extends FormField {\n    required: boolean;\n    tab: string;\n    placeholder: string;\n    columnDefinitions: ColumnDefinitionRepresentation[];\n}\n\nexport interface VisibilityCondition {\n    leftType: string;\n    leftValue: string;\n    operator: string;\n    rightValue: string | number | Date;\n    rightType: string;\n    nextConditionOperator?: string;\n    nextCondition?: VisibilityCondition;\n}\n\nexport interface FormField {\n    id: string;\n    name: string;\n    value: any;\n    type: FormFieldType | string;\n    readOnly?: boolean;\n    colspan: number;\n    params: {\n        [anyKey: string]: any;\n    };\n    visibilityCondition: null | VisibilityCondition;\n    style?: string;\n}\n\nexport interface FormOption {\n    id: string;\n    name: string;\n}\n\nexport interface OptionsField {\n    value: any;\n    restUrl: string | null;\n    restResponsePath: string | null;\n    restIdProperty: string | null;\n    restLabelProperty: string | null;\n    optionType: 'manual' | 'rest';\n    options: FormOption[];\n}\n\nexport interface AmountField extends FormField {\n    required: boolean;\n    placeholder: string | null;\n    minValue: number | null;\n    maxValue: number | null;\n    enableFractions: boolean;\n    currency: string;\n}\n\nexport interface CheckboxField extends FormField {\n    required: boolean;\n}\n\nexport interface DateField extends FormField {\n    required: boolean;\n    placeholder: string | null;\n    minValue: string | null;\n    maxValue: string | null;\n    dateDisplayFormat: string;\n}\n\nexport interface DateTimeField extends FormField {\n    required: boolean;\n    placeholder: string | null;\n    minValue: string | null;\n    maxValue: string | null;\n    dateDisplayFormat: string;\n}\n\nexport interface DropDownField extends OptionsField, FormField {\n    required: boolean;\n}\n\nexport interface HyperlinkField extends FormField {\n    hyperlinkUrl: string | null;\n    displayText: string | null;\n}\n\nexport interface NumberField extends FormField {\n    placeholder: string | null;\n    minValue: number | null;\n    maxValue: number | null;\n    required: boolean;\n}\n\nexport interface RadioField extends OptionsField, FormField {\n    required: boolean;\n}\n\nexport interface TextField extends FormField {\n    regexPattern: string | null;\n    required: boolean;\n    minLength: number;\n    maxLength: number;\n    placeholder: string | null;\n}\n\n// eslint-disable-next-line no-shadow\nexport enum PeopleModeOptions {\n    single = 'single',\n    multiple = 'multiple'\n}\n\nexport interface PeopleField extends FormField {\n    required: boolean;\n    optionType: PeopleModeOptions;\n}\n\n// eslint-disable-next-line no-shadow\nexport enum FormFieldType {\n    text = 'text',\n    multiline = 'multi-line-text',\n    // eslint-disable-next-line id-blacklist\n    number = 'integer',\n    checkbox = 'boolean',\n    date = 'date',\n    datetime = 'datetime',\n    dropdown = 'dropdown',\n    typeahead = 'typeahead',\n    amount = 'amount',\n    radio = 'radio-buttons',\n    people = 'people',\n    groupOfPeople = 'functional-group',\n    dynamicTable = 'dynamicTable',\n    hyperlink = 'hyperlink',\n    header = 'group',\n    uploadFile = 'upload',\n    uploadFolder = 'uploadFolder',\n    displayValue = 'readonly',\n    displayText = 'readonly-text',\n    fileViewer = 'file-viewer'\n}\n\nexport interface FormCloudDisplayModeConfigurationOptions {\n    onCompleteTask(id?: string): void;\n    onSaveTask(id?: string): void;\n    onDisplayModeOn(id?: string): void;\n    onDisplayModeOff(id?: string): void;\n    fullscreen?: boolean;\n    displayToolbar?: boolean;\n    displayCloseButton?: boolean;\n    trapFocus?: boolean;\n    [key: string]: any;\n}\n\nexport interface FormCloudDisplayModeConfiguration {\n    displayMode: string;\n    options?: FormCloudDisplayModeConfigurationOptions;\n    default?: boolean;\n}\n\n// eslint-disable-next-line no-shadow\nexport enum FormCloudDisplayMode {\n    inline = 'inline',\n    fullScreen = 'fullScreen',\n    standalone = 'standalone'\n}\n\nexport interface FormCloudDisplayModeChange {\n    displayMode: string;\n    id?: string;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Injectable } from '@angular/core';\nimport { PreferenceCloudServiceInterface } from './preference-cloud.interface';\nimport { StorageService } from '@alfresco/adf-core';\nimport { Observable, of } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class LocalPreferenceCloudService implements PreferenceCloudServiceInterface {\n    constructor(private storage: StorageService) {}\n\n    /**\n     * Gets local preferences\n     *\n     * @param _ Name of the target app\n     * @param key Key of the target preference\n     * @returns List of local preferences\n     */\n    getPreferences(_: string, key: string): Observable<any> {\n        if (key || key === '') {\n            return of(this.prepareLocalPreferenceResponse(key));\n        }\n\n        const items = this.storage.getItems();\n        const entries = Object.keys(items).map((k) => ({\n            entry: {\n                key: k,\n                value: items[k] || '[]'\n            }\n        }));\n\n        return of({\n            list: {\n                entries\n            }\n        });\n    }\n\n    /**\n     * Gets local preference.\n     *\n     * @param _ Name of the target app\n     * @param key Key of the target preference\n     * @returns Observable of local preference\n     */\n    getPreferenceByKey(_: string, key: string): Observable<any> {\n        return of(JSON.parse(this.storage.getItem(key)) || []);\n    }\n\n    /**\n     * Creates local preference.\n     *\n     * @param _ Name of the target app\n     * @param key Key of the target preference\n     * @param newPreference Details of new local preference\n     * @returns Observable of created local preferences\n     */\n    createPreference(_: string, key: string, newPreference: any): Observable<any> {\n        const storedFilters = JSON.parse(this.storage.getItem(key) || '[]');\n        storedFilters.push(...newPreference);\n        this.storage.setItem(key, JSON.stringify(storedFilters));\n        return of(storedFilters);\n    }\n\n    /**\n     * Updates local preference.\n     *\n     * @param _ Name of the target app\n     * @param key Key of the target preference\n     * @param updatedPreference Details of updated preference\n     * @returns Observable of updated local preferences\n     */\n    updatePreference(_: string, key: string, updatedPreference: any): Observable<any> {\n        if (key) {\n            this.storage.setItem(key, JSON.stringify(updatedPreference));\n        }\n        return of(updatedPreference);\n    }\n\n    /**\n     * Deletes local preference by given preference key.\n     *\n     * @param key Key of the target preference\n     * @param preferences Details of updated preferences\n     * @returns Observable of preferences without deleted preference\n     */\n    deletePreference(key: string, preferences: any): Observable<any> {\n        if (key) {\n            this.storage.setItem(key, JSON.stringify(preferences));\n        }\n        return of(preferences);\n    }\n\n    prepareLocalPreferenceResponse(key: string): any {\n        return {\n            list: {\n                entries: [\n                    {\n                        entry: {\n                            key,\n                            value: this.storage.getItem(key) || '[]'\n                        }\n                    }\n                ]\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 { createClient } from 'graphql-ws';\nimport { inject, Injectable } from '@angular/core';\nimport { GraphQLWsLink } from '@apollo/client/link/subscriptions';\nimport { WebSocketLink } from '@apollo/client/link/ws';\nimport {\n    DefaultContext,\n    FetchResult,\n    from,\n    InMemoryCache,\n    InMemoryCacheConfig,\n    NextLink,\n    Operation,\n    split,\n    SubscriptionOptions\n} from '@apollo/client/core';\nimport { Observable } from 'rxjs';\nimport { Apollo } from 'apollo-angular';\nimport { HttpLink, HttpLinkHandler } from 'apollo-angular/http';\nimport { Kind, OperationTypeNode } from 'graphql';\nimport { onError } from '@apollo/client/link/error';\nimport { RetryLink } from '@apollo/client/link/retry';\nimport { getMainDefinition } from '@apollo/client/utilities';\nimport { take } from 'rxjs/operators';\nimport { AppConfigService, AuthenticationService } from '@alfresco/adf-core';\n\ninterface serviceOptions {\n    apolloClientName: string;\n    wsUrl: string;\n    httpUrl?: string;\n    subscriptionOptions: SubscriptionOptions;\n}\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class WebSocketService {\n    private appConfigService = inject(AppConfigService);\n    private subscriptionProtocol = 'graphql-ws';\n    private wsLink: GraphQLWsLink | WebSocketLink;\n    private httpLinkHandler: HttpLinkHandler;\n\n    constructor(private readonly apollo: Apollo, private readonly httpLink: HttpLink, private readonly authService: AuthenticationService) {}\n\n    public getSubscription<T>(options: serviceOptions): Observable<FetchResult<T>> {\n        const { apolloClientName, subscriptionOptions } = options;\n        this.authService.onLogout.pipe(take(1)).subscribe(() => {\n            if (this.apollo.use(apolloClientName)) {\n                this.apollo.removeClient(apolloClientName);\n            }\n        });\n\n        if (this.apollo.use(apolloClientName) === undefined) {\n            this.initSubscriptions(options);\n        }\n        return this.apollo.use(apolloClientName).subscribe<T>({ errorPolicy: 'all', ...subscriptionOptions });\n    }\n\n    private get contextRoot() {\n        return this.appConfigService.get('bpmHost', '');\n    }\n\n    private createWsUrl(serviceUrl: string): string {\n        const url = new URL(serviceUrl, this.contextRoot);\n        const protocol = url.protocol === 'https:' ? 'wss:' : 'ws:';\n        url.protocol = protocol;\n\n        return url.href;\n    }\n\n    private createHttpUrl(serviceUrl: string): string {\n        const url = new URL(serviceUrl, this.contextRoot);\n\n        return url.href;\n    }\n\n    private initSubscriptions(options: serviceOptions): void {\n        this.createGraphQLWsLink(options);\n\n        this.createHttpLinkHandler(options);\n\n        const link = split(\n            ({ query }) => {\n                const definition = getMainDefinition(query);\n                return definition.kind === Kind.OPERATION_DEFINITION && definition.operation === OperationTypeNode.SUBSCRIPTION;\n            },\n            this.wsLink,\n            this.httpLinkHandler\n        );\n\n        const authLink = (operation: Operation, forward: NextLink) => {\n            operation.setContext(({ headers }: DefaultContext) => ({\n                headers: {\n                    ...headers,\n                    ...(this.subscriptionProtocol === 'graphql-ws' && { Authorization: `Bearer ${this.authService.getToken()}` }),\n                    ...(this.subscriptionProtocol === 'transport-ws' && { 'X-Authorization': `Bearer ${this.authService.getToken()}` })\n                }\n            }));\n            return forward(operation);\n        };\n\n        const errorLink = onError(({ graphQLErrors, networkError, operation, forward }) => {\n            if (graphQLErrors) {\n                for (const error of graphQLErrors) {\n                    if (error.extensions && error.extensions['code'] === 'UNAUTHENTICATED') {\n                        authLink(operation, forward);\n                    }\n                }\n            }\n\n            if (networkError) {\n                console.error(`[Network error]: ${networkError}`);\n            }\n        });\n\n        const retryLink = new RetryLink({\n            delay: {\n                initial: 300,\n                max: Number.POSITIVE_INFINITY,\n                jitter: true\n            },\n            attempts: {\n                max: 5,\n                retryIf: (error) => !!error\n            }\n        });\n\n        this.apollo.createNamed(options.apolloClientName, {\n            headers: {\n                ...(this.subscriptionProtocol === 'graphql-ws' && { Authorization: `Bearer ${this.authService.getToken()}` }),\n                ...(this.subscriptionProtocol === 'transport-ws' && { 'X-Authorization': `Bearer ${this.authService.getToken()}` })\n            },\n            link: from([authLink, retryLink, errorLink, link]),\n            cache: new InMemoryCache({ merge: true } as InMemoryCacheConfig)\n        });\n    }\n\n    private createGraphQLWsLink(options: serviceOptions): void {\n        this.wsLink = new GraphQLWsLink(\n            createClient({\n                url: this.createWsUrl(options.wsUrl) + '/v2/ws/graphql',\n                connectionParams: {\n                    Authorization: 'Bearer ' + this.authService.getToken()\n                },\n                on: {\n                    error: () => {\n                        this.apollo.removeClient(options.apolloClientName);\n                        this.initSubscriptions(options);\n                    }\n                },\n                lazy: true\n            })\n        );\n    }\n\n    private createHttpLinkHandler(options: serviceOptions): void {\n        this.httpLinkHandler = options.httpUrl\n            ? this.httpLink.create({\n                  uri: this.createHttpUrl(options.httpUrl)\n              })\n            : undefined;\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 { gql } from '@apollo/client/core';\nimport { Injectable } from '@angular/core';\nimport { WebSocketService } from './web-socket.service';\n@Injectable({\n    providedIn: 'root'\n})\nexport class NotificationCloudService {\n    constructor(private readonly webSocketService: WebSocketService) {}\n\n    makeGQLQuery(appName: string, gqlQuery: string) {\n        return this.webSocketService.getSubscription({\n            apolloClientName: appName,\n            wsUrl: `${appName}/notifications`,\n            httpUrl: `${appName}/notifications/v2/ws/graphql`,\n            subscriptionOptions: {\n                query: gql(gqlQuery)\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 { Observable } from 'rxjs';\n\nexport interface PreferenceCloudServiceInterface {\n    getPreferences(appName: string, key?: string): Observable<any>;\n    getPreferenceByKey(appName: string, key: string): Observable<any>;\n    createPreference(appName: string, key: string, newPreference: any): Observable<any>;\n    updatePreference(appName: string, key: string, updatedPreference: any): Observable<any>;\n    deletePreference(appName: string, key: string): Observable<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 { Observable } from 'rxjs';\nimport { TaskListRequestModel, TaskQueryCloudRequestModel } from '../models/filter-cloud-model';\n\nexport interface TaskListCloudServiceInterface {\n    /**\n     * Finds a task using an object with optional query properties.\n     *\n     * @deprecated From Activiti 8.7.0 forward, use TaskListCloudService.fetchTaskList instead.\n     * @param requestNode Query object\n     * @param queryUrl Query url\n     * @returns Task information\n     */\n    getTaskByRequest(requestNode: TaskQueryCloudRequestModel, queryUrl?: string): Observable<any>;\n\n    /**\n     * Available from Activiti version 8.7.0 onwards.\n     * Retrieves a list of tasks using an object with optional query properties.\n     *\n     * @param requestNode Query object\n     * @param queryUrl Query url\n     * @returns List of tasks\n     */\n    fetchTaskList(requestNode: TaskListRequestModel, queryUrl?: string): Observable<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 { Injectable } from '@angular/core';\nimport { PreferenceCloudServiceInterface } from './preference-cloud.interface';\nimport { throwError, Observable } from 'rxjs';\nimport { BaseCloudService } from './base-cloud.service';\n\n@Injectable({ providedIn: 'root' })\nexport class UserPreferenceCloudService extends BaseCloudService implements PreferenceCloudServiceInterface {\n    /**\n     * Gets user preferences\n     *\n     * @param appName Name of the target app\n     * @returns List of user preferences\n     */\n    getPreferences(appName: string): Observable<any> {\n        if (appName) {\n            const url = `${this.getBasePath(appName)}/preference/v1/preferences`;\n            return this.get(url);\n        } else {\n            return throwError('Appname not configured');\n        }\n    }\n\n    /**\n     * Gets user preference.\n     *\n     * @param appName Name of the target app\n     * @param key Key of the target preference\n     * @returns Observable of user preference\n     */\n    getPreferenceByKey(appName: string, key: string): Observable<any> {\n        if (appName) {\n            const url = `${this.getBasePath(appName)}/preference/v1/preferences/${key}`;\n            return this.get(url);\n        } else {\n            return throwError('Appname not configured');\n        }\n    }\n\n    /**\n     * Creates user preference.\n     *\n     * @param appName Name of the target app\n     * @param key Key of the target preference\n     * @param newPreference Details of new user preference\n     * @returns Observable of created user preferences\n     */\n    createPreference(appName: string, key: string, newPreference: any): Observable<any> {\n        if (appName) {\n            const url = `${this.getBasePath(appName)}/preference/v1/preferences/${key}`;\n            const payload = JSON.stringify(newPreference);\n\n            return this.put(url, payload);\n        } else {\n            return throwError('Appname not configured');\n        }\n    }\n\n    /**\n     * Updates user preference.\n     *\n     * @param appName Name of the target app\n     * @param key Key of the target preference\n     * @param updatedPreference Details of updated preference\n     * @returns Observable of updated user preferences\n     */\n    updatePreference(appName: string, key: string, updatedPreference: any): Observable<any> {\n        return this.createPreference(appName, key, updatedPreference);\n    }\n\n    /**\n     * Deletes user preference by given preference key.\n     *\n     * @param appName Name of the target app\n     * @param key Key of the target preference\n     * @returns Observable of delete operation status\n     */\n    deletePreference(appName: string, key: string): Observable<any> {\n        if (appName) {\n            const url = `${this.getBasePath(appName)}/preference/v1/preferences/${key}`;\n            return this.delete(url);\n        } else {\n            return throwError('Appname not configured');\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\nexport * from './base-cloud.service';\nexport * from './cloud-token.service';\nexport * from './form-fields.interfaces';\nexport * from './local-preference-cloud.service';\nexport * from './notification-cloud.service';\nexport * from './preference-cloud.interface';\nexport * from './task-list-cloud.service.interface';\nexport * from './user-preference-cloud.service';\nexport * from './variable-mapper.sevice';\nexport * from './web-socket.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 { Component, Inject, Input, ViewEncapsulation } from '@angular/core';\nimport {\n    AppConfigService,\n    ColumnsSelectorComponent,\n    DataTableComponent,\n    EmptyContentComponent,\n    LoadingContentTemplateDirective,\n    MainMenuDataTableTemplateDirective,\n    NoContentTemplateDirective,\n    UserPreferencesService\n} from '@alfresco/adf-core';\nimport { ServiceTaskQueryCloudRequestModel } from '../../models/service-task-cloud.model';\nimport { BaseTaskListCloudComponent } from '../base-task-list-cloud.component';\nimport { ServiceTaskListCloudService } from '../../services/service-task-list-cloud.service';\nimport { TaskCloudService } from '../../../services/task-cloud.service';\nimport { BehaviorSubject, combineLatest } from 'rxjs';\nimport { PreferenceCloudServiceInterface, TASK_LIST_PREFERENCES_SERVICE_TOKEN } from '../../../../services/public-api';\nimport { map } from 'rxjs/operators';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\n\nconst PRESET_KEY = 'adf-cloud-service-task-list.presets';\n\n@Component({\n    selector: 'adf-cloud-service-task-list',\n    imports: [\n        CommonModule,\n        ColumnsSelectorComponent,\n        MainMenuDataTableTemplateDirective,\n        TranslatePipe,\n        EmptyContentComponent,\n        NoContentTemplateDirective,\n        MatProgressSpinnerModule,\n        LoadingContentTemplateDirective,\n        DataTableComponent\n    ],\n    templateUrl: './service-task-list-cloud.component.html',\n    styleUrls: ['./service-task-list-cloud.component.scss'],\n    encapsulation: ViewEncapsulation.None\n})\nexport class ServiceTaskListCloudComponent extends BaseTaskListCloudComponent {\n    @Input()\n    queryParams: { [key: string]: any } = {};\n\n    private isReloadingSubject$ = new BehaviorSubject<boolean>(false);\n    isLoading$ = combineLatest([this.isLoadingPreferences$, this.isReloadingSubject$]).pipe(\n        map(([isLoadingPreferences, isReloading]) => isLoadingPreferences || isReloading)\n    );\n\n    constructor(\n        private serviceTaskListCloudService: ServiceTaskListCloudService,\n        appConfigService: AppConfigService,\n        taskCloudService: TaskCloudService,\n        userPreferences: UserPreferencesService,\n        @Inject(TASK_LIST_PREFERENCES_SERVICE_TOKEN) cloudPreferenceService: PreferenceCloudServiceInterface\n    ) {\n        super(appConfigService, taskCloudService, userPreferences, PRESET_KEY, cloudPreferenceService);\n    }\n\n    reload() {\n        this.isReloadingSubject$.next(true);\n\n        this.requestNode = this.createRequestNode();\n\n        if (this.requestNode.appName || this.requestNode.appName === '') {\n            combineLatest([this.serviceTaskListCloudService.getServiceTaskByRequest(this.requestNode), this.isColumnSchemaCreated$])\n                .pipe(takeUntilDestroyed(this.destroyRef))\n                .subscribe(\n                    ([tasks]) => {\n                        this.rows = tasks.list.entries.map((task) => task.entry);\n                        this.success.emit(tasks);\n                        this.pagination.next(tasks.list.pagination);\n                        this.isReloadingSubject$.next(false);\n                    },\n                    (error) => {\n                        this.error.emit(error);\n                        this.isReloadingSubject$.next(false);\n                    }\n                );\n        } else {\n            this.rows = [];\n        }\n    }\n\n    createRequestNode(): ServiceTaskQueryCloudRequestModel {\n        const requestNode: ServiceTaskQueryCloudRequestModel = {\n            appName: this.appName,\n            maxItems: this.size,\n            skipCount: this.skipCount,\n            sorting: this.sorting,\n            id: this.queryParams?.serviceTaskId,\n            environmentId: this.queryParams?.environmentId,\n            activityName: this.queryParams?.activityName,\n            activityType: this.queryParams?.activityType,\n            completedDate: this.queryParams?.completedDate,\n            completedFrom: this.queryParams?.completedFrom,\n            completedTo: this.queryParams?.completedTo,\n            elementId: this.queryParams?.elementId,\n            executionId: this.queryParams?.executionId,\n            processDefinitionId: this.queryParams?.processDefinitionId,\n            processDefinitionKey: this.queryParams?.processDefinitionKey,\n            processDefinitionVersion: this.queryParams?.processDefinitionVersion,\n            processInstanceId: this.queryParams?.processInstanceId,\n            serviceFullName: this.queryParams?.serviceFullName,\n            serviceName: this.queryParams?.serviceName,\n            serviceVersion: this.queryParams?.serviceVersion,\n            startedDate: this.queryParams?.startedDate,\n            startedFrom: this.queryParams?.startedFrom,\n            startedTo: this.queryParams?.startedTo,\n            status: this.queryParams?.status\n        } as ServiceTaskQueryCloudRequestModel;\n        return requestNode;\n    }\n}\n","<div *ngIf=\"!rows\">{{ 'ADF_CLOUD_TASK_LIST.FILTERS.MESSAGES.NONE' | translate }}</div>\n<ng-container *ngIf=\"rows\">\n        <adf-datatable\n            [rows]=\"rows\"\n            [columns]=\"columns\"\n            [data]=\"dataAdapter\"\n            [loading]=\"isLoading$ | async\"\n            [sorting]=\"formattedSorting\"\n            [multiselect]=\"multiselect\"\n            [selectionMode]=\"selectionMode\"\n            [stickyHeader]=\"stickyHeader\"\n            [actions]=\"showActions\"\n            [actionsPosition]=\"actionsPosition\"\n            [contextMenu]=\"showContextMenu\"\n            [resolverFn]=\"boundReplacePriorityValues\"\n            [showProvidedActions]=\"showProvidedActions\"\n            [showMainDatatableActions]=\"showMainDatatableActions\"\n            [isResizingEnabled]=\"isResizingEnabled\"\n            (showRowActionsMenu)=\"onShowRowActionsMenu($event)\"\n            (showRowContextMenu)=\"onShowRowContextMenu($event)\"\n            (executeRowAction)=\"onExecuteRowAction($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            (sorting-changed)=\"onSortingChanged($any($event))\"\n            (columnOrderChanged)=\"onColumnOrderChanged($event)\"\n            (columnsWidthChanged)=\"onColumnsWidthChanged($event)\"\n            >\n            <adf-loading-content-template>\n                <ng-template>\n                    <mat-progress-spinner\n                        class=\"adf-cloud-task-list-loading-margin\"\n                        [color]=\"'primary'\"\n                        [mode]=\"'indeterminate'\" />\n                </ng-template>\n            </adf-loading-content-template>\n            <adf-no-content-template>\n                <ng-template>\n                    <adf-empty-content\n                        *ngIf=\"!emptyCustomContent\"\n                        icon=\"assignment\"\n                        [title]=\"'ADF_CLOUD_TASK_LIST.LIST.MESSAGES.TITLE' | translate\"\n                        [subtitle]=\"'ADF_CLOUD_TASK_LIST.LIST.MESSAGES.SUBTITLE' | translate\" />\n                    <ng-content select=\"adf-custom-empty-content-template\" />\n                </ng-template>\n            </adf-no-content-template>\n\n            <adf-main-menu-datatable-template>\n                <ng-template let-mainMenuTrigger>\n                    <adf-datatable-column-selector\n                        [columns]=\"columns\"\n                        [mainMenuTrigger]=\"mainMenuTrigger\"\n                        (submitColumnsVisibility)=\"onColumnsVisibilityChange($event)\" />\n                </ng-template>\n            </adf-main-menu-datatable-template>\n        </adf-datatable>\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 { NgModule } from '@angular/core';\nimport { TaskListCloudComponent } from './components/task-list/task-list-cloud.component';\nimport { ServiceTaskListCloudComponent } from './components/service-task-list/service-task-list-cloud.component';\n\nexport const TASK_LIST_CLOUD_DIRECTIVES = [TaskListCloudComponent, ServiceTaskListCloudComponent] as const;\n\n/** @deprecated use standalone components or TASK_LIST_CLOUD_DIRECTIVES instead */\n@NgModule({\n    imports: [...TASK_LIST_CLOUD_DIRECTIVES],\n    exports: [...TASK_LIST_CLOUD_DIRECTIVES]\n})\nexport class TaskListCloudModule {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 @typescript-eslint/naming-convention */\n\n// eslint-disable-next-line no-shadow\nexport enum DateCloudFilterType {\n    NO_DATE = 'NO_DATE',\n    TODAY = 'TODAY',\n    TOMORROW = 'TOMORROW',\n    NEXT_7_DAYS = 'NEXT_7_DAYS',\n    WEEK = 'WEEK',\n    MONTH = 'MONTH',\n    QUARTER = 'QUARTER',\n    YEAR = 'YEAR',\n    RANGE = 'RANGE'\n}\n\nexport interface DateRangeFilter {\n    startDate: string;\n    endDate: string;\n}\nexport interface RangeKeys {\n    from: string;\n    to: string;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Injectable } from '@angular/core';\nimport { DateRangeFilter, DateCloudFilterType } from '../../models/date-cloud-filter.model';\nimport { add, endOfDay, endOfMonth, endOfQuarter, endOfWeek, endOfYear, startOfDay, startOfMonth, startOfQuarter, startOfWeek, startOfYear } from 'date-fns';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class DateRangeFilterService {\n\n    currentDate = new Date();\n\n    getDateRange(type: DateCloudFilterType): DateRangeFilter {\n        switch (type) {\n            case DateCloudFilterType.TODAY: return this.getTodayDateRange();\n            case DateCloudFilterType.TOMORROW: return this.getTomorrowDateRange();\n            case DateCloudFilterType.NEXT_7_DAYS: return this.getNext7DaysDateRange();\n            case DateCloudFilterType.WEEK: return this.getCurrentWeekRange();\n            case DateCloudFilterType.MONTH: return this.getCurrentMonthDateRange();\n            case DateCloudFilterType.QUARTER: return this.getQuarterDateRange();\n            case DateCloudFilterType.YEAR: return this.getCurrentYearDateRange();\n            default: return this.resetDateRange();\n        }\n    }\n\n    isDateRangeType(type: DateCloudFilterType) {\n        return type === DateCloudFilterType.RANGE;\n    }\n\n    private resetDateRange(): DateRangeFilter {\n        return {\n            startDate: null,\n            endDate: null\n        };\n    }\n\n    private getNext7DaysDateRange(): DateRangeFilter {\n        return {\n            startDate: startOfDay(new Date()).toISOString(),\n            endDate: add(endOfDay(new Date()), { days: 7 }).toISOString()\n        };\n    }\n\n    private getTomorrowDateRange(): DateRangeFilter {\n        return {\n            startDate: endOfDay(new Date()).toISOString(),\n            endDate: add(endOfDay(new Date()), { days: 1 }).toISOString()\n        };\n    }\n\n    private getCurrentYearDateRange(): DateRangeFilter {\n        return {\n            startDate: startOfYear(new Date()).toISOString(),\n            endDate: endOfYear(new Date()).toISOString()\n        };\n    }\n\n    private getTodayDateRange(): DateRangeFilter {\n        return {\n            startDate: startOfDay(new Date()).toISOString(),\n            endDate: endOfDay(new Date()).toISOString()\n        };\n    }\n\n    private getCurrentWeekRange(): DateRangeFilter {\n        return  {\n            startDate: startOfWeek(new Date()).toISOString(),\n            endDate: endOfWeek(new Date()).toISOString()\n        };\n    }\n\n    private getCurrentMonthDateRange(): DateRangeFilter {\n        return {\n            startDate: startOfMonth(new Date()).toISOString(),\n            endDate: endOfMonth(new Date()).toISOString()\n        };\n    }\n\n    private getQuarterDateRange(): DateRangeFilter {\n        return {\n            startDate: startOfQuarter(new Date()).toISOString(),\n            endDate: endOfQuarter(new Date()).toISOString()\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 no-underscore-dangle */\n/* eslint-disable no-shadow */\n/* eslint-disable @typescript-eslint/naming-convention */\n\nimport { DateCloudFilterType } from '../../../models/date-cloud-filter.model';\nimport { DateRangeFilterService } from '../../../common/date-range-filter/date-range-filter.service';\nimport { ComponentSelectionMode } from '../../../types';\nimport { IdentityGroupModel } from '../../../group/models/identity-group.model';\nimport { IdentityUserModel } from '../../../people/models/identity-user.model';\nimport { ProcessVariableFilterModel } from '../../../models/process-variable-filter.model';\n\nexport class TaskFilterCloudModel {\n    id: string;\n    name: string;\n    key: string;\n    environmentId?: string;\n    icon: string;\n    index: number;\n    appName: string;\n    status: TaskStatusFilter;\n    sort: string;\n    assignee: string;\n    assignedUsers: IdentityUserModel[];\n    candidateGroups: IdentityGroupModel[];\n    order: string;\n    owner: string;\n    processDefinitionName?: string;\n    processDefinitionId: string;\n    processInstanceId: string;\n    createdDate: Date;\n    dueDateType: DateCloudFilterType;\n    dueDate: Date;\n    taskName: string;\n    taskId: string;\n    parentTaskId: string;\n    priority: number;\n    standalone: boolean;\n    lastModifiedFrom: string;\n    lastModifiedTo: string;\n    completedDateType: DateCloudFilterType;\n    createdDateType: DateCloudFilterType;\n    assignmentType: AssignmentType;\n    completedDate: Date;\n    completedBy: IdentityUserModel;\n    showCounter: boolean;\n\n    taskNames: string[] | null;\n    statuses: TaskStatusFilter[] | null;\n    assignees: string[] | null;\n    processNames: string[] | null;\n    processDefinitionNames: string[] | null;\n    taskIds: string[] | null;\n    parentTaskIds: string[] | null;\n    processInstanceIds: string[] | null;\n    priorities: string[] | null;\n    completedByUsers: string[] | null;\n\n    private _completedFrom: string;\n    private _completedTo: string;\n    private _dueDateFrom: string;\n    private _dueDateTo: string;\n    private _createdFrom: string;\n    private _createdTo: string;\n    private dateRangeFilterService = new DateRangeFilterService();\n\n    processVariableFilters?: ProcessVariableFilterModel[];\n\n    constructor(obj?: any) {\n        if (obj) {\n            this.id = obj.id || Math.random().toString(36).substr(2, 9);\n            this.name = obj.name || null;\n            this.key = obj.key || null;\n            this.environmentId = obj.environmentId || null;\n            this.icon = obj.icon || null;\n            this.index = obj.index || null;\n            this.appName = obj.appName || obj.appName === '' ? obj.appName : null;\n            this.status = obj.status || null;\n            this.sort = obj.sort || null;\n            this.assignee = obj.assignee || null;\n            this.assignedUsers = obj.assignedUsers || null;\n            this.order = obj.order || null;\n            this.owner = obj.owner || null;\n            this.processDefinitionName = obj.processDefinitionName || null;\n            this.processDefinitionId = obj.processDefinitionId || null;\n            this.processInstanceId = obj.processInstanceId || null;\n            this.createdDate = obj.createdDate || null;\n            this.dueDateType = obj.dueDateType || null;\n            this.dueDate = obj.dueDate || null;\n            this._dueDateFrom = obj._dueDateFrom || null;\n            this._dueDateTo = obj._dueDateTo || null;\n            this.taskName = obj.taskName || null;\n            this.taskId = obj.taskId || null;\n            this.parentTaskId = obj.parentTaskId || null;\n            this.priority = obj.priority || null;\n            this.standalone = obj.standalone || null;\n            this.lastModifiedFrom = obj.lastModifiedFrom || null;\n            this.lastModifiedTo = obj.lastModifiedTo || null;\n            this.completedBy = obj.completedBy || null;\n            this.completedDateType = obj.completedDateType || null;\n            this.completedFrom = obj._completedFrom || null;\n            this.completedTo = obj._completedTo || null;\n            this.completedDate = obj.completedDate || null;\n            this.createdDateType = obj.createdDateType || null;\n            this.createdFrom = obj._createdFrom || null;\n            this.createdTo = obj._createdTo || null;\n            this.candidateGroups = obj.candidateGroups || null;\n            this.showCounter = obj.showCounter || false;\n\n            this.initArrayProperties(obj);\n        }\n    }\n\n    private initArrayProperties(obj) {\n        if (obj.taskNames) {\n            this.taskNames = obj.taskNames;\n        } else {\n            this.taskNames = obj.taskName ? [obj.taskName] : null;\n        }\n\n        if (obj.statuses) {\n            this.statuses = obj.statuses;\n        } else {\n            this.statuses = obj.status ? [obj.status] : null;\n        }\n\n        if (obj.assignees) {\n            this.assignees = obj.assignees;\n        } else {\n            this.assignees = obj.assignee ? [obj.assignee] : null;\n        }\n\n        if (obj.processNames) {\n            this.processNames = obj.processNames;\n        } else {\n            this.processNames = obj.processName ? [obj.processName] : null;\n        }\n\n        if (obj.processDefinitionNames) {\n            this.processDefinitionNames = obj.processDefinitionNames;\n        } else {\n            this.processDefinitionNames = obj.processDefinitionName ? [obj.processDefinitionName] : null;\n        }\n\n        if (obj.taskIds) {\n            this.taskIds = obj.taskIds;\n        } else {\n            this.taskIds = obj.taskId ? [obj.taskId] : null;\n        }\n\n        if (obj.parentTaskIds) {\n            this.parentTaskIds = obj.parentTaskIds;\n        } else {\n            this.parentTaskIds = obj.parentTaskId ? [obj.parentTaskId] : null;\n        }\n\n        if (obj.processInstanceIds) {\n            this.processInstanceIds = obj.processInstanceIds;\n        } else {\n            this.processInstanceIds = obj.processInstanceId ? [obj.processInstanceId] : null;\n        }\n\n        if (obj.priorities) {\n            this.priorities = obj.priorities;\n        } else {\n            this.priorities = obj.priority ? [obj.priority] : null;\n        }\n\n        if (obj.completedByUsers) {\n            this.completedByUsers = obj.completedByUsers;\n        } else {\n            this.completedByUsers = obj.completedBy ? [obj.completedBy] : null;\n        }\n\n        this.processVariableFilters = obj.processVariableFilters ?? [];\n    }\n\n    set dueDateFrom(dueDateFrom: string) {\n        this._dueDateFrom = dueDateFrom;\n    }\n\n    get dueDateFrom() {\n        if (this.isDateRangeType(this.dueDateType)) {\n            return this._dueDateFrom;\n        }\n        return this.getStartDate(this.dueDateType);\n    }\n\n    set dueDateTo(dueDateTo: string) {\n        this._dueDateTo = dueDateTo;\n    }\n\n    get dueDateTo() {\n        if (this.isDateRangeType(this.dueDateType)) {\n            return this._dueDateTo;\n        }\n        return this.getEndDate(this.dueDateType);\n    }\n\n    set completedFrom(completedFrom: string) {\n        this._completedFrom = completedFrom;\n    }\n\n    get completedFrom(): string {\n        if (this.isDateRangeType(this.completedDateType)) {\n            return this._completedFrom;\n        }\n        return this.getStartDate(this.completedDateType);\n    }\n\n    set completedTo(completedTo: string) {\n        this._completedTo = completedTo;\n    }\n\n    get completedTo(): string {\n        if (this.isDateRangeType(this.completedDateType)) {\n            return this._completedTo;\n        }\n        return this.getEndDate(this.completedDateType);\n    }\n\n    set createdFrom(createdFrom: string) {\n        this._createdFrom = createdFrom;\n    }\n\n    get createdFrom() {\n        if (this.isDateRangeType(this.createdDateType)) {\n            return this._createdFrom;\n        }\n        return this.getStartDate(this.createdDateType);\n    }\n\n    set createdTo(createdTo: string) {\n        this._createdTo = createdTo;\n    }\n\n    get createdTo() {\n        if (this.isDateRangeType(this.createdDateType)) {\n            return this._createdTo;\n        }\n        return this.getEndDate(this.createdDateType);\n    }\n\n    private getStartDate(key: DateCloudFilterType) {\n        return this.dateRangeFilterService.getDateRange(key).startDate;\n    }\n\n    private getEndDate(key: DateCloudFilterType) {\n        return this.dateRangeFilterService.getDateRange(key).endDate;\n    }\n\n    private isDateRangeType(type: DateCloudFilterType) {\n        return !!this.dateRangeFilterService.isDateRangeType(type);\n    }\n}\n\nexport interface ServiceTaskFilterCloudModel {\n    id?: string;\n    name?: string;\n    environmentId?: string;\n    key?: string;\n    icon?: string;\n    index?: number;\n    appName?: string;\n    status?: string;\n    sort?: string;\n    order?: string;\n    activityName?: string;\n    activityType?: string;\n    completedDate?: Date;\n    completedDateType?: DateCloudFilterType;\n    completedFrom?: string;\n    completedTo?: string;\n    elementId?: string;\n    executionId?: string;\n    processDefinitionId?: string;\n    processDefinitionKey?: string;\n    processDefinitionVersion?: number;\n    processInstanceId?: string;\n    serviceTaskId?: string;\n    serviceFullName?: string;\n    serviceName?: string;\n    serviceVersion?: string;\n    startedDate?: Date;\n    startedDateType?: DateCloudFilterType;\n    startedFrom?: string;\n    startedTo?: string;\n}\n\nexport interface FilterParamsModel {\n    id?: string;\n    name?: string;\n    key?: string;\n    index?: number;\n}\n\nexport interface TaskFilterAction {\n    actionType?: string;\n    icon?: string;\n    tooltip?: string;\n    filter?: TaskFilterCloudModel | ServiceTaskFilterCloudModel;\n}\n\nexport interface FilterOptions {\n    label?: string;\n    value?: string;\n}\n\nexport enum AssignmentType {\n    CURRENT_USER = 'CURRENT_USER',\n    UNASSIGNED = 'UNASSIGNED',\n    NONE = 'NONE',\n    CANDIDATE_GROUPS = 'CANDIDATE_GROUPS',\n    ASSIGNED_TO = 'ASSIGNED_TO'\n}\n\nexport enum TaskStatusFilter {\n    ALL = '',\n    CREATED = 'CREATED',\n    ASSIGNED = 'ASSIGNED',\n    SUSPENDED = 'SUSPENDED',\n    CANCELLED = 'CANCELLED',\n    COMPLETED = 'COMPLETED'\n}\n\nexport interface TaskFilterProperties {\n    label?: string;\n    type?: string;\n    value?: any;\n    key?: string;\n    attributes?: { [key: string]: string };\n    options?: FilterOptions[];\n    dateFilterOptions?: DateCloudFilterType[];\n    selectionMode?: ComponentSelectionMode;\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, of, BehaviorSubject, throwError, Subject } from 'rxjs';\nimport { TaskFilterCloudModel } from '../models/filter-cloud.model';\nimport { switchMap, map } from 'rxjs/operators';\nimport { BaseCloudService } from '../../../services/base-cloud.service';\nimport { PreferenceCloudServiceInterface } from '../../../services/preference-cloud.interface';\nimport { TASK_FILTERS_SERVICE_TOKEN } from '../../../services/cloud-token.service';\nimport { TaskCloudNodePaging } from '../../../models/task-cloud.model';\nimport { NotificationCloudService } from '../../../services/notification-cloud.service';\nimport { TaskCloudEngineEvent } from '../../../models/engine-event-cloud.model';\nimport { IdentityUserService } from '../../../people/services/identity-user.service';\nimport { AdfHttpClient } from '@alfresco/adf-core/api';\n\nconst TASK_EVENT_SUBSCRIPTION_QUERY = `\n    subscription {\n        engineEvents(eventType: [\n            TASK_COMPLETED\n            TASK_ASSIGNED\n            TASK_ACTIVATED\n            TASK_SUSPENDED\n            TASK_CANCELLED,\n            TASK_CREATED\n        ]) {\n            eventType\n            entity\n        }\n    }\n`;\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class TaskFilterCloudService extends BaseCloudService {\n    private filtersSubject = new BehaviorSubject<TaskFilterCloudModel[]>([]);\n    filters$ = this.filtersSubject.asObservable();\n    private filterKeyToBeRefreshedSource = new Subject<string>();\n    filterKeyToBeRefreshed$ = this.filterKeyToBeRefreshedSource.asObservable();\n\n    constructor(\n        private identityUserService: IdentityUserService,\n        @Inject(TASK_FILTERS_SERVICE_TOKEN)\n        public preferenceService: PreferenceCloudServiceInterface,\n        private notificationCloudService: NotificationCloudService,\n        adfHttpClient: AdfHttpClient\n    ) {\n        super(adfHttpClient);\n    }\n\n    /**\n     * Creates and returns the default task filters for an app.\n     *\n     * @param appName Name of the target app\n     */\n    private createDefaultFilters(appName: string): void {\n        const key: string = this.prepareKey(appName);\n        this.preferenceService\n            .getPreferences(appName, key)\n            .pipe(\n                switchMap((response) => {\n                    const preferences = response?.list?.entries || [];\n                    if (!this.hasPreferences(preferences) || !this.hasTaskFilters(preferences, key)) {\n                        return this.createTaskFilters(appName, key, this.defaultTaskFilters(appName));\n                    } else {\n                        return of(this.findFiltersByKeyInPreferences(preferences, key));\n                    }\n                }),\n                switchMap((filters) => this.handleCreateFilterBackwardsCompatibility(appName, key, filters))\n            )\n            .subscribe((filters) => {\n                this.addFiltersToStream(filters);\n            });\n    }\n\n    /**\n     * Checks user preference are empty or not\n     *\n     * @param preferences User preferences of the target app\n     * @returns Boolean value if the preferences are not empty\n     */\n    private hasPreferences(preferences: any): boolean {\n        return preferences && preferences.length > 0;\n    }\n\n    /**\n     * Checks for task filters in given user preferences\n     *\n     * @param preferences User preferences of the target app\n     * @param key Key of the task filters\n     * @returns Boolean value if the preference has task filters\n     */\n    private hasTaskFilters(preferences: any, key: string): boolean {\n        const filters = preferences.find((filter: any) => filter.entry.key === key);\n        return filters?.entry ? JSON.parse(filters.entry.value).length > 0 : false;\n    }\n\n    /**\n     * Calls create preference api to create task filters\n     *\n     * @param appName Name of the target app\n     * @param key Key of the task instance filters\n     * @param filters Details of new task filter\n     * @returns Observable of created task filters\n     */\n    private createTaskFilters(appName: string, key: string, filters: TaskFilterCloudModel[]): Observable<TaskFilterCloudModel[]> {\n        return this.preferenceService.createPreference(appName, key, filters);\n    }\n\n    /**\n     * Calls get preference api to get task filter by preference key\n     *\n     * @param appName Name of the target app\n     * @param key Key of the task filters\n     * @returns Observable of task filters\n     */\n    private getTaskFiltersByKey(appName: string, key: string): Observable<TaskFilterCloudModel[]> {\n        return this.preferenceService.getPreferenceByKey(appName, key);\n    }\n\n    /**\n     * Gets all task filters for a task app.\n     *\n     * @param appName Name of the target app\n     * @returns Observable of task filter details\n     */\n    getTaskListFilters(appName?: string): Observable<TaskFilterCloudModel[]> {\n        this.createDefaultFilters(appName);\n        return this.filters$;\n    }\n\n    /**\n     * Gets a task filter.\n     *\n     * @param appName Name of the target app\n     * @param id ID of the task\n     * @returns Details of the task filter\n     */\n    getTaskFilterById(appName: string, id: string): Observable<TaskFilterCloudModel> {\n        const key: string = this.prepareKey(appName);\n        return this.getTaskFiltersByKey(appName, key).pipe(\n            switchMap((filters) => {\n                if (filters && filters.length === 0) {\n                    return this.createTaskFilters(appName, key, this.defaultTaskFilters(appName));\n                } else {\n                    return of(filters);\n                }\n            }),\n            map((filters) => filters.filter((filter) => filter.id === id)[0])\n        );\n    }\n\n    /**\n     * Adds a new task filter.\n     *\n     * @param newFilter The new filter to add\n     * @returns Observable of task instance filters with newly added filter\n     */\n    addFilter(newFilter: TaskFilterCloudModel): Observable<TaskFilterCloudModel[]> {\n        const key: string = this.prepareKey(newFilter.appName);\n        return this.getTaskFiltersByKey(newFilter.appName, key).pipe(\n            switchMap((filters) => {\n                if (filters?.length === 0) {\n                    return this.createTaskFilters(newFilter.appName, key, [newFilter]);\n                } else {\n                    filters.push(newFilter);\n                    return this.preferenceService.updatePreference(newFilter.appName, key, filters);\n                }\n            }),\n            map((filters) => {\n                this.addFiltersToStream(filters);\n                return filters;\n            })\n        );\n    }\n\n    private addFiltersToStream(filters: TaskFilterCloudModel[]) {\n        this.filtersSubject.next(filters);\n    }\n\n    /**\n     * Updates a task filter.\n     *\n     * @param updatedFilter The filter to update\n     * @returns Observable of task instance filters with updated filter\n     */\n    updateFilter(updatedFilter: TaskFilterCloudModel): Observable<TaskFilterCloudModel[]> {\n        const key: string = this.prepareKey(updatedFilter.appName);\n        return this.getTaskFiltersByKey(updatedFilter.appName, key).pipe(\n            switchMap((filters) => {\n                if (filters?.length === 0) {\n                    return this.createTaskFilters(updatedFilter.appName, key, [updatedFilter]);\n                } else {\n                    const itemIndex = filters.findIndex((filter) => filter.id === updatedFilter.id);\n                    filters[itemIndex] = updatedFilter;\n                    return this.updateTaskFilters(updatedFilter.appName, key, filters);\n                }\n            }),\n            map((updatedFilters) => {\n                this.addFiltersToStream(updatedFilters);\n                return updatedFilters;\n            })\n        );\n    }\n\n    /**\n     * Deletes a task filter\n     *\n     * @param deletedFilter The filter to delete\n     * @returns Observable of task instance filters without deleted filter\n     */\n    deleteFilter(deletedFilter: TaskFilterCloudModel): Observable<TaskFilterCloudModel[]> {\n        const key = this.prepareKey(deletedFilter.appName);\n        return this.getTaskFiltersByKey(deletedFilter.appName, key).pipe(\n            switchMap((filters) => {\n                if (filters?.length > 0) {\n                    filters = filters.filter((filter) => filter.id !== deletedFilter.id);\n                    return this.updateTaskFilters(deletedFilter.appName, key, filters);\n                }\n                return of([]);\n            }),\n            map((filters) => {\n                this.addFiltersToStream(filters);\n                return filters;\n            })\n        );\n    }\n\n    /**\n     * Checks if given filter is a default filter\n     *\n     * @param filterName Name of the target task filter\n     * @returns Boolean value for whether the filter is a default filter\n     */\n    isDefaultFilter(filterName: string): boolean {\n        const defaultFilters = this.defaultTaskFilters();\n        return defaultFilters.findIndex((filter) => filterName === filter.name) !== -1;\n    }\n\n    /**\n     * Finds a task using an object with optional query properties.\n     *\n     * @returns Task information\n     * @param taskFilter task filter model\n     */\n    getTaskFilterCounter(taskFilter: TaskFilterCloudModel): Observable<number> {\n        if (taskFilter.appName || taskFilter.appName === '') {\n            const queryUrl = `${this.getBasePath(taskFilter.appName)}/query/v1/tasks`;\n            const queryParams = {\n                processInstanceId: taskFilter.processInstanceId,\n                processDefinitionId: taskFilter.processDefinitionId,\n                processDefinitionName: taskFilter.processDefinitionName,\n                assignee: taskFilter.assignee,\n                status: taskFilter.status,\n                taskName: taskFilter.taskName,\n                appName: taskFilter.appName,\n                assignmentType: taskFilter.assignmentType,\n                owner: taskFilter.owner,\n                taskId: taskFilter.taskId,\n                parentTaskId: taskFilter.parentTaskId,\n                priority: taskFilter.priority,\n                lastModifiedFrom: taskFilter.lastModifiedFrom,\n                lastModifiedTo: taskFilter.lastModifiedTo,\n                standalone: taskFilter.standalone,\n                createdDate: taskFilter.createdDate,\n                completedDate: taskFilter.completedDate,\n                completedBy: taskFilter.completedBy,\n                dueDate: taskFilter.dueDate,\n                maxItems: 1\n            };\n            return this.get<TaskCloudNodePaging>(queryUrl, queryParams).pipe(map((tasks) => tasks.list.pagination.totalItems));\n        } else {\n            return throwError('Appname not configured');\n        }\n    }\n\n    /**\n     * Calls update preference api to update task filter\n     *\n     * @param appName Name of the target app\n     * @param key Key of the task filters\n     * @param filters Details of update filter\n     * @returns Observable of updated task filters\n     */\n    private updateTaskFilters(appName: string, key: string, filters: TaskFilterCloudModel[]): Observable<TaskFilterCloudModel[]> {\n        return this.preferenceService.updatePreference(appName, key, filters);\n    }\n\n    /**\n     * Creates a uniq key with appName and username\n     *\n     * @param appName Name of the target app\n     * @returns String of task filters preference key\n     */\n    private prepareKey(appName: string): string {\n        return `task-filters-${appName}-${this.identityUserService.getCurrentUserInfo().username}`;\n    }\n\n    /**\n     * Finds and returns the task filters from preferences\n     *\n     * @returns Array of TaskFilterCloudModel\n     * @param preferences preferences\n     * @param key key\n     */\n    private findFiltersByKeyInPreferences(preferences: any, key: string): TaskFilterCloudModel[] {\n        const result = preferences.find((filter: any) => filter.entry.key === key);\n        return result?.entry ? JSON.parse(result.entry.value) : [];\n    }\n\n    /**\n     * Creates and returns the default filters for a task app.\n     *\n     * @param appName Name of the target app\n     * @returns Array of TaskFilterCloudModel\n     */\n    private defaultTaskFilters(appName?: string): TaskFilterCloudModel[] {\n        return [\n            new TaskFilterCloudModel({\n                name: 'ADF_CLOUD_TASK_FILTERS.MY_TASKS',\n                key: 'my-tasks',\n                icon: 'inbox',\n                appName,\n                status: 'ASSIGNED',\n                assignee: this.identityUserService.getCurrentUserInfo().username,\n                sort: 'createdDate',\n                order: 'DESC',\n                showCounter: true\n            }),\n            new TaskFilterCloudModel({\n                name: 'ADF_CLOUD_TASK_FILTERS.QUEUED_TASKS',\n                key: 'queued-tasks',\n                icon: 'queue',\n                appName,\n                status: 'CREATED',\n                assignee: '',\n                sort: 'createdDate',\n                order: 'DESC',\n                showCounter: true\n            }),\n            new TaskFilterCloudModel({\n                name: 'ADF_CLOUD_TASK_FILTERS.COMPLETED_TASKS',\n                key: 'completed-tasks',\n                icon: 'done',\n                appName,\n                status: 'COMPLETED',\n                assignee: '',\n                sort: 'createdDate',\n                order: 'DESC'\n            })\n        ];\n    }\n\n    getTaskNotificationSubscription(appName: string): Observable<TaskCloudEngineEvent[]> {\n        return this.notificationCloudService\n            .makeGQLQuery(appName, TASK_EVENT_SUBSCRIPTION_QUERY)\n            .pipe(map((events: any) => events.data.engineEvents));\n    }\n\n    /**\n     * Refresh filter key\n     *\n     * @param filterKey  Key of the filter\n     */\n    refreshFilter(filterKey: string): void {\n        this.filterKeyToBeRefreshedSource.next(filterKey);\n    }\n\n    /**\n     * This method is run after retrieving the filter array from preferences.\n     * It handles the backwards compatibility with the new API by looking for the new properties and their counterparts in each passed filter.\n     * If the new property is not found, it is created and assigned the value constructed from the old property.\n     * The filters are then updated in the preferences and returned.\n     * Old properties are left untouched for purposes like feature toggling.\n     *\n     * @param appName Name of the target app.\n     * @param key Key of the task filters.\n     * @param filters Array of task filters to be checked for backward compatibility.\n     * @returns Observable of task filters with updated properties.\n     */\n    private handleCreateFilterBackwardsCompatibility(\n        appName: string,\n        key: string,\n        filters: TaskFilterCloudModel[]\n    ): Observable<TaskFilterCloudModel[]> {\n        filters.forEach((filter) => {\n            if (filter.taskName && !filter.taskNames) {\n                filter.taskNames = [filter.taskName];\n            }\n            if (filter.status && !filter.statuses) {\n                filter.statuses = [filter.status];\n            }\n            if (filter.assignee && !filter.assignees) {\n                filter.assignees = [filter.assignee];\n            }\n            if (filter.processDefinitionName && !filter.processDefinitionNames) {\n                filter.processDefinitionNames = [filter.processDefinitionName];\n            }\n            if (filter.completedBy?.username && !filter.completedByUsers) {\n                filter.completedByUsers = [filter.completedBy.username];\n            }\n            if (filter.priority && !filter.priorities) {\n                filter.priorities = [`${filter.priority}`];\n            }\n        });\n\n        return this.updateTaskFilters(appName, key, filters);\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 { DestroyRef, Directive, EventEmitter, inject, Input, Output } from '@angular/core';\nimport { FilterParamsModel } from '../models/filter-cloud.model';\n\n@Directive()\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport abstract class BaseTaskFiltersCloudComponent {\n    /** Display filters available to the current user for the application with the specified name. */\n    @Input()\n    appName: string = '';\n\n    /**\n     * Parameters to use for the task filter cloud. If there is no match then the default filter\n     * (the first one in the list) is selected.\n     */\n    @Input()\n    filterParam: FilterParamsModel;\n\n    /** Toggles display of the filter's icons. */\n    @Input()\n    showIcons: boolean = false;\n\n    /** Emitted when the list is loaded. */\n    @Output()\n    success: EventEmitter<any> = new EventEmitter<any>();\n\n    /** Emitted when an error occurs during loading. */\n    @Output()\n    error: EventEmitter<any> = new EventEmitter<any>();\n\n    counters: { [key: string]: number } = {};\n    updatedCountersSet = new Set<string>();\n\n    protected destroyRef = inject(DestroyRef);\n\n    wasFilterUpdated(filterKey: string): boolean {\n        return this.updatedCountersSet.has(filterKey);\n    }\n\n    addToUpdatedCounters(filterKey: string) {\n        this.updatedCountersSet.add(filterKey);\n    }\n\n    resetFilterCounter(filterKey: string) {\n        this.updatedCountersSet.delete(filterKey);\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Injectable } from '@angular/core';\nimport { TaskQueryCloudRequestModel, TaskListRequestModel } from '../../../models/filter-cloud-model';\nimport { Observable, throwError } from 'rxjs';\nimport { TaskListCloudSortingModel } from '../../../models/task-list-sorting.model';\nimport { BaseCloudService } from '../../../services/base-cloud.service';\nimport { TaskCloudNodePaging } from '../../../models/task-cloud.model';\nimport { map } from 'rxjs/operators';\nimport { TaskListCloudServiceInterface } from '../../../services/task-list-cloud.service.interface';\n\n@Injectable({ providedIn: 'root' })\nexport class TaskListCloudService extends BaseCloudService implements TaskListCloudServiceInterface {\n    /**\n     * Finds a task using an object with optional query properties.\n     *\n     * @deprecated From Activiti 8.7.0 forward, use TaskListCloudService.fetchTaskList instead.\n     * @param requestNode Query object\n     * @param queryUrl Query url\n     * @returns Task information\n     */\n    getTaskByRequest(requestNode: TaskQueryCloudRequestModel, queryUrl?: string): Observable<any> {\n        if (requestNode.appName || requestNode.appName === '') {\n            queryUrl = queryUrl || `${this.getBasePath(requestNode.appName)}/query/v1/tasks`;\n            const queryParams = this.buildQueryParams(requestNode);\n            const sortingParams = this.buildSortingParam(requestNode.sorting);\n            if (sortingParams) {\n                queryParams['sort'] = sortingParams;\n            }\n            return this.get<TaskCloudNodePaging>(queryUrl, queryParams).pipe(\n                map((response) => {\n                    const entries = response.list?.entries;\n                    if (entries) {\n                        // TODO: this looks like a hack of the TaskCloudNodePaging collection\n                        response.list.entries = entries.map((entryData) => entryData.entry) as any;\n                    }\n                    return response;\n                })\n            );\n        } else {\n            return throwError('Appname not configured');\n        }\n    }\n\n    /**\n     * Available from Activiti version 8.7.0 onwards.\n     * Retrieves a list of tasks using an object with optional query properties.\n     *\n     * @param requestNode Query object\n     * @param queryUrl Query url\n     * @returns List of tasks\n     */\n    fetchTaskList(requestNode: TaskListRequestModel, queryUrl?: string): Observable<any> {\n        if (!requestNode?.appName) {\n            return throwError(() => new Error('Appname not configured'));\n        }\n\n        queryUrl = queryUrl || `${this.getBasePath(requestNode.appName)}/query/v1/tasks/search`;\n\n        const queryParams = {\n            maxItems: requestNode.pagination?.maxItems || 25,\n            skipCount: requestNode.pagination?.skipCount || 0\n        };\n\n        const queryData = this.buildQueryData(requestNode);\n\n        return this.post<any, TaskCloudNodePaging>(queryUrl, queryData, queryParams).pipe(\n            map((response) => {\n                const entries = response.list?.entries;\n                if (entries) {\n                    response.list.entries = entries.map((entryData) => entryData.entry) as any;\n                }\n                return response;\n            })\n        );\n    }\n\n    getTaskListCounter(requestNode: TaskListRequestModel): Observable<number> {\n        if (!requestNode.appName) {\n            return throwError(() => new Error('Appname not configured'));\n        }\n        return this.fetchTaskList(requestNode).pipe(map((tasks) => tasks.list.pagination.totalItems));\n    }\n\n    protected buildQueryData(requestNode: TaskListRequestModel) {\n        const queryData: any = {\n            id: requestNode.id,\n            parentId: requestNode.parentId,\n            processInstanceId: requestNode.processInstanceId,\n            status: requestNode.status,\n            processDefinitionName: requestNode.processDefinitionName,\n            processName: requestNode.processName,\n            assignee: requestNode.assignee,\n            priority: requestNode.priority,\n            name: requestNode.name,\n            completedBy: requestNode.completedBy,\n            completedFrom: requestNode.completedFrom,\n            completedTo: requestNode.completedTo,\n            createdFrom: requestNode.createdFrom,\n            createdTo: requestNode.createdTo,\n            dueDateFrom: requestNode.dueDateFrom,\n            dueDateTo: requestNode.dueDateTo,\n            processVariableKeys: requestNode.processVariableKeys,\n            processVariableFilters: requestNode.processVariableFilters\n        };\n\n        if (requestNode.sorting) {\n            queryData['sort'] = {\n                field: requestNode.sorting.orderBy,\n                direction: requestNode.sorting.direction.toLowerCase(),\n                isProcessVariable: requestNode.sorting.isFieldProcessVariable\n            };\n            if (queryData['sort'].isProcessVariable) {\n                queryData['sort'].processDefinitionKey = requestNode.sorting.processVariableData?.processDefinitionKey;\n                queryData['sort'].type = requestNode.sorting.processVariableData?.type;\n            }\n        }\n\n        /*\n         * Remove process variable filter keys with empty values from the query data.\n         */\n        if (queryData['processVariableFilters']) {\n            queryData['processVariableFilters'] = queryData['processVariableFilters'].filter(\n                (filter) => filter.value !== '' && filter.value !== null && filter.value !== undefined\n            );\n        }\n\n        /*\n         * Remove keys with empty values from the query data.\n         */\n        Object.keys(queryData).forEach((key) => {\n            const value = queryData[key];\n            const isValueEmpty = !value;\n            const isValueArrayWithEmptyValue = Array.isArray(value) && (value.length === 0 || value[0] === null);\n            if (isValueEmpty || isValueArrayWithEmptyValue) {\n                delete queryData[key];\n            }\n        });\n\n        return queryData;\n    }\n\n    protected buildQueryParams(requestNode: TaskQueryCloudRequestModel): any {\n        const queryParam: any = {};\n        for (const propertyKey in requestNode) {\n            if (\n                Object.prototype.hasOwnProperty.call(requestNode, propertyKey) &&\n                !this.isExcludedField(propertyKey) &&\n                this.isPropertyValueValid(requestNode, propertyKey)\n            ) {\n                if (propertyKey === 'variableKeys' && requestNode[propertyKey]?.length > 0) {\n                    queryParam[propertyKey] = requestNode[propertyKey].join(',');\n                } else {\n                    queryParam[propertyKey] = requestNode[propertyKey];\n                }\n            }\n        }\n        return queryParam;\n    }\n\n    protected isExcludedField(property: string): boolean {\n        return property === 'appName' || property === 'sorting';\n    }\n\n    protected isPropertyValueValid(requestNode: any, property: string): boolean {\n        return requestNode[property] !== '' && requestNode[property] !== null && requestNode[property] !== undefined;\n    }\n\n    protected buildSortingParam(models: TaskListCloudSortingModel[]): string {\n        let finalSorting: string = '';\n        if (models) {\n            for (const sort of models) {\n                if (!finalSorting) {\n                    finalSorting = `${sort.orderBy},${sort.direction}`;\n                } else {\n                    finalSorting = `${finalSorting}&${sort.orderBy},${sort.direction}`;\n                }\n            }\n        }\n        return encodeURI(finalSorting);\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, inject, Input, OnChanges, OnInit, Output, SimpleChanges, ViewEncapsulation } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { TaskFilterCloudService } from '../../services/task-filter-cloud.service';\nimport { FilterParamsModel, TaskFilterCloudModel } from '../../models/filter-cloud.model';\nimport { AppConfigService, IconComponent, TranslationService } from '@alfresco/adf-core';\nimport { debounceTime, tap } from 'rxjs/operators';\nimport { BaseTaskFiltersCloudComponent } from '../base-task-filters-cloud.component';\nimport { TaskDetailsCloudModel } from '../../../models/task-details-cloud.model';\nimport { TaskCloudEngineEvent } from '../../../../models/engine-event-cloud.model';\nimport { TaskListCloudService } from '../../../task-list/services/task-list-cloud.service';\nimport { TaskFilterCloudAdapter } from '../../../../models/filter-cloud-model';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { CommonModule } from '@angular/common';\nimport { MatListModule } from '@angular/material/list';\n\n@Component({\n    selector: 'adf-cloud-task-filters',\n    imports: [CommonModule, MatProgressSpinnerModule, TranslatePipe, IconComponent, MatListModule],\n    templateUrl: './task-filters-cloud.component.html',\n    styleUrls: ['./task-filters-cloud.component.scss'],\n    encapsulation: ViewEncapsulation.None\n})\nexport class TaskFiltersCloudComponent extends BaseTaskFiltersCloudComponent implements OnInit, OnChanges {\n    /** (optional) From Activiti 8.7.0 forward, use the 'POST' method to get the task count. */\n    @Input()\n    searchApiMethod: 'GET' | 'POST' = 'GET';\n\n    /** Emitted when a filter is being selected based on the filterParam input. */\n    @Output()\n    filterSelected = new EventEmitter<TaskFilterCloudModel>();\n\n    /** Emitted when a filter is being clicked from the UI. */\n    @Output()\n    filterClicked = new EventEmitter<TaskFilterCloudModel>();\n\n    /** Emitted when filter counters are updated. */\n    @Output()\n    filterCounterUpdated: EventEmitter<TaskCloudEngineEvent[]> = new EventEmitter<TaskCloudEngineEvent[]>();\n\n    /** Emitted when filter is updated. */\n    @Output()\n    updatedFilter: EventEmitter<string> = new EventEmitter<string>();\n\n    filters$: Observable<TaskFilterCloudModel[]>;\n    filters: TaskFilterCloudModel[] = [];\n    currentFilter: TaskFilterCloudModel;\n    enableNotifications: boolean;\n    currentFiltersValues: { [key: string]: number } = {};\n\n    private readonly taskFilterCloudService = inject(TaskFilterCloudService);\n    private readonly taskListCloudService = inject(TaskListCloudService);\n    private readonly translationService = inject(TranslationService);\n    private readonly appConfigService = inject(AppConfigService);\n\n    ngOnInit() {\n        this.enableNotifications = this.appConfigService.get('notifications', true);\n        this.getFilters(this.appName);\n        this.initFilterCounterNotifications();\n        this.getFilterKeysAfterExternalRefreshing();\n    }\n\n    ngOnChanges(changes: SimpleChanges) {\n        const appName = changes['appName'];\n        const filter = changes['filterParam'];\n        if (appName && appName.currentValue !== appName.previousValue) {\n            this.getFilters(appName.currentValue);\n        } else if (filter && filter.currentValue !== filter.previousValue) {\n            this.selectFilterAndEmit(filter.currentValue);\n        }\n    }\n\n    /**\n     * Loads the filter list filtered by appName\n     *\n     * @param appName application name\n     */\n    getFilters(appName: string): void {\n        this.filters$ = this.taskFilterCloudService.getTaskListFilters(appName);\n\n        this.filters$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe({\n            next: (res) => {\n                this.resetFilter();\n                this.filters = res || [];\n                this.initFilterCounters();\n                this.selectFilterAndEmit(this.filterParam);\n                this.updateFilterCounters();\n                this.success.emit(res);\n            },\n            error: (err) => {\n                this.error.emit(err);\n            }\n        });\n    }\n\n    /**\n     * Initialize counter collection for filters\n     */\n    initFilterCounters(): void {\n        this.filters.forEach((filter) => (this.counters[filter.key] = 0));\n    }\n\n    /**\n     * Iterate over filters and update counters\n     */\n    updateFilterCounters(): void {\n        this.filters.forEach((filter: TaskFilterCloudModel) => this.updateFilterCounter(filter));\n    }\n\n    /**\n     *  Get current value for filter and check if value has changed\n     *\n     * @param filter filter\n     */\n    updateFilterCounter(filter: TaskFilterCloudModel): void {\n        if (!filter?.showCounter) {\n            return;\n        }\n        this.fetchTaskFilterCounter(filter)\n            .pipe(\n                tap((filterCounter) => {\n                    this.checkIfFilterValuesHasBeenUpdated(filter.key, filterCounter);\n                })\n            )\n            .subscribe((data) => {\n                this.counters = {\n                    ...this.counters,\n                    [filter.key]: data\n                };\n            });\n    }\n\n    private fetchTaskFilterCounter(filter: TaskFilterCloudModel): Observable<number> {\n        return this.searchApiMethod === 'POST'\n            ? this.taskListCloudService.getTaskListCounter(new TaskFilterCloudAdapter(filter))\n            : this.taskFilterCloudService.getTaskFilterCounter(filter);\n    }\n\n    initFilterCounterNotifications() {\n        if (!this.appName) {\n            return;\n        }\n        if (this.enableNotifications) {\n            this.taskFilterCloudService\n                .getTaskNotificationSubscription(this.appName)\n                .pipe(debounceTime(1000))\n                .subscribe((result) => {\n                    result.forEach((taskEvent) => {\n                        this.checkFilterCounter(taskEvent.entity);\n                    });\n\n                    this.updateFilterCounters();\n                    this.filterCounterUpdated.emit(result);\n                });\n        } else {\n            this.counters = {};\n        }\n    }\n\n    checkFilterCounter(filterNotification: TaskDetailsCloudModel) {\n        this.filters.forEach((filter) => {\n            if (this.isFilterPresent(filter, filterNotification)) {\n                this.addToUpdatedCounters(filter.key);\n            }\n        });\n    }\n\n    isFilterPresent(filter: TaskFilterCloudModel, filterNotification: TaskDetailsCloudModel): boolean {\n        return (\n            filter.status === filterNotification.status &&\n            (filter.assignee === filterNotification.assignee || filterNotification.assignee === undefined)\n        );\n    }\n\n    public selectFilter(paramFilter: FilterParamsModel) {\n        if (!paramFilter) {\n            return;\n        }\n\n        const preferredFilter = this.filters.find((filter) => filter.id === paramFilter.id);\n\n        this.currentFilter =\n            preferredFilter ??\n            this.filters.find(\n                (filter, index) =>\n                    paramFilter.index === index ||\n                    paramFilter.key === filter.key ||\n                    paramFilter.id === filter.id ||\n                    (paramFilter.name && paramFilter.name.toLocaleLowerCase() === this.translationService.instant(filter.name).toLocaleLowerCase())\n            ); // fallback to preserve the previous behavior\n    }\n\n    public selectFilterAndEmit(newParamFilter: FilterParamsModel) {\n        if (newParamFilter) {\n            this.selectFilter(newParamFilter);\n\n            if (this.currentFilter) {\n                this.resetFilterCounter(this.currentFilter.key);\n                this.filterSelected.emit(this.currentFilter);\n            }\n        } else {\n            this.currentFilter = undefined;\n        }\n    }\n\n    /**\n     * Selects and emits the clicked filter.\n     *\n     * @param filter filter model\n     */\n    onFilterClick(filter: FilterParamsModel) {\n        if (filter) {\n            this.selectFilter(filter);\n            this.updateFilterCounter(this.currentFilter);\n            this.filterClicked.emit(this.currentFilter);\n            this.updatedCountersSet.delete(filter.key);\n        } else {\n            this.currentFilter = undefined;\n        }\n    }\n\n    /**\n     * @deprecated unused method\n     * Select as default task filter the first in the list\n     */\n    public selectDefaultTaskFilter() {\n        if (!this.isFilterListEmpty()) {\n            this.currentFilter = this.filters[0];\n        }\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     * Reset the filters properties\n     */\n    private resetFilter() {\n        this.filters = [];\n        this.currentFilter = undefined;\n    }\n\n    checkIfFilterValuesHasBeenUpdated(filterKey: string, filterValue: number) {\n        if (this.currentFiltersValues[filterKey] === undefined || this.currentFiltersValues[filterKey] !== filterValue) {\n            this.currentFiltersValues[filterKey] = filterValue;\n            this.updatedFilter.emit(filterKey);\n            this.updatedCountersSet.add(filterKey);\n        }\n    }\n\n    /**\n     * Get filer key when filter was refreshed by external action\n     *\n     */\n    getFilterKeysAfterExternalRefreshing(): void {\n        this.taskFilterCloudService.filterKeyToBeRefreshed$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((filterKey: string) => {\n            this.updatedCountersSet.delete(filterKey);\n        });\n    }\n}\n","<mat-action-list class=\"adf-task-filters\" *ngIf=\"filters$ | async as filterList; else loading\">\n        <button\n            *ngFor=\"let filter of filterList\"\n            mat-list-item\n            (click)=\"onFilterClick(filter)\"\n            [attr.aria-label]=\"filter.name | translate\"\n            [id]=\"filter.id\"\n            [attr.data-automation-id]=\"filter.key + '_filter'\"\n            [class.adf-active]=\"currentFilter === filter\">\n            <div class=\"adf-task-filters__entry\">\n                <div class=\"adf-task-filters__entry-label\">\n                    <adf-icon data-automation-id=\"adf-filter-icon\"\n                        *ngIf=\"showIcons\"\n                        [value]=\"filter.icon\"\n                    />\n                    <span data-automation-id=\"adf-filter-label\">\n                        {{ filter.name | translate }}\n                    </span>\n                </div>\n                <span *ngIf=\"counters[filter.key]\"\n                    [attr.data-automation-id]=\"filter.key + '_filter-counter'\"\n                    class=\"adf-task-filters__entry-counter\"\n                    [class.adf-active]=\"wasFilterUpdated(filter.key)\">\n                    {{ counters[filter.key] }}\n                </span>\n            </div>\n        </button>\n    </mat-action-list>\n<ng-template #loading>\n    <ng-container>\n        <div class=\"adf-app-list-spinner\">\n            <mat-spinner />\n        </div>\n    </ng-container>\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 { Injectable, Inject } from '@angular/core';\nimport { Observable, of, BehaviorSubject } from 'rxjs';\nimport { ServiceTaskFilterCloudModel } from '../models/filter-cloud.model';\nimport { switchMap, map } from 'rxjs/operators';\nimport { PreferenceCloudServiceInterface } from '../../../services/preference-cloud.interface';\nimport { TASK_FILTERS_SERVICE_TOKEN } from '../../../services/cloud-token.service';\nimport { IdentityUserService } from '../../../people/services/identity-user.service';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class ServiceTaskFilterCloudService {\n    private filtersSubject = new BehaviorSubject<ServiceTaskFilterCloudModel[]>([]);\n    filters$ = this.filtersSubject.asObservable();\n\n    constructor(\n        private identityUserService: IdentityUserService,\n        @Inject(TASK_FILTERS_SERVICE_TOKEN)\n        public preferenceService: PreferenceCloudServiceInterface\n    ) {}\n\n    /**\n     * Creates and returns the default task filters for an app.\n     *\n     * @param appName Name of the target app\n     */\n    private createDefaultFilters(appName: string): void {\n        const key: string = this.prepareKey(appName);\n        this.preferenceService\n            .getPreferences(appName, key)\n            .pipe(\n                switchMap((response) => {\n                    const preferences = response?.list?.entries || [];\n                    if (!this.hasPreferences(preferences) || !this.hasTaskFilters(preferences, key)) {\n                        return this.createTaskFilters(appName, key, this.defaultServiceTaskFilters(appName));\n                    } else {\n                        return of(this.findFiltersByKeyInPreferences(preferences, key));\n                    }\n                })\n            )\n            .subscribe((filters) => {\n                this.addFiltersToStream(filters);\n            });\n    }\n\n    /**\n     * Checks user preference are empty or not\n     *\n     * @param preferences User preferences of the target app\n     * @returns Boolean value if the preferences are not empty\n     */\n    private hasPreferences(preferences: any): boolean {\n        return preferences?.length > 0;\n    }\n\n    /**\n     * Checks for task filters in given user preferences\n     *\n     * @param preferences User preferences of the target app\n     * @param key Key of the task filters\n     * @returns Boolean value if the preference has task filters\n     */\n    private hasTaskFilters(preferences: any, key: string): boolean {\n        const filters = preferences.find((filter: any) => filter.entry.key === key);\n        return filters?.entry ? JSON.parse(filters.entry.value).length > 0 : false;\n    }\n\n    /**\n     * Calls create preference api to create task filters\n     *\n     * @param appName Name of the target app\n     * @param key Key of the task instance filters\n     * @param filters Details of new task filter\n     * @returns Observable of created task filters\n     */\n    private createTaskFilters(appName: string, key: string, filters: ServiceTaskFilterCloudModel[]): Observable<ServiceTaskFilterCloudModel[]> {\n        return this.preferenceService.createPreference(appName, key, filters);\n    }\n\n    /**\n     * Calls get preference api to get task filter by preference key\n     *\n     * @param appName Name of the target app\n     * @param key Key of the task filters\n     * @returns Observable of task filters\n     */\n    private getTaskFiltersByKey(appName: string, key: string): Observable<ServiceTaskFilterCloudModel[]> {\n        return this.preferenceService.getPreferenceByKey(appName, key);\n    }\n\n    /**\n     * Gets all task filters for a task app.\n     *\n     * @param appName Name of the target app\n     * @returns Observable of task filter details\n     */\n    getTaskListFilters(appName?: string): Observable<ServiceTaskFilterCloudModel[]> {\n        this.createDefaultFilters(appName);\n        return this.filters$;\n    }\n\n    /**\n     * Gets a task filter.\n     *\n     * @param appName Name of the target app\n     * @param id ID of the task\n     * @returns Details of the task filter\n     */\n    getTaskFilterById(appName: string, id: string): Observable<ServiceTaskFilterCloudModel> {\n        const key: string = this.prepareKey(appName);\n        return this.getTaskFiltersByKey(appName, key).pipe(\n            switchMap((filters) => {\n                if (filters && filters.length === 0) {\n                    return this.createTaskFilters(appName, key, this.defaultServiceTaskFilters(appName));\n                } else {\n                    return of(filters);\n                }\n            }),\n            map((filters) => filters.filter((filter) => filter.id === id)[0])\n        );\n    }\n\n    /**\n     * Adds a new task filter.\n     *\n     * @param newFilter The new filter to add\n     * @returns Observable of task instance filters with newly added filter\n     */\n    addFilter(newFilter: ServiceTaskFilterCloudModel): Observable<ServiceTaskFilterCloudModel[]> {\n        const key: string = this.prepareKey(newFilter.appName);\n        return this.getTaskFiltersByKey(newFilter.appName, key).pipe(\n            switchMap((filters) => {\n                if (filters && filters.length === 0) {\n                    return this.createTaskFilters(newFilter.appName, key, [newFilter]);\n                } else {\n                    filters.push(newFilter);\n                    return this.preferenceService.updatePreference(newFilter.appName, key, filters);\n                }\n            }),\n            map((filters: ServiceTaskFilterCloudModel[]) => {\n                this.addFiltersToStream(filters);\n                return filters;\n            })\n        );\n    }\n\n    private addFiltersToStream(filters: ServiceTaskFilterCloudModel[]) {\n        this.filtersSubject.next(filters);\n    }\n\n    /**\n     * Updates a task filter.\n     *\n     * @param updatedFilter The filter to update\n     * @returns Observable of task instance filters with updated filter\n     */\n    updateFilter(updatedFilter: ServiceTaskFilterCloudModel): Observable<ServiceTaskFilterCloudModel[]> {\n        const key: string = this.prepareKey(updatedFilter.appName);\n        return this.getTaskFiltersByKey(updatedFilter.appName, key).pipe(\n            switchMap((filters) => {\n                if (filters?.length === 0) {\n                    return this.createTaskFilters(updatedFilter.appName, key, [updatedFilter]);\n                } else {\n                    const itemIndex = filters.findIndex((filter) => filter.id === updatedFilter.id);\n                    filters[itemIndex] = updatedFilter;\n                    return this.updateTaskFilters(updatedFilter.appName, key, filters);\n                }\n            }),\n            map((updatedFilters) => {\n                this.addFiltersToStream(updatedFilters);\n                return updatedFilters;\n            })\n        );\n    }\n\n    /**\n     * Deletes a task filter\n     *\n     * @param deletedFilter The filter to delete\n     * @returns Observable of task instance filters without deleted filter\n     */\n    deleteFilter(deletedFilter: ServiceTaskFilterCloudModel): Observable<ServiceTaskFilterCloudModel[]> {\n        const key = this.prepareKey(deletedFilter.appName);\n        return this.getTaskFiltersByKey(deletedFilter.appName, key).pipe(\n            switchMap((filters) => {\n                if (filters?.length > 0) {\n                    filters = filters.filter((filter) => filter.id !== deletedFilter.id);\n                    return this.updateTaskFilters(deletedFilter.appName, key, filters);\n                }\n                return of([]);\n            }),\n            map((filters) => {\n                this.addFiltersToStream(filters);\n                return filters;\n            })\n        );\n    }\n\n    /**\n     * Checks if given filter is a default filter\n     *\n     * @param filterName Name of the target task filter\n     * @returns Boolean value for whether the filter is a default filter\n     */\n    isDefaultFilter(filterName: string): boolean {\n        const defaultFilters = this.defaultServiceTaskFilters();\n        return defaultFilters.findIndex((filter) => filterName === filter.name) !== -1;\n    }\n\n    /**\n     * Calls update preference api to update task filter\n     *\n     * @param appName Name of the target app\n     * @param key Key of the task filters\n     * @param filters Details of update filter\n     * @returns Observable of updated task filters\n     */\n    private updateTaskFilters(appName: string, key: string, filters: ServiceTaskFilterCloudModel[]): Observable<ServiceTaskFilterCloudModel[]> {\n        return this.preferenceService.updatePreference(appName, key, filters);\n    }\n\n    /**\n     * Creates a uniq key with appName and username\n     *\n     * @param appName Name of the target app\n     * @returns String of task filters preference key\n     */\n    private prepareKey(appName: string): string {\n        return `service-task-filters-${appName}-${this.identityUserService.getCurrentUserInfo().username}`;\n    }\n\n    /**\n     * Finds and returns the task filters from preferences\n     *\n     * @returns Array of TaskFilterCloudModel\n     * @param preferences preferences\n     * @param key key\n     */\n    private findFiltersByKeyInPreferences(preferences: any, key: string): ServiceTaskFilterCloudModel[] {\n        const result = preferences.find((filter: any) => filter.entry.key === key);\n        return result?.entry ? JSON.parse(result.entry.value) : [];\n    }\n\n    /**\n     * Creates and returns the default filters for a task app.\n     *\n     * @param appName Name of the target app\n     * @returns Array of TaskFilterCloudModel\n     */\n    private defaultServiceTaskFilters(appName?: string): ServiceTaskFilterCloudModel[] {\n        return [\n            {\n                id: this.generateRandomId(),\n                name: 'ADF_CLOUD_SERVICE_TASK_FILTERS.ALL_SERVICE_TASKS',\n                key: 'my-service-tasks',\n                icon: 'inbox',\n                appName,\n                status: '',\n                sort: 'startedDate',\n                order: 'DESC'\n            } as ServiceTaskFilterCloudModel,\n            {\n                id: this.generateRandomId(),\n                name: 'ADF_CLOUD_SERVICE_TASK_FILTERS.COMPLETED_TASKS',\n                key: 'completed-tasks',\n                icon: 'done',\n                appName,\n                status: 'COMPLETED',\n                sort: 'completedDate',\n                order: 'DESC'\n            } as ServiceTaskFilterCloudModel,\n            {\n                id: this.generateRandomId(),\n                name: 'ADF_CLOUD_SERVICE_TASK_FILTERS.ERRORED_TASKS',\n                key: 'errored-service-tasks',\n                icon: 'error',\n                appName,\n                status: 'ERROR',\n                sort: 'startedDate',\n                order: 'DESC'\n            } as ServiceTaskFilterCloudModel\n        ];\n    }\n\n    generateRandomId(): string {\n        return Math.random().toString(36).substring(2, 9);\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, Inject, OnInit, ViewEncapsulation } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { AbstractControl, ReactiveFormsModule, UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n    selector: 'adf-cloud-task-filter-dialog',\n    imports: [CommonModule, TranslatePipe, MatInputModule, ReactiveFormsModule, MatDialogModule, MatCardModule, MatButtonModule],\n    templateUrl: './task-filter-dialog-cloud.component.html',\n    styleUrls: ['./task-filter-dialog-cloud.component.scss'],\n    encapsulation: ViewEncapsulation.None\n})\nexport class TaskFilterDialogCloudComponent implements OnInit {\n    // eslint-disable-next-line @typescript-eslint/naming-convention\n    public static ACTION_SAVE = 'SAVE';\n    defaultIcon = 'inbox';\n\n    filterForm: UntypedFormGroup;\n\n    constructor(\n        private fb: UntypedFormBuilder,\n        public dialogRef: MatDialogRef<TaskFilterDialogCloudComponent>,\n        @Inject(MAT_DIALOG_DATA) public data\n    ) {}\n\n    ngOnInit() {\n        this.filterForm = this.fb.group({\n            name: [this.data.name, Validators.required]\n        });\n    }\n\n    onSaveClick() {\n        this.dialogRef.close({\n            action: TaskFilterDialogCloudComponent.ACTION_SAVE,\n            icon: this.defaultIcon,\n            name: this.nameController.value\n        });\n    }\n\n    onCancelClick() {\n        this.dialogRef.close();\n    }\n\n    get nameController(): AbstractControl {\n        return this.filterForm.get('name');\n    }\n\n    isValid(): boolean {\n        return this.filterForm.valid;\n    }\n}\n","<div class=\"adf-task-filter-dialog\">\n    <span mat-dialog-title id=\"adf-task-filter-dialog-title\">\n         {{ 'ADF_CLOUD_EDIT_TASK_FILTER.DIALOG.TITLE' | translate}}\n    </span>\n    <mat-card appearance=\"outlined\" class=\"adf-task-filter-dialog-card\">\n        <mat-card-content class=\"adf-task-filter-dialog-card-content\">\n        <form [formGroup]=\"filterForm\">\n            <mat-form-field class=\"adf-task-filter-name\" [floatLabel]=\"'auto'\">\n                <input matInput placeholder=\"{{ 'ADF_CLOUD_EDIT_TASK_FILTER.FILTER_NAME' | translate }}\" formControlName=\"name\" id=\"adf-filter-name-id\">\n            </mat-form-field>\n        </form>\n        </mat-card-content>\n        <mat-card-actions class=\"adf-task-filter-dialog-card-actions\">\n            <button mat-button (click)=\"onSaveClick()\" id=\"adf-save-button-id\" [disabled]=\"!isValid()\">\n                {{ 'ADF_CLOUD_EDIT_TASK_FILTER.DIALOG.SAVE' | translate}}\n            </button>\n            <button mat-button (click)=\"onCancelClick()\" id=\"adf-cancel-button-id\">\n               {{ 'ADF_CLOUD_EDIT_TASK_FILTER.DIALOG.CANCEL' | translate}}\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 { DestroyRef, Directive, EventEmitter, inject, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { AssignmentType, FilterOptions, TaskFilterAction, TaskFilterProperties, TaskStatusFilter } from '../../models/filter-cloud.model';\nimport { TaskCloudService } from './../../../services/task-cloud.service';\nimport { AppsProcessCloudService } from './../../../../app/services/apps-process-cloud.service';\nimport { DateCloudFilterType, DateRangeFilter } from '../../../../models/date-cloud-filter.model';\nimport { AbstractControl, UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';\nimport { debounceTime, filter, finalize, switchMap } from 'rxjs/operators';\nimport { Observable } from 'rxjs';\nimport { DateAdapter } from '@angular/material/core';\nimport { DateFnsUtils, TranslationService, UserPreferencesService, UserPreferenceValues } from '@alfresco/adf-core';\nimport { TaskFilterDialogCloudComponent } from '../task-filter-dialog/task-filter-dialog-cloud.component';\nimport { MatDialog } from '@angular/material/dialog';\nimport { IdentityUserModel } from '../../../../people/models/identity-user.model';\nimport { IdentityGroupModel } from '../../../../group/models/identity-group.model';\nimport { MatSelectChange } from '@angular/material/select';\nimport { Environment } from '../../../../common/interface/environment.interface';\nimport { isValid } from 'date-fns';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n/* eslint-disable @typescript-eslint/naming-convention */\n\nexport interface DropdownOption {\n    value: string;\n    label: string;\n}\n\nconst ACTION_SAVE = 'save';\nconst ACTION_SAVE_AS = 'saveAs';\nconst ACTION_DELETE = 'delete';\nconst APP_DEPLOYED_STATUS = 'DEPLOYED';\nconst APPLICATION_NAME = 'appName';\nconst PROCESS_DEFINITION_NAME = 'processDefinitionName';\nconst LAST_MODIFIED_PROPERTY = 'lastModified';\nconst DATE_FORMAT = 'DD/MM/YYYY';\nconst DEFAULT_ACTIONS = [ACTION_SAVE, ACTION_SAVE_AS, ACTION_DELETE];\nconst SORT_PROPERTY = 'sort';\nconst ORDER_PROPERTY = 'order';\n\n@Directive()\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport abstract class BaseEditTaskFilterCloudComponent<T> implements OnInit, OnChanges {\n    public static ACTIONS_DISABLED_BY_DEFAULT = [ACTION_SAVE, ACTION_DELETE];\n\n    /** (required) Name of the app. */\n    @Input()\n    appName: string = '';\n\n    /** (required) ID of the task filter. */\n    @Input()\n    id: string;\n\n    /** List of environments. */\n    @Input()\n    environmentList: Environment[] = [];\n\n    /** processInstanceId of the task filter. */\n    @Input()\n    processInstanceId: string;\n\n    /** Toggles the title. */\n    @Input()\n    showTitle = true;\n\n    /** Toggles display of task filter name */\n    @Input()\n    showTaskFilterName = true;\n\n    /** List of task filter properties to display. */\n    @Input()\n    filterProperties: string[] = [];\n\n    /** user role. */\n    @Input()\n    role: string = '';\n\n    /** Toggles the filter actions. */\n    @Input()\n    showFilterActions = true;\n\n    /** List of task filter actions. */\n    @Input()\n    actions: string[] = [...DEFAULT_ACTIONS];\n\n    /** List of sort properties to display. */\n    @Input()\n    sortProperties: string[] = [];\n\n    /** Emitted when a filter action occurs (i.e Save, Save As, Delete). */\n    @Output()\n    action = new EventEmitter<TaskFilterAction>();\n\n    protected applicationNames: DropdownOption[] = [];\n    protected processDefinitionNames: DropdownOption[] = [];\n    protected formHasBeenChanged = false;\n\n    editTaskFilterForm: UntypedFormGroup;\n    taskFilterProperties: TaskFilterProperties[] = [];\n    taskFilterActions: TaskFilterAction[] = [];\n    toggleFilterActions: boolean = false;\n    selectedStatus: TaskStatusFilter;\n    sortDirections: DropdownOption[] = [\n        { value: 'ASC', label: 'ADF_CLOUD_TASK_FILTERS.DIRECTION.ASCENDING' },\n        { value: 'DESC', label: 'ADF_CLOUD_TASK_FILTERS.DIRECTION.DESCENDING' }\n    ];\n    allProcessDefinitionNamesOption: DropdownOption = {\n        value: '',\n        label: 'ADF_CLOUD_TASK_FILTERS.STATUS.ALL'\n    };\n\n    /** Task Filter to use. */\n    @Input()\n    taskFilter: T;\n\n    changedTaskFilter: T;\n\n    /** Emitted when a task filter property changes. */\n    @Output()\n    filterChange = new EventEmitter<T>();\n\n    isLoading: boolean = false;\n\n    protected destroyRef = inject(DestroyRef);\n    protected translateService = inject(TranslationService);\n    protected taskCloudService = inject(TaskCloudService);\n    protected userPreferencesService = inject(UserPreferencesService);\n    protected appsProcessCloudService = inject(AppsProcessCloudService);\n    protected dialog = inject(MatDialog);\n    protected formBuilder = inject(UntypedFormBuilder);\n    protected dateAdapter = inject<DateAdapter<Date>>(DateAdapter);\n\n    ngOnInit() {\n        this.userPreferencesService\n            .select(UserPreferenceValues.Locale)\n            .pipe(takeUntilDestroyed(this.destroyRef))\n            .subscribe((locale) => this.dateAdapter.setLocale(locale));\n    }\n\n    ngOnChanges(changes: SimpleChanges) {\n        const { id } = changes;\n        if (id && id.currentValue !== id.previousValue) {\n            if (this.taskFilter && this.taskFilter['id'] === id.currentValue) {\n                this.taskFilterProperties = this.createAndFilterProperties();\n                this.taskFilterActions = this.createAndFilterActions();\n                this.buildForm(this.taskFilterProperties);\n            } else {\n                this.retrieveTaskFilterAndBuildForm();\n            }\n        }\n    }\n\n    createFilterActions(): TaskFilterAction[] {\n        return [\n            {\n                actionType: ACTION_SAVE,\n                icon: 'adf:save',\n                tooltip: 'ADF_CLOUD_EDIT_TASK_FILTER.TOOL_TIP.SAVE'\n            },\n            {\n                actionType: ACTION_SAVE_AS,\n                icon: 'adf:save-as',\n                tooltip: 'ADF_CLOUD_EDIT_TASK_FILTER.TOOL_TIP.SAVE_AS'\n            },\n            {\n                actionType: ACTION_DELETE,\n                icon: 'delete',\n                tooltip: 'ADF_CLOUD_EDIT_TASK_FILTER.TOOL_TIP.DELETE'\n            }\n        ];\n    }\n\n    hasFormChanged(action: TaskFilterAction): boolean {\n        if (action.actionType === ACTION_SAVE) {\n            return !this.formHasBeenChanged;\n        }\n        if (action.actionType === ACTION_SAVE_AS) {\n            return !this.formHasBeenChanged;\n        }\n        if (action.actionType === ACTION_DELETE) {\n            return false;\n        }\n\n        return false;\n    }\n\n    onExpand(): void {\n        this.toggleFilterActions = true;\n    }\n\n    onClose(): void {\n        this.toggleFilterActions = false;\n    }\n\n    isDisabledAction(action: TaskFilterAction): boolean {\n        return this.isDisabledForDefaultFilters(action) ? true : this.hasFormChanged(action);\n    }\n\n    protected deepCompare(left: any, right: any): boolean {\n        return JSON.stringify(left).toLowerCase() === JSON.stringify(right).toLowerCase();\n    }\n\n    /**\n     * Get the sanitized filter name\n     *\n     * @param filterName filter name\n     * @returns sanitized filter name\n     */\n    getSanitizeFilterName(filterName: string): string {\n        const nameWithHyphen = this.replaceSpaceWithHyphen(filterName.trim());\n        return nameWithHyphen.toLowerCase();\n    }\n\n    private replaceSpaceWithHyphen(name: string): string {\n        const regExt = new RegExp(' ', 'g');\n        return name.replace(regExt, '-');\n    }\n\n    executeFilterActions(action: TaskFilterAction): void {\n        if (action.actionType === ACTION_SAVE) {\n            this.save(action);\n        } else if (action.actionType === ACTION_SAVE_AS) {\n            this.saveAs(action);\n        } else if (action.actionType === ACTION_DELETE) {\n            this.delete(action);\n        }\n    }\n\n    getDeployedApplications() {\n        this.appsProcessCloudService.getDeployedApplicationsByStatus(APP_DEPLOYED_STATUS, this.role).subscribe((applications) => {\n            if (applications && applications.length > 0) {\n                applications.map((application) => {\n                    this.applicationNames.push({\n                        label: this.appsProcessCloudService.getApplicationLabel(application, this.environmentList),\n                        value: application.name\n                    });\n                });\n            }\n        });\n    }\n\n    getProcessDefinitions() {\n        this.taskCloudService.getProcessDefinitions(this.appName).subscribe((processDefinitions) => {\n            if (processDefinitions && processDefinitions.length > 0) {\n                this.processDefinitionNames.push(this.allProcessDefinitionNamesOption);\n                processDefinitions.map((processDefinition) => {\n                    this.processDefinitionNames.push({ label: processDefinition.name, value: processDefinition.name });\n                });\n            }\n        });\n    }\n\n    checkMandatoryActions(): void {\n        if (this.actions === undefined || this.actions.length === 0) {\n            this.actions = [...DEFAULT_ACTIONS];\n        }\n    }\n\n    private isValidAction(actions: string[], action: any): boolean {\n        return actions ? actions.indexOf(action.actionType) >= 0 : true;\n    }\n\n    isFormValid(): boolean {\n        return this.editTaskFilterForm.valid;\n    }\n\n    getPropertyController(property: TaskFilterProperties): AbstractControl {\n        return this.editTaskFilterForm.get(property.key);\n    }\n\n    onDateChanged(newDateValue: string | Date, dateProperty: TaskFilterProperties) {\n        if (newDateValue) {\n            let date: Date;\n\n            if (typeof newDateValue === 'string') {\n                date = DateFnsUtils.parseDate(newDateValue, DATE_FORMAT);\n            } else {\n                date = newDateValue;\n            }\n\n            const controller = this.getPropertyController(dateProperty);\n\n            if (isValid(date)) {\n                controller.setValue(date.toISOString());\n                controller.setErrors(null);\n            } else {\n                controller.setErrors({ invalid: true });\n            }\n        }\n    }\n\n    onDateRangeFilterChanged(dateRange: DateRangeFilter, property: TaskFilterProperties) {\n        this.editTaskFilterForm.get(property.attributes?.from).setValue(dateRange.startDate ? dateRange.startDate : null);\n        this.editTaskFilterForm.get(property.attributes?.to).setValue(dateRange.endDate ? dateRange.endDate : null);\n        this.editTaskFilterForm.get(property.attributes.dateType).setValue(DateCloudFilterType.RANGE);\n    }\n\n    onChangedUser(users: IdentityUserModel[], userProperty: TaskFilterProperties) {\n        let selectedUsers;\n        if (userProperty.selectionMode === 'single') {\n            selectedUsers = users[0];\n        } else {\n            selectedUsers = users;\n        }\n        this.getPropertyController(userProperty).setValue(selectedUsers);\n    }\n\n    onAssignedUsersChange(assignedUsers: IdentityUserModel[]) {\n        this.editTaskFilterForm.get('candidateGroups').setValue(undefined);\n        this.editTaskFilterForm.get('assignedUsers').setValue(assignedUsers);\n    }\n\n    onAssignedGroupsChange(groups: IdentityGroupModel[]) {\n        this.editTaskFilterForm.get('assignedUsers').setValue(undefined);\n        this.editTaskFilterForm.get('candidateGroups').setValue(groups);\n    }\n\n    onAssignmentTypeChange(assignmentType: AssignmentType) {\n        switch (assignmentType) {\n            case AssignmentType.UNASSIGNED:\n                this.editTaskFilterForm.get('status').setValue(TaskStatusFilter.CREATED);\n                this.resetAssignmentTypeValues();\n                break;\n            case AssignmentType.NONE:\n                this.editTaskFilterForm.get('status').setValue(TaskStatusFilter.ALL);\n                this.resetAssignmentTypeValues();\n                break;\n            case AssignmentType.ASSIGNED_TO:\n            case AssignmentType.CANDIDATE_GROUPS:\n                this.editTaskFilterForm.get('status').setValue(TaskStatusFilter.ASSIGNED);\n                this.resetAssignmentTypeValues();\n                break;\n            default:\n                this.editTaskFilterForm.get('status').setValue(TaskStatusFilter.ASSIGNED);\n        }\n    }\n\n    onStatusChange(status: MatSelectChange) {\n        if (status.value === TaskStatusFilter.CREATED) {\n            this.resetAssignmentTypeValues();\n        }\n\n        this.selectedStatus = status.value;\n    }\n\n    private resetAssignmentTypeValues() {\n        this.editTaskFilterForm.get('assignedUsers').setValue(undefined);\n        this.editTaskFilterForm.get('candidateGroups').setValue(undefined);\n    }\n\n    hasError(property: TaskFilterProperties): boolean {\n        const controller = this.getPropertyController(property);\n        return !!controller.errors?.invalid;\n    }\n\n    hasLastModifiedProperty(): boolean {\n        return this.filterProperties.indexOf(LAST_MODIFIED_PROPERTY) >= 0;\n    }\n\n    get createSortProperties(): FilterOptions[] {\n        this.checkMandatorySortProperties();\n\n        return this.sortProperties.map((property: string) => ({ label: property, value: property }));\n    }\n\n    createAndFilterActions(): TaskFilterAction[] {\n        this.checkMandatoryActions();\n        return this.createFilterActions().filter((action) => this.isValidAction(this.actions, action));\n    }\n\n    isValidProperty(filterProperties: string[], key: string): boolean {\n        return filterProperties ? filterProperties.indexOf(key) >= 0 : true;\n    }\n\n    checkForProperty(property: string): boolean {\n        return this.filterProperties ? this.filterProperties.indexOf(property) >= 0 : false;\n    }\n\n    hasSortProperty(): boolean {\n        return this.filterProperties.indexOf(SORT_PROPERTY) >= 0;\n    }\n\n    removeOrderProperty(filteredProperties: TaskFilterProperties[]): TaskFilterProperties[] {\n        if (filteredProperties?.length > 0) {\n            return filteredProperties.filter((property) => property.key !== ORDER_PROPERTY);\n        }\n        return [];\n    }\n\n    createAndFilterProperties() {\n        this.checkMandatoryFilterProperties();\n\n        if (this.checkForProperty(APPLICATION_NAME)) {\n            this.applicationNames = [];\n            this.getDeployedApplications();\n        }\n        if (this.checkForProperty(PROCESS_DEFINITION_NAME)) {\n            this.processDefinitionNames = [];\n            this.getProcessDefinitions();\n        }\n\n        const defaultProperties = this.createTaskFilterProperties();\n        let filteredProperties = defaultProperties.filter((filterProperty) => this.isValidProperty(this.filterProperties, filterProperty.key));\n\n        if (!this.hasSortProperty()) {\n            filteredProperties = this.removeOrderProperty(filteredProperties);\n        }\n\n        return filteredProperties;\n    }\n\n    /**\n     * Check for edit task filter form changes\n     */\n    onFilterChange() {\n        this.editTaskFilterForm.valueChanges\n            .pipe(\n                debounceTime(500),\n                filter(() => this.isFormValid()),\n                takeUntilDestroyed(this.destroyRef)\n            )\n            .subscribe((formValues) => {\n                this.assignNewFilter(formValues);\n            });\n    }\n\n    getFormControlsConfig(taskFilterProperties: TaskFilterProperties[]): any {\n        const properties = taskFilterProperties.map((property) => {\n            if (property.attributes) {\n                return this.getAttributesControlConfig(property);\n            } else {\n                return { [property.key]: property.value };\n            }\n        });\n        return properties.reduce((result, current) => Object.assign(result, current), {});\n    }\n\n    private getAttributesControlConfig(property: TaskFilterProperties) {\n        return Object.values(property.attributes).reduce((result, key) => {\n            result[key] = property.value[key];\n            return result;\n        }, {});\n    }\n\n    buildForm(taskFilterProperties: TaskFilterProperties[]) {\n        this.formHasBeenChanged = false;\n        this.editTaskFilterForm = this.formBuilder.group(this.getFormControlsConfig(taskFilterProperties));\n        this.onFilterChange();\n    }\n\n    onDateTypeChange(dateType: DateCloudFilterType, property: TaskFilterProperties) {\n        this.editTaskFilterForm.get(property.attributes.dateType).setValue(dateType);\n    }\n\n    protected retrieveTaskFilterAndBuildForm() {\n        this.isLoading = true;\n\n        this.getTaskFilterById(this.appName, this.id)\n            .pipe(\n                finalize(() => (this.isLoading = false)),\n                takeUntilDestroyed(this.destroyRef)\n            )\n            .subscribe((response) => {\n                this.taskFilter = response;\n                this.taskFilterProperties = this.createAndFilterProperties();\n                this.taskFilterActions = this.createAndFilterActions();\n                this.buildForm(this.taskFilterProperties);\n            });\n    }\n\n    delete(deleteAction: TaskFilterAction): void {\n        this.deleteFilter(this.taskFilter)\n            .pipe(\n                filter((filters) => {\n                    deleteAction.filter = this.taskFilter;\n                    this.action.emit(deleteAction);\n                    return filters.length === 0;\n                }),\n                switchMap(() => this.restoreDefaultTaskFilters()),\n                takeUntilDestroyed(this.destroyRef)\n            )\n            .subscribe(() => {});\n    }\n\n    save(saveAction: TaskFilterAction): void {\n        this.updateFilter(this.changedTaskFilter)\n            .pipe(takeUntilDestroyed(this.destroyRef))\n            .subscribe(() => {\n                saveAction.filter = this.changedTaskFilter;\n                this.action.emit(saveAction);\n                this.formHasBeenChanged = this.deepCompare(this.changedTaskFilter, this.taskFilter);\n            });\n    }\n\n    saveAs(saveAsAction: TaskFilterAction): void {\n        const dialogRef = this.dialog.open(TaskFilterDialogCloudComponent, {\n            data: {\n                name: this.translateService.instant((this.taskFilter as any)?.name)\n            },\n            height: 'auto',\n            minWidth: '30%'\n        });\n        dialogRef.afterClosed().subscribe((result) => {\n            if (result && result.action === TaskFilterDialogCloudComponent.ACTION_SAVE) {\n                const filterId = Math.random().toString(36).substr(2, 9);\n                const filterKey = this.getSanitizeFilterName(result.name);\n                const newFilter = {\n                    name: result.name,\n                    icon: result.icon,\n                    id: filterId,\n                    key: 'custom-' + filterKey\n                };\n                const resultFilter: T = Object.assign({}, this.changedTaskFilter, newFilter);\n                this.addFilter(resultFilter).subscribe(() => {\n                    saveAsAction.filter = resultFilter;\n                    this.action.emit(saveAsAction);\n                });\n            }\n        });\n    }\n\n    checkMandatoryFilterProperties() {\n        if (this.filterProperties === undefined || this.filterProperties.length === 0) {\n            this.filterProperties = this.getDefaultFilterProperties();\n        }\n    }\n\n    checkMandatorySortProperties(): void {\n        if (this.sortProperties === undefined || this.sortProperties.length === 0) {\n            this.sortProperties = this.getDefaultSortProperties();\n        }\n    }\n\n    abstract getDefaultFilterProperties(): string[];\n    abstract getDefaultSortProperties(): string[];\n    abstract isDisabledForDefaultFilters(action: TaskFilterAction): boolean;\n    abstract createTaskFilterProperties(): TaskFilterProperties[];\n    protected abstract getTaskFilterById(appName: string, id: string);\n    abstract assignNewFilter(formValues): void;\n\n    protected abstract restoreDefaultTaskFilters(): Observable<T[]>;\n    protected abstract addFilter(filterToAdd: T): Observable<any>;\n    protected abstract deleteFilter(filterToDelete: T): Observable<T[]>;\n    protected abstract updateFilter(filterToUpdate: T): Observable<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 { Component, Input, EventEmitter, Output, OnInit } from '@angular/core';\nimport { MatSelectChange, MatSelectModule } from '@angular/material/select';\nimport { ProcessFilterProperties, ProcessFilterOptions } from '../../process/process-filters/models/process-filter-cloud.model';\nimport { FormGroup, FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { DateRangeFilter, DateCloudFilterType } from '../../models/date-cloud-filter.model';\nimport { endOfDay, isValid, startOfDay } from 'date-fns';\nimport { DateAdapter, MAT_DATE_FORMATS } from '@angular/material/core';\nimport { ADF_DATE_FORMATS, AdfDateFnsAdapter } from '@alfresco/adf-core';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatFormFieldModule } from '@angular/material/form-field';\n\ninterface DateRangeFormProps {\n    from: FormControl<Date>;\n    to: FormControl<Date>;\n}\n\n@Component({\n    selector: 'adf-cloud-date-range-filter',\n    imports: [CommonModule, TranslatePipe, MatDatepickerModule, MatFormFieldModule, ReactiveFormsModule, MatSelectModule],\n    styleUrls: ['./date-range-filter.component.scss'],\n    templateUrl: './date-range-filter.component.html',\n    providers: [\n        { provide: DateAdapter, useClass: AdfDateFnsAdapter },\n        { provide: MAT_DATE_FORMATS, useValue: ADF_DATE_FORMATS }\n    ]\n})\nexport class DateRangeFilterComponent implements OnInit {\n    @Input()\n    processFilterProperty: ProcessFilterProperties;\n\n    @Input()\n    options: DateCloudFilterType[];\n\n    @Output()\n    dateChanged = new EventEmitter<DateRangeFilter>();\n\n    @Output()\n    dateTypeChange = new EventEmitter<DateCloudFilterType>();\n\n    type: DateCloudFilterType;\n    filteredProperties: ProcessFilterOptions[] = [];\n    dateRangeForm = new FormGroup<DateRangeFormProps>({\n        from: new FormControl(),\n        to: new FormControl()\n    });\n\n    ngOnInit() {\n        this.options = this.options ? this.options : this.createDefaultRangeOptions();\n        const defaultProperties = this.createDefaultDateOptions();\n        this.filteredProperties = defaultProperties.filter((filterProperty) => this.isValidProperty(this.options, filterProperty.value.toString()));\n        if (this.hasPreselectedValues()) {\n            this.setPreselectedValues();\n        }\n    }\n\n    onSelectionChange(option: MatSelectChange) {\n        this.type = option.value;\n        if (!this.isDateRangeType()) {\n            this.dateTypeChange.emit(this.type);\n        }\n    }\n\n    isDateRangeType(): boolean {\n        return this.type === DateCloudFilterType.RANGE;\n    }\n\n    onDateRangeClosed() {\n        const startDate = isValid(this.dateRangeForm.controls.from.value) ? startOfDay(this.dateRangeForm.controls.from.value).toISOString() : null;\n        const endDate = isValid(this.dateRangeForm.controls.to.value) ? endOfDay(this.dateRangeForm.controls.to.value).toISOString() : null;\n\n        const dateRange = {\n            startDate,\n            endDate\n        };\n        this.dateChanged.emit(dateRange);\n    }\n\n    private hasPreselectedValues(): boolean {\n        return !!this.processFilterProperty?.attributes && !!this.processFilterProperty?.value;\n    }\n\n    private setPreselectedValues() {\n        const from = this.getFilterAttribute('from');\n        const to = this.getFilterAttribute('to');\n        const type = this.getFilterAttribute('dateType');\n\n        this.dateRangeForm.get('from').setValue(this.getFilterValue(from));\n        this.dateRangeForm.get('to').setValue(this.getFilterValue(to));\n        this.type = this.getFilterValue(type);\n    }\n\n    private getFilterAttribute(key: string): string {\n        return this.processFilterProperty.attributes[key];\n    }\n\n    private getFilterValue<T = any>(attribute: string): T {\n        return this.processFilterProperty.value[attribute];\n    }\n\n    private isValidProperty(filterProperties: string[], key: string): boolean {\n        return filterProperties ? filterProperties.indexOf(key) >= 0 : true;\n    }\n\n    private createDefaultRangeOptions(): DateCloudFilterType[] {\n        return [\n            DateCloudFilterType.NO_DATE,\n            DateCloudFilterType.TODAY,\n            DateCloudFilterType.WEEK,\n            DateCloudFilterType.MONTH,\n            DateCloudFilterType.QUARTER,\n            DateCloudFilterType.YEAR,\n            DateCloudFilterType.RANGE\n        ];\n    }\n\n    private createDefaultDateOptions(): ProcessFilterOptions[] {\n        return [\n            {\n                value: DateCloudFilterType.NO_DATE,\n                label: 'ADF_CLOUD_EDIT_PROCESS_FILTER.LABEL.DATE_RANGE.NO_DATE'\n            },\n            {\n                value: DateCloudFilterType.TODAY,\n                label: 'ADF_CLOUD_EDIT_PROCESS_FILTER.LABEL.DATE_RANGE.TODAY'\n            },\n            {\n                value: DateCloudFilterType.TOMORROW,\n                label: 'ADF_CLOUD_EDIT_PROCESS_FILTER.LABEL.DATE_RANGE.TOMORROW'\n            },\n            {\n                value: DateCloudFilterType.NEXT_7_DAYS,\n                label: 'ADF_CLOUD_EDIT_PROCESS_FILTER.LABEL.DATE_RANGE.NEXT_7_DAYS'\n            },\n            {\n                value: DateCloudFilterType.WEEK,\n                label: 'ADF_CLOUD_EDIT_PROCESS_FILTER.LABEL.DATE_RANGE.WEEK'\n            },\n            {\n                value: DateCloudFilterType.MONTH,\n                label: 'ADF_CLOUD_EDIT_PROCESS_FILTER.LABEL.DATE_RANGE.MONTH'\n            },\n            {\n                value: DateCloudFilterType.QUARTER,\n                label: 'ADF_CLOUD_EDIT_PROCESS_FILTER.LABEL.DATE_RANGE.QUARTER'\n            },\n            {\n                value: DateCloudFilterType.YEAR,\n                label: 'ADF_CLOUD_EDIT_PROCESS_FILTER.LABEL.DATE_RANGE.YEAR'\n            },\n            {\n                value: DateCloudFilterType.RANGE,\n                label: 'ADF_CLOUD_EDIT_PROCESS_FILTER.LABEL.DATE_RANGE.RANGE'\n            }\n        ];\n    }\n}\n","\n<mat-form-field floatLabel=\"auto\" [attr.data-automation-id]=\"processFilterProperty.key\">\n    <mat-label>{{ processFilterProperty.label | translate }}</mat-label>\n    <mat-select\n        placeholder=\"{{ processFilterProperty.label | translate }}\"\n        [value]=\"type\"\n        (selectionChange)=\"onSelectionChange($event)\"\n        [attr.data-automation-id]=\"'adf-cloud-edit-process-property-' + processFilterProperty.key\">\n        <mat-option *ngFor=\"let propertyOption of filteredProperties\" [value]=\"propertyOption.value\" [attr.data-automation-id]=\"'adf-cloud-edit-process-property-options-' + propertyOption.value.toString()\">\n            {{ propertyOption.label | translate }}\n        </mat-option>\n    </mat-select>\n</mat-form-field>\n\n<ng-container *ngIf=\"isDateRangeType()\">\n    <mat-form-field floatLabel=\"auto\" class=\"adf-cloud-date-range-picker\">\n        <mat-label>{{ 'ADF_CLOUD_EDIT_PROCESS_FILTER.LABEL.DATE_RANGE_TITLE' | translate }}</mat-label>\n        <mat-date-range-input [formGroup]=\"dateRangeForm\" [rangePicker]=\"picker\">\n          <input matStartDate formControlName=\"from\" placeholder=\"{{ 'ADF_CLOUD_EDIT_PROCESS_FILTER.LABEL.START_DATE' | translate }}\">\n          <input matEndDate formControlName=\"to\" placeholder=\"{{ 'ADF_CLOUD_EDIT_PROCESS_FILTER.LABEL.END_DATE' | translate }}\">\n        </mat-date-range-input>\n        <mat-datepicker-toggle\n            matSuffix\n            [for]=\"picker\"\n            [attr.data-automation-id]=\"'adf-cloud-edit-process-property-date-range-' + processFilterProperty.key\" />\n        <mat-date-range-picker #picker (closed)=\"onDateRangeClosed()\" />\n    </mat-form-field>\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 { ReactiveFormsModule, UntypedFormControl } from '@angular/forms';\nimport {\n    AfterViewInit,\n    Component,\n    DestroyRef,\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 { BehaviorSubject, Observable } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, filter, mergeMap, switchMap, tap } from 'rxjs/operators';\nimport { FullNamePipe, InitialUsernamePipe } from '@alfresco/adf-core';\nimport { animate, state, style, transition, trigger } from '@angular/animations';\nimport { ComponentSelectionMode } from '../../types';\nimport { IdentityUserModel } from '../models/identity-user.model';\nimport { MatFormFieldAppearance, MatFormFieldModule, SubscriptSizing } from '@angular/material/form-field';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatInputModule } from '@angular/material/input';\nimport { IdentityUserService } from '../services/identity-user.service';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@Component({\n    selector: 'adf-cloud-people',\n    imports: [\n        CommonModule,\n        TranslatePipe,\n        MatIconModule,\n        MatFormFieldModule,\n        MatProgressBarModule,\n        MatSelectModule,\n        InitialUsernamePipe,\n        FullNamePipe,\n        MatAutocompleteModule,\n        ReactiveFormsModule,\n        MatChipsModule,\n        MatInputModule,\n        MatTooltipModule\n    ],\n    providers: [FullNamePipe],\n    templateUrl: './people-cloud.component.html',\n    styleUrls: ['./people-cloud.component.scss'],\n    animations: [\n        trigger('transitionMessages', [\n            state('enter', style({ opacity: 1, transform: 'translateY(0%)' })),\n            transition('void => enter', [style({ opacity: 0, transform: 'translateY(-100%)' }), animate('300ms cubic-bezier(0.55, 0, 0.55, 0.2)')])\n        ])\n    ],\n    encapsulation: ViewEncapsulation.None\n})\nexport class PeopleCloudComponent implements OnInit, OnChanges, AfterViewInit {\n    /** Label for the user selection component. */\n    @Input()\n    label: string;\n\n    /** Name of the application. If specified, this shows the users who have access to the app. */\n    @Input()\n    appName: string;\n\n    /** User selection mode (single/multiple). */\n    @Input()\n    mode: ComponentSelectionMode = 'single';\n\n    /** Role names of the users to be listed. */\n    @Input()\n    roles: string[];\n\n    /**\n     * This flag enables the validation on the preSelectUsers passed as input.\n     * In case the flag is true the components call the identity service to verify the validity of the information passed as input.\n     * Otherwise, no check will be done.\n     */\n    @Input()\n    validate: boolean = false;\n\n    /**\n     * Show the info in readonly mode\n     */\n    @Input()\n    readOnly: boolean = false;\n\n    /**\n     * Mark this field as required\n     */\n    @Input()\n    required = false;\n\n    /**\n     * Array of users to be pre-selected. All users in the\n     * array are pre-selected in multi selection mode, but only the first user\n     * is pre-selected in single selection mode.\n     * Mandatory properties are: id, email, username\n     */\n    @Input()\n    preSelectUsers: IdentityUserModel[] = [];\n\n    /**\n     * Array of users to be excluded.\n     * Mandatory properties are: id, email, username\n     */\n    @Input()\n    excludedUsers: IdentityUserModel[] = [];\n\n    /**\n     * Array of groups to restrict user searches.\n     * Mandatory property is group name\n     */\n    @Input()\n    groupsRestriction: string[] = [];\n\n    /** FormControl to list of users */\n    @Input()\n    userChipsCtrl: UntypedFormControl = new UntypedFormControl({ value: '', disabled: false });\n\n    /** FormControl to search the user */\n    @Input()\n    searchUserCtrl = new UntypedFormControl({ value: '', disabled: false });\n\n    /**\n     * Label translation key\n     */\n    @Input()\n    title: string;\n\n    /**\n     * Placeholder for the input field\n     */\n    @Input()\n    placeholder: string;\n\n    /**\n     * Hide the matInput associated with the chip grid when a single user is selected in single selection mode.\n     * The input will be shown again when the user is removed using the icon on the chip.\n     */\n    @Input()\n    hideInputOnSingleSelection = false;\n\n    /**\n     * Material form field appearance (fill / outline)\n     */\n    @Input()\n    formFieldAppearance: MatFormFieldAppearance = 'fill';\n\n    /**\n     * Material form field subscript sizing (fixed / dynamic)\n     */\n    @Input()\n    formFieldSubscriptSizing: SubscriptSizing = 'fixed';\n\n    /**\n     * Show errors under the form field\n     */\n    @Input()\n    showErrors: boolean = true;\n\n    /**\n     * Show the full name of the user on hover in the chips\n     */\n    @Input()\n    showFullNameOnHover: boolean = false;\n\n    /** Emitted when a user is selected. */\n    @Output()\n    selectUser = new EventEmitter<IdentityUserModel>();\n\n    /** Emitted when a selected user is removed in multi selection mode. */\n    @Output()\n    removeUser = new EventEmitter<IdentityUserModel>();\n\n    /** Emitted when a user selection change. */\n    @Output()\n    changedUsers = new EventEmitter<IdentityUserModel[]>();\n\n    /** Emitted when an warning occurs. */\n    @Output()\n    warning = new EventEmitter<any>();\n\n    @ViewChild('userInput')\n    private userInput: ElementRef<HTMLInputElement>;\n\n    private searchUsers: IdentityUserModel[] = [];\n\n    selectedUsers: IdentityUserModel[] = [];\n    invalidUsers: IdentityUserModel[] = [];\n\n    searchUsers$ = new BehaviorSubject<IdentityUserModel[]>(this.searchUsers);\n    subscriptAnimationState: string = 'enter';\n    isFocused: boolean;\n    touched: boolean = false;\n\n    validateUsersMessage: string;\n    searchedValue = '';\n\n    validationLoading = false;\n    searchLoading = false;\n\n    typingUniqueValueNotEmpty$: Observable<string>;\n\n    private readonly destroyRef = inject(DestroyRef);\n\n    constructor(private identityUserService: IdentityUserService) {}\n\n    ngOnInit(): void {\n        this.initSearch();\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (this.hasPreselectedUsersChanged(changes) || this.hasModeChanged(changes) || this.isValidationChanged(changes)) {\n            if (this.hasPreSelectUsers()) {\n                this.loadPreSelectUsers();\n            } else if (this.hasPreselectedUsersCleared(changes)) {\n                this.selectedUsers = [];\n                this.invalidUsers = [];\n            }\n\n            if (!this.isValidationEnabled()) {\n                this.invalidUsers = [];\n            }\n        }\n\n        if (this.isReadonly() && this.searchUserCtrl.enabled) {\n            this.searchUserCtrl.disable();\n        } else if (!this.isReadonly() && this.searchUserCtrl.disabled) {\n            this.searchUserCtrl.enable();\n        }\n    }\n\n    ngAfterViewInit(): void {\n        if (this.hideInputOnSingleSelection) {\n            if (this.selectedUsers.length === 1 && this.isSingleMode() && this.userInput) {\n                this.userInput.nativeElement.style.display = 'none';\n            }\n        }\n    }\n\n    private initSearch(): void {\n        this.initializeStream();\n        this.typingUniqueValueNotEmpty$\n            .pipe(\n                filter((name: string) => name.length >= 1),\n                switchMap((name: string) =>\n                    this.identityUserService.search(name, { roles: this.roles, withinApplication: this.appName, groups: this.groupsRestriction })\n                ),\n                mergeMap((users: IdentityUserModel[]) => {\n                    this.resetSearchUsers();\n                    this.searchLoading = false;\n                    return users;\n                }),\n                filter((user) => !this.isUserAlreadySelected(user) && !this.isExcludedUser(user)),\n                takeUntilDestroyed(this.destroyRef)\n            )\n            .subscribe((user: IdentityUserModel) => {\n                this.searchUsers.push(user);\n                this.searchUsers$.next(this.searchUsers);\n            });\n    }\n\n    private initializeStream() {\n        const typingValueFromControl$ = this.searchUserCtrl.valueChanges;\n\n        const typingValueTypeSting$ = typingValueFromControl$.pipe(\n            filter((value) => {\n                this.searchLoading = true;\n                return typeof value === 'string';\n            })\n        );\n\n        const typingValueHandleErrorMessage$ = typingValueTypeSting$.pipe(\n            tap((value: string) => {\n                if (value) {\n                    this.setTypingError();\n                }\n            })\n        );\n\n        const typingValueDebouncedUnique$ = typingValueHandleErrorMessage$.pipe(debounceTime(500), distinctUntilChanged());\n\n        this.typingUniqueValueNotEmpty$ = typingValueDebouncedUnique$.pipe(\n            tap((value: string) => {\n                if (value.trim()) {\n                    this.searchedValue = value;\n                } else {\n                    this.searchUserCtrl.markAsPristine();\n                    this.searchUserCtrl.markAsUntouched();\n                }\n            }),\n            tap(() => this.resetSearchUsers())\n        );\n    }\n\n    private isValidationEnabled(): boolean {\n        return this.validate === true;\n    }\n\n    private isUserAlreadySelected(searchUser: IdentityUserModel): boolean {\n        if (this.selectedUsers && this.selectedUsers.length > 0) {\n            const result = this.selectedUsers.find((selectedUser) => this.equalsUsers(selectedUser, searchUser));\n\n            return !!result;\n        }\n        return false;\n    }\n\n    private isExcludedUser(searchUser: IdentityUserModel): boolean {\n        if (this.excludedUsers?.length > 0) {\n            return !!this.excludedUsers.find((excludedUser) => this.equalsUsers(excludedUser, searchUser));\n        }\n        return false;\n    }\n\n    private async loadPreSelectUsers(): Promise<void> {\n        this.selectedUsers = [];\n\n        if (this.isSingleMode()) {\n            this.selectedUsers = [this.preSelectUsers[0]];\n        } else {\n            this.selectedUsers = this.removeDuplicatedUsers(this.preSelectUsers);\n        }\n        this.userChipsCtrl.setValue(this.selectedUsers[0].username);\n        if (this.isValidationEnabled()) {\n            this.validationLoading = true;\n            await this.validatePreselectUsers();\n            this.validationLoading = false;\n        }\n    }\n\n    private getPreselectedUsers(): IdentityUserModel[] {\n        if (this.isSingleMode()) {\n            return [this.preSelectUsers[0]];\n        } else {\n            return this.removeDuplicatedUsers(this.preSelectUsers);\n        }\n    }\n\n    private async validatePreselectUsers(): Promise<any> {\n        this.invalidUsers = [];\n\n        for (const user of this.getPreselectedUsers()) {\n            try {\n                const validationResult = (\n                    await this.identityUserService\n                        .search(user.username, { roles: this.roles, withinApplication: this.appName, groups: this.groupsRestriction })\n                        .toPromise()\n                )[0];\n\n                if (!this.equalsUsers(user, validationResult)) {\n                    this.invalidUsers.push(user);\n                }\n            } catch {\n                this.invalidUsers.push(user);\n            }\n        }\n\n        this.checkPreselectValidationErrors();\n    }\n\n    equalsUsers(preselectedUser: IdentityUserModel, identityUser: IdentityUserModel): boolean {\n        if (preselectedUser && identityUser) {\n            const uniquePropertyIdentifiers = ['id', 'username', 'email'];\n            for (const property of Object.keys(preselectedUser)) {\n                if (preselectedUser[property] !== undefined && uniquePropertyIdentifiers.includes(property)) {\n                    return preselectedUser[property] === identityUser[property];\n                }\n            }\n        }\n        return false;\n    }\n\n    removeDuplicatedUsers(users: IdentityUserModel[]): IdentityUserModel[] {\n        return users.filter(\n            (user, index, self) =>\n                index === self.findIndex((auxUser) => user.id === auxUser.id && user.username === auxUser.username && user.email === auxUser.email)\n        );\n    }\n\n    onSelect(user: IdentityUserModel): void {\n        if (user) {\n            this.selectUser.emit(user);\n\n            if (this.isMultipleMode()) {\n                if (!this.isUserAlreadySelected(user)) {\n                    this.selectedUsers.push(user);\n                }\n            } else {\n                this.invalidUsers = [];\n                this.selectedUsers = [user];\n                if (this.hideInputOnSingleSelection) {\n                    this.userInput.nativeElement.style.display = 'none';\n                }\n            }\n\n            this.userInput.nativeElement.value = '';\n            this.searchUserCtrl.setValue('');\n            this.userChipsControlValue(this.selectedUsers[0].username);\n\n            this.changedUsers.emit(this.selectedUsers);\n            this.resetSearchUsers();\n        }\n    }\n\n    onRemove(userToRemove: IdentityUserModel): void {\n        this.removeUser.emit(userToRemove);\n        this.removeUserFromSelected(userToRemove);\n        this.changedUsers.emit(this.selectedUsers);\n        if (this.selectedUsers.length === 0) {\n            this.userChipsControlValue('');\n            if (this.hideInputOnSingleSelection) {\n                this.userInput.nativeElement.style.display = 'block';\n            }\n        } else {\n            this.userChipsControlValue(this.selectedUsers[0].username);\n        }\n        this.searchUserCtrl.markAsDirty();\n        this.searchUserCtrl.markAsTouched();\n\n        if (this.isValidationEnabled()) {\n            this.removeUserFromValidation(userToRemove);\n            this.checkPreselectValidationErrors();\n        }\n    }\n\n    private checkPreselectValidationErrors(): void {\n        this.invalidUsers = this.removeDuplicatedUsers(this.invalidUsers);\n\n        if (this.invalidUsers.length > 0) {\n            this.generateInvalidUsersMessage();\n        }\n\n        this.warning.emit({\n            message: 'INVALID_PRESELECTED_USERS',\n            users: this.invalidUsers\n        });\n    }\n\n    private removeUserFromSelected({ id, username, email }: IdentityUserModel): void {\n        const indexToRemove = this.selectedUsers.findIndex((user) => user.id === id && user.username === username && user.email === email);\n\n        if (indexToRemove !== -1) {\n            this.selectedUsers.splice(indexToRemove, 1);\n        }\n    }\n\n    private removeUserFromValidation({ id, username, email }: IdentityUserModel): void {\n        const indexToRemove = this.invalidUsers.findIndex((user) => user.id === id && user.username === username && user.email === email);\n\n        if (indexToRemove !== -1) {\n            this.invalidUsers.splice(indexToRemove, 1);\n        }\n    }\n\n    private generateInvalidUsersMessage(): void {\n        this.validateUsersMessage = '';\n\n        this.invalidUsers.forEach((invalidUser, index) => {\n            if (index === this.invalidUsers.length - 1) {\n                this.validateUsersMessage += `${invalidUser.username} `;\n            } else {\n                this.validateUsersMessage += `${invalidUser.username}, `;\n            }\n        });\n    }\n\n    hasPreselectError(): boolean {\n        return this.invalidUsers && this.invalidUsers.length > 0;\n    }\n\n    getDisplayName(user): string {\n        return FullNamePipe.prototype.transform(user);\n    }\n\n    private isMultipleMode(): boolean {\n        return this.mode === 'multiple';\n    }\n\n    private isSingleMode(): boolean {\n        return this.mode === 'single';\n    }\n\n    private isSingleSelectionReadonly(): boolean {\n        return this.isSingleMode() && this.selectedUsers.length === 1 && this.selectedUsers[0].readonly === true;\n    }\n\n    private hasPreSelectUsers(): boolean {\n        return this.preSelectUsers && this.preSelectUsers.length > 0;\n    }\n\n    private hasModeChanged(changes: SimpleChanges): boolean {\n        return changes?.mode && changes.mode.currentValue !== changes.mode.previousValue;\n    }\n\n    private isValidationChanged(changes: SimpleChanges): boolean {\n        return changes?.validate && changes.validate.currentValue !== changes.validate.previousValue;\n    }\n\n    private hasPreselectedUsersChanged(changes: SimpleChanges): boolean {\n        return changes?.preSelectUsers && changes.preSelectUsers.currentValue !== changes.preSelectUsers.previousValue;\n    }\n\n    private hasPreselectedUsersCleared(changes: SimpleChanges): boolean {\n        return changes?.preSelectUsers?.currentValue?.length === 0;\n    }\n\n    private resetSearchUsers(): void {\n        this.searchUsers = [];\n        this.searchUsers$.next(this.searchUsers);\n    }\n\n    private setTypingError(): void {\n        this.searchUserCtrl.setErrors({\n            searchTypingError: true,\n            ...this.searchUserCtrl.errors\n        });\n    }\n\n    private userChipsControlValue(value: string) {\n        this.userChipsCtrl.setValue(value);\n        this.userChipsCtrl.markAsDirty();\n        this.userChipsCtrl.markAsTouched();\n    }\n\n    getSelectedUsers(): IdentityUserModel[] {\n        return this.selectedUsers;\n    }\n\n    isReadonly(): boolean {\n        return this.readOnly || this.isSingleSelectionReadonly();\n    }\n\n    isValidationLoading(): boolean {\n        return this.isValidationEnabled() && this.validationLoading;\n    }\n\n    markAsTouched(): void {\n        this.touched = true;\n    }\n\n    isTouched(): boolean {\n        return this.touched;\n    }\n\n    isSelected(): boolean {\n        return this.selectedUsers && !!this.selectedUsers.length;\n    }\n\n    isDirty(): boolean {\n        return this.isTouched() && !this.isSelected();\n    }\n\n    setFocus(isFocused: boolean) {\n        this.isFocused = isFocused;\n    }\n\n    hasError(): boolean {\n        return !!this.searchUserCtrl.errors;\n    }\n\n    getValidationPattern(): string {\n        return this.searchUserCtrl.errors.pattern.requiredPattern;\n    }\n\n    getValidationMaxLength(): string {\n        return this.searchUserCtrl.errors.maxlength.requiredLength;\n    }\n\n    getValidationMinLength(): string {\n        return this.searchUserCtrl.errors.minlength.requiredLength;\n    }\n}\n","<form>\n    <mat-form-field\n        [subscriptSizing]=\"formFieldSubscriptSizing\"\n        class=\"adf-people-cloud adf-form-field-input\"\n        [class.adf-invalid]=\"hasError() && isDirty()\"\n    >\n        <mat-label *ngIf=\"!title\">\n            <span>{{label}}</span>\n        </mat-label>\n        <mat-label *ngIf=\"title\">{{ title | translate }}</mat-label>\n\n        <mat-chip-grid [required]=\"required\" #userMultipleChipList data-automation-id=\"adf-cloud-people-chip-list\">\n            <mat-chip-row\n                *ngFor=\"let user of selectedUsers\"\n                [removable]=\"!user.readonly\"\n                [attr.data-automation-id]=\"'adf-people-cloud-chip-' + user.username\"\n                (removed)=\"onRemove(user)\"\n                [disabled]=\"isReadonly() || isValidationLoading()\"\n                title=\"{{ (user.readonly ? 'ADF_CLOUD_GROUPS.MANDATORY' : '') | translate }}\"\n                [matTooltip]=\"showFullNameOnHover ? (user | fullName : true) : user.email\"\n            >\n                {{ user | fullName }}\n                <mat-icon\n                    matChipRemove\n                    *ngIf=\"!(user.readonly || readOnly)\"\n                    [attr.data-automation-id]=\"'adf-people-cloud-chip-remove-icon-' + user.username\"\n                >\n                    cancel\n                </mat-icon>\n            </mat-chip-row>\n            <input\n                matInput\n                [disabled]=\"isReadonly()\"\n                [formControl]=\"searchUserCtrl\"\n                [matAutocomplete]=\"auto\"\n                [matChipInputFor]=\"userMultipleChipList\"\n                [required]=\"required\"\n                [placeholder]=\"placeholder\"\n                [disabled]=\"isReadonly() || isValidationLoading()\"\n                (focus)=\"setFocus(true)\"\n                (blur)=\"setFocus(false); markAsTouched()\"\n                class=\"adf-cloud-input\"\n                data-automation-id=\"adf-people-cloud-search-input\"\n                #userInput\n            />\n        </mat-chip-grid>\n\n        <mat-autocomplete\n            autoActiveFirstOption\n            class=\"adf-people-cloud-list\"\n            #auto=\"matAutocomplete\"\n            (optionSelected)=\"onSelect($event.option.value)\"\n            [displayWith]=\"getDisplayName\"\n        >\n            <ng-container *ngIf=\"(searchUsers$ | async)?.length; else noResults\">\n                <mat-option *ngFor=\"let user of searchUsers$ | async; let i = index\" [value]=\"user\" class=\"adf-people-cloud-option-active\">\n                    <div class=\"adf-people-cloud-row\" id=\"adf-people-cloud-user-{{ user.username }}\" data-automation-id=\"adf-people-cloud-row\">\n                        <div [outerHTML]=\"user | usernameInitials : 'adf-people-cloud-pic'\"></div>\n                        <span class=\"adf-people-label-name\"> {{ user | fullName : true }}</span>\n                    </div>\n                </mat-option>\n            </ng-container>\n            <ng-template #noResults>\n                <mat-option\n                    *ngIf=\"searchUserCtrl.hasError('searchTypingError') && !searchLoading\"\n                    disabled\n                    class=\"adf-people-cloud-option-not-active\"\n                    data-automation-id=\"adf-people-cloud-no-results\"\n                >\n                    <span> {{ 'ADF_CLOUD_USERS.ERROR.NOT_FOUND' | translate : { userName: searchedValue } }}</span>\n                </mat-option>\n            </ng-template>\n        </mat-autocomplete>\n    </mat-form-field>\n\n    <mat-progress-bar *ngIf=\"validationLoading\" mode=\"indeterminate\" />\n\n    <div class=\"adf-error-container adf-error-messages-container\" *ngIf=\"showErrors\">\n        <mat-error *ngIf=\"hasPreselectError() && !isValidationLoading()\" [@transitionMessages]=\"subscriptAnimationState\" class=\"adf-error\">\n            <mat-icon class=\"adf-error-icon\">error_outline</mat-icon>\n            <div class=\"adf-error-text\">{{ 'ADF_CLOUD_USERS.ERROR.NOT_FOUND' | translate : { userName: validateUsersMessage } }}</div>\n        </mat-error>\n        <mat-error *ngIf=\"searchUserCtrl.hasError('pattern')\" [@transitionMessages]=\"subscriptAnimationState\" class=\"adf-error\">\n            <mat-icon class=\"adf-error-icon\">error_outline</mat-icon>\n            <div class=\"adf-error-text\">{{ 'ADF_CLOUD_PEOPLE_GROUPS.ERROR.INVALID_PATTERN' | translate : { pattern: getValidationPattern() } }}</div>\n        </mat-error>\n        <mat-error *ngIf=\"searchUserCtrl.hasError('maxlength')\" [@transitionMessages]=\"subscriptAnimationState\" class=\"adf-error\">\n            <mat-icon class=\"adf-error-icon\">error_outline</mat-icon>\n            <div class=\"adf-error-text\">\n                {{ 'ADF_CLOUD_PEOPLE_GROUPS.ERROR.INVALID_MAX_LENGTH' | translate : { requiredLength: getValidationMaxLength() } }}\n            </div>\n        </mat-error>\n        <mat-error *ngIf=\"searchUserCtrl.hasError('minlength')\" [@transitionMessages]=\"subscriptAnimationState\" class=\"adf-error\">\n            <mat-icon class=\"adf-error-icon\">error_outline</mat-icon>\n            <div class=\"adf-error-text\">\n                {{ 'ADF_CLOUD_PEOPLE_GROUPS.ERROR.INVALID_MIN_LENGTH' | translate : { requiredLength: getValidationMinLength() } }}\n            </div>\n        </mat-error>\n        <mat-error\n            *ngIf=\"(searchUserCtrl.hasError('required') || userChipsCtrl.hasError('required')) && isDirty()\"\n            [@transitionMessages]=\"subscriptAnimationState\"\n            class=\"adf-error\"\n        >\n            <mat-icon class=\"adf-error-icon\">error_outline</mat-icon>\n            <div class=\"adf-error-text\">{{ 'ADF_CLOUD_PEOPLE_GROUPS.ERROR.REQUIRED' | translate }}</div>\n        </mat-error>\n        <mat-error\n            *ngIf=\"searchUserCtrl.hasError('searchTypingError') && !this.isFocused\"\n            [@transitionMessages]=\"subscriptAnimationState\"\n            data-automation-id=\"invalid-users-typing-error\"\n            class=\"adf-error\"\n        >\n            <mat-icon class=\"adf-error-icon\">error_outline</mat-icon>\n            <div class=\"adf-error-text\">{{ 'ADF_CLOUD_USERS.ERROR.NOT_FOUND' | translate : { userName: searchedValue } }}</div>\n        </mat-error>\n    </div>\n</form>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 { AppConfigService, OAuth2Service } from '@alfresco/adf-core';\nimport { EMPTY, Observable } from 'rxjs';\nimport { IdentityGroupModel } from '../models/identity-group.model';\n\nconst IDENTITY_MICRO_SERVICE_INGRESS = 'identity-adapter-service';\n\nexport interface IdentityGroupFilterInterface {\n    roles?: string[];\n    withinApplication?: string;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class IdentityGroupService {\n    queryParams: { search: string; application?: string; roles?: string[] };\n\n    constructor(private oAuth2Service: OAuth2Service, private appConfigService: AppConfigService) {}\n\n    public search(name: string, filters?: IdentityGroupFilterInterface): Observable<IdentityGroupModel[]> {\n        if (name.trim() === '') {\n            return EMPTY;\n        } else if (filters?.withinApplication) {\n            return this.searchGroupsWithinApp(name, filters.withinApplication, filters?.roles);\n        } else if (filters?.roles?.length > 0) {\n            return this.searchGroupsWithGlobalRoles(name, filters.roles);\n        } else {\n            return this.searchGroupsByName(name);\n        }\n    }\n\n    private searchGroupsByName(name: string): Observable<IdentityGroupModel[]> {\n        this.buildQueryParam(name);\n\n        return this.invokeIdentityGroupApi();\n    }\n\n    private searchGroupsWithGlobalRoles(name: string, roles: string[]): Observable<IdentityGroupModel[]> {\n        this.buildQueryParam(name, roles);\n\n        return this.invokeIdentityGroupApi();\n    }\n\n    private searchGroupsWithinApp(name: string, applicationName: string, roles?: string[]): Observable<IdentityGroupModel[]> {\n        this.buildQueryParam(name, roles, applicationName);\n\n        return this.invokeIdentityGroupApi();\n    }\n\n    private invokeIdentityGroupApi(): Observable<IdentityGroupModel[]> {\n        const url = `${this.identityHost}/${IDENTITY_MICRO_SERVICE_INGRESS}/v1/groups`;\n        return this.oAuth2Service.get({ url, queryParams: this.queryParams });\n    }\n\n    private buildQueryParam(name: string, roles?: string[], applicationName?: string) {\n        this.queryParams = { search: name };\n        this.addOptionalValueToQueryParam('application', applicationName);\n        this.addOptionalCommaValueToQueryParam('role', roles);\n    }\n\n    private addOptionalCommaValueToQueryParam(key: string, values: string[]) {\n        if (values?.length > 0) {\n            const valuesNotEmpty = this.filterOutEmptyValue(values);\n            if (valuesNotEmpty?.length > 0) {\n                this.queryParams[key] = valuesNotEmpty.join(',');\n            }\n        }\n    }\n\n    private addOptionalValueToQueryParam(key: string, value: string) {\n        if (value?.trim()) {\n            this.queryParams[key] = value;\n        }\n    }\n\n    private filterOutEmptyValue(roles: string[]): string[] {\n        return roles.filter((role) => (role.trim() ? true : false));\n    }\n\n    private get identityHost(): string {\n        return `${this.appConfigService.get('bpmHost')}`;\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    Component,\n    DestroyRef,\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 { ReactiveFormsModule, UntypedFormControl } from '@angular/forms';\nimport { animate, state, style, transition, trigger } from '@angular/animations';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, filter, mergeMap, switchMap, tap } from 'rxjs/operators';\nimport { ComponentSelectionMode } from '../../types';\nimport { IdentityGroupModel } from '../models/identity-group.model';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { IdentityGroupService } from '../services/identity-group.service';\n\n@Component({\n    selector: 'adf-cloud-group',\n    imports: [\n        CommonModule,\n        TranslatePipe,\n        MatIconModule,\n        MatFormFieldModule,\n        MatProgressBarModule,\n        MatSelectModule,\n        MatAutocompleteModule,\n        MatButtonModule,\n        ReactiveFormsModule,\n        MatInputModule,\n        MatChipsModule\n    ],\n    templateUrl: './group-cloud.component.html',\n    styleUrls: ['./group-cloud.component.scss'],\n    animations: [\n        trigger('transitionMessages', [\n            state('enter', style({ opacity: 1, transform: 'translateY(0%)' })),\n            transition('void => enter', [style({ opacity: 0, transform: 'translateY(-100%)' }), animate('300ms cubic-bezier(0.55, 0, 0.55, 0.2)')])\n        ])\n    ],\n    encapsulation: ViewEncapsulation.None\n})\nexport class GroupCloudComponent implements OnInit, OnChanges {\n    /** Label for the user selection component. */\n    @Input()\n    label: string;\n\n    /** Name of the application. If specified this shows the groups who have access to the app. */\n    @Input()\n    appName: string;\n\n    /** Title of the field */\n    @Input()\n    title: string;\n\n    /** Group selection mode (single/multiple). */\n    @Input()\n    mode: ComponentSelectionMode = 'single';\n\n    /** Array of groups to be pre-selected. This pre-selects all groups in multi selection mode and only the first group of the array in single selection mode. */\n    @Input()\n    preSelectGroups: IdentityGroupModel[] = [];\n\n    /**\n     * This flag enables the validation on the preSelectGroups passed as input.\n     * In case the flag is true the components call the identity service to verify the validity of the information passed as input.\n     * Otherwise, no check will be done.\n     */\n    @Input()\n    validate = false;\n\n    /**\n     * Show the info in readonly mode\n     */\n    @Input()\n    readOnly = false;\n\n    /**\n     * Mark this field as required\n     */\n    @Input()\n    required = false;\n\n    /** FormControl to list of group */\n    @Input()\n    groupChipsCtrl = new UntypedFormControl({ value: '', disabled: false });\n\n    /** FormControl to search the group */\n    @Input()\n    searchGroupsControl = new UntypedFormControl({ value: '', disabled: false });\n\n    /** Role names of the groups to be listed. */\n    @Input()\n    roles: string[] = [];\n\n    /** Emitted when a group is selected. */\n    @Output()\n    selectGroup = new EventEmitter<IdentityGroupModel>();\n\n    /** Emitted when a group is removed. */\n    @Output()\n    removeGroup = new EventEmitter<IdentityGroupModel>();\n\n    /** Emitted when a group selection change. */\n    @Output()\n    changedGroups = new EventEmitter<IdentityGroupModel[]>();\n\n    /** Emitted when an warning occurs. */\n    @Output()\n    warning = new EventEmitter<any>();\n\n    @ViewChild('groupInput')\n    private groupInput: ElementRef<HTMLInputElement>;\n\n    private searchGroups: IdentityGroupModel[] = [];\n\n    selectedGroups: IdentityGroupModel[] = [];\n    invalidGroups: IdentityGroupModel[] = [];\n\n    searchGroups$ = new BehaviorSubject<IdentityGroupModel[]>(this.searchGroups);\n    subscriptAnimationState: string = 'enter';\n    isFocused: boolean;\n    touched: boolean = false;\n\n    validateGroupsMessage: string;\n    searchedValue = '';\n\n    validationLoading = false;\n    searchLoading = false;\n\n    typingUniqueValueNotEmpty$: Observable<any>;\n\n    private readonly destroyRef = inject(DestroyRef);\n\n    constructor(private identityGroupService: IdentityGroupService) {}\n\n    ngOnInit(): void {\n        this.initSearch();\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (this.hasPreselectedGroupsChanged(changes) || this.hasModeChanged(changes) || this.isValidationChanged(changes)) {\n            if (this.hasPreSelectGroups()) {\n                this.loadPreSelectGroups();\n            } else if (this.hasPreselectedGroupsCleared(changes)) {\n                this.selectedGroups = [];\n                this.invalidGroups = [];\n            }\n\n            if (!this.isValidationEnabled()) {\n                this.invalidGroups = [];\n            }\n        }\n    }\n\n    private initSearch(): void {\n        this.initializeStream();\n        this.typingUniqueValueNotEmpty$\n            .pipe(\n                switchMap((name: string) => this.identityGroupService.search(name, { roles: this.roles, withinApplication: this.appName })),\n                mergeMap((groups: IdentityGroupModel[]) => {\n                    this.resetSearchGroups();\n                    this.searchLoading = false;\n                    return groups;\n                }),\n                filter((group) => !this.isGroupAlreadySelected(group)),\n                takeUntilDestroyed(this.destroyRef)\n            )\n            .subscribe((searchedGroup: IdentityGroupModel) => {\n                this.searchGroups.push(searchedGroup);\n                this.searchGroups$.next(this.searchGroups);\n            });\n    }\n\n    private initializeStream() {\n        const typingValueFromControl$ = this.searchGroupsControl.valueChanges;\n\n        const typingValueTypeSting$ = typingValueFromControl$.pipe(\n            filter((value) => {\n                this.searchLoading = true;\n                return typeof value === 'string';\n            })\n        );\n\n        const typingValueHandleErrorMessage$ = typingValueTypeSting$.pipe(\n            tap((value: string) => {\n                if (value) {\n                    this.setTypingError();\n                }\n            })\n        );\n\n        const typingValueDebouncedUnique$ = typingValueHandleErrorMessage$.pipe(debounceTime(500), distinctUntilChanged());\n\n        this.typingUniqueValueNotEmpty$ = typingValueDebouncedUnique$.pipe(\n            tap((value: string) => {\n                if (value.trim()) {\n                    this.searchedValue = value;\n                } else {\n                    this.searchGroupsControl.markAsPristine();\n                    this.searchGroupsControl.markAsUntouched();\n                }\n            }),\n            tap(() => this.resetSearchGroups())\n        );\n    }\n\n    private isGroupAlreadySelected(group: IdentityGroupModel): boolean {\n        if (this.selectedGroups && this.selectedGroups.length > 0) {\n            const result = this.selectedGroups.find((selectedGroup: IdentityGroupModel) => selectedGroup.name === group.name);\n\n            return !!result;\n        }\n        return false;\n    }\n\n    private async searchGroup(name: string): Promise<IdentityGroupModel> {\n        return (await this.identityGroupService.search(name).toPromise())[0];\n    }\n\n    private getPreselectedGroups(): IdentityGroupModel[] {\n        if (this.isSingleMode()) {\n            return [this.preSelectGroups[0]];\n        } else {\n            return this.removeDuplicatedGroups(this.preSelectGroups);\n        }\n    }\n\n    private async validatePreselectGroups(): Promise<any> {\n        this.invalidGroups = [];\n\n        for (const group of this.getPreselectedGroups()) {\n            try {\n                const validationResult = await this.searchGroup(group.name);\n                if (this.isPreselectedGroupInvalid(group, validationResult)) {\n                    this.invalidGroups.push(group);\n                }\n            } catch {\n                this.invalidGroups.push(group);\n            }\n        }\n\n        this.checkPreselectValidationErrors();\n    }\n\n    private checkPreselectValidationErrors(): void {\n        this.invalidGroups = this.removeDuplicatedGroups(this.invalidGroups);\n\n        if (this.invalidGroups.length > 0) {\n            this.generateInvalidGroupsMessage();\n        }\n\n        this.warning.emit({\n            message: 'INVALID_PRESELECTED_GROUPS',\n            groups: this.invalidGroups\n        });\n    }\n\n    private generateInvalidGroupsMessage(): void {\n        this.validateGroupsMessage = '';\n\n        this.invalidGroups.forEach((invalidGroup: IdentityGroupModel, index) => {\n            if (index === this.invalidGroups.length - 1) {\n                this.validateGroupsMessage += `${invalidGroup.name} `;\n            } else {\n                this.validateGroupsMessage += `${invalidGroup.name}, `;\n            }\n        });\n    }\n\n    private async loadPreSelectGroups(): Promise<void> {\n        this.selectedGroups = [];\n\n        if (this.isSingleMode()) {\n            this.selectedGroups = [this.preSelectGroups[0]];\n        } else {\n            this.selectedGroups = this.removeDuplicatedGroups(this.preSelectGroups);\n        }\n        this.groupChipsCtrl.setValue(this.selectedGroups[0].name);\n        if (this.isValidationEnabled()) {\n            this.validationLoading = true;\n            await this.validatePreselectGroups();\n            this.validationLoading = false;\n        }\n    }\n\n    onSelect(group: IdentityGroupModel): void {\n        if (group) {\n            this.selectGroup.emit(group);\n\n            if (this.isMultipleMode()) {\n                if (!this.isGroupAlreadySelected(group)) {\n                    this.selectedGroups.push(group);\n                }\n            } else {\n                this.invalidGroups = [];\n                this.selectedGroups = [group];\n            }\n\n            this.groupInput.nativeElement.value = '';\n            this.searchGroupsControl.setValue('');\n            this.groupChipsCtrlValue(this.selectedGroups[0].name);\n\n            this.changedGroups.emit(this.selectedGroups);\n            this.resetSearchGroups();\n        }\n    }\n\n    onRemove(groupToRemove: IdentityGroupModel): void {\n        this.removeGroup.emit(groupToRemove);\n        this.removeGroupFromSelected(groupToRemove);\n        this.changedGroups.emit(this.selectedGroups);\n        if (this.selectedGroups.length === 0) {\n            this.groupChipsCtrlValue('');\n        } else {\n            this.groupChipsCtrlValue(this.selectedGroups[0].name);\n        }\n        this.searchGroupsControl.markAsDirty();\n        this.searchGroupsControl.markAsTouched();\n\n        if (this.isValidationEnabled()) {\n            this.removeGroupFromValidation(groupToRemove);\n            this.checkPreselectValidationErrors();\n        }\n    }\n\n    private isPreselectedGroupInvalid(preselectedGroup: IdentityGroupModel, validatedGroup: IdentityGroupModel): boolean {\n        if (validatedGroup?.name !== undefined) {\n            return preselectedGroup.name !== validatedGroup.name;\n        } else {\n            return true;\n        }\n    }\n\n    removeDuplicatedGroups(groups: IdentityGroupModel[]): IdentityGroupModel[] {\n        return groups.filter(\n            (group, index, self) => index === self.findIndex((auxGroup) => group.id === auxGroup.id && group.name === auxGroup.name)\n        );\n    }\n\n    private groupChipsCtrlValue(value: string) {\n        this.groupChipsCtrl.setValue(value);\n        this.groupChipsCtrl.markAsDirty();\n        this.groupChipsCtrl.markAsTouched();\n    }\n\n    private removeGroupFromSelected({ id, name }: IdentityGroupModel): void {\n        const indexToRemove = this.selectedGroups.findIndex((group) => group.id === id && group.name === name);\n\n        if (indexToRemove !== -1) {\n            this.selectedGroups.splice(indexToRemove, 1);\n        }\n    }\n\n    private removeGroupFromValidation({ id, name }: IdentityGroupModel): void {\n        const indexToRemove = this.invalidGroups.findIndex((group) => group.id === id && group.name === name);\n\n        if (indexToRemove !== -1) {\n            this.invalidGroups.splice(indexToRemove, 1);\n        }\n    }\n\n    private resetSearchGroups(): void {\n        this.searchGroups = [];\n        this.searchGroups$.next(this.searchGroups);\n    }\n\n    private isSingleSelectionReadonly(): boolean {\n        return this.isSingleMode() && this.selectedGroups.length === 1 && this.selectedGroups[0].readonly === true;\n    }\n\n    private isSingleMode(): boolean {\n        return this.mode === 'single';\n    }\n\n    private isMultipleMode(): boolean {\n        return this.mode === 'multiple';\n    }\n\n    private hasPreSelectGroups(): boolean {\n        return this.preSelectGroups && this.preSelectGroups.length > 0;\n    }\n\n    private hasModeChanged(changes: SimpleChanges): boolean {\n        return changes?.mode && changes.mode.currentValue !== changes.mode.previousValue;\n    }\n\n    private isValidationChanged(changes: SimpleChanges): boolean {\n        return changes?.validate && changes.validate.currentValue !== changes.validate.previousValue;\n    }\n\n    private hasPreselectedGroupsChanged(changes: SimpleChanges): boolean {\n        return changes?.preSelectGroups && changes.preSelectGroups.currentValue !== changes.preSelectGroups.previousValue;\n    }\n\n    private hasPreselectedGroupsCleared(changes: SimpleChanges): boolean {\n        return changes?.preSelectGroups?.currentValue.length === 0;\n    }\n\n    private setTypingError(): void {\n        this.searchGroupsControl.setErrors({\n            searchTypingError: true,\n            ...this.searchGroupsControl.errors\n        });\n    }\n\n    hasPreselectError(): boolean {\n        return this.invalidGroups && this.invalidGroups.length > 0;\n    }\n\n    isReadonly(): boolean {\n        return this.readOnly || this.isSingleSelectionReadonly();\n    }\n\n    getDisplayName(group: IdentityGroupModel): string {\n        return group?.name || '';\n    }\n\n    hasError(): boolean {\n        return !!this.searchGroupsControl.errors;\n    }\n\n    isValidationLoading(): boolean {\n        return this.isValidationEnabled() && this.validationLoading;\n    }\n\n    markAsTouched(): void {\n        this.touched = true;\n    }\n\n    isTouched(): boolean {\n        return this.touched;\n    }\n\n    isSelected(): boolean {\n        return this.selectedGroups && !!this.selectedGroups.length;\n    }\n\n    isDirty(): boolean {\n        return this.isTouched() && !this.isSelected();\n    }\n\n    setFocus(isFocused: boolean) {\n        this.isFocused = isFocused;\n    }\n\n    isValidationEnabled(): boolean {\n        return this.validate === true;\n    }\n\n    getValidationPattern(): string {\n        return this.searchGroupsControl.errors.pattern.requiredPattern;\n    }\n\n    getValidationMaxLength(): string {\n        return this.searchGroupsControl.errors.maxlength.requiredLength;\n    }\n\n    getValidationMinLength(): string {\n        return this.searchGroupsControl.errors.minlength.requiredLength;\n    }\n\n    getGroupNameInitials(group: IdentityGroupModel): string {\n        let result = '';\n        if (group) {\n            const groupName = group.name;\n            result = (groupName ? groupName[0] : '').toUpperCase();\n        }\n        return result;\n    }\n}\n","<form>\n    <mat-form-field class=\"adf-cloud-group adf-form-field-input\" [class.adf-invalid]=\"hasError() && isDirty()\">\n        @if (label || required) { <mat-label><span>{{label}}</span></mat-label> }\n        <mat-chip-grid [required]=\"required\" #groupChipList data-automation-id=\"adf-cloud-group-chip-list\">\n            <mat-chip-row\n                *ngFor=\"let group of selectedGroups\"\n                [removable]=\"!(group.readonly)\"\n                [attr.data-automation-id]=\"'adf-cloud-group-chip-' + group.name\"\n                (removed)=\"onRemove(group)\"\n                [disabled]=\"readOnly || isValidationLoading()\"\n                title=\"{{ (group.readonly ? 'ADF_CLOUD_GROUPS.MANDATORY' : '') | translate }}\">\n                {{group.name}}\n                <mat-icon\n                    *ngIf=\"!(group.readonly || readOnly)\"\n                    matChipRemove [attr.data-automation-id]=\"'adf-cloud-group-chip-remove-icon-' + group.name\">\n                    cancel\n                </mat-icon>\n            </mat-chip-row>\n            <input [disabled]=\"readOnly || isValidationLoading()\" matInput\n                   [formControl]=\"searchGroupsControl\"\n                   [matAutocomplete]=\"auto\"\n                   [matChipInputFor]=\"groupChipList\"\n                   [placeholder]=\"title | translate\"\n                   [required]=\"required\"\n                   (focus)=\"setFocus(true)\"\n                   (blur)=\"setFocus(false); markAsTouched()\"\n                   class=\"adf-group-input\"\n                   data-automation-id=\"adf-cloud-group-search-input\" #groupInput>\n        </mat-chip-grid>\n\n        <mat-autocomplete\n            autoActiveFirstOption\n            #auto=\"matAutocomplete\"\n            class=\"adf-cloud-group-list\"\n            (optionSelected)=\"onSelect($event.option.value)\"\n            [displayWith]=\"getDisplayName\"\n            data-automation-id=\"adf-cloud-group-autocomplete\">\n            <ng-container *ngIf=\"(searchGroups$ | async)?.length else noResults\">\n                <mat-option *ngFor=\"let group of searchGroups$ | async; let i = index\" [value]=\"group\"\n                            [attr.data-automation-id]=\"'adf-cloud-group-chip-' + group.name\"\n                            class=\"adf-cloud-group-option-active\">\n                    <div\n                        class=\"adf-cloud-group-row\"\n                        id=\"adf-group-{{i}}\"\n                        data-automation-id=\"adf-cloud-group-row\">\n                        <button class=\"adf-group-short-name\" mat-fab>{{getGroupNameInitials(group)}}</button>\n                        <span>{{group.name}}</span>\n                    </div>\n                </mat-option>\n            </ng-container>\n            <ng-template #noResults>\n                <mat-option *ngIf=\"searchGroupsControl.hasError('searchTypingError') && !searchLoading\" disabled\n                            class=\"adf-cloud-group-option-not-active\"\n                            data-automation-id=\"adf-cloud-group-no-results\">\n                    <span> {{ 'ADF_CLOUD_GROUPS.ERROR.NOT_FOUND' | translate }}</span>\n                </mat-option>\n            </ng-template>\n        </mat-autocomplete>\n    </mat-form-field>\n    <mat-progress-bar *ngIf=\"validationLoading\" mode=\"indeterminate\" />\n\n    <div class=\"adf-error-container adf-error-messages-container\">\n        <mat-error *ngIf=\"hasPreselectError() &&  !isValidationLoading()\" [@transitionMessages]=\"subscriptAnimationState\" class=\"adf-error\">\n            <mat-icon class=\"adf-error-icon\">error_outline</mat-icon>\n            <div class=\"adf-error-text\">{{ 'ADF_CLOUD_GROUPS.ERROR.NOT_FOUND' | translate }}</div>\n        </mat-error>\n        <mat-error *ngIf=\"searchGroupsControl.hasError('pattern')\" [@transitionMessages]=\"subscriptAnimationState\" class=\"adf-error\">\n            <mat-icon class=\"adf-error-icon\">error_outline</mat-icon>\n            <div class=\"adf-error-text\">{{ 'ADF_CLOUD_PEOPLE_GROUPS.ERROR.INVALID_PATTERN' | translate: { pattern: getValidationPattern() } }}</div>\n            </mat-error>\n        <mat-error *ngIf=\"searchGroupsControl.hasError('maxlength')\" [@transitionMessages]=\"subscriptAnimationState\" class=\"adf-error\">\n            <mat-icon class=\"adf-error-icon\">error_outline</mat-icon>\n            <div class=\"adf-error-text\">{{ 'ADF_CLOUD_PEOPLE_GROUPS.ERROR.INVALID_MAX_LENGTH' | translate: { requiredLength: getValidationMaxLength() } }}</div>\n        </mat-error>\n        <mat-error *ngIf=\"searchGroupsControl.hasError('minlength')\" [@transitionMessages]=\"subscriptAnimationState\" class=\"adf-error\">\n            <mat-icon class=\"adf-error-icon\">error_outline</mat-icon>\n            <div class=\"adf-error-text\">{{ 'ADF_CLOUD_PEOPLE_GROUPS.ERROR.INVALID_MIN_LENGTH' | translate: { requiredLength: getValidationMinLength() } }}</div>\n        </mat-error>\n        <mat-error *ngIf=\"(searchGroupsControl.hasError('required') || groupChipsCtrl.hasError('required')) && isDirty()\"\n            [@transitionMessages]=\"subscriptAnimationState\" class=\"adf-error\">\n            <mat-icon class=\"adf-error-icon\">error_outline</mat-icon>\n            <div class=\"adf-error-text\">{{ 'ADF_CLOUD_PEOPLE_GROUPS.ERROR.REQUIRED' | translate }} </div>\n        </mat-error>\n        <mat-error *ngIf=\"searchGroupsControl.hasError('searchTypingError') && !this.isFocused\"\n            data-automation-id=\"invalid-groups-typing-error\" [@transitionMessages]=\"subscriptAnimationState\" class=\"adf-error\">\n            <mat-icon class=\"adf-error-icon\">error_outline</mat-icon>\n            <div class=\"adf-error-text\">{{ 'ADF_CLOUD_GROUPS.ERROR.NOT_FOUND' | translate }}</div>\n        </mat-error>\n    </div>\n</form>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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, Output, EventEmitter, OnInit, OnChanges, SimpleChanges } from '@angular/core';\nimport { MatSelectChange, MatSelectModule } from '@angular/material/select';\nimport { AssignmentType, TaskFilterProperties, TaskStatusFilter } from '../../models/filter-cloud.model';\nimport { IdentityUserModel } from '../../../../people/models/identity-user.model';\nimport { IdentityUserService } from '../../../../people/services/identity-user.service';\nimport { IdentityGroupModel } from '../../../../group/models/identity-group.model';\nimport { DropdownOption } from '../edit-task-filters/base-edit-task-filter-cloud.component';\nimport { FormControl, FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { GroupCloudComponent } from '../../../../group/components/group-cloud.component';\nimport { PeopleCloudComponent } from '../../../../people/components/people-cloud.component';\n\n@Component({\n    selector: 'adf-cloud-task-assignment-filter',\n    imports: [CommonModule, GroupCloudComponent, TranslatePipe, MatSelectModule, FormsModule, PeopleCloudComponent],\n    templateUrl: './task-assignment-filter.component.html',\n    styleUrls: ['./task-assignment-filter.component.scss']\n})\nexport class TaskAssignmentFilterCloudComponent implements OnInit, OnChanges {\n    @Input() appName: string;\n\n    @Input() taskFilterProperty: TaskFilterProperties;\n\n    @Input() status: TaskStatusFilter;\n\n    @Output() assignedUsersChange = new EventEmitter<IdentityUserModel[]>();\n\n    @Output() assignedGroupsChange = new EventEmitter<IdentityGroupModel[]>();\n\n    @Output() assignmentTypeChange = new EventEmitter<AssignmentType>();\n\n    assignmentType: AssignmentType;\n    assignedUsers: IdentityUserModel[] = [];\n    candidateGroups: IdentityGroupModel[] = [];\n    groupForm = new FormControl('');\n    assignmentTypeOptions: DropdownOption[];\n\n    constructor(private identityUserService: IdentityUserService) {}\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (changes?.status?.currentValue !== changes?.status?.previousValue) {\n            this.changeAssignmentTypeByStatus(changes?.status?.currentValue);\n        }\n    }\n\n    ngOnInit() {\n        this.assignmentTypeOptions = this.getAssignmentTypeOptions();\n\n        if (this.isFilterPropertyDefined()) {\n            this.setInitialCandidateGroups();\n            this.setInitialAssignedUsers();\n            this.setDefaultAssignmentType();\n        }\n    }\n\n    isCandidateGroupsType(): boolean {\n        return this.assignmentType === AssignmentType.CANDIDATE_GROUPS;\n    }\n\n    isAssignedToType(): boolean {\n        return this.assignmentType === AssignmentType.ASSIGNED_TO;\n    }\n\n    onAssignmentTypeChange(assignmentChange: MatSelectChange) {\n        this.candidateGroups = [];\n        this.assignedUsers = [];\n\n        if (assignmentChange.value === AssignmentType.CURRENT_USER) {\n            this.assignedUsersChange.emit([this.identityUserService.getCurrentUserInfo()]);\n        } else if (assignmentChange.value === AssignmentType.NONE) {\n            this.assignedUsersChange.emit([]);\n        }\n\n        this.assignmentType = assignmentChange.value;\n        this.assignmentTypeChange.emit(this.assignmentType);\n    }\n\n    onChangedGroups(groups: IdentityGroupModel[]) {\n        this.assignedGroupsChange.emit(groups);\n    }\n\n    onChangedAssignedUsers(users: IdentityUserModel[]) {\n        this.assignedUsersChange.emit(users);\n    }\n\n    private changeAssignmentTypeByStatus(status: TaskStatusFilter) {\n        switch (status) {\n            case TaskStatusFilter.CREATED:\n                this.assignmentType = AssignmentType.UNASSIGNED;\n                break;\n            case TaskStatusFilter.ASSIGNED:\n                this.assignmentType = AssignmentType.ASSIGNED_TO;\n                break;\n            default:\n                this.assignmentType = AssignmentType.NONE;\n        }\n    }\n\n    private getAssignmentTypeOptions(): DropdownOption[] {\n        return [\n            { value: AssignmentType.NONE, label: `ADF_CLOUD_TASK_ASSIGNMENT_FILTER.${AssignmentType.NONE}` },\n            { value: AssignmentType.UNASSIGNED, label: `ADF_CLOUD_TASK_ASSIGNMENT_FILTER.${AssignmentType.UNASSIGNED}` },\n            { value: AssignmentType.ASSIGNED_TO, label: `ADF_CLOUD_TASK_ASSIGNMENT_FILTER.${AssignmentType.ASSIGNED_TO}` },\n            { value: AssignmentType.CURRENT_USER, label: `ADF_CLOUD_TASK_ASSIGNMENT_FILTER.${AssignmentType.CURRENT_USER}` },\n            { value: AssignmentType.CANDIDATE_GROUPS, label: `ADF_CLOUD_TASK_ASSIGNMENT_FILTER.${AssignmentType.CANDIDATE_GROUPS}` }\n        ];\n    }\n\n    private setDefaultAssignmentType() {\n        if (this.candidateGroups?.length) {\n            this.assignmentType = AssignmentType.CANDIDATE_GROUPS;\n        } else if (this.assignedUsers?.length) {\n            this.assignmentType = AssignmentType.ASSIGNED_TO;\n        } else {\n            this.assignmentType = AssignmentType.NONE;\n        }\n    }\n\n    private setInitialCandidateGroups() {\n        const candidateGroupsAttr = this.taskFilterProperty.attributes['candidateGroups'];\n        this.candidateGroups = this.taskFilterProperty.value[candidateGroupsAttr];\n    }\n\n    private setInitialAssignedUsers() {\n        const assignedUsersAttr = this.taskFilterProperty.attributes['assignedUsers'];\n        this.assignedUsers = this.taskFilterProperty.value[assignedUsersAttr];\n    }\n\n    private isFilterPropertyDefined(): boolean {\n        return !!this.taskFilterProperty.attributes && !!this.taskFilterProperty.value;\n    }\n}\n","<div class=\"adf-cloud-assignment-container\">\n    <mat-form-field floatLabel=\"auto\" class=\"adf-task-assignment-filter-container\">\n        <mat-label class=\"adf-task-assignment-filter-label\"\n            [ngClass]=\"{'adf-task-assignment-filter-label--focus': typeDropdown.focused}\">\n            {{ 'ADF_CLOUD_TASK_ASSIGNMENT_FILTER.ASSIGNMENT_TYPE' | translate }}\n        </mat-label>\n        <mat-select class=\"adf-task-assignment-filter\"\n                    [(ngModel)]=\"assignmentType\" #typeDropdown\n                    [attr.data-automation-id]=\"'adf-task-assignment-filter-select'\"\n                    (selectionChange)=\"onAssignmentTypeChange($event)\">\n            <mat-option *ngFor=\"let assignmentType of assignmentTypeOptions\"\n                class=\"adf-task-assignment-filter-option\"\n                [ngClass]=\"{'adf-task-assignment-filter-option--selected': filterOption.selected}\"\n                [value]=\"assignmentType.value\" #filterOption\n                [attr.data-automation-id]=\"'adf-task-assignment-filter-' + assignmentType.value\">\n                {{ assignmentType.label | translate }}\n            </mat-option>\n        </mat-select>\n    </mat-form-field>\n\n    <adf-cloud-group *ngIf=\"isCandidateGroupsType()\"\n        class=\"adf-group-cloud-filter\"\n        data-automation-id=\"adf-group-cloud-candidate-groups-filter\"\n        [appName]=\"appName\"\n        [preSelectGroups]=\"candidateGroups\"\n        [mode]=\"taskFilterProperty.selectionMode\"\n        [title]=\"'ADF_CLOUD_TASK_LIST.START_TASK.FORM.LABEL.CANDIDATE_GROUP'\"\n        (changedGroups)=\"onChangedGroups($event)\" />\n\n    <adf-cloud-people *ngIf=\"isAssignedToType()\"\n        class=\"adf-group-cloud-filter\"\n        data-automation-id=\"adf-group-cloud-assigned-to-filter\"\n        [preSelectUsers]=\"assignedUsers\"\n        [title]=\"'ADF_CLOUD_TASK_LIST.START_TASK.FORM.LABEL.ASSIGNEE'\"\n        [appName]=\"appName\"\n        (changedUsers)=\"onChangedAssignedUsers($event)\" />\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, inject, ViewEncapsulation } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ServiceTaskFilterCloudModel, TaskFilterAction, TaskFilterProperties } from '../../../models/filter-cloud.model';\nimport { ServiceTaskFilterCloudService } from '../../../services/service-task-filter-cloud.service';\nimport { BaseEditTaskFilterCloudComponent, DropdownOption } from '../base-edit-task-filter-cloud.component';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatButtonModule } from '@angular/material/button';\nimport { IconComponent } from '@alfresco/adf-core';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { DateRangeFilterComponent } from '../../../../../common/date-range-filter/date-range-filter.component';\nimport { PeopleCloudComponent } from '../../../../../people/components/people-cloud.component';\nimport { TaskAssignmentFilterCloudComponent } from '../../task-assignment-filter/task-assignment-filter.component';\n\n@Component({\n    selector: 'adf-cloud-edit-service-task-filter',\n    imports: [\n        CommonModule,\n        TranslatePipe,\n        MatExpansionModule,\n        MatButtonModule,\n        IconComponent,\n        MatProgressSpinnerModule,\n        ReactiveFormsModule,\n        MatFormFieldModule,\n        MatSelectModule,\n        MatInputModule,\n        MatDatepickerModule,\n        MatIconModule,\n        MatCheckboxModule,\n        DateRangeFilterComponent,\n        PeopleCloudComponent,\n        TaskAssignmentFilterCloudComponent\n    ],\n    templateUrl: './edit-service-task-filter-cloud.component.html',\n    styleUrls: ['./edit-service-task-filter-cloud.component.scss'],\n    encapsulation: ViewEncapsulation.None\n})\nexport class EditServiceTaskFilterCloudComponent extends BaseEditTaskFilterCloudComponent<ServiceTaskFilterCloudModel> {\n    private serviceTaskFilterCloudService = inject(ServiceTaskFilterCloudService);\n\n    constructor() {\n        super();\n    }\n\n    assignNewFilter(model: ServiceTaskFilterCloudModel) {\n        this.changedTaskFilter = { ...this.taskFilter, ...model };\n        this.formHasBeenChanged = !this.deepCompare(this.changedTaskFilter, this.taskFilter);\n        this.filterChange.emit(this.changedTaskFilter);\n    }\n\n    protected getTaskFilterById(appName: string, id: string) {\n        return this.serviceTaskFilterCloudService.getTaskFilterById(appName, id);\n    }\n\n    getDefaultFilterProperties(): string[] {\n        return ['appName', 'activityName', 'status', 'sort', 'order'];\n    }\n\n    getDefaultSortProperties(): string[] {\n        return ['id', 'activityName', 'startedDate', 'completedDate'];\n    }\n\n    protected updateFilter(filterToUpdate: ServiceTaskFilterCloudModel) {\n        return this.serviceTaskFilterCloudService.updateFilter(filterToUpdate);\n    }\n\n    protected deleteFilter(filterToDelete: ServiceTaskFilterCloudModel): Observable<ServiceTaskFilterCloudModel[]> {\n        return this.serviceTaskFilterCloudService.deleteFilter(filterToDelete);\n    }\n\n    protected addFilter(filterToAdd: ServiceTaskFilterCloudModel): Observable<any> {\n        return this.serviceTaskFilterCloudService.addFilter(filterToAdd).pipe(takeUntilDestroyed(this.destroyRef));\n    }\n\n    isDisabledForDefaultFilters(action: TaskFilterAction): boolean {\n        return (\n            this.serviceTaskFilterCloudService.isDefaultFilter(this.taskFilter.name) &&\n            EditServiceTaskFilterCloudComponent.ACTIONS_DISABLED_BY_DEFAULT.includes(action.actionType)\n        );\n    }\n\n    restoreDefaultTaskFilters(): Observable<ServiceTaskFilterCloudModel[]> {\n        return this.serviceTaskFilterCloudService.getTaskListFilters(this.appName);\n    }\n\n    private getStatusOptions(): DropdownOption[] {\n        return [\n            { value: '', label: 'ADF_CLOUD_SERVICE_TASK_FILTERS.STATUS.ALL' },\n            { value: 'STARTED', label: 'ADF_CLOUD_SERVICE_TASK_FILTERS.STATUS.STARTED' },\n            { value: 'COMPLETED', label: 'ADF_CLOUD_SERVICE_TASK_FILTERS.STATUS.COMPLETED' },\n            { value: 'CANCELLED', label: 'ADF_CLOUD_SERVICE_TASK_FILTERS.STATUS.CANCELLED' },\n            { value: 'ERROR', label: 'ADF_CLOUD_SERVICE_TASK_FILTERS.STATUS.ERROR' }\n        ];\n    }\n\n    createTaskFilterProperties(): TaskFilterProperties[] {\n        const statusOptions = this.getStatusOptions();\n\n        return [\n            {\n                label: 'ADF_CLOUD_EDIT_SERVICE_TASK_FILTER.LABEL.APP_NAME',\n                type: 'select',\n                key: 'appName',\n                value: this.taskFilter.appName || '',\n                options: this.applicationNames\n            },\n            {\n                label: 'ADF_CLOUD_EDIT_SERVICE_TASK_FILTER.LABEL.SERVICE_TASK_ID',\n                type: 'text',\n                key: 'serviceTaskId',\n                value: this.taskFilter.serviceTaskId || ''\n            },\n            {\n                label: 'ADF_CLOUD_EDIT_SERVICE_TASK_FILTER.LABEL.ELEMENT_ID',\n                type: 'text',\n                key: 'elementId',\n                value: this.taskFilter.elementId || ''\n            },\n            {\n                label: 'ADF_CLOUD_EDIT_SERVICE_TASK_FILTER.LABEL.ACTIVITY_NAME',\n                type: 'text',\n                key: 'activityName',\n                value: this.taskFilter.activityName || ''\n            },\n            {\n                label: 'ADF_CLOUD_EDIT_SERVICE_TASK_FILTER.LABEL.ACTIVITY_TYPE',\n                type: 'text',\n                key: 'activityType',\n                value: this.taskFilter.activityType || ''\n            },\n            {\n                label: 'ADF_CLOUD_EDIT_SERVICE_TASK_FILTER.LABEL.SORT',\n                type: 'select',\n                key: 'sort',\n                value: this.taskFilter.sort || this.createSortProperties[0].value,\n                options: this.createSortProperties\n            },\n            {\n                label: 'ADF_CLOUD_EDIT_SERVICE_TASK_FILTER.LABEL.DIRECTION',\n                type: 'select',\n                key: 'order',\n                value: this.taskFilter.order || this.sortDirections[0].value,\n                options: [...this.sortDirections]\n            },\n            {\n                label: 'ADF_CLOUD_EDIT_SERVICE_TASK_FILTER.LABEL.STATUS',\n                type: 'select',\n                key: 'status',\n                value: this.taskFilter.status || statusOptions[0].value,\n                options: statusOptions\n            },\n            {\n                label: 'ADF_CLOUD_EDIT_SERVICE_TASK_FILTER.LABEL.STARTED_DATE',\n                type: 'date',\n                key: 'startedDate',\n                value: this.taskFilter.completedDate || false\n            },\n            {\n                label: 'ADF_CLOUD_EDIT_SERVICE_TASK_FILTER.LABEL.COMPLETED_DATE',\n                type: 'date',\n                key: 'completedDate',\n                value: this.taskFilter.completedDate || false\n            },\n            {\n                label: 'ADF_CLOUD_EDIT_SERVICE_TASK_FILTER.LABEL.PROCESS_INSTANCE_ID',\n                type: 'text',\n                key: 'processInstanceId',\n                value: this.processInstanceId || this.taskFilter.processInstanceId || ''\n            },\n            {\n                label: 'ADF_CLOUD_EDIT_SERVICE_TASK_FILTER.LABEL.PROCESS_DEF_ID',\n                type: 'text',\n                key: 'processDefinitionId',\n                value: this.taskFilter.processDefinitionId || ''\n            },\n            {\n                label: 'ADF_CLOUD_EDIT_SERVICE_TASK_FILTER.LABEL.SERVICE_NAME',\n                type: 'text',\n                key: 'serviceName',\n                value: this.taskFilter.serviceName || ''\n            }\n        ];\n    }\n}\n","<mat-accordion [hideToggle]=\"isLoading\" class=\"adf-edit-task-filter\">\n    <mat-expansion-panel (afterExpand)=\"onExpand()\" (closed)=\"onClose()\">\n        <mat-expansion-panel-header *ngIf=\"taskFilter\" id=\"adf-edit-task-filter-expansion-header\" class=\"adf-edit-task-filter-header\">\n            <ng-container *ngIf=\"!isLoading; else loadingTemplate\">\n                <mat-panel-title *ngIf=\"showTaskFilterName\" id=\"adf-edit-task-filter-title-id\" class=\"adf-edit-task-filter-header__title\"\n                    >{{taskFilter.name | translate}}</mat-panel-title>\n                <mat-panel-description class=\"adf-edit-task-filter-header__description\" id=\"adf-edit-task-filter-sub-title-id\">\n                    <span *ngIf=\"showTitle\">{{ 'ADF_CLOUD_EDIT_TASK_FILTER.TITLE' | translate}}</span>\n                    <div *ngIf=\"showFilterActions\" class=\"adf-cloud-edit-task-filter-actions\">\n                        <ng-container *ngIf=\"toggleFilterActions\">\n                            <button *ngFor=\"let filterAction of taskFilterActions\"\n                                    mat-icon-button\n                                    [title]=\"filterAction.tooltip | translate\"\n                                    [attr.data-automation-id]=\"'adf-filter-action-' + filterAction.actionType\"\n                                    [disabled]=\"isDisabledAction(filterAction)\"\n                                    (click)=\"executeFilterActions(filterAction)\">\n                                <adf-icon [value]=\"filterAction.icon\" />\n                            </button>\n                        </ng-container>\n                    </div>\n                </mat-panel-description>\n            </ng-container>\n            <ng-template #loadingTemplate>\n                <div class=\"adf-cloud-edit-task-filter-loading-margin\">\n                    <mat-progress-spinner mode=\"indeterminate\" [diameter]=\"30\" />\n                </div>\n            </ng-template>\n        </mat-expansion-panel-header>\n        <ng-container *ngIf=\"!isLoading;\">\n            <form *ngIf=\"editTaskFilterForm\" [formGroup]=\"editTaskFilterForm\" class=\"adf-edit-task-filter-content\">\n                <div class=\"adf-edit-task-filter-form\">\n                    <ng-container *ngFor=\"let taskFilterProperty of taskFilterProperties\">\n                        <mat-form-field [floatLabel]=\"'auto'\"\n                            *ngIf=\"taskFilterProperty.type === 'select'\"\n                            [attr.data-automation-id]=\"taskFilterProperty.key\">\n                            <mat-label class=\"adf-edit-task-filter-content__select-label\">{{taskFilterProperty.label | translate}}</mat-label>\n                            <mat-select\n                                [formControlName]=\"taskFilterProperty.key\"\n                                [attr.data-automation-id]=\"'adf-cloud-edit-task-property-' + taskFilterProperty.key\"\n                                (selectionChange)=\"onStatusChange($event)\">\n                                    <mat-option *ngFor=\"let propertyOption of taskFilterProperty.options\"\n                                        [value]=\"propertyOption.value\"\n                                        [attr.data-automation-id]=\"'adf-cloud-edit-task-property-options-' + taskFilterProperty.key\">\n                                        {{ propertyOption.label | translate }}\n                                    </mat-option>\n                            </mat-select>\n                        </mat-form-field>\n                        <mat-form-field [floatLabel]=\"'auto'\"\n                            *ngIf=\"taskFilterProperty.type === 'text'\"\n                            [attr.data-automation-id]=\"taskFilterProperty.key\">\n                            <mat-label class=\"adf-edit-task-filter-content__text-label\">{{taskFilterProperty.label | translate}}</mat-label>\n                            <input matInput\n                                   [formControlName]=\"taskFilterProperty.key\"\n                                   type=\"text\"\n                                   [attr.data-automation-id]=\"'adf-cloud-edit-task-property-' + taskFilterProperty.key\" />\n                        </mat-form-field>\n                        <mat-form-field [floatLabel]=\"'auto'\"\n                                        *ngIf=\"taskFilterProperty.type === 'date'\"\n                                        [attr.data-automation-id]=\"taskFilterProperty.key\">\n                            <mat-label>{{taskFilterProperty.label | translate}}</mat-label>\n                            <input matInput\n                                   (keyup)=\"onDateChanged($any($event).target.value, taskFilterProperty)\"\n                                   (dateChange)=\"onDateChanged($event.value, taskFilterProperty)\"\n                                   [matDatepicker]=\"dateController\"\n                                   [placeholder]=\"taskFilterProperty.label | translate\"\n                                   [attr.data-automation-id]=\"'adf-cloud-edit-task-property-' + taskFilterProperty.key\">\n                            <mat-datepicker-toggle matSuffix\n                                                   [for]=\"dateController\"\n                                                   [attr.data-automation-id]=\"'adf-cloud-edit-task-property-date-toggle-' + taskFilterProperty.key\" />\n                            <mat-datepicker #dateController\n                                            [attr.data-automation-id]=\"'adf-cloud-edit-task-property-date-picker-' + taskFilterProperty.key\" />\n                            <div class=\"adf-edit-task-filter-date-error-container\">\n                                <div *ngIf=\"hasError(taskFilterProperty)\">\n                                    <div class=\"adf-error-text\">{{'ADF_TASK_LIST.START_TASK.FORM.ERROR.DATE'|translate}}</div>\n                                    <mat-icon class=\"adf-error-icon\">warning</mat-icon>\n                                </div>\n                            </div>\n                        </mat-form-field>\n                        <div class=\"adf-edit-task-filter-checkbox\"\n                             *ngIf=\"taskFilterProperty.type === 'checkbox'\">\n                            <mat-checkbox color=\"primary\"\n                                          [formControlName]=\"taskFilterProperty.key\"\n                                          [attr.data-automation-id]=\"taskFilterProperty.key\"\n                            >{{taskFilterProperty.label | translate}}</mat-checkbox>\n                        </div>\n\n                        <adf-cloud-date-range-filter\n                            *ngIf=\"taskFilterProperty.type === 'date-range'\"\n                            [processFilterProperty]=\"taskFilterProperty\"\n                            [options]=\"taskFilterProperty.dateFilterOptions\"\n                            (dateTypeChange)=\"onDateTypeChange($event, taskFilterProperty)\"\n                            (dateChanged)=\"onDateRangeFilterChanged($event, taskFilterProperty)\" />\n                        <adf-cloud-people\n                            class=\"{{ 'adf-edit-task-filter-' + taskFilterProperty.key }}\"\n                            *ngIf=\"taskFilterProperty.type === 'people'\"\n                            [preSelectUsers]=\"taskFilterProperty.value\"\n                            [title]=\"taskFilterProperty.label\"\n                            [validate]=\"true\"\n                            [appName]=\"appName\"\n                            [mode]=\"taskFilterProperty.selectionMode\"\n                            (changedUsers)=\"onChangedUser($event, taskFilterProperty)\" />\n\n                        <adf-cloud-task-assignment-filter\n                            *ngIf=\"taskFilterProperty.type === 'assignment'\"\n                            [taskFilterProperty]=\"taskFilterProperty\"\n                            [status]=\"selectedStatus\"\n                            [appName]=\"appName\"\n                            (assignedUsersChange)=\"onAssignedUsersChange($event)\"\n                            (assignedGroupsChange)=\"onAssignedGroupsChange($event)\"\n                            (assignmentTypeChange)=\"onAssignmentTypeChange($event)\" />\n\n                    </ng-container>\n                </div>\n            </form>\n        </ng-container>\n    </mat-expansion-panel>\n</mat-accordion>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, inject, ViewEncapsulation } from '@angular/core';\nimport { map } from 'rxjs/operators';\nimport { Observable } from 'rxjs';\nimport { TaskFilterAction, TaskFilterCloudModel, TaskFilterProperties, TaskStatusFilter } from '../../../models/filter-cloud.model';\nimport { TaskFilterCloudService } from '../../../services/task-filter-cloud.service';\nimport { DateCloudFilterType } from '../../../../../models/date-cloud-filter.model';\nimport { BaseEditTaskFilterCloudComponent, DropdownOption } from '../base-edit-task-filter-cloud.component';\nimport { set } from 'date-fns';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatButtonModule } from '@angular/material/button';\nimport { IconComponent } from '@alfresco/adf-core';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { DateRangeFilterComponent } from '../../../../../common/date-range-filter/date-range-filter.component';\nimport { PeopleCloudComponent } from '../../../../../people/components/people-cloud.component';\nimport { TaskAssignmentFilterCloudComponent } from '../../task-assignment-filter/task-assignment-filter.component';\n\n@Component({\n    selector: 'adf-cloud-edit-task-filter',\n    imports: [\n        CommonModule,\n        TranslatePipe,\n        MatExpansionModule,\n        MatButtonModule,\n        IconComponent,\n        MatProgressSpinnerModule,\n        MatFormFieldModule,\n        ReactiveFormsModule,\n        MatSelectModule,\n        MatInputModule,\n        MatDatepickerModule,\n        MatIconModule,\n        MatCheckboxModule,\n        DateRangeFilterComponent,\n        PeopleCloudComponent,\n        TaskAssignmentFilterCloudComponent\n    ],\n    templateUrl: './edit-task-filter-cloud.component.html',\n    styleUrls: ['./edit-task-filter-cloud.component.scss'],\n    encapsulation: ViewEncapsulation.None\n})\nexport class EditTaskFilterCloudComponent extends BaseEditTaskFilterCloudComponent<TaskFilterCloudModel> {\n    private taskFilterCloudService = inject(TaskFilterCloudService);\n\n    constructor() {\n        super();\n    }\n\n    assignNewFilter(model: TaskFilterCloudModel) {\n        this.setLastModifiedToFilter(model);\n        this.changedTaskFilter = new TaskFilterCloudModel(Object.assign({}, this.taskFilter, model));\n        this.formHasBeenChanged = !this.deepCompare(this.changedTaskFilter, this.taskFilter);\n        this.filterChange.emit(this.changedTaskFilter);\n    }\n\n    protected getTaskFilterById(appName: string, id: string) {\n        return this.taskFilterCloudService.getTaskFilterById(appName, id).pipe(map((response) => new TaskFilterCloudModel(response)));\n    }\n\n    createAndFilterProperties() {\n        const result = super.createAndFilterProperties();\n\n        if (this.hasLastModifiedProperty()) {\n            return [...result, ...this.createLastModifiedProperty()];\n        }\n\n        return result;\n    }\n\n    getDefaultFilterProperties(): string[] {\n        return ['status', 'assignee', 'sort', 'order'];\n    }\n\n    getDefaultSortProperties(): string[] {\n        return ['id', 'name', 'createdDate', 'priority'];\n    }\n\n    private setLastModifiedToFilter(formValues: TaskFilterCloudModel) {\n        if (formValues.lastModifiedTo && Date.parse(formValues.lastModifiedTo.toString())) {\n            const lastModifiedToFilterValue = set(new Date(formValues.lastModifiedTo), {\n                hours: 23,\n                minutes: 59,\n                seconds: 59\n            });\n            formValues.lastModifiedTo = lastModifiedToFilterValue.toISOString();\n        }\n    }\n\n    protected updateFilter(filterToUpdate: TaskFilterCloudModel): Observable<TaskFilterCloudModel[]> {\n        return this.taskFilterCloudService.updateFilter(filterToUpdate);\n    }\n\n    protected deleteFilter(filterToDelete: TaskFilterCloudModel): Observable<TaskFilterCloudModel[]> {\n        return this.taskFilterCloudService.deleteFilter(filterToDelete);\n    }\n\n    protected addFilter(filterToAdd: TaskFilterCloudModel): Observable<any> {\n        return this.taskFilterCloudService.addFilter(filterToAdd).pipe(takeUntilDestroyed(this.destroyRef));\n    }\n\n    isDisabledForDefaultFilters(action: TaskFilterAction): boolean {\n        return (\n            this.taskFilterCloudService.isDefaultFilter(this.taskFilter.name) &&\n            EditTaskFilterCloudComponent.ACTIONS_DISABLED_BY_DEFAULT.includes(action.actionType)\n        );\n    }\n\n    restoreDefaultTaskFilters(): Observable<TaskFilterCloudModel[]> {\n        return this.taskFilterCloudService.getTaskListFilters(this.appName);\n    }\n\n    private createLastModifiedProperty(): TaskFilterProperties[] {\n        return [\n            {\n                label: 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.LAST_MODIFIED_FROM',\n                type: 'date',\n                key: 'lastModifiedFrom',\n                value: ''\n            },\n            {\n                label: 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.LAST_MODIFIED_TO',\n                type: 'date',\n                key: 'lastModifiedTo',\n                value: ''\n            }\n        ];\n    }\n\n    private getStatusOptions(): DropdownOption[] {\n        return [\n            { value: TaskStatusFilter.ALL, label: 'ADF_CLOUD_TASK_FILTERS.STATUS.ALL' },\n            { value: TaskStatusFilter.CREATED, label: 'ADF_CLOUD_TASK_FILTERS.STATUS.CREATED' },\n            { value: TaskStatusFilter.ASSIGNED, label: 'ADF_CLOUD_TASK_FILTERS.STATUS.ASSIGNED' },\n            { value: TaskStatusFilter.SUSPENDED, label: 'ADF_CLOUD_TASK_FILTERS.STATUS.SUSPENDED' },\n            { value: TaskStatusFilter.CANCELLED, label: 'ADF_CLOUD_TASK_FILTERS.STATUS.CANCELLED' },\n            { value: TaskStatusFilter.COMPLETED, label: 'ADF_CLOUD_TASK_FILTERS.STATUS.COMPLETED' }\n        ];\n    }\n\n    createTaskFilterProperties(): TaskFilterProperties[] {\n        const statusOptions = this.getStatusOptions();\n        const sortProperties = this.createSortProperties;\n        return [\n            {\n                label: 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.APP_NAME',\n                type: 'select',\n                key: 'appName',\n                value: this.taskFilter.appName || '',\n                options: this.applicationNames\n            },\n            {\n                label: 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.TASK_ID',\n                type: 'text',\n                key: 'taskId',\n                value: ''\n            },\n            {\n                label: 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.STATUS',\n                type: 'select',\n                key: 'status',\n                value: this.taskFilter.status || statusOptions[0].value,\n                options: statusOptions\n            },\n            {\n                label: 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.ASSIGNMENT',\n                type: 'text',\n                key: 'assignee',\n                value: this.taskFilter.assignee || ''\n            },\n            {\n                label: 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.PROCESS_DEF_NAME',\n                type: 'select',\n                key: 'processDefinitionName',\n                value: this.taskFilter.processDefinitionName || '',\n                options: this.processDefinitionNames\n            },\n            {\n                label: 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.PROCESS_INSTANCE_ID',\n                type: 'text',\n                key: 'processInstanceId',\n                value: this.processInstanceId || this.taskFilter.processInstanceId || ''\n            },\n            {\n                label: 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.PROCESS_DEF_ID',\n                type: 'text',\n                key: 'processDefinitionId',\n                value: this.taskFilter.processDefinitionId || ''\n            },\n            {\n                label: 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.TASK_NAME',\n                type: 'text',\n                key: 'taskName',\n                value: this.taskFilter.taskName || ''\n            },\n            {\n                label: 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.PARENT_TASK_ID',\n                type: 'text',\n                key: 'parentTaskId',\n                value: this.taskFilter.parentTaskId || ''\n            },\n            {\n                label: 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.PRIORITY',\n                type: 'select',\n                key: 'priority',\n                value: this.taskFilter.priority || '',\n                options: this.taskCloudService.priorities\n            },\n            {\n                label: 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.OWNER',\n                type: 'text',\n                key: 'owner',\n                value: this.taskFilter.owner || ''\n            },\n            {\n                label: 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.CREATED_DATE',\n                type: 'date',\n                key: 'createdDate',\n                value: ''\n            },\n            {\n                label: 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.SORT',\n                type: 'select',\n                key: 'sort',\n                value: this.taskFilter.sort || sortProperties[0].value,\n                options: sortProperties\n            },\n            {\n                label: 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.DIRECTION',\n                type: 'select',\n                key: 'order',\n                value: this.taskFilter.order || this.sortDirections[0].value,\n                options: [...this.sortDirections]\n            },\n            {\n                label: 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.STAND_ALONE',\n                type: 'checkbox',\n                key: 'standalone',\n                value: this.taskFilter.standalone || false\n            },\n            {\n                label: 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.DUE_DATE',\n                type: 'date-range',\n                key: 'dueDateRange',\n                attributes: { dateType: 'dueDateType', from: '_dueDateFrom', to: '_dueDateTo' },\n                value: {\n                    dueDateType: this.taskFilter.dueDateType || null,\n                    _dueDateFrom: this.taskFilter.dueDateFrom || null,\n                    _dueDateTo: this.taskFilter.dueDateTo || null\n                },\n                dateFilterOptions: [\n                    DateCloudFilterType.NO_DATE,\n                    DateCloudFilterType.TODAY,\n                    DateCloudFilterType.TOMORROW,\n                    DateCloudFilterType.NEXT_7_DAYS,\n                    DateCloudFilterType.RANGE\n                ]\n            },\n            {\n                label: 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.COMPLETED_DATE',\n                type: 'date-range',\n                key: 'completedDateRange',\n                attributes: { dateType: 'completedDateType', from: '_completedFrom', to: '_completedTo' },\n                value: {\n                    completedDateType: this.taskFilter.completedDateType || null,\n                    _completedFrom: this.taskFilter.completedFrom || null,\n                    _completedTo: this.taskFilter.completedTo || null\n                }\n            },\n            {\n                label: 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.CREATED_DATE',\n                type: 'date-range',\n                key: 'createdDateRange',\n                attributes: { dateType: 'createdDateType', from: '_createdFrom', to: '_createdTo' },\n                value: {\n                    createdDateType: this.taskFilter.createdDateType || null,\n                    _createdFrom: this.taskFilter.createdFrom || null,\n                    _createdTo: this.taskFilter.createdTo || null\n                }\n            },\n            {\n                label: 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.COMPLETED_BY',\n                type: 'people',\n                key: 'completedBy',\n                value: this.taskFilter.completedBy ? [this.taskFilter.completedBy] : null,\n                selectionMode: 'single'\n            },\n            {\n                label: 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.ASSIGNMENT',\n                type: 'assignment',\n                key: 'assignment',\n                attributes: { assignedUsers: 'assignedUsers', candidateGroups: 'candidateGroups' },\n                value: {\n                    assignedUsers: this.taskFilter.assignedUsers || [],\n                    candidateGroups: this.taskFilter.candidateGroups || []\n                },\n                selectionMode: 'multiple'\n            }\n        ];\n    }\n}\n","<mat-accordion [hideToggle]=\"isLoading\" class=\"adf-edit-task-filter\">\n    <mat-expansion-panel (afterExpand)=\"onExpand()\" (closed)=\"onClose()\">\n        <mat-expansion-panel-header *ngIf=\"taskFilter\" id=\"adf-edit-task-filter-expansion-header\" class=\"adf-edit-task-filter-header\">\n            <ng-container *ngIf=\"!isLoading; else loadingTemplate\">\n                <mat-panel-title *ngIf=\"showTaskFilterName\" id=\"adf-edit-task-filter-title-id\" class=\"adf-edit-task-filter-header__title\"\n                    >{{taskFilter.name | translate}}</mat-panel-title>\n                <mat-panel-description class=\"adf-edit-task-filter-header__description\" id=\"adf-edit-task-filter-sub-title-id\">\n                    <span *ngIf=\"showTitle\">{{ 'ADF_CLOUD_EDIT_TASK_FILTER.TITLE' | translate}}</span>\n                    <div *ngIf=\"showFilterActions\" class=\"adf-cloud-edit-task-filter-actions\">\n                        <ng-container *ngIf=\"toggleFilterActions\">\n                            <button *ngFor=\"let filterAction of taskFilterActions\"\n                                    mat-icon-button\n                                    [title]=\"filterAction.tooltip | translate\"\n                                    [attr.data-automation-id]=\"'adf-filter-action-' + filterAction.actionType\"\n                                    [disabled]=\"isDisabledAction(filterAction)\"\n                                    (click)=\"executeFilterActions(filterAction)\">\n                                <adf-icon [value]=\"filterAction.icon\" />\n                            </button>\n                        </ng-container>\n                    </div>\n                </mat-panel-description>\n            </ng-container>\n            <ng-template #loadingTemplate>\n                <div class=\"adf-cloud-edit-task-filter-loading-margin\">\n                    <mat-progress-spinner mode=\"indeterminate\" [diameter]=\"30\" />\n                </div>\n            </ng-template>\n        </mat-expansion-panel-header>\n        <ng-container *ngIf=\"!isLoading;\">\n            <form *ngIf=\"editTaskFilterForm\" [formGroup]=\"editTaskFilterForm\" class=\"adf-edit-task-filter-content\">\n                <div class=\"adf-edit-task-filter-form\">\n                    <ng-container *ngFor=\"let taskFilterProperty of taskFilterProperties\">\n                        <mat-form-field [floatLabel]=\"'auto'\"\n                            *ngIf=\"taskFilterProperty.type === 'select'\"\n                            [attr.data-automation-id]=\"taskFilterProperty.key\">\n                            <mat-label class=\"adf-edit-task-filter-content__select-label\">{{taskFilterProperty.label | translate}}</mat-label>\n                            <mat-select\n                                [formControlName]=\"taskFilterProperty.key\"\n                                [attr.data-automation-id]=\"'adf-cloud-edit-task-property-' + taskFilterProperty.key\"\n                                (selectionChange)=\"onStatusChange($event)\">\n                                    <mat-option *ngFor=\"let propertyOption of taskFilterProperty.options\"\n                                        [value]=\"propertyOption.value\"\n                                        [attr.data-automation-id]=\"'adf-cloud-edit-task-property-options-' + taskFilterProperty.key\">\n                                        {{ propertyOption.label | translate }}\n                                    </mat-option>\n                            </mat-select>\n                        </mat-form-field>\n                        <mat-form-field [floatLabel]=\"'auto'\"\n                            *ngIf=\"taskFilterProperty.type === 'text'\"\n                            [attr.data-automation-id]=\"taskFilterProperty.key\">\n                            <mat-label class=\"adf-edit-task-filter-content__text-label\">{{taskFilterProperty.label | translate}}</mat-label>\n                            <input matInput\n                                   [formControlName]=\"taskFilterProperty.key\"\n                                   type=\"text\"\n                                   [attr.data-automation-id]=\"'adf-cloud-edit-task-property-' + taskFilterProperty.key\" />\n                        </mat-form-field>\n                        <mat-form-field [floatLabel]=\"'auto'\"\n                                        *ngIf=\"taskFilterProperty.type === 'date'\"\n                                        [attr.data-automation-id]=\"taskFilterProperty.key\">\n                            <mat-label>{{taskFilterProperty.label | translate}}</mat-label>\n                            <input matInput\n                                   (keyup)=\"onDateChanged($any($event).target.value, taskFilterProperty)\"\n                                   (dateChange)=\"onDateChanged($event.value, taskFilterProperty)\"\n                                   [matDatepicker]=\"dateController\"\n                                   [placeholder]=\"taskFilterProperty.label | translate\"\n                                   [attr.data-automation-id]=\"'adf-cloud-edit-task-property-' + taskFilterProperty.key\">\n                            <mat-datepicker-toggle matSuffix\n                                                   [for]=\"dateController\"\n                                                   [attr.data-automation-id]=\"'adf-cloud-edit-task-property-date-toggle-' + taskFilterProperty.key\" />\n                            <mat-datepicker #dateController\n                                            [attr.data-automation-id]=\"'adf-cloud-edit-task-property-date-picker-' + taskFilterProperty.key\" />\n                            <div class=\"adf-edit-task-filter-date-error-container\">\n                                <div *ngIf=\"hasError(taskFilterProperty)\">\n                                    <div class=\"adf-error-text\">{{'ADF_TASK_LIST.START_TASK.FORM.ERROR.DATE'|translate}}</div>\n                                    <mat-icon class=\"adf-error-icon\">warning</mat-icon>\n                                </div>\n                            </div>\n                        </mat-form-field>\n                        <div class=\"adf-edit-task-filter-checkbox\"\n                             *ngIf=\"taskFilterProperty.type === 'checkbox'\">\n                            <mat-checkbox color=\"primary\"\n                                          [formControlName]=\"taskFilterProperty.key\"\n                                          [attr.data-automation-id]=\"taskFilterProperty.key\"\n                            >{{taskFilterProperty.label | translate}}</mat-checkbox>\n                        </div>\n\n                        <adf-cloud-date-range-filter #dateRange\n                            *ngIf=\"taskFilterProperty.type === 'date-range'\"\n                            [processFilterProperty]=\"taskFilterProperty\"\n                            [options]=\"taskFilterProperty.dateFilterOptions\"\n                            (dateTypeChange)=\"onDateTypeChange($event, taskFilterProperty)\"\n                            (dateChanged)=\"onDateRangeFilterChanged($event, taskFilterProperty)\" />\n                        <adf-cloud-people\n                            class=\"{{ 'adf-edit-task-filter-' + taskFilterProperty.key }}\"\n                            *ngIf=\"taskFilterProperty.type === 'people'\"\n                            [preSelectUsers]=\"taskFilterProperty.value\"\n                            [title]=\"taskFilterProperty.label\"\n                            [validate]=\"true\"\n                            [appName]=\"appName\"\n                            [mode]=\"taskFilterProperty.selectionMode\"\n                            (changedUsers)=\"onChangedUser($event, taskFilterProperty)\" />\n\n                        <adf-cloud-task-assignment-filter\n                            *ngIf=\"taskFilterProperty.type === 'assignment'\"\n                            [taskFilterProperty]=\"taskFilterProperty\"\n                            [status]=\"selectedStatus\"\n                            [appName]=\"appName\"\n                            (assignedUsersChange)=\"onAssignedUsersChange($event)\"\n                            (assignedGroupsChange)=\"onAssignedGroupsChange($event)\"\n                            (assignmentTypeChange)=\"onAssignmentTypeChange($event)\" />\n\n                    </ng-container>\n                </div>\n            </form>\n        </ng-container>\n    </mat-expansion-panel>\n</mat-accordion>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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, OnChanges, OnInit, Output, SimpleChanges, ViewEncapsulation } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { FilterParamsModel, ServiceTaskFilterCloudModel } from '../../models/filter-cloud.model';\nimport { BaseTaskFiltersCloudComponent } from '../base-task-filters-cloud.component';\nimport { ServiceTaskFilterCloudService } from '../../services/service-task-filter-cloud.service';\nimport { IconComponent, TranslationService } from '@alfresco/adf-core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatListModule } from '@angular/material/list';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\n\n@Component({\n    selector: 'adf-cloud-service-task-filters',\n    imports: [CommonModule, TranslatePipe, MatListModule, IconComponent, MatProgressSpinnerModule],\n    templateUrl: './service-task-filters-cloud.component.html',\n    styleUrls: ['./service-task-filters-cloud.component.scss'],\n    encapsulation: ViewEncapsulation.None\n})\nexport class ServiceTaskFiltersCloudComponent extends BaseTaskFiltersCloudComponent implements OnInit, OnChanges {\n    /** Emitted when a filter is being selected based on the filterParam input. */\n    @Output()\n    filterSelected = new EventEmitter<ServiceTaskFilterCloudModel>();\n\n    /** Emitted when a filter is being clicked from the UI. */\n    @Output()\n    filterClicked = new EventEmitter<ServiceTaskFilterCloudModel>();\n\n    filters$: Observable<ServiceTaskFilterCloudModel[]>;\n    filters: ServiceTaskFilterCloudModel[] = [];\n    currentFilter: ServiceTaskFilterCloudModel;\n\n    private readonly serviceTaskFilterCloudService = inject(ServiceTaskFilterCloudService);\n    private readonly translationService = inject(TranslationService);\n\n    ngOnInit() {\n        this.getFilters(this.appName);\n    }\n\n    ngOnChanges(changes: SimpleChanges) {\n        const appName = changes['appName'];\n        const filter = changes['filterParam'];\n        if (appName && appName.currentValue !== appName.previousValue) {\n            this.getFilters(appName.currentValue);\n        } else if (filter && filter.currentValue !== filter.previousValue) {\n            this.selectFilterAndEmit(filter.currentValue);\n        }\n    }\n\n    /**\n     * Load the filter list filtered by appName\n     *\n     * @param appName application name\n     */\n    getFilters(appName: string): void {\n        this.filters$ = this.serviceTaskFilterCloudService.getTaskListFilters(appName);\n\n        this.filters$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(\n            (res: ServiceTaskFilterCloudModel[]) => {\n                this.resetFilter();\n                this.filters = res || [];\n                this.selectFilterAndEmit(this.filterParam);\n                this.success.emit(res);\n            },\n            (err: any) => {\n                this.error.emit(err);\n            }\n        );\n    }\n\n    /**\n     * Select filter\n     *\n     * @param paramFilter filter model\n     */\n    selectFilter(paramFilter: FilterParamsModel) {\n        if (!paramFilter) {\n            return;\n        }\n\n        const preferredFilter = this.filters.find((filter) => filter.id === paramFilter.id);\n\n        this.currentFilter =\n            preferredFilter ??\n            this.filters.find(\n                (filter, index) =>\n                    paramFilter.index === index ||\n                    paramFilter.key === filter.key ||\n                    paramFilter.id === filter.id ||\n                    (paramFilter.name && paramFilter.name.toLocaleLowerCase() === this.translationService.instant(filter.name).toLocaleLowerCase())\n            ); // fallback to preserve the previous behavior\n    }\n\n    public selectFilterAndEmit(newParamFilter: FilterParamsModel) {\n        if (newParamFilter) {\n            this.selectFilter(newParamFilter);\n\n            if (this.currentFilter) {\n                this.filterSelected.emit(this.currentFilter);\n            }\n        } else {\n            this.currentFilter = undefined;\n        }\n    }\n\n    /**\n     * Selects and emits the clicked filter.\n     *\n     * @param filter filter to select\n     */\n    onFilterClick(filter: FilterParamsModel) {\n        if (filter) {\n            this.selectFilter(filter);\n            this.filterClicked.emit(this.currentFilter);\n        } else {\n            this.currentFilter = undefined;\n        }\n    }\n\n    /**\n     * Select as default task filter the first in the list\n     */\n    public selectDefaultTaskFilter() {\n        if (!this.isFilterListEmpty()) {\n            this.currentFilter = this.filters[0];\n        }\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     * Reset the filters properties\n     */\n    private resetFilter() {\n        this.filters = [];\n        this.currentFilter = undefined;\n    }\n}\n","<mat-action-list class=\"adf-task-filters\" *ngIf=\"filters$ | async as filterList; else loading\">\n        <button\n            *ngFor=\"let filter of filterList\"\n            mat-list-item\n            (click)=\"onFilterClick(filter)\"\n            [attr.aria-label]=\"filter.name | translate\"\n            [id]=\"filter.id\"\n            [attr.data-automation-id]=\"filter.key + '_filter'\"\n            [class.adf-active]=\"currentFilter === filter\">\n            <div class=\"adf-task-filters__entry\">\n                <div class=\"adf-task-filters__entry-label\">\n                    <adf-icon data-automation-id=\"adf-filter-icon\"\n                        *ngIf=\"showIcons\"\n                        [value]=\"filter.icon\"\n                    />\n                    <span data-automation-id=\"adf-filter-label\">\n                        {{ filter.name | translate }}\n                    </span>\n                </div>\n                <span *ngIf=\"counters[filter.key]\"\n                    [attr.data-automation-id]=\"filter.key + '_filter-counter'\"\n                    class=\"adf-task-filters__entry-counter\"\n                    [class.adf-active]=\"wasFilterUpdated(filter.key)\">\n                    {{ counters[filter.key] }}\n                </span>\n            </div>\n        </button>\n    </mat-action-list>\n<ng-template #loading>\n    <ng-container>\n        <div class=\"adf-app-list-spinner\">\n            <mat-spinner />\n        </div>\n    </ng-container>\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 { NgModule } from '@angular/core';\nimport { TaskFiltersCloudComponent } from './components/task-filters/task-filters-cloud.component';\nimport { EditServiceTaskFilterCloudComponent } from './components/edit-task-filters/edit-service-task-filter/edit-service-task-filter-cloud.component';\nimport { EditTaskFilterCloudComponent } from './components/edit-task-filters/edit-task-filter/edit-task-filter-cloud.component';\nimport { TaskFilterDialogCloudComponent } from './components/task-filter-dialog/task-filter-dialog-cloud.component';\nimport { ServiceTaskFiltersCloudComponent } from './components/service-task-filters/service-task-filters-cloud.component';\nimport { TaskAssignmentFilterCloudComponent } from './components/task-assignment-filter/task-assignment-filter.component';\n\nexport const TASK_FILTERS_CLOUD_DIRECTIVES = [\n    TaskFilterDialogCloudComponent,\n    TaskFiltersCloudComponent,\n    ServiceTaskFiltersCloudComponent,\n    EditTaskFilterCloudComponent,\n    TaskAssignmentFilterCloudComponent,\n    EditServiceTaskFilterCloudComponent\n] as const;\n\n/** @deprecated use ...TASK_FILTERS_CLOUD_DIRECTIVES instead */\n@NgModule({\n    imports: [...TASK_FILTERS_CLOUD_DIRECTIVES],\n    exports: [...TASK_FILTERS_CLOUD_DIRECTIVES]\n})\nexport class TaskFiltersCloudModule {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 class TaskVariableCloud {\n    name: string;\n    value: any;\n    type?: string;\n    id?: string;\n    constructor(obj) {\n        this.id = obj.name || null;\n        this.name = obj.name || null;\n        this.value = this.hasValue(obj) ? obj.value : null;\n        this.type = obj.type || null;\n    }\n\n    hasValue(obj: TaskVariableCloud): boolean {\n        return obj.value !== undefined && obj.value !== null;\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, InjectionToken, Optional } from '@angular/core';\nimport { FormValues, FormModel, FormFieldOption, FormFieldValidator } from '@alfresco/adf-core';\nimport { Observable, from, EMPTY } from 'rxjs';\nimport { expand, map, reduce, switchMap } from 'rxjs/operators';\nimport { TaskDetailsCloudModel } from '../../task/models/task-details-cloud.model';\nimport { CompleteFormRepresentation, UploadApi } from '@alfresco/js-api';\nimport { TaskVariableCloud } from '../models/task-variable-cloud.model';\nimport { BaseCloudService } from '../../services/base-cloud.service';\nimport { FormContent } from '../../services/form-fields.interfaces';\nimport { FormCloudServiceInterface } from './form-cloud.service.interface';\nimport { AdfHttpClient } from '@alfresco/adf-core/api';\n\nexport const FORM_CLOUD_SERVICE_FIELD_VALIDATORS_TOKEN = new InjectionToken<FormFieldValidator[]>('FORM_CLOUD_SERVICE_FIELD_VALIDATORS_TOKEN');\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class FormCloudService extends BaseCloudService implements FormCloudServiceInterface {\n    private _uploadApi: UploadApi;\n    private fieldValidators: FormFieldValidator[];\n    get uploadApi(): UploadApi {\n        this._uploadApi = this._uploadApi ?? new UploadApi(this.apiService.getInstance());\n        return this._uploadApi;\n    }\n\n    constructor(\n        adfHttpClient: AdfHttpClient,\n        @Optional() @Inject(FORM_CLOUD_SERVICE_FIELD_VALIDATORS_TOKEN) injectedFieldValidators?: FormFieldValidator[]\n    ) {\n        super(adfHttpClient);\n        this.fieldValidators = injectedFieldValidators || [];\n    }\n\n    /**\n     * Gets the form definition of a task.\n     *\n     * @param appName Name of the app\n     * @param taskId ID of the target task\n     * @param version Version of the form\n     * @returns Form definition\n     */\n    getTaskForm(appName: string, taskId: string, version?: number): Observable<any> {\n        return this.getTask(appName, taskId).pipe(\n            switchMap((task) =>\n                this.getForm(appName, task.formKey, version).pipe(\n                    map((form: FormContent) => {\n                        const flattenForm = {\n                            ...form.formRepresentation,\n                            ...form.formRepresentation.formDefinition,\n                            taskId: task.id,\n                            taskName: task.name,\n                            processDefinitionId: task.processDefinitionId,\n                            processInstanceId: task.processInstanceId\n                        };\n                        delete flattenForm.formDefinition;\n                        return flattenForm;\n                    })\n                )\n            )\n        );\n    }\n\n    /**\n     * Saves a task form.\n     *\n     * @param appName Name of the app\n     * @param taskId ID of the target task\n     * @param processInstanceId ID of processInstance\n     * @param formId ID of the form to save\n     * @param values Form values object\n     * @returns Updated task details\n     */\n    saveTaskForm(appName: string, taskId: string, processInstanceId: string, formId: string, values: FormValues): Observable<TaskDetailsCloudModel> {\n        const apiUrl = `${this.getBasePath(appName)}/form/v1/forms/${formId}/save`;\n        const saveFormRepresentation: any = {\n            values,\n            taskId,\n            processInstanceId\n        };\n\n        return this.post(apiUrl, saveFormRepresentation).pipe(map((res: any) => res.entry));\n    }\n\n    createTemporaryRawRelatedContent(file: any, nodeId: string, contentHost: string): Observable<any> {\n        const changedConfig = this.apiService.lastConfig;\n        changedConfig.provider = 'ALL';\n        changedConfig.hostEcm = contentHost.replace('/alfresco', '');\n        this.apiService.getInstance().setConfig(changedConfig);\n        return from(this.uploadApi.uploadFile(file, '', nodeId, null, { overwrite: true })).pipe(map((res: any) => res.entry));\n    }\n\n    /**\n     * Completes a task form.\n     *\n     * @param appName Name of the app\n     * @param taskId ID of the target task\n     * @param processInstanceId ID of processInstance\n     * @param formId ID of the form to complete\n     * @param formValues Form values object\n     * @param outcome Form outcome\n     * @param version of the form\n     * @returns Updated task details\n     */\n    completeTaskForm(\n        appName: string,\n        taskId: string,\n        processInstanceId: string,\n        formId: string,\n        formValues: FormValues,\n        outcome: string,\n        version: number\n    ): Observable<TaskDetailsCloudModel> {\n        const apiUrl = `${this.getBasePath(appName)}/form/v1/forms/${formId}/submit/versions/${version}`;\n        const completeFormRepresentation = {\n            values: formValues,\n            taskId,\n            processInstanceId\n        } as CompleteFormRepresentation;\n\n        if (outcome) {\n            completeFormRepresentation.outcome = outcome;\n        }\n\n        return this.post(apiUrl, completeFormRepresentation).pipe(map((res: any) => res.entry));\n    }\n\n    /**\n     * Gets details of a task\n     *\n     * @param appName Name of the app\n     * @param taskId ID of the target task\n     * @returns Details of the task\n     */\n    getTask(appName: string, taskId: string): Observable<TaskDetailsCloudModel> {\n        const apiUrl = `${this.getBasePath(appName)}/query/v1/tasks/${taskId}`;\n\n        return this.get(apiUrl).pipe(map((res: any) => res.entry));\n    }\n\n    /**\n     * Gets the variables of a task.\n     *\n     * @param appName Name of the app\n     * @param taskId ID of the target task\n     * @returns Task variables\n     */\n    getTaskVariables(appName: string, taskId: string): Observable<TaskVariableCloud[]> {\n        const apiUrl = `${this.getBasePath(appName)}/query/v1/tasks/${taskId}/variables`;\n        let skipCount = 0;\n        const maxItems = 1000;\n\n        return this.get(apiUrl, { maxItems, skipCount }).pipe(\n            expand((res: any) => {\n                skipCount += maxItems;\n                return res.list.pagination.hasMoreItems\n                    ? this.get(apiUrl, {\n                          maxItems,\n                          skipCount\n                      })\n                    : EMPTY;\n            }),\n            map((res: any) => res.list.entries.map((variable) => new TaskVariableCloud(variable.entry))),\n            reduce((acc, res) => acc.concat(res), [])\n        );\n    }\n\n    /**\n     * Gets a form definition.\n     *\n     * @param appName Name of the app\n     * @param formKey key of the target task\n     * @param version Version of the form\n     * @returns Form definition\n     */\n    getForm(appName: string, formKey: string, version?: number): Observable<FormContent> {\n        let url = `${this.getBasePath(appName)}/form/v1/forms/${formKey}`;\n\n        if (version) {\n            url += `/versions/${version}`;\n        }\n\n        return this.get(url);\n    }\n\n    getRestWidgetData(formName: string, widgetId: string, body: any = {}): Observable<FormFieldOption[]> {\n        const appName = this.appConfigService.get('alfresco-deployed-apps')[0]?.name;\n        const apiUrl = `${this.getBasePath(appName)}/form/v1/forms/${formName}/values/${widgetId}`;\n        return this.post(apiUrl, body);\n    }\n\n    /**\n     * Parses JSON data to create a corresponding form.\n     *\n     * @param json JSON data to create the form\n     * @param data Values for the form's fields\n     * @param readOnly Toggles whether the form should be read-only\n     * @returns Form created from the JSON specification\n     */\n    parseForm(json: any, data?: TaskVariableCloud[], readOnly: boolean = false): FormModel {\n        if (json) {\n            const flattenForm = {\n                ...json.formRepresentation,\n                ...json.formRepresentation.formDefinition\n            };\n            delete flattenForm.formDefinition;\n\n            const formValues: FormValues = {};\n            (data || []).forEach((variable) => {\n                formValues[variable.name] = variable.value;\n            });\n\n            return new FormModel(flattenForm, formValues, readOnly, undefined, undefined, this.fieldValidators);\n        }\n        return null;\n    }\n\n    getPreviewState(): boolean {\n        return false;\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 } from '@angular/core';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\n\n@Component({\n    standalone: true,\n    imports: [TranslatePipe, MatProgressSpinnerModule],\n    templateUrl: './form-spinner.component.html',\n    styleUrls: ['./form-spinner.component.scss']\n})\nexport class FormSpinnerComponent {\n    @Input() message = '';\n}\n","<div class=\"adf-cloud-form-spinner\">\n    <div class=\"adf-cloud-form-spinner-content\">\n        <mat-progress-spinner\n            color=\"primary\"\n            mode=\"indeterminate\"\n        />\n        <span class=\"adf-cloud-form-spinner-content-message\">\n            {{message | translate}}\n        </span>\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 { DestroyRef, inject, Injectable } from '@angular/core';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { FormService, FormSpinnerEvent } from '@alfresco/adf-core';\nimport { FormSpinnerComponent } from '../../components/spinner/form-spinner.component';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Injectable()\nexport class FormCloudSpinnerService {\n    private formService = inject(FormService);\n    private overlay = inject(Overlay);\n\n    private overlayRef?: OverlayRef = null;\n\n    initSpinnerHandling(destroyRef: DestroyRef): void {\n        this.formService.toggleFormSpinner.pipe(takeUntilDestroyed(destroyRef)).subscribe((event: FormSpinnerEvent) => {\n            if (event?.payload.showSpinner && this.overlayRef === null) {\n                this.overlayRef = this.overlay.create({\n                    hasBackdrop: true\n                });\n\n                const userProfilePortal = new ComponentPortal(FormSpinnerComponent);\n                const componentRef = this.overlayRef.attach(userProfilePortal);\n                componentRef.instance.message = event.payload.message;\n            } else if (event?.payload.showSpinner === false) {\n                this.overlayRef?.detach();\n                this.overlayRef = null;\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 { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { FormCloudDisplayMode, FormCloudDisplayModeChange, FormCloudDisplayModeConfiguration } from '../../services/form-fields.interfaces';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class DisplayModeService {\n    public static readonly DEFAULT_DISPLAY_MODE_CONFIGURATIONS: FormCloudDisplayModeConfiguration[] = [\n        {\n            displayMode: FormCloudDisplayMode.inline,\n            default: true\n        }\n    ];\n\n    public static readonly IMPLEMENTED_DISPLAY_MODE_CONFIGURATIONS: FormCloudDisplayModeConfiguration[] = [\n        ...DisplayModeService.DEFAULT_DISPLAY_MODE_CONFIGURATIONS,\n        {\n            displayMode: FormCloudDisplayMode.fullScreen,\n            options: {\n                onDisplayModeOn: () => {},\n                onDisplayModeOff: (id: string) => DisplayModeService.changeDisplayMode({ displayMode: FormCloudDisplayMode.inline, id }),\n                onCompleteTask: (id: string) => DisplayModeService.changeDisplayMode({ displayMode: FormCloudDisplayMode.inline, id }),\n                onSaveTask: () => {},\n                fullscreen: true,\n                displayToolbar: true,\n                displayCloseButton: true,\n                trapFocus: true\n            }\n        },\n        {\n            displayMode: FormCloudDisplayMode.standalone,\n            options: {\n                onDisplayModeOn: () => {},\n                onDisplayModeOff: () => {},\n                onCompleteTask: () => {},\n                onSaveTask: () => {},\n                fullscreen: true,\n                displayToolbar: false,\n                trapFocus: true\n            }\n        }\n    ];\n\n    public static readonly DEFAULT_DISPLAY_MODE: FormCloudDisplayMode = FormCloudDisplayMode.inline;\n\n    private static readonly displayMode = new Subject<FormCloudDisplayModeChange>();\n\n    static readonly displayMode$: Observable<FormCloudDisplayModeChange> = DisplayModeService.displayMode.asObservable();\n\n    static changeDisplayMode(change: FormCloudDisplayModeChange) {\n        DisplayModeService.displayMode.next(change);\n    }\n\n    getDefaultDisplayModeConfigurations(): FormCloudDisplayModeConfiguration[] {\n        return DisplayModeService.DEFAULT_DISPLAY_MODE_CONFIGURATIONS;\n    }\n\n    getDisplayModeConfigurations(availableConfigurations?: FormCloudDisplayModeConfiguration[]): FormCloudDisplayModeConfiguration[] {\n        if (availableConfigurations && availableConfigurations.length > 0) {\n            return availableConfigurations;\n        } else {\n            return this.getDefaultDisplayModeConfigurations();\n        }\n    }\n\n    getDisplayMode(displayMode?: string, availableConfigurations?: FormCloudDisplayModeConfiguration[]): string {\n        const configuration = this.findConfiguration(displayMode, availableConfigurations);\n\n        if (configuration) {\n            return configuration.displayMode;\n        } else if (availableConfigurations && availableConfigurations.length > 0) {\n            return availableConfigurations.length === 1\n                ? availableConfigurations[0].displayMode\n                : availableConfigurations.find((config) => config.default)?.displayMode || availableConfigurations[0].displayMode;\n        } else {\n            return DisplayModeService.DEFAULT_DISPLAY_MODE;\n        }\n    }\n\n    findConfiguration(displayMode?: string, availableConfigurations?: FormCloudDisplayModeConfiguration[]): FormCloudDisplayModeConfiguration {\n        return this.getDisplayModeConfigurations(availableConfigurations).find((config) => config.displayMode === displayMode);\n    }\n\n    onCompleteTask(id?: string, displayMode?: string, availableConfigurations?: FormCloudDisplayModeConfiguration[]) {\n        const configuration = this.findConfiguration(displayMode, availableConfigurations);\n\n        if (configuration?.options?.onCompleteTask) {\n            configuration.options.onCompleteTask(id);\n        }\n    }\n\n    onSaveTask(id?: string, displayMode?: string, availableConfigurations?: FormCloudDisplayModeConfiguration[]) {\n        const configuration = this.findConfiguration(displayMode, availableConfigurations);\n\n        if (configuration?.options?.onSaveTask) {\n            configuration.options.onSaveTask(id);\n        }\n    }\n\n    onDisplayModeOff(id?: string, displayMode?: string, availableConfigurations?: FormCloudDisplayModeConfiguration[]) {\n        const configuration = this.findConfiguration(displayMode, availableConfigurations);\n\n        if (configuration?.options?.onDisplayModeOff) {\n            configuration.options.onDisplayModeOff(id);\n        }\n    }\n\n    onDisplayModeOn(id?: string, displayMode?: string, availableConfigurations?: FormCloudDisplayModeConfiguration[]) {\n        const configuration = this.findConfiguration(displayMode, availableConfigurations);\n\n        if (configuration?.options?.onDisplayModeOn) {\n            configuration.options.onDisplayModeOn(id);\n        }\n    }\n\n    switchToDisplayMode(\n        id?: string,\n        newDisplayMode?: string,\n        oldDisplayMode?: string,\n        availableConfigurations?: FormCloudDisplayModeConfiguration[]\n    ): string {\n        const oldConfiguration = this.findConfiguration(oldDisplayMode, availableConfigurations);\n        const newConfiguration = this.findConfiguration(newDisplayMode, availableConfigurations);\n\n        if (oldConfiguration?.displayMode !== newConfiguration?.displayMode) {\n            if (oldConfiguration) {\n                this.onDisplayModeOff(id, oldDisplayMode, availableConfigurations);\n            }\n\n            if (newConfiguration) {\n                DisplayModeService.changeDisplayMode({ id, displayMode: newConfiguration.displayMode });\n                this.onDisplayModeOn(id, newDisplayMode, availableConfigurations);\n                return newConfiguration.displayMode;\n            } else {\n                const displayMode = this.getDisplayMode(newDisplayMode, availableConfigurations);\n                DisplayModeService.changeDisplayMode({ id, displayMode });\n                this.onDisplayModeOn(id, displayMode, availableConfigurations);\n                return displayMode;\n            }\n        } else {\n            return oldConfiguration?.displayMode || this.getDisplayMode(oldDisplayMode, availableConfigurations);\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    ChangeDetectorRef,\n    Component,\n    DestroyRef,\n    EventEmitter,\n    HostListener,\n    Inject,\n    inject,\n    InjectionToken,\n    Input,\n    OnChanges,\n    OnInit,\n    Optional,\n    Output,\n    SimpleChanges\n} from '@angular/core';\nimport { forkJoin, Observable, of, Subscription } from 'rxjs';\nimport { filter, map, switchMap } from 'rxjs/operators';\nimport {\n    ConfirmDialogComponent,\n    ContentLinkModel,\n    FormatSpacePipe,\n    FormBaseComponent,\n    FormEvent,\n    FormFieldModel,\n    FormFieldValidator,\n    FormModel,\n    FormOutcomeEvent,\n    FormOutcomeModel,\n    FormRendererComponent,\n    FormService,\n    FormValues,\n    ToolbarComponent,\n    ToolbarDividerComponent,\n    UploadWidgetContentLinkModel,\n    WidgetVisibilityService\n} from '@alfresco/adf-core';\nimport { FormCloudService } from '../services/form-cloud.service';\nimport { TaskVariableCloud } from '../models/task-variable-cloud.model';\nimport { TaskDetailsCloudModel } from '../../task/models/task-details-cloud.model';\nimport { MatDialog } from '@angular/material/dialog';\nimport { v4 as uuidGeneration } from 'uuid';\nimport { FormCloudDisplayMode, FormCloudDisplayModeConfiguration } from '../../services/form-fields.interfaces';\nimport { FormCloudSpinnerService } from '../services/spinner/form-cloud-spinner.service';\nimport { DisplayModeService } from '../services/display-mode.service';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\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';\nimport { A11yModule } from '@angular/cdk/a11y';\n\nexport const FORM_CLOUD_FIELD_VALIDATORS_TOKEN = new InjectionToken<FormFieldValidator[]>('FORM_CLOUD_FIELD_VALIDATORS_TOKEN');\n\n@Component({\n    selector: 'adf-cloud-form',\n    imports: [\n        CommonModule,\n        TranslatePipe,\n        FormatSpacePipe,\n        MatButtonModule,\n        MatCardModule,\n        FormRendererComponent,\n        MatIconModule,\n        ToolbarDividerComponent,\n        ToolbarComponent,\n        A11yModule\n    ],\n    providers: [FormCloudSpinnerService],\n    templateUrl: './form-cloud.component.html',\n    styleUrls: ['./form-cloud.component.scss']\n})\nexport class FormCloudComponent extends FormBaseComponent implements OnChanges, OnInit {\n    /** App name to fetch corresponding form and values. */\n    @Input()\n    appName: string = '';\n\n    /** The application version to use when fetching data */\n    @Input()\n    appVersion?: number;\n\n    /** Task id to fetch corresponding form and values. */\n    @Input()\n    formId: string;\n\n    /** ProcessInstanceId id to fetch corresponding form and values. */\n    @Input()\n    processInstanceId: string;\n\n    /** Task id to fetch corresponding form and values. */\n    @Input()\n    taskId: string;\n\n    /** Custom form values map to be used with the rendered form. */\n    @Input()\n    data: TaskVariableCloud[];\n\n    /** The available display configurations for the form */\n    @Input()\n    displayModeConfigurations: FormCloudDisplayModeConfiguration[];\n\n    /** Toggle rendering of the `Complete` button. */\n    @Input()\n    showCompleteButton = false;\n\n    /**\n     * Custom text for the `Save` button.\n     * If not provided, the default text will be used.\n     */\n    @Input()\n    customSaveButtonText: string = '';\n\n    /**\n     * Custom text for the `Complete` button.\n     * If not provided, the default text will be used.\n     */\n    @Input()\n    customCompleteButtonText: string = '';\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 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    /** Emitted when form content is clicked. */\n    @Output()\n    formContentClicked = new EventEmitter<ContentLinkModel>();\n\n    /** Emitted when a display mode configuration is turned on. */\n    @Output()\n    displayModeOn = new EventEmitter<FormCloudDisplayModeConfiguration>();\n\n    /** Emitted when a display mode configuration is turned off. */\n    @Output()\n    displayModeOff = new EventEmitter<FormCloudDisplayModeConfiguration>();\n\n    protected subscriptions: Subscription[] = [];\n    nodeId: string;\n    formCloudRepresentationJSON: any;\n    fieldValidators: FormFieldValidator[] = [];\n\n    readonly id: string;\n    displayMode: string;\n    displayConfiguration: FormCloudDisplayModeConfiguration = DisplayModeService.DEFAULT_DISPLAY_MODE_CONFIGURATIONS[0];\n    style: string = '';\n\n    protected formCloudService = inject(FormCloudService);\n    protected formService = inject(FormService);\n    protected visibilityService = inject(WidgetVisibilityService);\n    protected dialog = inject(MatDialog);\n    protected spinnerService = inject(FormCloudSpinnerService);\n    protected displayModeService = inject(DisplayModeService);\n    protected changeDetector = inject(ChangeDetectorRef);\n\n    private readonly destroyRef = inject(DestroyRef);\n\n    constructor(@Optional() @Inject(FORM_CLOUD_FIELD_VALIDATORS_TOKEN) injectedFieldValidators?: FormFieldValidator[]) {\n        super();\n        this.loadInjectedFieldValidators(injectedFieldValidators);\n        this.spinnerService.initSpinnerHandling(this.destroyRef);\n\n        this.id = uuidGeneration();\n\n        this.formService.formContentClicked.pipe(takeUntilDestroyed()).subscribe((content) => {\n            if (content instanceof UploadWidgetContentLinkModel) {\n                this.form.setNodeIdValueForViewersLinkedToUploadWidget(content);\n                this.onFormDataRefreshed(this.form);\n                this.formService.formDataRefreshed.next(new FormEvent(this.form));\n            } else {\n                this.formContentClicked.emit(content);\n            }\n        });\n\n        this.formService.updateFormValuesRequested.pipe(takeUntilDestroyed()).subscribe((valuesToSetIfNotPresent) => {\n            this.form.addValuesNotPresent(valuesToSetIfNotPresent);\n            this.onFormDataRefreshed(this.form);\n        });\n\n        this.formService.formFieldValueChanged.pipe(takeUntilDestroyed()).subscribe(() => {\n            if (this.disableSaveButton) {\n                this.disableSaveButton = false;\n            }\n        });\n    }\n\n    @HostListener('keydown', ['$event'])\n    onKeyDown(event: KeyboardEvent): void {\n        event.stopPropagation();\n    }\n\n    ngOnChanges(changes: SimpleChanges) {\n        const appName = changes['appName'];\n\n        if (appName?.currentValue) {\n            if (this.taskId) {\n                this.getFormByTaskId(appName.currentValue, this.taskId, this.appVersion);\n            } else if (this.formId) {\n                this.getFormById(appName.currentValue, this.formId, this.appVersion);\n            }\n            return;\n        }\n\n        const formId = changes['formId'];\n        if (formId?.currentValue && this.appName) {\n            this.getFormById(this.appName, formId.currentValue, this.appVersion);\n            return;\n        }\n\n        const taskId = changes['taskId'];\n        if (taskId?.currentValue && this.appName) {\n            this.getFormByTaskId(this.appName, taskId.currentValue, this.appVersion);\n            return;\n        }\n\n        const data = changes['data']?.currentValue;\n        if (data?.length > 0) {\n            this.refreshFormData();\n            return;\n        }\n\n        const formRepresentation = changes['form'];\n\n        if (formRepresentation?.currentValue) {\n            this.form = formRepresentation.currentValue;\n            this.onFormLoaded(this.form);\n            return;\n        }\n    }\n\n    ngOnInit(): void {\n        DisplayModeService.displayMode$\n            .pipe(\n                filter((change) => change.id === this.id),\n                takeUntilDestroyed(this.destroyRef)\n            )\n            .subscribe((displayModeChange) => {\n                const oldDisplayMode = this.displayMode;\n                this.displayMode = displayModeChange.displayMode;\n\n                const oldDisplayModeConfiguration = this.displayModeService.findConfiguration(oldDisplayMode, this.displayModeConfigurations);\n                const newDisplayModeConfiguration = this.displayModeService.findConfiguration(\n                    displayModeChange.displayMode,\n                    this.displayModeConfigurations\n                );\n\n                if (oldDisplayModeConfiguration?.displayMode !== newDisplayModeConfiguration?.displayMode) {\n                    if (oldDisplayModeConfiguration) {\n                        this.displayModeOff.emit(oldDisplayModeConfiguration);\n                    }\n                    if (newDisplayModeConfiguration) {\n                        this.displayModeOn.emit(newDisplayModeConfiguration);\n                    }\n                }\n\n                this.displayConfiguration = newDisplayModeConfiguration;\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.appName && this.taskId) {\n            this.getFormByTaskId(this.appName, this.taskId, this.appVersion);\n        } else if (this.appName && this.formId) {\n            this.getFormById(this.appName, this.formId, this.appVersion);\n        }\n    }\n\n    findProcessVariablesByTaskId(appName: string, taskId: string): Observable<TaskVariableCloud[]> {\n        return this.formCloudService.getTask(appName, taskId).pipe(\n            switchMap((task) => {\n                if (this.isAProcessTask(task)) {\n                    return this.formCloudService.getTaskVariables(appName, taskId);\n                } else {\n                    return of([]);\n                }\n            })\n        );\n    }\n\n    getCustomOutcomeButtonText(outcome: FormOutcomeModel): string {\n        if (outcome?.id === FormModel.SAVE_OUTCOME || outcome?.name === FormOutcomeModel.SAVE_ACTION) {\n            return this.customSaveButtonText;\n        } else if (outcome?.id === FormModel.COMPLETE_OUTCOME || outcome?.name === FormOutcomeModel.COMPLETE_ACTION) {\n            return this.customCompleteButtonText;\n        }\n        return '';\n    }\n\n    isAProcessTask(taskRepresentation: TaskDetailsCloudModel): boolean {\n        return taskRepresentation.processDefinitionId && taskRepresentation.processDefinitionDeploymentId !== 'null';\n    }\n\n    getFormByTaskId(appName: string, taskId: string, version?: number): Promise<FormModel> {\n        return new Promise<FormModel>((resolve) => {\n            forkJoin(this.formCloudService.getTaskForm(appName, taskId, version), this.formCloudService.getTaskVariables(appName, taskId))\n                .pipe(takeUntilDestroyed(this.destroyRef))\n                .subscribe(\n                    (data) => {\n                        this.formCloudRepresentationJSON = data[0];\n\n                        this.formCloudRepresentationJSON.processVariables = data[1];\n                        this.data = data[1];\n\n                        const parsedForm = this.parseForm(this.formCloudRepresentationJSON);\n                        this.visibilityService.refreshVisibility(parsedForm, this.data);\n                        parsedForm.validateForm();\n                        this.form = parsedForm;\n                        this.form.nodeId = '-my-';\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    getFormById(appName: string, formId: string, appVersion?: number) {\n        this.formCloudService\n            .getForm(appName, formId, appVersion)\n            .pipe(\n                map((form) => {\n                    const flattenForm = { ...form.formRepresentation, ...form.formRepresentation.formDefinition };\n                    delete flattenForm.formDefinition;\n                    return flattenForm;\n                }),\n                takeUntilDestroyed(this.destroyRef)\n            )\n            .subscribe({\n                next: (form) => {\n                    this.formCloudRepresentationJSON = form;\n                    this.formCloudRepresentationJSON.processVariables = this.data || [];\n                    const parsedForm = this.parseForm(form);\n                    this.visibilityService.refreshVisibility(parsedForm);\n                    parsedForm?.validateForm();\n                    this.form = parsedForm;\n                    this.form.nodeId = '-my-';\n                    this.onFormLoaded(this.form);\n                },\n                error: (error) => {\n                    this.handleError(error);\n                }\n            });\n    }\n\n    saveTaskForm() {\n        if (this.form && this.appName && this.taskId) {\n            this.formCloudService\n                .saveTaskForm(this.appName, this.taskId, this.processInstanceId, `${this.form.id}`, this.form.values)\n                .pipe(takeUntilDestroyed(this.destroyRef))\n                .subscribe({\n                    next: () => {\n                        this.onTaskSaved(this.form);\n                    },\n                    error: (error) => this.onTaskSavedError(error)\n                });\n            this.displayModeService.onSaveTask(this.id, this.displayMode, this.displayModeConfigurations);\n        }\n    }\n\n    completeTaskForm(outcome?: string) {\n        if (this.form?.confirmMessage?.show === true) {\n            const dialogRef = this.dialog.open(ConfirmDialogComponent, {\n                data: {\n                    message: this.form.confirmMessage.message\n                },\n                minWidth: '450px'\n            });\n\n            dialogRef.afterClosed().subscribe((result) => {\n                if (result === true) {\n                    this.completeForm(outcome);\n                }\n            });\n        } else {\n            this.completeForm(outcome);\n        }\n        this.displayModeService.onCompleteTask(this.id, this.displayMode, this.displayModeConfigurations);\n    }\n\n    private completeForm(outcome?: string) {\n        if (this.form && this.appName && this.taskId) {\n            this.formCloudService\n                .completeTaskForm(this.appName, this.taskId, this.processInstanceId, `${this.form.id}`, this.form.values, outcome, this.appVersion)\n                .pipe(takeUntilDestroyed(this.destroyRef))\n                .subscribe({\n                    next: () => {\n                        this.onTaskCompleted(this.form);\n                    },\n                    error: (error) => this.onTaskCompletedError(error)\n                });\n        }\n    }\n\n    parseForm(formCloudRepresentationJSON?: any): FormModel | null {\n        if (formCloudRepresentationJSON) {\n            const formValues: FormValues = {};\n            (this.data || []).forEach((variable) => {\n                formValues[variable.name] = variable.value;\n            });\n\n            const form = new FormModel(formCloudRepresentationJSON, formValues, this.readOnly, this.formService, undefined, this.fieldValidators);\n            if (!form) {\n                form.outcomes = this.getFormDefinitionOutcomes(form);\n            }\n            return form;\n        }\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    private refreshFormData() {\n        this.form = this.parseForm(this.formCloudRepresentationJSON);\n        if (this.form) {\n            this.onFormLoaded(this.form);\n            this.onFormDataRefreshed(this.form);\n        }\n    }\n\n    protected onFormLoaded(form: FormModel) {\n        if (form) {\n            this.displayModeConfigurations = this.displayModeService.getDisplayModeConfigurations(this.displayModeConfigurations);\n            this.displayMode = this.displayModeService.switchToDisplayMode(\n                this.id,\n                this.form.json.displayMode,\n                this.displayMode,\n                this.displayModeConfigurations\n            );\n\n            this.displayConfiguration = this.displayModeService.findConfiguration(this.displayMode, this.displayModeConfigurations);\n\n            this.displayModeOn.emit(this.displayConfiguration);\n        }\n\n        this.changeDetector.detectChanges();\n        this.formLoaded.emit(form);\n    }\n\n    protected onFormDataRefreshed(form: FormModel) {\n        this.formDataRefreshed.emit(form);\n    }\n\n    protected onTaskSaved(form: FormModel) {\n        this.formSaved.emit(form);\n    }\n\n    protected onTaskSavedError(error: any) {\n        this.handleError(error);\n    }\n\n    protected onTaskCompleted(form: FormModel) {\n        this.formCompleted.emit(form);\n    }\n\n    protected onTaskCompletedError(error: any) {\n        this.handleError(error);\n    }\n\n    protected onExecuteOutcome(outcome: FormOutcomeModel): boolean {\n        const args = new FormOutcomeEvent(outcome);\n\n        if (args.defaultPrevented) {\n            return false;\n        }\n\n        this.executeOutcome.emit(args);\n        return !args.defaultPrevented;\n    }\n\n    protected storeFormAsMetadata() {}\n\n    switchToDisplayMode(newDisplayMode?: string) {\n        this.displayModeService.switchToDisplayMode(this.id, FormCloudDisplayMode[newDisplayMode], this.displayMode, this.displayModeConfigurations);\n    }\n\n    findDisplayConfiguration(displayMode?: string): FormCloudDisplayModeConfiguration {\n        return this.displayModeService.findConfiguration(FormCloudDisplayMode[displayMode], this.displayModeConfigurations);\n    }\n\n    loadInjectedFieldValidators(injectedFieldValidators: FormFieldValidator[]): void {\n        if (Array.isArray(injectedFieldValidators) && injectedFieldValidators.length) {\n            this.fieldValidators = [...this.fieldValidators, ...injectedFieldValidators];\n        }\n    }\n}\n","<div *ngIf=\"!hasForm()\">\n    <ng-content select=\"[empty-form]\" />\n</div>\n\n<div\n    *ngIf=\"hasForm()\"\n    class=\"adf-cloud-form-container adf-cloud-form-{{ displayConfiguration?.options?.fullscreen ? 'fullscreen' : 'inline' }}-container\"\n    [style]=\"formStyle\"\n>\n    <div class=\"adf-cloud-form-content\" [cdkTrapFocus]=\"displayConfiguration?.options?.trapFocus\" cdkTrapFocusAutoCapture>\n        <adf-toolbar class=\"adf-cloud-form-toolbar\" *ngIf=\"displayConfiguration?.options?.displayToolbar\">\n            <div class=\"adf-cloud-form__form-title\">\n                <span class=\"adf-cloud-form__display-name\" [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            </div>\n\n            <adf-toolbar-divider *ngIf=\"displayConfiguration?.options?.displayCloseButton\" />\n            <button\n                *ngIf=\"displayConfiguration?.options?.displayCloseButton\"\n                class=\"adf-cloud-form-close-button\"\n                data-automation-id=\"adf-toolbar-right-back\"\n                [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.CLOSE' | translate\"\n                [attr.data-automation-id]=\"'adf-cloud-form-close-button'\"\n                [title]=\"'ADF_VIEWER.ACTIONS.CLOSE' | translate\"\n                mat-icon-button\n                title=\"{{ 'ADF_VIEWER.ACTIONS.CLOSE' | translate }}\"\n                (click)=\"switchToDisplayMode()\"\n            >\n                <mat-icon>close</mat-icon>\n            </button>\n        </adf-toolbar>\n\n        <mat-card\n            appearance=\"outlined\"\n            class=\"adf-cloud-form-content-card\"\n            [class.adf-cloud-form-content-card-fullscreen]=\"displayMode === 'fullScreen'\"\n        >\n            <div class=\"adf-cloud-form-content-card-container\">\n                <mat-card-header *ngIf=\"showTitle || showRefreshButton || showValidationIcon\">\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\" *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\n                                *ngIf=\"!displayConfiguration?.options?.fullscreen && findDisplayConfiguration('fullScreen')\"\n                                class=\"adf-cloud-form-fullscreen-button\"\n                            >\n                                <button\n                                    mat-icon-button\n                                    (click)=\"switchToDisplayMode('fullScreen')\"\n                                    [attr.data-automation-id]=\"'adf-cloud-form-fullscreen-button'\"\n                                >\n                                    <mat-icon>fullscreen</mat-icon>\n                                </button>\n                            </div>\n                            <div *ngIf=\"showRefreshButton\" class=\"adf-cloud-form-reload-button\" [title]=\"'ADF_VIEWER.ACTIONS.FULLSCREEN' | translate\">\n                                <button mat-icon-button (click)=\"onRefreshClicked()\" [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.FULLSCREEN' | translate\">\n                                    <mat-icon>refresh</mat-icon>\n                                </button>\n                            </div>\n                            <span *ngIf=\"isTitleEnabled()\" class=\"adf-cloud-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-container-card-content\">\n                    <adf-form-renderer [formDefinition]=\"form\" [readOnly]=\"readOnly\" />\n                </mat-card-content>\n                    <mat-card-actions *ngIf=\"form.hasOutcomes()\" class=\"adf-cloud-form-content-card-actions\" align=\"end\">\n                        <ng-content select=\"adf-cloud-form-custom-outcomes\" />\n                        <ng-container *ngFor=\"let outcome of form.outcomes\">\n                            <button\n                                *ngIf=\"outcome.isVisible\"\n                                [id]=\"'adf-form-' + outcome.name | formatSpace\"\n                                [color]=\"getColorForOutcome(outcome.name)\"\n                                mat-button\n                                [disabled]=\"!isOutcomeButtonEnabled(outcome)\"\n                                [class.adf-form-hide-button]=\"!isOutcomeButtonVisible(outcome, form.readOnly)\"\n                                class=\"adf-cloud-form-custom-outcome-button\"\n                                (click)=\"onOutcomeClicked(outcome)\"\n                            >\n                                {{ getCustomOutcomeButtonText(outcome) || (outcome.name | translate | uppercase) }}\n                            </button>\n                        </ng-container>\n                    </mat-card-actions>\n            </div>\n        </mat-card>\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 { Injectable } from '@angular/core';\nimport { NotificationService } from '@alfresco/adf-core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ContentNodeSelectorComponent, ContentNodeSelectorComponentData, NodeAction, AlfrescoApiService } from '@alfresco/adf-content-services';\nimport { Node, NodeEntry, NodesApi } from '@alfresco/js-api';\nimport { from, Observable, Subject, throwError } from 'rxjs';\nimport { catchError, map, mapTo } from 'rxjs/operators';\nimport { DestinationFolderPathModel } from '../models/form-cloud-representation.model';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class ContentCloudNodeSelectorService {\n    private _nodesApi: NodesApi;\n    get nodesApi(): NodesApi {\n        this._nodesApi = this._nodesApi ?? new NodesApi(this.apiService.getInstance());\n        return this._nodesApi;\n    }\n\n    sourceNodeNotFound = false;\n\n    constructor(private apiService: AlfrescoApiService, private notificationService: NotificationService, private dialog: MatDialog) {}\n\n    openUploadFileDialog(\n        currentFolderId?: string,\n        selectionMode?: string,\n        isAllFileSources?: boolean,\n        restrictRootToCurrentFolderId?: boolean\n    ): Observable<Node[]> {\n        const select = new Subject<Node[]>();\n        select.subscribe({ complete: this.close.bind(this) });\n        const data = {\n            title: 'Select a file',\n            actionName: NodeAction.ATTACH,\n            currentFolderId,\n            restrictRootToCurrentFolderId,\n            select,\n            selectionMode,\n            isSelectionValid: (entry: Node) => entry.isFile,\n            showFilesInResult: true,\n            showDropdownSiteList: false,\n            showLocalUploadButton: isAllFileSources\n        } as ContentNodeSelectorComponentData;\n        this.openContentNodeDialog(data, 'adf-content-node-selector-dialog', '66%');\n        return select;\n    }\n\n    async getNodeIdFromPath(destinationFolderPath: DestinationFolderPathModel): Promise<string> {\n        if (destinationFolderPath.alias && destinationFolderPath.path) {\n            try {\n                return await this.getNodeId(destinationFolderPath.alias, destinationFolderPath.path).toPromise();\n            } catch {\n                /*empty*/\n            }\n        }\n\n        return this.getNodeId(destinationFolderPath.alias).toPromise();\n    }\n\n    async getNodeIdFromFolderVariableValue(variableValue: string, defaultAlias?: string): Promise<string> {\n        const isExistingNode = await this.isExistingNode(variableValue);\n        return isExistingNode ? variableValue : this.getNodeId(defaultAlias).toPromise();\n    }\n\n    async isExistingNode(nodeId: string): Promise<boolean> {\n        let isExistingNode = false;\n        if (nodeId) {\n            try {\n                isExistingNode = await this.getNodeId(nodeId).pipe(mapTo(true)).toPromise();\n            } catch {\n                /*empty*/\n            }\n        }\n        return isExistingNode;\n    }\n\n    private getNodeId(nodeId: string, relativePath?: string): Observable<string> {\n        let opts: any;\n        if (relativePath) {\n            opts = { relativePath };\n        }\n        return from(this.nodesApi.getNode(nodeId, opts)).pipe(\n            map((nodeEntry: NodeEntry) => nodeEntry.entry.id),\n            catchError((error) => {\n                this.sourceNodeNotFound = true;\n                return this.handleError(error);\n            })\n        );\n    }\n\n    private openContentNodeDialog(data: ContentNodeSelectorComponentData, currentPanelClass: string, chosenWidth: string) {\n        const contentNodeDialog = this.dialog.open(ContentNodeSelectorComponent, { data, panelClass: currentPanelClass, width: chosenWidth });\n        contentNodeDialog.afterOpened().subscribe(() => {\n            if (this.sourceNodeNotFound) {\n                this.notificationService.showWarning('ADF_CLOUD_TASK_FORM.ERROR.DESTINATION_FOLDER_PATH_ERROR');\n            }\n        });\n        contentNodeDialog.afterClosed().subscribe(() => {\n            this.sourceNodeNotFound = false;\n        });\n    }\n\n    close() {\n        this.dialog.closeAll();\n    }\n\n    private handleError(error: any): Observable<any> {\n        return throwError(error || 'Server error');\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Observable, from } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { DownloadService } from '@alfresco/adf-core';\nimport { ContentService, NodesApiService, AlfrescoApiService } from '@alfresco/adf-content-services';\nimport { AuthenticationApi, Node, UploadApi } from '@alfresco/js-api';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class ProcessCloudContentService {\n    private _uploadApi: UploadApi;\n    get uploadApi(): UploadApi {\n        this._uploadApi = this._uploadApi ?? new UploadApi(this.apiService.getInstance());\n        return this._uploadApi;\n    }\n\n    private _authenticationApi: AuthenticationApi;\n    get authenticationApi(): AuthenticationApi {\n        this._authenticationApi = this._authenticationApi ?? new AuthenticationApi(this.apiService.getInstance());\n        return this._authenticationApi;\n    }\n\n    constructor(\n        private apiService: AlfrescoApiService,\n        private nodesApiService: NodesApiService,\n        private contentService: ContentService,\n        private downloadService: DownloadService\n    ) {}\n\n    createTemporaryRawRelatedContent(file: File, nodeId: string): Observable<Node> {\n        return from(this.uploadApi.uploadFile(file, '', nodeId, null, { overwrite: true })).pipe(\n            map((res: any) => ({\n                ...res.entry,\n                nodeId: res.entry.id\n            }))\n        );\n    }\n\n    getRawContentNode(nodeId: string): Observable<Blob> {\n        return this.nodesApiService.getNodeContent(nodeId);\n    }\n\n    downloadNodeContent(blob: Blob, fileName: string): void {\n        this.downloadService.downloadBlob(blob, fileName);\n    }\n\n    async downloadFile(nodeId: string) {\n        const ticket = await this.getAuthTicket();\n        const url = this.contentService.getContentUrl(nodeId, true, ticket);\n\n        this.downloadService.downloadUrl(url, nodeId);\n    }\n\n    async getAuthTicket(): Promise<string> {\n        const ticket = await this.authenticationApi.getTicket();\n        return ticket?.entry?.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\n/* eslint-disable no-shadow */\n/* eslint-disable @typescript-eslint/naming-convention */\nexport class FormCloudRepresentation {\n\n    id?: string;\n    name?: string;\n    description?: string;\n    version?: number;\n    tabs?: any[];\n    fields?: any[];\n    outcomes?: any[];\n    metadata?: any;\n    variables?: any[];\n    taskId?: string;\n    taskName?: string;\n    processDefinitionId?: string;\n    processInstanceId?: string;\n    selectedOutcome?: string;\n\n    constructor(obj?: any) {\n        this.id = obj.id || null;\n        this.name = obj.name || null;\n        this.description = obj.description || null;\n        this.version = obj.version || null;\n        this.tabs = obj.tabs || null;\n        this.fields = obj.fields || null;\n        this.outcomes = obj.outcomes || null;\n        this.metadata = obj.metadata || null;\n        this.variables = obj.variables || null;\n        this.taskId = obj.taskId || null;\n        this.taskName = obj.taskName || null;\n        this.processDefinitionId = obj.processDefinitionId || null;\n        this.processInstanceId = obj.processInstanceId || null;\n        this.selectedOutcome = obj.selectedOutcome || null;\n    }\n}\n\nexport interface DestinationFolderPathModel {\n    alias: string;\n    path: string;\n}\n\nexport enum FileSourceTypes {\n    ALL_FILE_SOURCES_SERVICE_ID = 'all-file-sources',\n    ALFRESCO_CONTENT_SOURCES_SERVICE_ID = 'alfresco-content'\n}\n\nexport enum DestinationFolderPathType {\n    STATIC_TYPE = 'value',\n    STRING_TYPE = 'string',\n    FOLDER_TYPE = 'folder'\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, ElementRef, EventEmitter, inject, OnInit, Output, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { Node } from '@alfresco/js-api';\nimport { Observable, from } from 'rxjs';\nimport { mergeMap } from 'rxjs/operators';\nimport { WidgetComponent, FormService, ThumbnailService, NotificationService, ErrorWidgetComponent } from '@alfresco/adf-core';\nimport { ProcessCloudContentService } from '../../../services/process-cloud-content.service';\nimport { FileSourceTypes, DestinationFolderPathType } from '../../../models/form-cloud-representation.model';\nimport { VersionManagerUploadData } from '@alfresco/adf-content-services';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatListModule } from '@angular/material/list';\nimport { MatLineModule } from '@angular/material/core';\n\n@Component({\n    selector: 'upload-cloud-widget',\n    imports: [CommonModule, TranslatePipe, ErrorWidgetComponent, MatIconModule, MatButtonModule, MatListModule, MatLineModule],\n    templateUrl: './upload-cloud.widget.html',\n    styleUrls: ['./upload-cloud.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 UploadCloudWidgetComponent extends WidgetComponent implements OnInit {\n    protected thumbnailService = inject(ThumbnailService);\n    protected processCloudContentService = inject(ProcessCloudContentService);\n    protected notificationService = inject(NotificationService);\n\n    hasFile: boolean;\n    displayText: string;\n    multipleOption: string = '';\n    mimeTypeIcon: string;\n\n    @Output()\n    error = new EventEmitter<any>();\n\n    @ViewChild('uploadFiles')\n    fileInput: ElementRef;\n\n    constructor(formService: FormService) {\n        super(formService);\n    }\n\n    ngOnInit() {\n        if (this.field?.value?.length > 0) {\n            this.hasFile = true;\n            this.fixIncompatibilityFromPreviousAndNewForm([]);\n        }\n        this.getMultipleFileParam();\n        this.setDestinationFolderPathFromMappedVariable();\n    }\n\n    removeFile(file: any) {\n        if (this.field) {\n            this.removeElementFromList(file);\n        }\n    }\n\n    replaceOldFileVersionWithNew(versionManagerData: VersionManagerUploadData) {\n        const currentUploadedFileIndex = this.uploadedFiles.findIndex((file) => file.name === versionManagerData.currentVersion.name);\n        this.uploadedFiles[currentUploadedFileIndex] = { ...versionManagerData.newVersion.value.entry };\n        this.field.value = [...this.uploadedFiles];\n        this.field.form.values[this.field.id] = [...this.uploadedFiles];\n    }\n\n    onFileChanged(event: any) {\n        const files: File[] = [];\n        const filesSaved: Node[] = [];\n\n        for (const file of Array.from<File>(event.target.files)) {\n            if (!this.isUploaded(file)) {\n                files.push(file);\n            } else {\n                this.notificationService.showWarning('FORM.FIELD.FILE_ALREADY_UPLOADED');\n            }\n        }\n\n        if (files && files.length > 0) {\n            from(files)\n                .pipe(mergeMap((file) => this.uploadRawContent(file)))\n                .subscribe({\n                    next: (res) => {\n                        filesSaved.push(res);\n                    },\n                    error: (error) => this.widgetError.emit(`Error uploading file. See console output for more details. ${error}`),\n                    complete: () => {\n                        this.fixIncompatibilityFromPreviousAndNewForm(filesSaved);\n                        this.hasFile = true;\n                    }\n                });\n        }\n    }\n\n    private isUploaded(file: File): boolean {\n        const current: Node[] = this.field.value || [];\n        return current.some((entry) => entry.name === file.name);\n    }\n\n    protected fixIncompatibilityFromPreviousAndNewForm(filesSaved: Node[]) {\n        const value: Node[] = [...(this.field.value || [])];\n        value.push(...(filesSaved || []));\n\n        this.field.value = value;\n        this.field.form.values[this.field.id] = value;\n\n        this.hasFile = value.length > 0;\n    }\n\n    getIcon(mimeType: string): string {\n        return this.thumbnailService.getMimeTypeIcon(mimeType);\n    }\n\n    private uploadRawContent(file: File): Observable<Node> {\n        return this.processCloudContentService.createTemporaryRawRelatedContent(file, this.field.form.nodeId);\n    }\n\n    getMultipleFileParam() {\n        if (this.field?.params?.multiple) {\n            this.multipleOption = this.field.params.multiple ? 'multiple' : '';\n        }\n    }\n\n    get uploadedFiles(): any[] {\n        const result = this.field.value || this.field.form.values[this.field.id];\n        return result || [];\n    }\n\n    private removeElementFromList(file: any) {\n        const filteredValues = this.uploadedFiles.filter((value) => value.id !== file.id);\n        this.resetFormValues(filteredValues);\n    }\n\n    private resetFormValues(values: any[]) {\n        if (values && values.length > 0) {\n            this.field.value = values;\n            this.field.form.values[this.field.id] = values;\n            this.hasFile = true;\n        } else {\n            this.field.value = [];\n            this.field.form.values[this.field.id] = [];\n            this.hasFile = false;\n        }\n    }\n\n    fileClicked(file: any): void {\n        this.formService.formContentClicked.next(file);\n    }\n\n    isAlfrescoAndLocal(): boolean {\n        return this.field?.params?.fileSource?.serviceId === FileSourceTypes.ALL_FILE_SOURCES_SERVICE_ID;\n    }\n\n    isPathVariableType(type: string): boolean {\n        return this.field?.params?.fileSource?.destinationFolderPath?.type === type;\n    }\n\n    setDestinationFolderPathFromMappedVariable() {\n        if (this.isAlfrescoAndLocal()) {\n            this.prepareUploadWidgetDestinationFolderPathFromStringVariable();\n            this.prepareUploadWidgetDestinationFolderPathFromFolderVariable();\n        }\n    }\n\n    private prepareUploadWidgetDestinationFolderPathFromStringVariable() {\n        if (this.isPathVariableType(DestinationFolderPathType.STRING_TYPE)) {\n            this.setUploadWidgetDestinationFolderPath(this.getDestinationFolderPathValue());\n        }\n    }\n\n    private prepareUploadWidgetDestinationFolderPathFromFolderVariable() {\n        if (this.isPathVariableType(DestinationFolderPathType.FOLDER_TYPE)) {\n            const folder = this.getDestinationFolderPathValue();\n            this.setUploadWidgetDestinationFolderPath(folder?.length ? folder[0].id : undefined);\n        }\n    }\n\n    private setUploadWidgetDestinationFolderPath(path: string) {\n        this.field.params.fileSource.destinationFolderPath['value'] = path ? path : undefined;\n    }\n\n    private getDestinationFolderPathValue(): any {\n        return this.field.form.getProcessVariableValue(this.field.params.fileSource?.destinationFolderPath?.name);\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-cloud-upload-widget-container\">\n        <div>\n            <mat-list *ngIf=\"hasFile\">\n                <mat-list-item class=\"adf-upload-files-row\" *ngFor=\"let file of uploadedFiles\">\n                    <img\n                        matListItemLine\n                        class=\"adf-upload-widget__icon\"\n                        [id]=\"'file-'+file.id+'-icon'\"\n                        [src]=\"getIcon(file.content.mimeType)\"\n                        [alt]=\"mimeTypeIcon\"\n                        (click)=\"fileClicked(file)\"\n                        (keyup.enter)=\"fileClicked(file)\"\n                        role=\"button\"\n                        tabindex=\"0\"\n                    />\n                    <span\n                        class=\"adf-upload-widget__button adf-file\"\n                        matLine\n                        id=\"{{'file-'+file.id}}\"\n                        (click)=\"fileClicked(file)\"\n                        (keyup.enter)=\"fileClicked(file)\"\n                        role=\"button\"\n                        tabindex=\"0\"\n                        >{{file.name}}</span\n                    >\n                    <button\n                        *ngIf=\"!field.readOnly\"\n                        mat-icon-button\n                        [id]=\"'file-'+file.id+'-remove'\"\n                        (click)=\"removeFile(file);\"\n                        (keyup.enter)=\"removeFile(file);\"\n                    >\n                        <mat-icon class=\"mat-24\">highlight_off</mat-icon>\n                    </button>\n                </mat-list-item>\n            </mat-list>\n        </div>\n\n        <div *ngIf=\"(!hasFile || multipleOption) && !field.readOnly\">\n            <button mat-raised-button color=\"primary\" (click)=\"uploadFiles.click()\" [title]=\"field.tooltip\">\n                {{ 'FORM.FIELD.UPLOAD' | translate }}<mat-icon>file_upload</mat-icon>\n                <input #uploadFiles [multiple]=\"multipleOption\" type=\"file\" [id]=\"field.form.nodeId\" (change)=\"onFileChanged($event)\" />\n            </button>\n        </div>\n\n        <div *ngIf=\"!hasFile && field.readOnly\">{{ 'FORM.FIELD.NO_FILE_ATTACHED' | translate }}</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\n/* eslint-disable @angular-eslint/component-selector */\n\nimport { Component, EventEmitter, inject, Input, Output } from '@angular/core';\nimport { LocalizedDatePipe, ThumbnailService, UploadDirective, DisplayableCMProperties } from '@alfresco/adf-core';\nimport { Node } from '@alfresco/js-api';\nimport { NewVersionUploaderDialogData } from '@alfresco/adf-content-services';\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatLineModule } from '@angular/material/core';\nimport { MatListModule } from '@angular/material/list';\n\nconst RETRIEVE_METADATA_OPTION = 'retrieveMetadata';\n\n@Component({\n    selector: 'adf-cloud-file-properties-table',\n    imports: [\n        CommonModule,\n        MatIconModule,\n        TranslatePipe,\n        MatMenuModule,\n        UploadDirective,\n        MatButtonModule,\n        MatTableModule,\n        MatLineModule,\n        MatListModule\n    ],\n    providers: [LocalizedDatePipe],\n    templateUrl: './file-properties-table-cloud.component.html',\n    styleUrls: ['./file-properties-table-cloud.component.scss']\n})\nexport class FilePropertiesTableCloudComponent {\n    private localizedDatePipe = inject(LocalizedDatePipe);\n    private thumbnailService = inject(ThumbnailService);\n\n    @Input()\n    uploadedFiles;\n\n    @Input()\n    hasFile: boolean;\n\n    @Input()\n    selectedNode: Node;\n\n    @Input()\n    field;\n\n    @Input()\n    displayedColumns;\n\n    @Input()\n    mimeTypeIcon;\n\n    @Output()\n    rowClick = new EventEmitter<Node>();\n\n    @Output()\n    attachFileClick = new EventEmitter<any>();\n\n    @Output()\n    downloadFile = new EventEmitter<Node>();\n\n    @Output()\n    uploadNewFileVersion = new EventEmitter<NewVersionUploaderDialogData>();\n\n    @Output()\n    contentModelFileHandler = new EventEmitter<Node>();\n\n    @Output()\n    removeAttachFile = new EventEmitter<Node>();\n\n    onRowClicked(file?: Node) {\n        this.rowClick.emit(file);\n    }\n\n    onAttachFileClicked(nodeSelector: any) {\n        this.attachFileClick.emit(nodeSelector);\n    }\n\n    downloadContent(file: Node) {\n        this.downloadFile.emit(file);\n    }\n\n    onUploadNewFileVersion(customEvent: any, node: Node) {\n        const newVersionUploaderDialogData: NewVersionUploaderDialogData = {\n            file: customEvent.detail.files[0].file,\n            node,\n            showComments: true,\n            allowDownload: true\n        };\n        this.uploadNewFileVersion.emit(newVersionUploaderDialogData);\n    }\n\n    contentModelFormFileHandler(file?: Node) {\n        this.contentModelFileHandler.emit(file);\n    }\n\n    onRemoveAttachFile(file: Node) {\n        this.removeAttachFile.emit(file);\n    }\n\n    getIcon(mimeType: string): string {\n        return this.thumbnailService.getMimeTypeIcon(mimeType);\n    }\n\n    getColumnValue(file, prop: DisplayableCMProperties): string {\n        if (!file.properties[prop.prefixedName]) {\n            const fieldProperty = this.field.params.displayableCMProperties?.find((property) => property.name === prop.name);\n            return fieldProperty.defaultValue ? this.checkDateTypeAndTransform(prop.dataType, fieldProperty.defaultValue) : '--';\n        }\n        return file.properties[prop.prefixedName] ? this.checkDateTypeAndTransform(prop.dataType, file.properties[prop.prefixedName]) : '--';\n    }\n\n    private checkDateTypeAndTransform(dataType: string, value: any): string {\n        if (dataType === 'd:date') {\n            return this.localizedDatePipe.transform(value);\n        } else if (dataType === 'd:datetime') {\n            return this.localizedDatePipe.transform(value, 'medium');\n        }\n        return value;\n    }\n\n    displayMenuOption(option: string): boolean {\n        return this.field?.params?.menuOptions ? this.field.params.menuOptions[option] : option !== RETRIEVE_METADATA_OPTION;\n    }\n}\n","<div class=\"adf-file-properties-table-container\">\n    <table mat-table [dataSource]=\"uploadedFiles\" class=\"adf-properties-table adf-file-properties-table mat-elevation-z0\" *ngIf=\"hasFile\">\n        <ng-container matColumnDef=\"icon\">\n            <th mat-header-cell *matHeaderCellDef></th>\n            <td class=\"adf-file-properties-table-cell\" mat-cell *matCellDef=\"let element\">\n                <mat-icon matListItemLine class=\"adf-datatable-selected\"\n                    *ngIf=\"selectedNode && element.id === selectedNode.id\" (click)=\"onRowClicked(element)\">\n                    check_circle\n                </mat-icon>\n                <img matListItemLine class=\"adf-attach-widget__icon\"\n                    *ngIf=\"!selectedNode || element.id !== selectedNode.id\" [id]=\"'file-'+element?.id+'-icon'\"\n                    (click)=\"onRowClicked(element)\"\n                    (keyup.enter)=\"onRowClicked(element)\"\n                    [src]=\"element.content ? getIcon(element.content.mimeType) : getIcon(element['mimeType'])\"\n                    [alt]=\"mimeTypeIcon\" role=\"button\" tabindex=\"0\" />\n            </td>\n        </ng-container>\n\n        <ng-container matColumnDef=\"fileName\">\n            <th mat-header-cell *matHeaderCellDef>{{ 'FORM.FIELD.FILE_NAME' | translate }}</th>\n            <td mat-cell class=\"adf-file-properties-table-cell\" *matCellDef=\"let element\">\n                <span matLine id=\"{{'file-'+element?.id}}\"\n                      role=\"button\"\n                      tabindex=\"0\"\n                      class=\"adf-file\"\n                      (keyup.enter)=\"onAttachFileClicked(element)\"\n                      (click)=\"onAttachFileClicked(element)\"\n                >{{ element.name }}</span>\n            </td>\n        </ng-container>\n\n        <ng-container matColumnDef=\"title\">\n            <th mat-header-cell *matHeaderCellDef>{{ 'FORM.FIELD.TITLE' | translate }}</th>\n            <td mat-cell class=\"adf-file-properties-table-cell\" *matCellDef=\"let element\">{{ element.title }}</td>\n        </ng-container>\n\n        <ng-container *ngFor=\"let prop of field?.params?.displayableCMProperties\" [matColumnDef]=\"prop.name\">\n            <th mat-header-cell *matHeaderCellDef>{{prop.title ? prop.title : prop.name | titlecase }}</th>\n            <td mat-cell class=\"adf-file-properties-table-cell\" *matCellDef=\"let row\">\n                <span matLine id=\"{{'fileProperty-'+row?.id+'-'+prop?.name}}\" role=\"button\" tabindex=\"0\"\n                      (keyup.enter)=\"onRowClicked(row)\"\n                      (click)=\"onRowClicked(row)\">{{ getColumnValue(row, prop) }}</span>\n            </td>\n        </ng-container>\n\n        <ng-container matColumnDef=\"action\">\n            <th mat-header-cell *matHeaderCellDef></th>\n            <td mat-cell class=\"adf-file-properties-table-cell\" *matCellDef=\"let element\">\n                <button id=\"{{'file-'+element?.id+'-option-menu'}}\" mat-icon-button [matMenuTriggerFor]=\"fileActionMenu\"\n                        *ngIf=\"!!element.content?.mimeType\"\n                        [attr.aria-label]=\"'ADF_PROCESS_LIST.DETAILS.BUTTON.FILE_OPTION_MENU' | translate\">\n                    <mat-icon>more_vert</mat-icon>\n                </button>\n                <mat-menu #fileActionMenu=\"matMenu\" xPosition=\"before\">\n                    <button *ngIf=\"displayMenuOption('show') && !!element.content?.mimeType\"\n                            id=\"{{'file-'+element?.id+'-show-file'}}\" mat-menu-item\n                            (click)=\"onAttachFileClicked(element)\">\n                        <mat-icon>visibility</mat-icon>\n                        <span>{{ 'FORM.FIELD.VIEW_FILE' | translate }}</span>\n                    </button>\n                    <button *ngIf=\"displayMenuOption('download') && !!element.content?.mimeType\"\n                            id=\"{{'file-'+element?.id+'-download-file'}}\" mat-menu-item\n                            (click)=\"downloadContent(element)\">\n                        <mat-icon>file_download</mat-icon>\n                        <span>{{ 'FORM.FIELD.DOWNLOAD_FILE' | translate }}</span>\n                    </button>\n                    <button *ngIf=\"displayMenuOption('retrieveMetadata') && !!element.content?.mimeType\"\n                            id=\"{{'file-'+element?.id+'-retrieve-file-metadata'}}\" mat-menu-item\n                            (click)=\"contentModelFormFileHandler(element)\">\n                        <mat-icon class=\"mat-24\">low_priority</mat-icon>\n                        <span>{{ 'ADF_CLOUD_FORM_COMPONENT.RETRIEVE_METADATA' | translate }}</span>\n                    </button>\n                    <button *ngIf=\"!field.readOnly && displayMenuOption('remove')\"\n                            mat-menu-item\n                            [id]=\"'file-'+element?.id+'-remove'\"\n                            (click)=\"onRemoveAttachFile(element);\" (keyup.enter)=\"onRemoveAttachFile(element);\">\n                        <mat-icon class=\"mat-24\">highlight_off</mat-icon>\n                        <span>{{ 'FORM.FIELD.REMOVE_FILE' | translate }}</span>\n                    </button>\n                    <div *ngIf=\"displayMenuOption('newVersion')\">\n                        <button [adf-upload]=\"true\" [mode]=\"['click']\"\n                                (upload-files)=\"onUploadNewFileVersion($event, element);\"\n                                id=\"{{'file-'+ element?.id +'-upload-new-version'}}\" mat-menu-item>\n                            <mat-icon class=\"mat-24\">file_upload</mat-icon>\n                            <span>{{ 'ADF_VERSION_LIST.ACTIONS.UPLOAD.TITLE' | translate }}</span>\n                        </button>\n                    </div>\n                </mat-menu>\n            </td>\n        </ng-container>\n        <tr mat-header-row class=\"adf-file-properties-table-header-row\" *matHeaderRowDef=\"displayedColumns\"></tr>\n        <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\n    </table>\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, inject, OnDestroy, OnInit, Output, ViewEncapsulation } from '@angular/core';\nimport {\n    FormService,\n    FormValues,\n    ContentLinkModel,\n    AppConfigService,\n    UploadWidgetContentLinkModel,\n    DestinationFolderPath,\n    ErrorWidgetComponent\n} from '@alfresco/adf-core';\nimport { Node, NodesApi, RelatedContentRepresentation } from '@alfresco/js-api';\nimport { ContentCloudNodeSelectorService } from '../../../services/content-cloud-node-selector.service';\nimport { UploadCloudWidgetComponent } from '../upload/upload-cloud.widget';\nimport { DestinationFolderPathModel, DestinationFolderPathType } from '../../../models/form-cloud-representation.model';\nimport {\n    AlfrescoApiService,\n    ContentNodeSelectorPanelService,\n    NewVersionUploaderDataAction,\n    NewVersionUploaderDialogData,\n    NewVersionUploaderService,\n    VersionManagerUploadData\n} from '@alfresco/adf-content-services';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { FilePropertiesTableCloudComponent } from './file-properties-table/file-properties-table-cloud.component';\nimport { MatButtonModule } from '@angular/material/button';\n\nconst RETRIEVE_METADATA_OPTION = 'retrieveMetadata';\nconst ALIAS_ROOT_FOLDER = '-root-';\nconst ALIAS_USER_FOLDER = '-my-';\nconst APP_NAME = '-appname-';\nconst VALID_ALIAS = [ALIAS_ROOT_FOLDER, ALIAS_USER_FOLDER, '-shared-'];\n\n@Component({\n    selector: 'adf-cloud-attach-file-cloud-widget',\n    imports: [CommonModule, ErrorWidgetComponent, TranslatePipe, MatIconModule, FilePropertiesTableCloudComponent, MatButtonModule],\n    templateUrl: './attach-file-cloud-widget.component.html',\n    styleUrls: ['./attach-file-cloud-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 AttachFileCloudWidgetComponent extends UploadCloudWidgetComponent implements OnInit, OnDestroy {\n    private contentNodeSelectorService = inject(ContentCloudNodeSelectorService);\n    private appConfigService = inject(AppConfigService);\n    private apiService = inject(AlfrescoApiService);\n    private contentNodeSelectorPanelService = inject(ContentNodeSelectorPanelService);\n    private newVersionUploaderService = inject(NewVersionUploaderService);\n\n    typeId = 'AttachFileCloudWidgetComponent';\n    rootNodeId = ALIAS_USER_FOLDER;\n    selectedNode: Node;\n\n    @Output()\n    error = new EventEmitter<any>();\n\n    private previewState = false;\n    private _nodesApi: NodesApi;\n    get nodesApi(): NodesApi {\n        this._nodesApi = this._nodesApi ?? new NodesApi(this.apiService.getInstance());\n        return this._nodesApi;\n    }\n    displayedColumns = ['icon', 'fileName', 'title', 'action'];\n\n    constructor(formService: FormService) {\n        super(formService);\n    }\n\n    ngOnInit() {\n        super.ngOnInit();\n        if (this.hasFile && this.field.value.length > 0) {\n            const files = this.field.value || this.field.form.values[this.field.id];\n            this.contentModelFormFileHandler(files[0]);\n        }\n        this.field.params.displayableCMProperties = this.field.params.displayableCMProperties ?? [];\n        this.displayedColumns.splice(2, 0, ...(this.field.params.displayableCMProperties?.map((property) => property?.name) || []));\n        this.setPreviewState();\n    }\n\n    isPathStaticType(): boolean {\n        return this.field.params?.fileSource?.destinationFolderPath?.type === DestinationFolderPathType.STATIC_TYPE;\n    }\n\n    isUploadButtonVisible(): boolean {\n        return (!this.hasFile || this.multipleOption) && !this.field.readOnly;\n    }\n\n    onRemoveAttachFile(file: File | RelatedContentRepresentation | Node) {\n        this.removeFile(file);\n        if (file['id'] === this.selectedNode?.id) {\n            this.selectedNode = null;\n        }\n        this.contentModelFormFileHandler(this.field.value.length > 0 ? this.field.value[0] : null);\n    }\n\n    fetchAppNameFromAppConfig(): string {\n        return this.appConfigService.get('alfresco-deployed-apps')[0]?.name;\n    }\n\n    replaceAppNameAliasWithValue(path: string): string {\n        if (path?.match(APP_NAME)) {\n            const appName = this.fetchAppNameFromAppConfig();\n            return path.replace(APP_NAME, appName);\n        }\n        return path;\n    }\n\n    async openSelectDialog() {\n        if (this.previewState) {\n            this.notificationService.showWarning('FORM.PREVIEW.ATTACH_FILE_WIDGET.ON_ATTACH_FILE_CLICK');\n        } else {\n            const selectedMode = this.field.params.multiple ? 'multiple' : 'single';\n            const nodeId = await this.getDestinationFolderNodeId();\n            this.rootNodeId = nodeId ? nodeId : ALIAS_USER_FOLDER;\n            this.contentNodeSelectorPanelService.customModels = this.field.params.customModels;\n\n            this.contentNodeSelectorService\n                .openUploadFileDialog(this.rootNodeId, selectedMode, this.isAlfrescoAndLocal(), true)\n                .subscribe((selections: Node[]) => {\n                    selections.forEach((node) => (node['isExternal'] = true));\n                    const selectionWithoutDuplication = this.removeExistingSelection(selections);\n                    const hadFilesAttached = this.field.value?.length > 0;\n                    this.fixIncompatibilityFromPreviousAndNewForm(selectionWithoutDuplication);\n                    if (!hadFilesAttached) {\n                        this.contentModelFormFileHandler(this.field.value.length > 0 ? this.field.value[0] : null);\n                    }\n                });\n        }\n    }\n\n    private async getDestinationFolderNodeId(): Promise<string> {\n        let rootNodeId: string;\n\n        switch (this.field?.params?.fileSource?.destinationFolderPath?.type) {\n            case DestinationFolderPathType.STATIC_TYPE:\n                rootNodeId = await this.getNodeIdFromPath(this.field.params.fileSource.destinationFolderPath);\n                break;\n            case DestinationFolderPathType.STRING_TYPE:\n                rootNodeId = await this.getNodeIdFromPath(this.field.params.fileSource.destinationFolderPath);\n                break;\n            case DestinationFolderPathType.FOLDER_TYPE:\n                rootNodeId = await this.getNodeIdFromFolderVariableValue(this.field.params.fileSource.destinationFolderPath);\n                break;\n            default:\n                rootNodeId = await this.getNodeIdFromPath({ type: '', value: ALIAS_USER_FOLDER });\n                break;\n        }\n\n        return rootNodeId;\n    }\n\n    async getNodeIdFromPath(destinationFolderPath: DestinationFolderPath): Promise<string> {\n        let nodeId: string;\n        const destinationPath = this.getAliasAndRelativePathFromDestinationFolderPath(destinationFolderPath.value);\n        destinationPath.path = this.replaceAppNameAliasWithValue(destinationPath.path);\n        try {\n            nodeId = await this.contentNodeSelectorService.getNodeIdFromPath(destinationPath);\n        } catch (error) {\n            this.error.emit(error);\n        }\n\n        return nodeId;\n    }\n\n    async getNodeIdFromFolderVariableValue(destinationFolderPath: DestinationFolderPath): Promise<string> {\n        let nodeId: string;\n        try {\n            nodeId = await this.contentNodeSelectorService.getNodeIdFromFolderVariableValue(destinationFolderPath.value, ALIAS_USER_FOLDER);\n        } catch (error) {\n            this.error.emit(error);\n        }\n\n        return nodeId;\n    }\n\n    getAliasAndRelativePathFromDestinationFolderPath(destinationFolderPath: string): DestinationFolderPathModel {\n        let alias: string;\n        let path: string;\n        if (destinationFolderPath) {\n            const startOfRelativePathIndex = destinationFolderPath.indexOf('/');\n            if (startOfRelativePathIndex >= 0) {\n                alias = destinationFolderPath.substring(0, startOfRelativePathIndex);\n                path = destinationFolderPath.substring(startOfRelativePathIndex, destinationFolderPath.length);\n            } else {\n                alias = destinationFolderPath;\n            }\n        }\n\n        return this.isValidAlias(alias) ? { alias, path } : { alias: ALIAS_USER_FOLDER, path: undefined };\n    }\n\n    removeExistingSelection(selections: Node[]) {\n        const existingNode: Node[] = [...(this.field.value || [])];\n        return selections.filter((opt) => !existingNode.some((node) => node.id === opt.id));\n    }\n\n    downloadContent(file: Node): void {\n        this.processCloudContentService.downloadFile(file.id);\n    }\n\n    onUploadNewFileVersion(config: NewVersionUploaderDialogData): void {\n        this.newVersionUploaderService.openUploadNewVersionDialog(config).subscribe(\n            (newVersionUploaderData) => {\n                if (newVersionUploaderData.action === NewVersionUploaderDataAction.upload) {\n                    this.replaceOldFileVersionWithNew(newVersionUploaderData as VersionManagerUploadData);\n                }\n            },\n            (error) => this.notificationService.showError(error.value)\n        );\n    }\n\n    onAttachFileClicked(nodeSelector: any) {\n        nodeSelector.nodeId = nodeSelector.id;\n        this.fileClicked(new ContentLinkModel(nodeSelector));\n    }\n\n    getWidgetIcon(): string {\n        return this.isAlfrescoAndLocal() ? 'file_upload' : 'attach_file';\n    }\n\n    onRowClicked(file?: Node) {\n        if (this.selectedNode?.id === file?.id) {\n            this.selectedNode = null;\n        } else {\n            this.selectedNode = file;\n        }\n        this.contentModelFormFileHandler(this.selectedNode);\n    }\n\n    contentModelFormFileHandler(file?: any) {\n        if (file?.id && this.isRetrieveMetadataOptionEnabled()) {\n            const values: FormValues = {};\n            this.nodesApi.getNode(file.id).then((acsNode) => {\n                const metadata = acsNode?.entry?.properties;\n                if (metadata) {\n                    const keys = Object.keys(metadata);\n                    keys.forEach((key) => {\n                        const sanitizedKey = key.replace(':', '_');\n                        values[sanitizedKey] = metadata[key];\n                    });\n                    this.formService.updateFormValuesRequested.next(values);\n                }\n            });\n        }\n        this.fileClicked(new UploadWidgetContentLinkModel(file, this.field.id));\n    }\n\n    isRetrieveMetadataOptionEnabled(): boolean {\n        return this.field?.params?.menuOptions?.[RETRIEVE_METADATA_OPTION];\n    }\n\n    isValidAlias(alias: string): boolean {\n        return alias && VALID_ALIAS.includes(alias);\n    }\n\n    isSelected(): boolean {\n        return this.hasFile;\n    }\n\n    ngOnDestroy() {\n        this.contentNodeSelectorPanelService.customModels = [];\n    }\n\n    private setPreviewState(): void {\n        this.previewState = this.formService.getPreviewState();\n    }\n}\n","<div class=\"adf-attach-file-widget-container\">\n    <div class=\"adf-attach-widget {{field.className}}\"\n        [class.adf-readonly]=\"field.readOnly\">\n        <label class=\"adf-label\" [attr.for]=\"field.id\">{{field.name}}\n            <span class=\"adf-asterisk\" *ngIf=\"isRequired()\">*</span>\n        </label>\n        <div class=\"adf-attach-widget-container\" (focusout)=\"markAsTouched()\">\n            <div class=\"adf-attach-widget__menu-upload\" *ngIf=\"isUploadButtonVisible()\">\n                <button\n                    (click)=\"openSelectDialog()\"\n                    mat-raised-button\n                    class=\"adf-attach-widget__menu-upload__button\"\n                    color=\"primary\"\n                    [id]=\"field.id\"\n                    [title]=\"field.tooltip\">\n                        {{ 'FORM.FIELD.ATTACH' | translate }}\n                        <mat-icon class=\"adf-attach-widget__menu-upload__button__icon\">{{getWidgetIcon()}}</mat-icon>\n                </button>\n            </div>\n        </div>\n    </div>\n\n    <div data-automation-id=\"adf-attach-widget-readonly-list\" class=\"adf-attach-widget-readonly-table\">\n        <adf-cloud-file-properties-table\n            [uploadedFiles]=\"uploadedFiles\"\n            [hasFile]=\"hasFile\"\n            [selectedNode]=\"selectedNode\"\n            [field]=\"field\"\n            [displayedColumns]=\"displayedColumns\"\n            [mimeTypeIcon]=\"mimeTypeIcon\"\n            (rowClick)=\"onRowClicked($event)\"\n            (attachFileClick)=\"onAttachFileClicked($event)\"\n            (downloadFile)=\"downloadContent($event)\"\n            (uploadNewFileVersion)=\"onUploadNewFileVersion($event)\"\n            (contentModelFileHandler)=\"contentModelFormFileHandler($event)\"\n            (removeAttachFile)=\"onRemoveAttachFile($event)\"\n        />\n        <div *ngIf=\"!hasFile && field.readOnly\" id=\"{{'adf-attach-empty-list-'+field.id}}\">\n            {{ 'FORM.FIELD.NO_FILE_ATTACHED' | translate }}\n        </div>\n\n    </div>\n\n    <error-widget [error]=\"field.validationSummary\" />\n    <error-widget *ngIf=\"!field.isValid && isTouched() && !isSelected()\" required=\"{{ 'FORM.FIELD.REQUIRED' | translate }}\" />\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/component-selector */\n\nimport { Component, OnInit, ViewEncapsulation, DestroyRef, inject } from '@angular/core';\nimport { DateAdapter, MAT_DATE_FORMATS } from '@angular/material/core';\nimport {\n    ADF_DATE_FORMATS,\n    AdfDateFnsAdapter,\n    DateFnsUtils,\n    DEFAULT_DATE_FORMAT,\n    ErrorMessageModel,\n    ErrorWidgetComponent,\n    FormService,\n    WidgetComponent,\n    ReactiveFormWidget\n} from '@alfresco/adf-core';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { addDays, parseISO } from 'date-fns';\nimport { FormControl, ReactiveFormsModule, ValidationErrors, Validators } from '@angular/forms';\nimport { NgIf } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n    selector: 'date-widget',\n    imports: [NgIf, TranslatePipe, MatFormFieldModule, MatInputModule, MatDatepickerModule, ReactiveFormsModule, ErrorWidgetComponent],\n    providers: [\n        { provide: MAT_DATE_FORMATS, useValue: ADF_DATE_FORMATS },\n        { provide: DateAdapter, useClass: AdfDateFnsAdapter }\n    ],\n    templateUrl: './date-cloud.widget.html',\n    styleUrls: ['./date-cloud.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 DateCloudWidgetComponent extends WidgetComponent implements OnInit, ReactiveFormWidget {\n    typeId = 'DateCloudWidgetComponent';\n\n    minDate: Date = null;\n    maxDate: Date = null;\n    startAt: Date = null;\n\n    dateInputControl: FormControl<Date> = new FormControl<Date>(null);\n\n    public readonly formService = inject(FormService);\n\n    private readonly destroyRef = inject(DestroyRef);\n    private readonly dateAdapter = inject(DateAdapter);\n\n    ngOnInit(): void {\n        this.setFormControlValue();\n        this.updateFormControlState();\n        this.initDateAdapter();\n        this.initRangeSelection();\n        this.initStartAt();\n        this.subscribeToDateChanges();\n        this.validateField();\n    }\n\n    updateReactiveFormControl(): void {\n        this.setFormControlValue();\n        this.updateFormControlState();\n        this.validateField();\n    }\n\n    private setFormControlValue(): void {\n        this.dateInputControl.setValue(this.field.value, { emitEvent: false });\n    }\n\n    private updateFormControlState(): void {\n        this.dateInputControl.setValidators(this.isRequired() && this.field?.isVisible ? [Validators.required] : []);\n        this.field?.readOnly || this.readOnly\n            ? this.dateInputControl.disable({ emitEvent: false })\n            : this.dateInputControl.enable({ emitEvent: false });\n\n        this.dateInputControl.updateValueAndValidity({ emitEvent: false });\n    }\n\n    private subscribeToDateChanges(): void {\n        this.dateInputControl.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((newDate: Date) => {\n            this.field.value = newDate;\n            this.updateField();\n        });\n    }\n\n    private updateField(): void {\n        this.validateField();\n        this.onFieldChanged(this.field);\n    }\n\n    private validateField(): void {\n        if (this.dateInputControl.invalid) {\n            this.handleErrors(this.dateInputControl.errors);\n            this.field.markAsInvalid();\n        } else {\n            this.resetErrors();\n            this.field.markAsValid();\n        }\n    }\n\n    private handleErrors(errors: ValidationErrors): void {\n        const errorAttributes = new Map<string, string>();\n        switch (true) {\n            case !!errors.matDatepickerParse:\n                this.updateValidationSummary(this.field.dateDisplayFormat || this.field.defaultDateTimeFormat);\n                break;\n            case !!errors.required:\n                this.updateValidationSummary('FORM.FIELD.REQUIRED');\n                break;\n            case !!errors.matDatepickerMin: {\n                const minValue = DateFnsUtils.formatDate(errors.matDatepickerMin.min, this.field.dateDisplayFormat).toLocaleUpperCase();\n                errorAttributes.set('minValue', minValue);\n                this.updateValidationSummary('FORM.FIELD.VALIDATOR.NOT_LESS_THAN', errorAttributes);\n                break;\n            }\n            case !!errors.matDatepickerMax: {\n                const maxValue = DateFnsUtils.formatDate(errors.matDatepickerMax.max, this.field.dateDisplayFormat).toLocaleUpperCase();\n                errorAttributes.set('maxValue', maxValue);\n                this.updateValidationSummary('FORM.FIELD.VALIDATOR.NOT_GREATER_THAN', errorAttributes);\n                break;\n            }\n            default:\n                break;\n        }\n    }\n\n    private updateValidationSummary(message: string, attributes?: Map<string, string>): void {\n        this.field.validationSummary = new ErrorMessageModel({ message, attributes });\n    }\n\n    private resetErrors(): void {\n        this.updateValidationSummary('');\n    }\n\n    private initDateAdapter(): void {\n        if (this.field?.dateDisplayFormat) {\n            const adapter = this.dateAdapter as AdfDateFnsAdapter;\n            adapter.displayFormat = this.field.dateDisplayFormat;\n        }\n    }\n\n    private initStartAt(): void {\n        if (this.field?.value) {\n            this.startAt = this.dateAdapter.parse(this.field.value, DEFAULT_DATE_FORMAT);\n        }\n    }\n\n    private initRangeSelection(): void {\n        if (this.field?.dynamicDateRangeSelection) {\n            this.setDynamicRangeSelection();\n        } else {\n            this.setStaticRangeSelection();\n        }\n    }\n\n    private setDynamicRangeSelection(): void {\n        if (this.field.minDateRangeValue === null) {\n            this.minDate = null;\n            this.field.minValue = null;\n        } else {\n            this.minDate = addDays(this.dateAdapter.today(), this.field.minDateRangeValue);\n            this.field.minValue = DateFnsUtils.formatDate(this.minDate, DEFAULT_DATE_FORMAT);\n        }\n        if (this.field.maxDateRangeValue === null) {\n            this.maxDate = null;\n            this.field.maxValue = null;\n        } else {\n            this.maxDate = addDays(this.dateAdapter.today(), this.field.maxDateRangeValue);\n            this.field.maxValue = DateFnsUtils.formatDate(this.maxDate, DEFAULT_DATE_FORMAT);\n        }\n    }\n\n    private setStaticRangeSelection(): void {\n        if (this.field?.minValue) {\n            this.minDate = parseISO(this.field.minValue);\n        }\n\n        if (this.field?.maxValue) {\n            this.maxDate = parseISO(this.field.maxValue);\n        }\n    }\n}\n","<div\n    class=\"{{field.className}}\"\n    id=\"data-widget\"\n    [class.adf-invalid]=\"dateInputControl.invalid && dateInputControl.touched\"\n    [class.adf-left-label-input-container]=\"field.leftLabels\"\n>\n    <div *ngIf=\"field.leftLabels\">\n        <label class=\"adf-label adf-left-label\" [attr.for]=\"field.id\"\n            >{{field.name | translate }} ({{field.dateDisplayFormat}})<span\n                class=\"adf-asterisk\"\n                [style.visibility]=\"isRequired() ? 'visible' : 'hidden'\"\n                >*</span\n            ></label\n        >\n    </div>\n    <div class=\"adf-date-widget-container\">\n        <mat-form-field class=\"adf-date-widget adf-form-field-input\" [class.adf-left-label-input-datepicker]=\"field.leftLabels\">\n            @if ( (field.name || field?.required) && !field.leftLabels) {\n                <mat-label class=\"adf-label\" [attr.for]=\"field.id\">\n                    {{field.name | translate }} ({{field.dateDisplayFormat}})\n                </mat-label>\n            }\n            <input\n                matInput\n                class=\"adf-input\"\n                [matDatepicker]=\"datePicker\"\n                [id]=\"field.id\"\n                [formControl]=\"dateInputControl\"\n                [placeholder]=\"field.placeholder\"\n                [required]=\"field.required && field.isVisible\"\n                [min]=\"minDate\"\n                [max]=\"maxDate\"\n                [title]=\"field.tooltip\"\n            />\n            <mat-datepicker-toggle matSuffix [for]=\"datePicker\" [disabled]=\"field.readOnly\" />\n            <mat-datepicker #datePicker [startAt]=\"startAt\" [disabled]=\"field.readOnly\" />\n        </mat-form-field>\n        <div class=\"adf-error-messages-container\">\n            <error-widget *ngIf=\"dateInputControl.invalid && dateInputControl.touched\" [error]=\"field.validationSummary\" />\n        </div>\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 { Injectable } from '@angular/core';\nimport { FormModel, FormVariableModel } from '@alfresco/adf-core';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class FormUtilsService {\n    getRestUrlVariablesMap(formModel: FormModel, restUrl: string, inputBody: { [key: string]: any }) {\n        return formModel.variables.reduce((map: { [key: string]: any }, variable: FormVariableModel) => {\n            const variablePattern = new RegExp(`\\\\$\\\\{${variable.name}\\\\}`);\n            if (variablePattern.test(restUrl)) map[variable.name] = formModel.getProcessVariableValue(variable.name);\n            return map;\n        }, inputBody);\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 { FormFieldModel } from '@alfresco/adf-core';\nimport { ValidatorFn, AbstractControl, ValidationErrors } from '@angular/forms';\nimport { DEFAULT_OPTION } from './dropdown-cloud.widget';\n\nexport const defaultValueValidator =\n    (filed: FormFieldModel): ValidatorFn =>\n    (control: AbstractControl): ValidationErrors | null => {\n        const optionsWithNoDefaultValue = filed.options.filter((dropdownOption) => {\n            const isDefaultValue = dropdownOption.id === DEFAULT_OPTION.id;\n\n            return !isDefaultValue;\n        });\n\n        const isSomeOptionSelected = optionsWithNoDefaultValue.some((dropdownOption) => {\n            const isOptionSelected = dropdownOption.id === control.value?.id;\n\n            return isOptionSelected;\n        });\n\n        return isSomeOptionSelected ? null : { required: true };\n    };\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n    AppConfigService,\n    ErrorMessageModel,\n    ErrorWidgetComponent,\n    FormFieldEvent,\n    FormFieldModel,\n    FormFieldOption,\n    FormFieldTypes,\n    FormService,\n    ReactiveFormWidget,\n    RuleEntry,\n    SelectFilterInputComponent,\n    WidgetComponent\n} from '@alfresco/adf-core';\nimport { AsyncPipe, NgClass, NgFor, NgIf } from '@angular/common';\nimport { Component, DestroyRef, inject, OnInit, ViewEncapsulation } from '@angular/core';\nimport { FormControl, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { TaskVariableCloud } from '../../../models/task-variable-cloud.model';\nimport { FormCloudService } from '../../../services/form-cloud.service';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormUtilsService } from '../../../services/form-utils.service';\nimport { defaultValueValidator } from './validators';\n\nexport const DEFAULT_OPTION = {\n    id: 'empty',\n    name: 'Choose one...'\n};\nexport const HIDE_FILTER_LIMIT = 5;\n\n/* eslint-disable @angular-eslint/component-selector */\n\n@Component({\n    selector: 'dropdown-cloud-widget',\n    templateUrl: './dropdown-cloud.widget.html',\n    styleUrls: ['./dropdown-cloud.widget.scss'],\n    encapsulation: ViewEncapsulation.None,\n    imports: [\n        NgIf,\n        NgFor,\n        NgClass,\n        AsyncPipe,\n        ReactiveFormsModule,\n        MatFormFieldModule,\n        MatSelectModule,\n        ErrorWidgetComponent,\n        TranslatePipe,\n        SelectFilterInputComponent\n    ]\n})\nexport class DropdownCloudWidgetComponent extends WidgetComponent implements OnInit, ReactiveFormWidget {\n    public formService = inject(FormService);\n    private readonly formCloudService = inject(FormCloudService);\n    private readonly appConfig = inject(AppConfigService);\n    private readonly formUtilsService = inject(FormUtilsService);\n    private destroyRef = inject(DestroyRef);\n\n    typeId = 'DropdownCloudWidgetComponent';\n    showInputFilter = false;\n    isRestApiFailed = false;\n    variableOptionsFailed = false;\n    previewState = false;\n    restApiHostName: string;\n    dropdownControl = new FormControl<FormFieldOption | FormFieldOption[]>(undefined);\n\n    list$ = new BehaviorSubject<FormFieldOption[]>([]);\n    filter$ = new BehaviorSubject<string>('');\n\n    private readonly defaultVariableOptionId = 'id';\n    private readonly defaultVariableOptionLabel = 'name';\n    private readonly defaultVariableOptionPath = 'data';\n\n    get showRequiredMessage(): boolean {\n        return this.dropdownControl.touched && this.dropdownControl.errors?.required && !this.isRestApiFailed && !this.variableOptionsFailed;\n    }\n\n    get isReadOnlyType(): boolean {\n        return this.field.type === 'readonly';\n    }\n\n    private get isLinkedWidget(): boolean {\n        return !!this.linkedWidgetId;\n    }\n\n    private get linkedWidgetId(): string {\n        return this.field?.rule?.ruleOn;\n    }\n\n    private get isReadOnlyForm(): boolean {\n        return !!this.field?.form?.readOnly;\n    }\n\n    private get hasRestUrl(): boolean {\n        return !!this.field?.restUrl;\n    }\n\n    private get isValidRestConfig(): boolean {\n        return this.isRestOptionType && this.hasRestUrl;\n    }\n\n    private get isRestOptionType(): boolean {\n        return this.field?.optionType === 'rest';\n    }\n\n    private get isVariableOptionType(): boolean {\n        return this.field?.optionType === 'variable';\n    }\n\n    ngOnInit() {\n        this.setupDropdown();\n\n        this.formService.onFormVariableChanged.subscribe(({ field }) => {\n            if (field.id === this.field.id) {\n                this.setupDropdown();\n            }\n        });\n    }\n\n    updateReactiveFormControl(): void {\n        this.setFormControlValue();\n        this.updateFormControlState();\n        this.handleErrors();\n    }\n\n    compareDropdownValues(opt1: FormFieldOption | string, opt2: FormFieldOption | string): boolean {\n        if (!opt1 || !opt2) {\n            return false;\n        }\n\n        if (typeof opt1 === 'string' && typeof opt2 === 'object') {\n            return opt1 === opt2.id || opt1 === opt2.name;\n        }\n\n        if (typeof opt1 === 'object' && typeof opt2 === 'string') {\n            return opt1.id === opt2 || opt1.name === opt2;\n        }\n\n        if (typeof opt1 === 'object' && typeof opt2 === 'object') {\n            return opt1.id === opt2.id || opt1.name === opt2.name;\n        }\n\n        return opt1 === opt2;\n    }\n\n    selectionChangedForField(field: FormFieldModel): void {\n        const formFieldValueChangedEvent = new FormFieldEvent(field.form, field);\n        this.formService.formFieldValueChanged.next(formFieldValueChangedEvent);\n        this.onFieldChanged(field);\n    }\n\n    private setupDropdown(): void {\n        this.setPreviewState();\n\n        this.checkFieldOptionsSource();\n        this.updateOptions();\n\n        this.setFormControlValue();\n        this.updateFormControlState();\n        this.subscribeToInputChanges();\n        this.initFilter();\n        this.handleErrors();\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.selectionChangedForField(this.field);\n            });\n    }\n\n    private setFormControlValue(): void {\n        if (Array.isArray(this.field.value)) {\n            this.dropdownControl.setValue(this.field?.value, { emitEvent: false });\n        } else if (this.field?.value && typeof this.field?.value === 'object') {\n            this.dropdownControl.setValue({ id: this.field?.value.id, name: this.field?.value.name }, { emitEvent: false });\n        } else if (this.field.value === null) {\n            this.dropdownControl.setValue(this.field?.value, { emitEvent: false });\n        } else {\n            this.dropdownControl.setValue({ id: this.field?.value, name: '' }, { emitEvent: false });\n        }\n    }\n\n    private updateFormControlState(): void {\n        this.updateDropdownValidationRules();\n        this.updateDropdownReadonlyRules();\n        this.dropdownControl.updateValueAndValidity({ emitEvent: false });\n    }\n\n    private updateDropdownValidationRules() {\n        this.dropdownControl.setValidators([]);\n\n        if (!this.field?.isVisible) {\n            return;\n        }\n\n        if (this.isRequired()) {\n            this.dropdownControl.addValidators([Validators.required]);\n            if (this.field.hasEmptyValue) {\n                this.dropdownControl.addValidators([defaultValueValidator(this.field)]);\n            }\n        }\n    }\n\n    private updateDropdownReadonlyRules() {\n        if (this.field?.readOnly || this.readOnly) {\n            this.dropdownControl.disable({ emitEvent: false });\n        } else {\n            this.dropdownControl.enable({ emitEvent: false });\n        }\n    }\n\n    private handleErrors(): void {\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 initFilter(): void {\n        this.filter$\n            .pipe(\n                filter((search) => search !== undefined),\n                map((search) =>\n                    search ? this.field.options.filter(({ name }) => name.toLowerCase().includes(search.toLowerCase())) : this.field.options\n                ),\n                takeUntilDestroyed(this.destroyRef)\n            )\n            .subscribe((result) => this.list$.next(result));\n    }\n\n    private checkFieldOptionsSource(): void {\n        switch (true) {\n            case this.isReadOnlyForm:\n                break;\n            case this.isValidRestConfig && !this.isLinkedWidget:\n                this.persistFieldOptionsFromRestApi();\n                break;\n\n            case this.isLinkedWidget:\n                this.loadFieldOptionsForLinkedWidget();\n                break;\n\n            case this.isVariableOptionType:\n                this.persistFieldOptionsFromVariable();\n                break;\n\n            default:\n                break;\n        }\n    }\n\n    private persistFieldOptionsFromVariable(): void {\n        const optionsPath = this.field?.variableConfig?.optionsPath ?? this.defaultVariableOptionPath;\n        const variableName = this.field?.variableConfig?.variableName;\n        const processVariables = this.field?.form?.processVariables;\n        const formVariables = this.field?.form?.variables;\n\n        const dropdownOptions = this.getOptionsFromVariable(processVariables, formVariables, variableName);\n\n        if (dropdownOptions) {\n            const formVariableOptions: FormFieldOption[] = this.getOptionsFromPath(dropdownOptions, optionsPath);\n            this.updateOptions(formVariableOptions);\n            this.resetInvalidValue();\n            this.field.updateForm();\n        } else {\n            this.handleError(`${variableName} not found`);\n            this.resetOptions();\n            this.variableOptionsFailed = true;\n        }\n    }\n\n    private getOptionsFromPath(data: any, path: string): FormFieldOption[] {\n        const optionsId = this.field?.variableConfig?.optionsId ?? this.defaultVariableOptionId;\n        const optionsLabel = this.field?.variableConfig?.optionsLabel ?? this.defaultVariableOptionLabel;\n\n        const properties = path.split('.');\n        const currentProperty = properties.shift();\n\n        if (!Object.prototype.hasOwnProperty.call(data, currentProperty)) {\n            this.handleError(`${currentProperty} not found in ${JSON.stringify(data)}`);\n            this.variableOptionsFailed = true;\n            return [];\n        }\n\n        const nestedData = data[currentProperty];\n\n        if (Array.isArray(nestedData)) {\n            return this.getOptionsFromArray(nestedData, optionsId, optionsLabel);\n        }\n\n        return this.getOptionsFromPath(nestedData, properties.join('.'));\n    }\n\n    private getOptionsFromArray(nestedData: any[], id: string, label: string): FormFieldOption[] {\n        const options = nestedData.map((item) => this.createOption(item, id, label));\n        const hasInvalidOption = options.some((option) => !option);\n\n        if (hasInvalidOption) {\n            this.variableOptionsFailed = true;\n            return [];\n        }\n\n        this.variableOptionsFailed = false;\n        return options;\n    }\n\n    private createOption(item: any, id: string, label: string): FormFieldOption {\n        const option: FormFieldOption = {\n            id: item[id],\n            name: item[label]\n        };\n\n        if (!option.id || !option.name) {\n            this.handleError(`'id' or 'label' is not properly defined`);\n            return undefined;\n        }\n\n        return option;\n    }\n\n    private getOptionsFromVariable(\n        processVariables: TaskVariableCloud[],\n        formVariables: TaskVariableCloud[],\n        variableName: string\n    ): TaskVariableCloud {\n        const processVariableDropdownOptions: TaskVariableCloud = this.getVariableValueByName(processVariables, variableName);\n        const formVariableDropdownOptions: TaskVariableCloud = this.getVariableValueByName(formVariables, variableName);\n\n        return processVariableDropdownOptions ?? formVariableDropdownOptions;\n    }\n\n    private getVariableValueByName(variables: TaskVariableCloud[], variableName: string): any {\n        return variables?.find((variable: TaskVariableCloud) => variable?.name === `variables.${variableName}` || variable?.name === variableName)\n            ?.value;\n    }\n\n    private persistFieldOptionsFromRestApi() {\n        if (this.isValidRestConfig) {\n            this.resetRestApiErrorMessage();\n            const bodyParam = this.buildBodyParam();\n            this.formCloudService\n                .getRestWidgetData(this.field.form.id, this.field.id, bodyParam)\n                .pipe(takeUntilDestroyed(this.destroyRef))\n                .subscribe({\n                    next: (result: FormFieldOption[]) => {\n                        this.resetRestApiErrorMessage();\n                        this.updateOptions(result);\n                        this.field.updateForm();\n                        this.resetInvalidValue();\n                    },\n                    error: (err) => {\n                        this.resetRestApiOptions();\n                        this.handleError(err);\n                    }\n                });\n        }\n    }\n\n    private buildBodyParam(): any {\n        const bodyParam = Object.assign({});\n        if (this.isLinkedWidget) {\n            const parentWidgetValue = this.getParentWidgetValue();\n            const parentWidgetId = this.linkedWidgetId;\n            bodyParam[parentWidgetId] = parentWidgetValue;\n        }\n\n        return this.formUtilsService.getRestUrlVariablesMap(this.field.form, this.field.restUrl, bodyParam);\n    }\n\n    private loadFieldOptionsForLinkedWidget() {\n        const parentWidgetValue = this.getParentWidgetValue();\n        this.parentValueChanged(parentWidgetValue);\n\n        this.formService.formFieldValueChanged\n            .pipe(\n                filter((event: FormFieldEvent) => this.isFormFieldEventOfTypeDropdown(event) && this.isParentFormFieldEvent(event)),\n                takeUntilDestroyed(this.destroyRef)\n            )\n            .subscribe((event: FormFieldEvent) => {\n                const valueOfParentWidget = event.field.value;\n                this.parentValueChanged(valueOfParentWidget);\n            });\n    }\n\n    private getParentWidgetValue(): string {\n        const parentWidgetId = this.linkedWidgetId;\n        const parentWidget = this.getFormFieldById(parentWidgetId);\n        return parentWidget?.value;\n    }\n\n    private parentValueChanged(value: string) {\n        if (value && !this.isNoneValueSelected(value)) {\n            this.isValidRestConfig ? this.persistFieldOptionsFromRestApi() : this.persistFieldOptionsFromManualList(value);\n        } else if (this.isNoneValueSelected(value)) {\n            this.resetRestApiErrorMessage();\n            this.resetOptions();\n            this.resetInvalidValue();\n        } else {\n            this.updateOptions([]);\n            this.resetInvalidValue();\n        }\n    }\n\n    private isNoneValueSelected(value: string): boolean {\n        return value === undefined;\n    }\n\n    private getFormFieldById(fieldId): FormFieldModel {\n        return this.field.form.getFormFields().filter((field: FormFieldModel) => field.id === fieldId)[0];\n    }\n\n    private persistFieldOptionsFromManualList(value: string) {\n        if (this.hasRuleEntries()) {\n            const rulesEntries = this.field.rule.entries;\n            rulesEntries.forEach((ruleEntry: RuleEntry) => {\n                if (ruleEntry.key === value) {\n                    this.updateOptions(ruleEntry.options);\n                    this.resetInvalidValue();\n                    this.field.updateForm();\n                }\n            });\n        }\n    }\n\n    private resetInvalidValue() {\n        if (!this.isValidValue()) {\n            this.resetValue();\n        }\n    }\n\n    private resetValue() {\n        this.field.value = '';\n        this.selectionChangedForField(this.field);\n        this.updateOptions();\n        this.field.updateForm();\n    }\n\n    private isValidValue(): boolean {\n        return this.field.value && this.isSelectedValueInOptions();\n    }\n\n    private isSelectedValueInOptions(): boolean {\n        if (Array.isArray(this.field.value)) {\n            const optionIdList = [...this.field.options].map((option) => option.id);\n            const fieldValueIds = this.field.value.map((valueOption) => valueOption.id);\n            return fieldValueIds.every((valueOptionId) => optionIdList.includes(valueOptionId));\n        } else {\n            if (this.field?.value && typeof this.field?.value === 'object') {\n                return [...this.field.options].map((option) => option.id).includes(this.field.value.id);\n            } else {\n                return [...this.field.options].map((option) => option.id).includes(this.field.value);\n            }\n        }\n    }\n\n    private hasRuleEntries(): boolean {\n        return !!this.field.rule.entries.length;\n    }\n\n    private resetOptions() {\n        this.updateOptions([]);\n    }\n\n    private isParentFormFieldEvent(event: FormFieldEvent): boolean {\n        return event.field.id === this.linkedWidgetId;\n    }\n\n    private isFormFieldEventOfTypeDropdown(event: FormFieldEvent): boolean {\n        return event.field.type === FormFieldTypes.DROPDOWN;\n    }\n\n    private setOptionValue(option: FormFieldOption | FormFieldOption[], field: FormFieldModel) {\n        if (Array.isArray(option) || field.hasMultipleValues) {\n            field.value = option;\n            return;\n        }\n\n        let optionValue: string = '';\n        if (option.id === DEFAULT_OPTION.id) {\n            optionValue = undefined;\n        } else if (option.name !== field.value) {\n            optionValue = option.id;\n        } else {\n            optionValue = option.name;\n        }\n\n        field.value = optionValue;\n    }\n\n    private setPreviewState(): void {\n        this.previewState = this.formCloudService.getPreviewState();\n    }\n\n    private handleError(error: any) {\n        if (!this.previewState) {\n            this.widgetError.emit(error);\n        }\n    }\n\n    private updateOptions(options?: FormFieldOption[]): void {\n        if (!this.field) {\n            return;\n        }\n\n        if (options) {\n            this.field.options = options;\n        }\n\n        this.list$.next(this.field.options);\n        this.showInputFilter = this.field.options.length > this.appConfig.get<number>('form.dropDownFilterLimit', HIDE_FILTER_LIMIT);\n    }\n\n    private resetRestApiErrorMessage(): void {\n        this.isRestApiFailed = false;\n        this.restApiHostName = '';\n    }\n\n    private resetRestApiOptions(): void {\n        this.updateOptions([]);\n        this.resetValue();\n        this.isRestApiFailed = true;\n        this.restApiHostName = this.getRestUrlHostName();\n    }\n\n    private getRestUrlHostName(): string {\n        try {\n            return new URL(this.field?.restUrl).hostname;\n        } catch {\n            return this.field?.restUrl;\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    [class.adf-left-label-input-container]=\"field.leftLabels\"\n>\n    <div *ngIf=\"field.leftLabels\">\n        <label class=\"adf-label adf-left-label\" [attr.for]=\"field.id\">\n            {{ field.name | translate }}<span class=\"adf-asterisk\" [style.visibility]=\"isRequired() ? 'visible' : 'hidden'\">*</span>\n        </label>\n    </div>\n    <div>\n        <mat-form-field class=\"adf-form-field-input\">\n            @if ( (field.name || this.field?.required) && !field.leftLabels) {\n            <mat-label class=\"adf-label\" [attr.for]=\"field.id\">{{ field.name | translate }}</mat-label> }\n            <mat-select\n                class=\"adf-select\"\n                [formControl]=\"dropdownControl\"\n                [id]=\"field.id\"\n                [compareWith]=\"compareDropdownValues\"\n                [title]=\"field.tooltip\"\n                panelClass=\"adf-select-filter\"\n                [multiple]=\"field.hasMultipleValues\"\n                [disabled]=\"field.readOnly\"\n                [required]=\"field.required \"\n            >\n                <adf-select-filter-input *ngIf=\"showInputFilter\" (change)=\"filter$.next($event)\" />\n\n                <mat-option *ngFor=\"let opt of list$ | async\" [value]=\"opt\" [id]=\"opt.id\">{{opt.name}}</mat-option>\n                <mat-option id=\"readonlyOption\" *ngIf=\"isReadOnlyType\" [value]=\"field.value\">{{field.value}}</mat-option>\n            </mat-select>\n        </mat-form-field>\n        <div\n            class=\"adf-error-messages-container\"\n            [ngClass]=\"!previewState && !field.readOnly ? 'adf-error-messages-container-visible' : 'adf-error-messages-container-hidden'\"\n        >\n            <error-widget class=\"adf-dropdown-required-message\" *ngIf=\"showRequiredMessage\" required=\"{{ 'FORM.FIELD.REQUIRED' | translate }}\" />\n            <error-widget\n                class=\"adf-dropdown-failed-message\"\n                *ngIf=\"isRestApiFailed\"\n                required=\"{{ 'FORM.FIELD.REST_API_FAILED' | translate: { hostname: restApiHostName } }}\"\n            />\n            <error-widget\n                class=\"adf-dropdown-failed-message\"\n                *ngIf=\"variableOptionsFailed\"\n                required=\"{{ 'FORM.FIELD.VARIABLE_DROPDOWN_OPTIONS_FAILED' | translate }}\"\n            />\n        </div>\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 { Directive, Input, HostListener, Output, EventEmitter, OnInit, ElementRef, Renderer2 } from '@angular/core';\nimport { TaskCloudService } from '../../../../services/task-cloud.service';\n\n@Directive({\n    // eslint-disable-next-line @angular-eslint/directive-selector\n    selector: '[adf-cloud-unclaim-task]'\n})\nexport class UnClaimTaskCloudDirective implements OnInit {\n    /** (Required) The id of the task. */\n    @Input()\n    taskId: string;\n\n    /** (Required) The name of the application. */\n    @Input()\n    appName: string = '';\n\n    /** Emitted when the task is completed. */\n    @Output()\n    success: EventEmitter<any> = new EventEmitter<any>();\n\n    /** Emitted when the task cannot be completed. */\n    @Output()\n    error: EventEmitter<any> = new EventEmitter<any>();\n\n    invalidParams: string[] = [];\n\n    constructor(private readonly el: ElementRef, private readonly renderer: Renderer2, private taskListService: TaskCloudService) {}\n\n    ngOnInit() {\n        this.validateInputs();\n    }\n\n    validateInputs() {\n        if (!this.isTaskValid()) {\n            this.invalidParams.push('taskId');\n        }\n        if (!this.isAppValid()) {\n            this.invalidParams.push('appName');\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    isAppValid(): boolean {\n        return !!this.appName || this.appName === '';\n    }\n\n    @HostListener('click')\n    async onClick() {\n        try {\n            this.renderer.setAttribute(this.el.nativeElement, 'disabled', 'true');\n            await this.taskListService.unclaimTask(this.appName, this.taskId).toPromise();\n            this.success.emit(this.taskId);\n        } catch (error) {\n            this.renderer.removeAttribute(this.el.nativeElement, 'disabled');\n            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, Input, HostListener, Output, EventEmitter, OnInit, ElementRef, Renderer2 } from '@angular/core';\nimport { IdentityUserService } from '../../../../../people/services/identity-user.service';\nimport { TaskCloudService } from '../../../../services/task-cloud.service';\n\n@Directive({\n    // eslint-disable-next-line @angular-eslint/directive-selector\n    selector: '[adf-cloud-claim-task]'\n})\nexport class ClaimTaskCloudDirective implements OnInit {\n    /** (Required) The id of the task. */\n    @Input()\n    taskId: string;\n\n    /** (Required) The name of the application. */\n    @Input()\n    appName: string = '';\n\n    /** Emitted when the task is completed. */\n    @Output()\n    success: EventEmitter<any> = new EventEmitter<any>();\n\n    /** Emitted when the task cannot be completed. */\n    @Output()\n    error: EventEmitter<any> = new EventEmitter<any>();\n\n    invalidParams: string[] = [];\n\n    constructor(\n        private readonly el: ElementRef,\n        private readonly renderer: Renderer2,\n        private taskListService: TaskCloudService,\n        private identityUserService: IdentityUserService\n    ) {}\n\n    ngOnInit() {\n        this.validateInputs();\n    }\n\n    validateInputs() {\n        if (!this.isTaskValid()) {\n            this.invalidParams.push('taskId');\n        }\n        if (!this.isAppValid()) {\n            this.invalidParams.push('appName');\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    isAppValid(): boolean {\n        return !!this.appName || this.appName === '';\n    }\n\n    @HostListener('click')\n    async onClick() {\n        try {\n            await this.claimTask();\n        } catch (error) {\n            this.error.emit(error);\n        }\n    }\n\n    private async claimTask() {\n        const currentUser: string = this.identityUserService.getCurrentUserInfo().username;\n        try {\n            this.renderer.setAttribute(this.el.nativeElement, 'disabled', 'true');\n            const result = await this.taskListService.claimTask(this.appName, this.taskId, currentUser).toPromise();\n            if (result) {\n                this.success.emit(result);\n            }\n        } catch (error) {\n            this.renderer.removeAttribute(this.el.nativeElement, 'disabled');\n            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 { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { UnClaimTaskCloudDirective } from './unclaim-task/unclaim-task-cloud.directive';\nimport { ClaimTaskCloudDirective } from './claim-task/claim-task-cloud.directive';\n\n@Component({\n    selector: 'adf-cloud-user-task-cloud-buttons',\n    imports: [CommonModule, TranslatePipe, UnClaimTaskCloudDirective, ClaimTaskCloudDirective, MatButtonModule],\n    styles: ['button { margin-right: 8px; }'],\n    templateUrl: './user-task-cloud-buttons.component.html'\n})\nexport class UserTaskCloudButtonsComponent {\n    /** App id to fetch corresponding form and values. */\n    @Input()\n    appName: string = '';\n\n    /** Boolean informing if a task can be claimed. */\n    @Input()\n    canClaimTask: boolean;\n\n    /** Boolean informing if a task can be unclaimed. */\n    @Input()\n    canUnclaimTask: boolean;\n\n    /** Task id to fetch corresponding form and values. */\n    @Input()\n    taskId: string;\n\n    /** Toggle rendering of the `Cancel` button. */\n    @Input()\n    showCancelButton = true;\n\n    /**\n     * Custom text for the `Cancel` button.\n     * If not provided, the default text will be used.\n     */\n    @Input()\n    customCancelButtonText: string = '';\n\n    /** Emitted when any error occurs. */\n    @Output() error = new EventEmitter<any>();\n\n    /** Emitted when the cancel button is clicked. */\n    @Output() cancelClick = new EventEmitter<any>();\n\n    /** Emitted when the task is claimed. */\n    @Output() claimTask = new EventEmitter<any>();\n\n    /** Emitted when the task is unclaimed. */\n    @Output() unclaimTask = new EventEmitter<any>();\n\n    onError(data: any): void {\n        this.error.emit(data);\n    }\n\n    onUnclaimTask(): void {\n        this.unclaimTask.emit();\n    }\n\n    onClaimTask(): void {\n        this.claimTask.emit();\n    }\n\n    onCancelClick(): void {\n        this.cancelClick.emit();\n    }\n}\n","<button *ngIf=\"showCancelButton\" mat-button id=\"adf-cloud-cancel-task\" (click)=\"onCancelClick()\">\n    {{ customCancelButtonText || ('ADF_CLOUD_TASK_FORM.EMPTY_FORM.BUTTONS.CANCEL' | translate) }}\n</button>\n<button\n    *ngIf=\"canClaimTask\"\n    adf-cloud-claim-task\n    class=\"adf-user-task-cloud-claim-btn\"\n    mat-button\n    [appName]=\"appName\"\n    [taskId]=\"taskId\"\n    (success)=\"onClaimTask()\"\n    (error)=\"onError($event)\"\n>\n    {{ 'ADF_CLOUD_TASK_FORM.EMPTY_FORM.BUTTONS.CLAIM' | translate }}\n</button>\n<button\n    *ngIf=\"canUnclaimTask\"\n    adf-cloud-unclaim-task\n    class=\"adf-user-task-cloud-unclaim-btn\"\n    mat-button\n    [appName]=\"appName\"\n    [taskId]=\"taskId\"\n    (success)=\"onUnclaimTask()\"\n    (error)=\"onError($event)\"\n>\n    {{ 'ADF_CLOUD_TASK_FORM.EMPTY_FORM.BUTTONS.UNCLAIM' | translate }}\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 } from '@angular/core';\n\n@Component({\n    selector: 'adf-cloud-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 { ContentLinkModel, FormModel, FormOutcomeEvent, FormRenderingService } from '@alfresco/adf-core';\nimport { Component, EventEmitter, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { FormCloudComponent } from '../../../../form/components/form-cloud.component';\nimport { AttachFileCloudWidgetComponent } from '../../../../form/components/widgets/attach-file/attach-file-cloud-widget.component';\nimport { DateCloudWidgetComponent } from '../../../../form/components/widgets/date/date-cloud.widget';\nimport { DropdownCloudWidgetComponent } from '../../../../form/components/widgets/dropdown/dropdown-cloud.widget';\nimport { FormCloudDisplayModeConfiguration } from '../../../../services/form-fields.interfaces';\nimport { TaskCloudService } from '../../../services/task-cloud.service';\nimport { TaskDetailsCloudModel } from '../../../models/task-details-cloud.model';\nimport { CommonModule } from '@angular/common';\nimport { UserTaskCloudButtonsComponent } from '../user-task-cloud-buttons/user-task-cloud-buttons.component';\nimport { FormCustomOutcomesComponent } from '../../../../form/components/form-cloud-custom-outcomes.component';\n\n@Component({\n    selector: 'adf-cloud-task-form',\n    imports: [CommonModule, UserTaskCloudButtonsComponent, FormCustomOutcomesComponent, FormCloudComponent],\n    templateUrl: './task-form-cloud.component.html',\n    styleUrls: ['./task-form-cloud.component.scss'],\n    encapsulation: ViewEncapsulation.None\n})\nexport class TaskFormCloudComponent {\n    /** App id to fetch corresponding form and values. */\n    @Input()\n    appName: string = '';\n\n    /**Candidates users*/\n    @Input()\n    candidateUsers: string[] = [];\n\n    /**Candidates groups */\n    @Input()\n    candidateGroups: string[] = [];\n\n    /** Task id to fetch corresponding form and values. */\n    @Input()\n    taskId: string;\n\n    /** Toggle rendering of the form title. */\n    @Input()\n    showTitle: boolean = true;\n\n    /** Toggle rendering of the `Refresh` button. */\n    @Input()\n    showRefreshButton = false;\n\n    /** Toggle rendering of the `Validation` icon. */\n    @Input()\n    showValidationIcon = true;\n\n    /** Toggle rendering of the `Cancel` button. */\n    @Input()\n    showCancelButton = true;\n\n    /** Toggle rendering of the `Complete` button. */\n    @Input()\n    showCompleteButton = true;\n\n    /** Toggle rendering of the `Save` button. */\n    @Input()\n    showSaveButton = true;\n\n    /**\n     * Custom text for the `Cancel` button.\n     * If not provided, the default text will be used.\n     */\n    @Input()\n    customCancelButtonText: string = '';\n\n    /**\n     * Custom text for the `Complete` button.\n     * If not provided, the default text will be used.\n     */\n    @Input()\n    customCompleteButtonText: string = '';\n\n    /**\n     * Custom text for the `Save` button.\n     * If not provided, the default text will be used.\n     */\n    @Input()\n    customSaveButtonText: string = '';\n\n    /** Toggle readonly state of the task. */\n    @Input()\n    readOnly = false;\n\n    /**\n     * The available display configurations for the form\n     */\n    @Input()\n    displayModeConfigurations: FormCloudDisplayModeConfiguration[];\n\n    /** Task details. */\n    @Input()\n    taskDetails: TaskDetailsCloudModel;\n\n    /** Emitted when the form is loaded or reloaded. */\n    @Output()\n    formLoaded = new EventEmitter<FormModel>();\n\n    /** Emitted when the form is saved. */\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 task is completed. */\n    @Output()\n    taskCompleted = new EventEmitter<string>();\n\n    /** Emitted when the task is claimed. */\n    @Output()\n    taskClaimed = new EventEmitter<string>();\n\n    /** Emitted when the task is unclaimed. */\n    @Output()\n    taskUnclaimed = new EventEmitter<string>();\n\n    /** Emitted when the cancel button is clicked. */\n    @Output()\n    cancelClick = new EventEmitter<string>();\n\n    /** Emitted when any error occurs. */\n    @Output()\n    error = new EventEmitter<any>();\n\n    /** Emitted when form content is clicked. */\n    @Output()\n    formContentClicked: EventEmitter<ContentLinkModel> = new EventEmitter();\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 display mode configuration is turned on. */\n    @Output()\n    displayModeOn = new EventEmitter<FormCloudDisplayModeConfiguration>();\n\n    /** Emitted when a display mode configuration is turned off. */\n    @Output()\n    displayModeOff = new EventEmitter<FormCloudDisplayModeConfiguration>();\n\n    @ViewChild('adfCloudForm', { static: false })\n    adfCloudForm: FormCloudComponent;\n\n    loading: boolean = false;\n\n    constructor(private taskCloudService: TaskCloudService, private formRenderingService: FormRenderingService) {\n        this.formRenderingService.setComponentTypeResolver('upload', () => AttachFileCloudWidgetComponent, true);\n        this.formRenderingService.setComponentTypeResolver('dropdown', () => DropdownCloudWidgetComponent, true);\n        this.formRenderingService.setComponentTypeResolver('date', () => DateCloudWidgetComponent, true);\n    }\n\n    hasForm(): boolean {\n        return this.taskDetails && !!this.taskDetails.formKey;\n    }\n\n    canCompleteTask(): boolean {\n        return this.showCompleteButton && !this.readOnly && this.taskCloudService.canCompleteTask(this.taskDetails);\n    }\n\n    canClaimTask(): boolean {\n        return !this.readOnly && this.taskCloudService.canClaimTask(this.taskDetails) && this.hasCandidateUsersOrGroups();\n    }\n\n    canUnclaimTask(): boolean {\n        return !this.readOnly && this.taskCloudService.canUnclaimTask(this.taskDetails) && this.hasCandidateUsersOrGroups();\n    }\n\n    hasCandidateUsers(): boolean {\n        return this.candidateUsers.length !== 0;\n    }\n\n    hasCandidateGroups(): boolean {\n        return this.candidateGroups.length !== 0;\n    }\n\n    hasCandidateUsersOrGroups(): boolean {\n        return this.hasCandidateUsers() || this.hasCandidateGroups();\n    }\n\n    isReadOnly(): boolean {\n        return this.readOnly || !this.taskCloudService.canCompleteTask(this.taskDetails);\n    }\n\n    onCompleteTask() {\n        this.taskCompleted.emit(this.taskId);\n    }\n\n    onClaimTask() {\n        this.taskClaimed.emit(this.taskId);\n    }\n\n    onUnclaimTask() {\n        this.taskUnclaimed.emit(this.taskId);\n    }\n\n    onCancelClick() {\n        this.cancelClick.emit(this.taskId);\n    }\n\n    onFormSaved(form: FormModel) {\n        this.formSaved.emit(form);\n    }\n\n    onFormCompleted(form: FormModel) {\n        this.formCompleted.emit(form);\n        this.taskCompleted.emit(this.taskId);\n    }\n\n    onError(data: any) {\n        this.error.emit(data);\n    }\n\n    onFormContentClicked(content: ContentLinkModel) {\n        this.formContentClicked.emit(content);\n    }\n\n    onFormExecuteOutcome(outcome: FormOutcomeEvent) {\n        this.executeOutcome.emit(outcome);\n    }\n\n    switchToDisplayMode(newDisplayMode?: string) {\n        this.adfCloudForm.switchToDisplayMode(newDisplayMode);\n    }\n\n    onDisplayModeOn(displayModeConfiguration: FormCloudDisplayModeConfiguration) {\n        this.displayModeOn.emit(displayModeConfiguration);\n    }\n\n    onDisplayModeOff(displayModeConfiguration: FormCloudDisplayModeConfiguration) {\n        this.displayModeOff.emit(displayModeConfiguration);\n    }\n\n    onFormLoaded(form: FormModel) {\n        this.formLoaded.emit(form);\n    }\n}\n","<div class=\"adf-task-form-cloud-container\">\n    <adf-cloud-form\n        #adfCloudForm\n        [appName]=\"appName\"\n        [appVersion]=\"taskDetails.appVersion\"\n        [taskId]=\"taskId\"\n        [showTitle]=\"showTitle\"\n        [processInstanceId]=\"taskDetails.processInstanceId\"\n        [readOnly]=\"isReadOnly()\"\n        [showRefreshButton]=\"showRefreshButton\"\n        [showValidationIcon]=\"showValidationIcon\"\n        [showCompleteButton]=\"showCompleteButton && canCompleteTask()\"\n        [showSaveButton]=\"showSaveButton && canCompleteTask()\"\n        [customSaveButtonText]=\"customSaveButtonText\"\n        [customCompleteButtonText]=\"customCompleteButtonText\"\n        [displayModeConfigurations]=\"displayModeConfigurations\"\n        (formLoaded)=\"onFormLoaded($event)\"\n        (formSaved)=\"onFormSaved($event)\"\n        (formCompleted)=\"onFormCompleted($event)\"\n        (formError)=\"onError($event)\"\n        (error)=\"onError($event)\"\n        (formContentClicked)=\"onFormContentClicked($event)\"\n        (executeOutcome)=\"onFormExecuteOutcome($event)\"\n        (displayModeOn)=\"onDisplayModeOn($event)\"\n        (displayModeOff)=\"onDisplayModeOff($event)\"\n    >\n        <adf-cloud-form-custom-outcomes>\n            <adf-cloud-user-task-cloud-buttons\n                [appName]=\"appName\"\n                [canClaimTask]=\"canClaimTask()\"\n                [canUnclaimTask]=\"canUnclaimTask()\"\n                [showCancelButton]=\"showCancelButton\"\n                [customCancelButtonText]=\"customCancelButtonText\"\n                [taskId]=\"taskId\"\n                (cancelClick)=\"onCancelClick()\"\n                (claimTask)=\"onClaimTask()\"\n                (unclaimTask)=\"onUnclaimTask()\"\n                (error)=\"onError($event)\"\n            />\n        </adf-cloud-form-custom-outcomes>\n    </adf-cloud-form>\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 { InjectionToken, Provider, Type } from '@angular/core';\n\nexport interface CustomScreen {\n    key: string;\n    component: Type<any>;\n}\n\n/**\n * Injection token for custom screens.\n * This token can be used to inject custom screen components into the application.\n * It allows for multiple screen components to be registered and injected.\n */\nexport const APP_CUSTOM_SCREEN_TOKEN = new InjectionToken<CustomScreen>('Injection token for custom screens.');\n\n/**\n * Provides a custom screen component to be used in the application.\n * This function allows you to register a custom screen component that can be injected\n * into the application using the `APP_CUSTOM_SCREEN_TOKEN`.\n *\n * @param key - A unique key to identify the screen component.\n * @param component - The screen component to be registered.\n * @returns A provider that can be used in the Angular dependency injection system.\n */\nexport function provideScreen(key: string, component: Type<any>): Provider {\n    return {\n        provide: APP_CUSTOM_SCREEN_TOKEN,\n        multi: true,\n        useValue: {\n            key,\n            component\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 { DynamicComponentMapper } from '@alfresco/adf-core';\nimport { inject, Injectable } from '@angular/core';\nimport { APP_CUSTOM_SCREEN_TOKEN, CustomScreen } from './provide-screen';\n\n/**\n * Service for managing and rendering custom screen components.\n *\n * Custom screens can be registered using the {@link provideScreen} helper function\n * and the {@link APP_CUSTOM_SCREEN_TOKEN} injection token.\n *\n * @example\n * ```\n * // Register a custom screen in your Angular module providers:\n * import { provideScreen, ScreenRenderingService } from '@alfresco/adf-process-services-cloud';\n *\n * @Component({\n *   template: '<div>My Custom Screen</div>'\n * })\n * class MyCustomScreenComponent {}\n *\n * @NgModule({\n *   providers: [\n *     provideScreen('my-custom-screen', MyCustomScreenComponent)\n *   ]\n * })\n * export class MyModule {}\n *\n * // The custom screen can now be resolved and rendered by ScreenRenderingService.\n * ```\n */\n@Injectable({\n    providedIn: 'root'\n})\nexport class ScreenRenderingService extends DynamicComponentMapper {\n    private customScreens = inject<CustomScreen[]>(APP_CUSTOM_SCREEN_TOKEN, { optional: true }) || [];\n\n    constructor() {\n        super();\n        this.registerCustomScreens();\n    }\n\n    private registerCustomScreens() {\n        if (this.customScreens && this.customScreens.length > 0) {\n            this.customScreens.forEach((screen) => {\n                if (!screen) return; // Skip null or undefined screens\n                this.setComponentTypeResolver(screen.key, () => screen.component, true);\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 { CommonModule } from '@angular/common';\nimport { Component, ComponentRef, DestroyRef, EventEmitter, inject, Input, OnInit, Output, ViewChild, ViewContainerRef } from '@angular/core';\nimport { ScreenRenderingService } from '../../services/screen-rendering.service';\nimport { MatCardModule } from '@angular/material/card';\nimport { UserTaskCustomUi } from './screen-cloud.model';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MatCheckboxChange } from '@angular/material/checkbox';\n\n@Component({\n    selector: 'adf-cloud-task-screen',\n    imports: [CommonModule, MatCardModule],\n    templateUrl: './screen-cloud.component.html'\n})\nexport class TaskScreenCloudComponent implements OnInit {\n    /** Task id to fetch corresponding form and values. */\n    @Input()\n    taskId: string;\n\n    /** App name to fetch data for dynamic component. */\n    @Input()\n    appName: string = '';\n\n    /** Boolean informing if a task can be claimed. */\n    @Input()\n    canClaimTask: boolean;\n\n    /** Boolean informing if a task can be unclaimed. */\n    @Input()\n    canUnclaimTask: boolean;\n\n    @Input()\n    showCancelButton: boolean;\n\n    /** Screen id to create dynamic component. */\n    @Input()\n    screenId: string = '';\n\n    /** Process Instance Id to fetch corresponding data. */\n    @Input()\n    processInstanceId: string = '';\n\n    /** Name of the task. */\n    @Input()\n    taskName: string = '';\n\n    /** Toggle readonly state of the task. */\n    @Input()\n    readOnly = false;\n\n    /** Toggle readonly state of the task. */\n    @Input()\n    rootProcessInstanceId: string = '';\n\n    /** Whether the `Open next task` checkbox is checked by default or not. */\n    @Input()\n    isNextTaskCheckboxChecked = false;\n\n    /** Toggle rendering of the `Open next task` checkbox. */\n    @Input()\n    showNextTaskCheckbox = false;\n\n    /** Emitted when the task is saved. */\n    @Output()\n    taskSaved = new EventEmitter();\n\n    /** Emitted when the task is completed. */\n    @Output()\n    taskCompleted = new EventEmitter<any>();\n\n    /** Emitted when there is an error. */\n    @Output()\n    error = new EventEmitter<any>();\n\n    /** Emitted when the task is cancelled. */\n    @Output()\n    cancelTask = new EventEmitter<any>();\n\n    /** Emitted when the task is claimed. */\n    @Output()\n    claimTask = new EventEmitter<any>();\n\n    /** Emitted when the task is unclaimed. */\n    @Output()\n    unclaimTask = new EventEmitter<any>();\n\n    /** Emitted when the `Open next task` checkbox was toggled. */\n    @Output()\n    nextTaskCheckboxCheckedChanged = new EventEmitter<MatCheckboxChange>();\n\n    @ViewChild('container', { read: ViewContainerRef, static: true })\n    container: ViewContainerRef;\n\n    private destroyRef = inject(DestroyRef);\n    componentRef: ComponentRef<UserTaskCustomUi>;\n    private readonly screenRenderingService = inject(ScreenRenderingService);\n\n    ngOnInit() {\n        this.createDynamicComponent();\n    }\n\n    createDynamicComponent() {\n        if (this.screenId) {\n            const componentType = this.screenRenderingService.resolveComponentType({ type: this.screenId });\n            this.componentRef = this.container.createComponent(componentType);\n            this.setInputsForDynamicComponent();\n            this.subscribeToOutputs();\n        }\n    }\n\n    setInputsForDynamicComponent(): void {\n        if (this.taskId && Object.prototype.hasOwnProperty.call(this.componentRef.instance, 'taskId')) {\n            this.componentRef.setInput('taskId', this.taskId);\n        }\n        if (this.appName && Object.prototype.hasOwnProperty.call(this.componentRef.instance, 'appName')) {\n            this.componentRef.setInput('appName', this.appName);\n        }\n        if (this.screenId && Object.prototype.hasOwnProperty.call(this.componentRef.instance, 'screenId')) {\n            this.componentRef.setInput('screenId', this.screenId);\n        }\n        if (this.processInstanceId && Object.prototype.hasOwnProperty.call(this.componentRef.instance, 'processInstanceId')) {\n            this.componentRef.setInput('processInstanceId', this.processInstanceId);\n        }\n        if (this.taskName && Object.prototype.hasOwnProperty.call(this.componentRef.instance, 'taskName')) {\n            this.componentRef.setInput('taskName', this.taskName);\n        }\n        if (this.canClaimTask && Object.prototype.hasOwnProperty.call(this.componentRef.instance, 'canClaimTask')) {\n            this.componentRef.setInput('canClaimTask', this.canClaimTask);\n        }\n        if (this.canUnclaimTask && Object.prototype.hasOwnProperty.call(this.componentRef.instance, 'canUnclaimTask')) {\n            this.componentRef.setInput('canUnclaimTask', this.canUnclaimTask);\n        }\n        if (this.showCancelButton && Object.prototype.hasOwnProperty.call(this.componentRef.instance, 'showCancelButton')) {\n            this.componentRef.setInput('showCancelButton', this.showCancelButton);\n        }\n        if (this.rootProcessInstanceId && Object.prototype.hasOwnProperty.call(this.componentRef.instance, 'rootProcessInstanceId')) {\n            this.componentRef.setInput('rootProcessInstanceId', this.rootProcessInstanceId);\n        }\n        if (this.showNextTaskCheckbox && Object.prototype.hasOwnProperty.call(this.componentRef.instance, 'showNextTaskCheckbox')) {\n            this.componentRef.setInput('showNextTaskCheckbox', this.showNextTaskCheckbox);\n        }\n        if (this.isNextTaskCheckboxChecked && Object.prototype.hasOwnProperty.call(this.componentRef.instance, 'isNextTaskCheckboxChecked')) {\n            this.componentRef.setInput('isNextTaskCheckboxChecked', this.isNextTaskCheckboxChecked);\n        }\n    }\n\n    subscribeToOutputs() {\n        if (this.componentRef.instance?.taskSaved) {\n            this.componentRef.instance.taskSaved.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => this.taskSaved.emit());\n        }\n        if (this.componentRef.instance?.taskCompleted) {\n            this.componentRef.instance.taskCompleted\n                .pipe(takeUntilDestroyed(this.destroyRef))\n                .subscribe((openNextTask) => this.taskCompleted.emit(openNextTask));\n        }\n        if (this.componentRef.instance?.error) {\n            this.componentRef.instance.error.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((data) => this.error.emit(data));\n        }\n\n        if (this.componentRef.instance?.claimTask) {\n            this.componentRef.instance.claimTask.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((data) => this.claimTask.emit(data));\n        }\n        if (this.componentRef.instance?.unclaimTask) {\n            this.componentRef.instance.unclaimTask.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((data) => this.unclaimTask.emit(data));\n        }\n        if (this.componentRef.instance?.cancelTask) {\n            this.componentRef.instance.cancelTask.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((data) => this.cancelTask.emit(data));\n        }\n        if (this.componentRef.instance?.nextTaskCheckboxCheckedChanged) {\n            this.componentRef.instance.nextTaskCheckboxCheckedChanged\n                .pipe(takeUntilDestroyed(this.destroyRef))\n                .subscribe((data) => this.nextTaskCheckboxCheckedChanged.emit(data));\n        }\n    }\n\n    switchToDisplayMode(newDisplayMode?: string) {\n        if (this.componentRef?.instance?.switchToDisplayMode) {\n            this.componentRef.instance.switchToDisplayMode(newDisplayMode);\n        }\n    }\n}\n","<mat-card>\n    <mat-card-content [ngStyle]=\"{'position':'relative'}\" >\n        <ng-container #container />\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 { Directive, Input, HostListener, Output, EventEmitter, OnInit, ElementRef, Renderer2 } from '@angular/core';\nimport { TaskCloudService } from '../../../../services/task-cloud.service';\n\n@Directive({\n    // eslint-disable-next-line @angular-eslint/directive-selector\n    selector: '[adf-cloud-complete-task]'\n})\nexport class CompleteTaskDirective implements OnInit {\n    /** (Required) The id of the task. */\n    @Input()\n    taskId: string;\n\n    /** (Required) The name of the application. */\n    @Input()\n    appName: string = '';\n\n    /** Emitted when the task is completed. */\n    @Output()\n    success: EventEmitter<any> = new EventEmitter<any>();\n\n    /** Emitted when the task cannot be completed. */\n    @Output()\n    error: EventEmitter<any> = new EventEmitter<any>();\n\n    invalidParams: string[] = [];\n\n    constructor(private readonly el: ElementRef, private readonly renderer: Renderer2, private readonly taskListService: TaskCloudService) {}\n\n    ngOnInit() {\n        this.validateInputs();\n    }\n\n    validateInputs() {\n        if (!this.isTaskValid()) {\n            this.invalidParams.push('taskId');\n        }\n        if (!this.isAppValid()) {\n            this.invalidParams.push('appName');\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    isAppValid(): boolean {\n        return !!this.appName || this.appName === '';\n    }\n\n    @HostListener('click')\n    async onClick() {\n        try {\n            this.renderer.setAttribute(this.el.nativeElement, 'disabled', 'true');\n            const result = await this.taskListService.completeTask(this.appName, this.taskId).toPromise();\n            if (result) {\n                this.success.emit(result);\n            }\n        } catch (error) {\n            this.renderer.removeAttribute(this.el.nativeElement, 'disabled');\n            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 { ContentLinkModel, EmptyContentComponent, FormModel, FormOutcomeEvent } from '@alfresco/adf-core';\nimport { Component, DestroyRef, EventEmitter, inject, Input, OnChanges, OnInit, Output, SimpleChanges, ViewChild } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormCloudDisplayModeConfiguration } from '../../../../services/form-fields.interfaces';\nimport { TaskCloudService } from '../../../services/task-cloud.service';\nimport { TaskDetailsCloudModel } from '../../../models/task-details-cloud.model';\nimport { TaskFormCloudComponent } from '../task-form-cloud/task-form-cloud.component';\nimport { CommonModule } from '@angular/common';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { UserTaskCloudButtonsComponent } from '../user-task-cloud-buttons/user-task-cloud-buttons.component';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { TaskScreenCloudComponent } from '../../../../screen/components/screen-cloud/screen-cloud.component';\nimport { CompleteTaskDirective } from './complete-task/complete-task.directive';\nimport { catchError, EMPTY, forkJoin } from 'rxjs';\nimport { MatCheckboxChange, MatCheckboxModule } from '@angular/material/checkbox';\n\nconst TaskTypes = {\n    Form: 'form',\n    Screen: 'screen',\n    None: ''\n} as const;\n\ntype TaskTypesType = (typeof TaskTypes)[keyof typeof TaskTypes];\n\n@Component({\n    selector: 'adf-cloud-user-task',\n    imports: [\n        CommonModule,\n        MatProgressSpinnerModule,\n        UserTaskCloudButtonsComponent,\n        TranslatePipe,\n        MatButtonModule,\n        MatCardModule,\n        EmptyContentComponent,\n        TaskScreenCloudComponent,\n        TaskFormCloudComponent,\n        CompleteTaskDirective,\n        MatCheckboxModule\n    ],\n    templateUrl: './user-task-cloud.component.html',\n    styleUrls: ['./user-task-cloud.component.scss']\n})\nexport class UserTaskCloudComponent implements OnInit, OnChanges {\n    @ViewChild('adfCloudTaskForm')\n    adfCloudTaskForm: TaskFormCloudComponent;\n\n    @ViewChild('adfCloudTaskScreen')\n    adfCloudTaskScreen: TaskScreenCloudComponent;\n\n    /** App id to fetch corresponding form and values. */\n    @Input()\n    appName: string = '';\n\n    /** The available display configurations for the form */\n    @Input()\n    displayModeConfigurations: FormCloudDisplayModeConfiguration[];\n\n    /** Toggle readonly state of the task. */\n    @Input()\n    readOnly = false;\n\n    /** Toggle rendering of the `Cancel` button. */\n    @Input()\n    showCancelButton = true;\n\n    /** Toggle rendering of the `Complete` button. */\n    @Input()\n    showCompleteButton = true;\n\n    /** Toggle rendering of the `Save` button. */\n    @Input()\n    showSaveButton = true;\n\n    /**\n     * Custom text for the `Cancel` button.\n     * If not provided, the default text will be used.\n     */\n    @Input()\n    customCancelButtonText: string = '';\n\n    /**\n     * Custom text for the `Complete` button.\n     * If not provided, the default text will be used.\n     */\n    @Input()\n    customCompleteButtonText: string = '';\n\n    /**\n     * Custom text for the `Save` button.\n     * If not provided, the default text will be used.\n     */\n    @Input()\n    customSaveButtonText: string = '';\n\n    /** Toggle rendering of the `Open next task` checkbox (for screens only). */\n    @Input()\n    showNextTaskCheckbox = false;\n\n    /** Whether the `Open next task` checkbox is checked by default or not. */\n    @Input()\n    isNextTaskCheckboxChecked = false;\n\n    /** Toggle rendering of the form title. */\n    @Input()\n    showTitle: boolean = true;\n\n    /** Toggle rendering of the `Validation` icon. */\n    @Input()\n    showValidationIcon = true;\n\n    /** Task id to fetch corresponding form and values. */\n    @Input()\n    taskId: string;\n\n    /** Emitted when the cancel button is clicked. */\n    @Output()\n    cancelClick = new EventEmitter<string>();\n\n    /** Emitted when any error occurs. */\n    @Output()\n    error = new EventEmitter<any>();\n\n    /** Emitted when the `Open next task` checkbox was toggled. */\n    @Output()\n    nextTaskCheckboxCheckedChanged = new EventEmitter<MatCheckboxChange>();\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 form content is clicked. */\n    @Output()\n    formContentClicked: EventEmitter<ContentLinkModel> = new EventEmitter();\n\n    /** Emitted when the form is loaded or reloaded. */\n    @Output()\n    formLoaded = new EventEmitter<FormModel>();\n\n    /** Emitted when the form is saved. */\n    @Output()\n    formSaved = new EventEmitter<FormModel>();\n\n    /**\n     * Emitted when a task is loaded`.\n     */\n    @Output()\n    onTaskLoaded = new EventEmitter<TaskDetailsCloudModel>(); /* eslint-disable-line */\n\n    /** Emitted when the task is claimed. */\n    @Output()\n    taskClaimed = new EventEmitter<string>();\n\n    /** Emitted when the task is unclaimed. */\n    @Output()\n    taskUnclaimed = new EventEmitter<string>();\n\n    /** Emitted when the task is completed. */\n    @Output()\n    taskCompleted = new EventEmitter<boolean>();\n\n    candidateUsers: string[] = [];\n    candidateGroups: string[] = [];\n    loading: boolean = false;\n    screenId: string;\n    taskDetails: TaskDetailsCloudModel;\n    taskType: TaskTypesType;\n    taskTypeEnum = TaskTypes;\n\n    private taskCloudService: TaskCloudService = inject(TaskCloudService);\n    private readonly destroyRef = inject(DestroyRef);\n\n    ngOnChanges(changes: SimpleChanges) {\n        const appName = changes['appName'];\n        if (appName && appName.currentValue !== appName.previousValue && this.taskId) {\n            this.loadTask();\n            return;\n        }\n\n        const taskId = changes['taskId'];\n        if (taskId?.currentValue && this.appName) {\n            this.loadTask();\n            return;\n        }\n    }\n\n    ngOnInit() {\n        if (this.appName === '' && this.taskId) {\n            this.loadTask();\n        }\n    }\n\n    canClaimTask(): boolean {\n        return !this.readOnly && this.taskCloudService.canClaimTask(this.taskDetails) && this.hasCandidateUsersOrGroups();\n    }\n\n    canCompleteTask(): boolean {\n        return this.showCompleteButton && !this.readOnly && this.taskCloudService.canCompleteTask(this.taskDetails);\n    }\n\n    canUnclaimTask(): boolean {\n        return !this.readOnly && this.taskCloudService.canUnclaimTask(this.taskDetails) && this.hasCandidateUsersOrGroups();\n    }\n\n    getTaskType(): void {\n        if (this.taskDetails && !!this.taskDetails.formKey) {\n            if (this.taskDetails.formKey.includes(this.taskTypeEnum.Form)) {\n                this.taskType = this.taskTypeEnum.Form;\n                return;\n            } else if (this.taskDetails.formKey.includes(this.taskTypeEnum.Screen)) {\n                this.taskType = this.taskTypeEnum.Screen;\n                const screenId = this.taskDetails.formKey.replace(this.taskTypeEnum.Screen + '-', '');\n                this.screenId = screenId;\n                return;\n            }\n        }\n\n        this.taskType = this.taskTypeEnum.None;\n    }\n\n    hasCandidateUsers(): boolean {\n        return this.candidateUsers.length !== 0;\n    }\n\n    hasCandidateGroups(): boolean {\n        return this.candidateGroups.length !== 0;\n    }\n\n    hasCandidateUsersOrGroups(): boolean {\n        return this.hasCandidateUsers() || this.hasCandidateGroups();\n    }\n\n    onCancelForm(): void {\n        this.cancelClick.emit();\n    }\n\n    onCancelClick(): void {\n        this.cancelClick.emit(this.taskId);\n    }\n\n    onClaimTask(): void {\n        this.loadTask();\n        this.taskClaimed.emit(this.taskId);\n    }\n\n    onCompleteTask(openNextTask: boolean = false): void {\n        this.loadTask();\n        this.taskCompleted.emit(openNextTask);\n    }\n\n    onCompleteTaskForm(): void {\n        this.taskCompleted.emit();\n    }\n\n    onError(data: any): void {\n        this.error.emit(data);\n    }\n\n    onFormLoaded(form: FormModel) {\n        this.formLoaded.emit(form);\n    }\n\n    onExecuteOutcome(outcome: FormOutcomeEvent): void {\n        this.executeOutcome.emit(outcome);\n    }\n    onFormContentClicked(content: ContentLinkModel): void {\n        this.formContentClicked.emit(content);\n    }\n    onFormSaved(): void {\n        this.formSaved.emit();\n    }\n\n    onTaskUnclaimed(): void {\n        this.taskUnclaimed.emit();\n    }\n\n    onUnclaimTask(): void {\n        this.loadTask();\n        this.taskUnclaimed.emit(this.taskId);\n    }\n\n    onNextTaskCheckboxCheckedChanged(event: MatCheckboxChange) {\n        this.nextTaskCheckboxCheckedChanged.emit(event);\n    }\n\n    private loadTask(): void {\n        this.loading = true;\n        const tasks$ = this.taskCloudService.getTaskById(this.appName, this.taskId);\n        const candidateUsers$ = this.taskCloudService.getCandidateUsers(this.appName, this.taskId);\n        const candidateGroups$ = this.taskCloudService.getCandidateGroups(this.appName, this.taskId);\n        forkJoin({\n            tasks: tasks$,\n            candidateUsers: candidateUsers$,\n            candidateGroups: candidateGroups$\n        })\n            .pipe(\n                takeUntilDestroyed(this.destroyRef),\n                catchError((error) => {\n                    this.onError(error);\n                    return EMPTY;\n                })\n            )\n            .subscribe(({ tasks, candidateGroups, candidateUsers }) => {\n                this.taskDetails = tasks;\n                this.getTaskType();\n                this.candidateUsers = candidateUsers;\n                this.candidateGroups = candidateGroups;\n                this.loading = false;\n                this.onTaskLoaded.emit(this.taskDetails);\n            });\n    }\n\n    public switchToDisplayMode(newDisplayMode?: string): void {\n        if (this.adfCloudTaskForm) {\n            this.adfCloudTaskForm.switchToDisplayMode(newDisplayMode);\n        }\n        if (this.adfCloudTaskScreen) {\n            this.adfCloudTaskScreen.switchToDisplayMode(newDisplayMode);\n        }\n    }\n}\n","<div class=\"adf-user-task-cloud-container\">\n    <div *ngIf=\"!loading; else loadingTemplate\">\n        <ng-container [ngSwitch]=\"taskType\">\n            <ng-container *ngSwitchCase=\"taskTypeEnum.Form\">\n                <adf-cloud-task-form\n                    #adfCloudTaskForm\n                    [appName]=\"appName\"\n                    [candidateUsers]=\"candidateUsers\"\n                    [candidateGroups]=\"candidateGroups\"\n                    [displayModeConfigurations]=\"displayModeConfigurations\"\n                    [showValidationIcon]=\"showValidationIcon\"\n                    [showTitle]=\"showTitle\"\n                    [taskId]=\"taskId\"\n                    [taskDetails]=\"taskDetails\"\n                    [showCancelButton]=\"showCancelButton\"\n                    [showSaveButton]=\"showSaveButton && canCompleteTask()\"\n                    [showCompleteButton]=\"showCompleteButton && canCompleteTask()\"\n                    [customCancelButtonText]=\"customCancelButtonText\"\n                    [customSaveButtonText]=\"customSaveButtonText\"\n                    [customCompleteButtonText]=\"customCompleteButtonText\"\n                    (cancelClick)=\"onCancelForm()\"\n                    (executeOutcome)=\"onExecuteOutcome($event)\"\n                    (error)=\"onError($event)\"\n                    (formLoaded)=\"onFormLoaded($event)\"\n                    (formSaved)=\"onFormSaved()\"\n                    (formContentClicked)=\"onFormContentClicked($event)\"\n                    (taskCompleted)=\"onCompleteTaskForm()\"\n                    (taskClaimed)=\"onClaimTask()\"\n                    (taskUnclaimed)=\"onTaskUnclaimed()\"\n                />\n            </ng-container>\n\n            <ng-container *ngSwitchCase=\"taskTypeEnum.Screen\">\n                <adf-cloud-task-screen\n                    #adfCloudTaskScreen\n                    [appName]=\"appName\"\n                    [canClaimTask]=\"canClaimTask()\"\n                    [canUnclaimTask]=\"canUnclaimTask()\"\n                    [processInstanceId]=\"taskDetails.processInstanceId\"\n                    [rootProcessInstanceId]=\"taskDetails.rootProcessInstanceId\"\n                    [screenId]=\"screenId\"\n                    [showCancelButton]=\"showCancelButton\"\n                    [taskName]=\"taskDetails.name\"\n                    [taskId]=\"taskId\"\n                    [showNextTaskCheckbox]=\"showNextTaskCheckbox && canCompleteTask()\"\n                    [isNextTaskCheckboxChecked]=\"isNextTaskCheckboxChecked\"\n                    (cancelTask)=\"onCancelClick()\"\n                    (claimTask)=\"onClaimTask()\"\n                    (error)=\"onError($event)\"\n                    (taskCompleted)=\"onCompleteTask($event)\"\n                    (taskSaved)=\"onFormSaved()\"\n                    (unclaimTask)=\"onUnclaimTask()\"\n                    (nextTaskCheckboxCheckedChanged)=\"onNextTaskCheckboxCheckedChanged($event)\"\n                />\n            </ng-container>\n\n            <ng-container *ngSwitchCase=\"taskTypeEnum.None\">\n                <mat-card appearance=\"outlined\" class=\"adf-task-form-container\">\n                    <mat-card-header *ngIf=\"showTitle\">\n                        <mat-card-title>\n                            <h4>\n                                <span class=\"adf-form-title\">\n                                    {{ taskDetails?.name || 'FORM.FORM_RENDERER.NAMELESS_TASK' | translate }}\n                                </span>\n                            </h4>\n                        </mat-card-title>\n                    </mat-card-header>\n                    <mat-card-content>\n                        <adf-empty-content\n                            [icon]=\"'description'\"\n                            [title]=\"'ADF_CLOUD_TASK_FORM.EMPTY_FORM.TITLE'\"\n                            [subtitle]=\"'ADF_CLOUD_TASK_FORM.EMPTY_FORM.SUBTITLE'\"\n                        />\n                    </mat-card-content>\n                    <mat-card-actions class=\"adf-task-form-actions\" align=\"end\">\n                        <ng-template [ngTemplateOutlet]=\"taskFormCloudButtons\" />\n                        <button\n                            *ngIf=\"canCompleteTask()\"\n                            mat-button\n                            adf-cloud-complete-task\n                            [appName]=\"appName\"\n                            [taskId]=\"taskId\"\n                            (success)=\"onCompleteTask()\"\n                            (error)=\"onError($event)\"\n                            color=\"primary\"\n                            id=\"adf-form-complete\"\n                        >\n                            {{ customCompleteButtonText || ('ADF_CLOUD_TASK_FORM.EMPTY_FORM.BUTTONS.COMPLETE' | translate) }}\n                        </button>\n                    </mat-card-actions>\n                </mat-card>\n            </ng-container>\n        </ng-container>\n    </div>\n</div>\n\n<ng-template #loadingTemplate>\n    <mat-spinner class=\"adf-user-task-cloud-spinner\" />\n</ng-template>\n\n<ng-template #taskFormCloudButtons>\n    <adf-cloud-user-task-cloud-buttons\n        [appName]=\"appName\"\n        [canClaimTask]=\"canClaimTask()\"\n        [canUnclaimTask]=\"canUnclaimTask()\"\n        [showCancelButton]=\"showCancelButton\"\n        [customCancelButtonText]=\"customCancelButtonText\"\n        [taskId]=\"taskId\"\n        (cancelClick)=\"onCancelClick()\"\n        (claimTask)=\"onClaimTask()\"\n        (unclaimTask)=\"onUnclaimTask()\"\n        (error)=\"onError($event)\"\n    />\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 { NgModule } from '@angular/core';\nimport { TaskFormCloudComponent } from './components/task-form-cloud/task-form-cloud.component';\nimport { UserTaskCloudComponent } from './components/user-task-cloud/user-task-cloud.component';\nimport { UserTaskCloudButtonsComponent } from './components/user-task-cloud-buttons/user-task-cloud-buttons.component';\n\nexport const TASK_FORM_CLOUD_DIRECTIVES = [UserTaskCloudButtonsComponent, TaskFormCloudComponent, UserTaskCloudComponent] as const;\n\n/** @deprecated use standalone component imports instead (...TASK_FORM_CLOUD_DIRECTIVES) */\n@NgModule({\n    imports: [...TASK_FORM_CLOUD_DIRECTIVES],\n    exports: [...TASK_FORM_CLOUD_DIRECTIVES]\n})\nexport class TaskFormModule {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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, ViewEncapsulation } from '@angular/core';\nimport { catchError, concatMap, finalize } from 'rxjs/operators';\nimport { forkJoin, of } from 'rxjs';\nimport {\n    AppConfigService,\n    CardViewArrayItem,\n    CardViewArrayItemModel,\n    CardViewBaseItemModel,\n    CardViewComponent,\n    CardViewDateItemModel,\n    CardViewDatetimeItemModel,\n    CardViewItem,\n    CardViewSelectItemModel,\n    CardViewTextItemModel,\n    CardViewUpdateService,\n    TranslationService,\n    UpdateNotification\n} from '@alfresco/adf-core';\nimport { TaskDetailsCloudModel } from '../../models/task-details-cloud.model';\nimport { TaskCloudService } from '../../services/task-cloud.service';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { CommonModule } from '@angular/common';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatCardModule } from '@angular/material/card';\n\n@Component({\n    selector: 'adf-cloud-task-header',\n    imports: [CommonModule, MatProgressSpinnerModule, CardViewComponent, MatCardModule],\n    templateUrl: './task-header-cloud.component.html',\n    styleUrls: ['./task-header-cloud.component.scss'],\n    encapsulation: ViewEncapsulation.None\n})\nexport class TaskHeaderCloudComponent implements OnInit, OnChanges {\n    /** (Required) The name of the application. */\n    @Input({ required: true })\n    appName: string = '';\n\n    /** (Required) The id of the task. */\n    @Input({ required: true })\n    taskId: string;\n\n    /** Show/Hide the task title */\n    @Input()\n    showTitle: boolean = true;\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, requeued). */\n    @Output()\n    unclaim: EventEmitter<any> = new EventEmitter<any>();\n\n    /** Emitted when the given task has errors. */\n    @Output()\n    error: EventEmitter<any> = new EventEmitter<any>();\n\n    taskDetails: TaskDetailsCloudModel = {};\n    candidateUsers: CardViewArrayItem[] = [];\n    candidateGroups: CardViewArrayItem[] = [];\n    properties: CardViewItem[];\n    inEdit: boolean = false;\n    parentTaskName: string;\n    dateFormat: string;\n    dateLocale: string;\n    displayDateClearAction = false;\n    isLoading = true;\n    processInstanceId: string;\n\n    private readonly destroyRef = inject(DestroyRef);\n\n    constructor(\n        private taskCloudService: TaskCloudService,\n        private translationService: TranslationService,\n        private appConfig: AppConfigService,\n        private cardViewUpdateService: CardViewUpdateService\n    ) {\n        this.dateFormat = this.appConfig.get('adf-cloud-task-header.defaultDateFormat');\n        this.dateLocale = this.appConfig.get('dateValues.defaultDateLocale');\n    }\n\n    ngOnInit() {\n        this.taskCloudService.dataChangesDetected$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n            this.loadTaskDetailsById(this.appName, this.taskId);\n        });\n\n        this.cardViewUpdateService.itemUpdated$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(this.updateTaskDetails.bind(this));\n    }\n\n    ngOnChanges() {\n        this.taskDetails = {};\n        if ((this.appName || this.appName === '') && this.taskId) {\n            this.loadTaskDetailsById(this.appName, this.taskId);\n        } else {\n            this.error.emit('App Name and Task Id are mandatory');\n        }\n    }\n\n    loadTaskDetailsById(appName: string, taskId: string) {\n        this.isLoading = true;\n        this.taskCloudService\n            .getTaskById(appName, taskId)\n            .pipe(\n                concatMap((task) =>\n                    forkJoin(\n                        of(task),\n                        this.taskCloudService.getCandidateUsers(this.appName, this.taskId),\n                        this.taskCloudService.getCandidateGroups(this.appName, this.taskId)\n                    )\n                ),\n                finalize(() => (this.isLoading = false))\n            )\n            .subscribe(\n                ([taskDetails, candidateUsers, candidateGroups]) => {\n                    this.taskDetails = taskDetails;\n                    this.candidateGroups = candidateGroups.map((user) => ({ icon: 'group', value: user } as CardViewArrayItem));\n                    this.candidateUsers = candidateUsers.map((group) => ({ icon: 'person', value: group } as CardViewArrayItem));\n                    this.processInstanceId = taskDetails.processInstanceId;\n                    if (this.taskDetails.parentTaskId) {\n                        this.loadParentName(`${this.taskDetails.parentTaskId}`);\n                    } else {\n                        this.refreshData();\n                    }\n                },\n                (err) => {\n                    this.error.emit(err);\n                }\n            );\n    }\n\n    private initDefaultProperties() {\n        return [\n            new CardViewTextItemModel({\n                label: 'ADF_CLOUD_TASK_HEADER.PROPERTIES.ASSIGNEE',\n                value: this.taskDetails.assignee,\n                key: 'assignee',\n                clickable: this.isAssigneePropertyClickable(),\n                default: this.translationService.instant('ADF_CLOUD_TASK_HEADER.PROPERTIES.ASSIGNEE_DEFAULT'),\n                icon: 'create'\n            }),\n            new CardViewTextItemModel({\n                label: 'ADF_CLOUD_TASK_HEADER.PROPERTIES.STATUS',\n                value: this.taskDetails.status,\n                key: 'status'\n            }),\n            new CardViewSelectItemModel({\n                label: 'ADF_CLOUD_TASK_HEADER.PROPERTIES.PRIORITY',\n                value: this.taskDetails.priority.toString(),\n                key: 'priority',\n                editable: true,\n                displayNoneOption: false,\n                options$: of(this.taskCloudService.priorities)\n            }),\n            new CardViewDatetimeItemModel({\n                label: 'ADF_CLOUD_TASK_HEADER.PROPERTIES.DUE_DATE',\n                value: this.taskDetails.dueDate,\n                key: 'dueDate',\n                default: this.translationService.instant('ADF_CLOUD_TASK_HEADER.PROPERTIES.DUE_DATE_DEFAULT'),\n                editable: true,\n                format: this.dateFormat,\n                locale: this.dateLocale\n            }),\n            new CardViewTextItemModel({\n                label: 'ADF_CLOUD_TASK_HEADER.PROPERTIES.CATEGORY',\n                value: this.taskDetails.category,\n                key: 'category',\n                default: this.translationService.instant('ADF_CLOUD_TASK_HEADER.PROPERTIES.CATEGORY_DEFAULT')\n            }),\n            new CardViewDateItemModel({\n                label: 'ADF_CLOUD_TASK_HEADER.PROPERTIES.CREATED',\n                value: this.taskDetails.createdDate,\n                key: 'created',\n                format: this.dateFormat,\n                locale: this.dateLocale\n            }),\n            new CardViewTextItemModel({\n                label: 'ADF_CLOUD_TASK_HEADER.PROPERTIES.PARENT_NAME',\n                value: this.parentTaskName,\n                default: this.translationService.instant('ADF_CLOUD_TASK_HEADER.PROPERTIES.PARENT_NAME_DEFAULT'),\n                key: 'parentName',\n                clickable: true\n            }),\n            new CardViewTextItemModel({\n                label: 'ADF_CLOUD_TASK_HEADER.PROPERTIES.PARENT_TASK_ID',\n                value: this.taskDetails.parentTaskId,\n                key: 'parentTaskId',\n                clickable: true\n            }),\n            new CardViewDateItemModel({\n                label: 'ADF_CLOUD_TASK_HEADER.PROPERTIES.END_DATE',\n                value: this.taskDetails.completedDate,\n                key: 'endDate',\n                format: this.dateFormat,\n                locale: this.dateLocale\n            }),\n            new CardViewTextItemModel({\n                label: 'ADF_CLOUD_TASK_HEADER.PROPERTIES.ID',\n                value: this.taskDetails.id,\n                key: 'id'\n            }),\n            new CardViewTextItemModel({\n                label: 'ADF_CLOUD_TASK_HEADER.PROPERTIES.PROCESS_INSTANCE_ID',\n                value: this.processInstanceId,\n                default: this.translationService.instant('ADF_CLOUD_TASK_HEADER.PROPERTIES.PROCESS_INSTANCE_ID_DEFAULT'),\n                key: 'processInstanceId',\n                clickable: true\n            }),\n            new CardViewTextItemModel({\n                label: 'ADF_CLOUD_TASK_HEADER.PROPERTIES.DESCRIPTION',\n                value: this.taskDetails.description,\n                key: 'description',\n                default: this.translationService.instant('ADF_CLOUD_TASK_HEADER.PROPERTIES.DESCRIPTION_DEFAULT'),\n                multiline: true,\n                editable: true\n            }),\n            new CardViewArrayItemModel({\n                label: 'ADF_CLOUD_TASK_HEADER.PROPERTIES.CANDIDATE_USERS',\n                value: of(this.candidateUsers),\n                key: 'candidateUsers',\n                icon: 'edit',\n                clickable: false,\n                default: this.translationService.instant('ADF_CLOUD_TASK_HEADER.PROPERTIES.CANDIDATE_USERS_DEFAULT'),\n                noOfItemsToDisplay: 2\n            }),\n            new CardViewArrayItemModel({\n                label: 'ADF_CLOUD_TASK_HEADER.PROPERTIES.CANDIDATE_GROUPS',\n                value: of(this.candidateGroups),\n                key: 'candidateGroups',\n                icon: 'edit',\n                clickable: false,\n                default: this.translationService.instant('ADF_CLOUD_TASK_HEADER.PROPERTIES.CANDIDATE_GROUPS_DEFAULT'),\n                noOfItemsToDisplay: 2\n            })\n        ];\n    }\n\n    /**\n     * Refresh the card data\n     */\n    refreshData() {\n        if (this.taskDetails) {\n            const defaultProperties = this.initDefaultProperties();\n            const filteredProperties: string[] = this.appConfig.get('adf-cloud-task-header.presets.properties');\n            this.properties = defaultProperties.filter((cardItem) => this.isValidSelection(filteredProperties, cardItem));\n        }\n    }\n\n    /**\n     * Save a task detail and update it after a successful response\n     *\n     * @param updateNotification notification model\n     */\n    private updateTaskDetails(updateNotification: UpdateNotification) {\n        this.taskCloudService\n            .updateTask(this.appName, this.taskId, updateNotification.changed)\n            .pipe(\n                catchError(() => {\n                    this.cardViewUpdateService.updateElement(updateNotification.target);\n                    return of(null);\n                })\n            )\n            .subscribe((taskDetails) => {\n                if (taskDetails) {\n                    this.taskDetails = taskDetails;\n                }\n            });\n    }\n\n    private loadParentName(taskId: string) {\n        this.taskCloudService.getTaskById(this.appName, taskId).subscribe((taskDetails) => {\n            this.parentTaskName = taskDetails.name;\n            this.refreshData();\n        });\n    }\n\n    isCompleted(): boolean {\n        return this.taskDetails && this.taskDetails.status === 'COMPLETED';\n    }\n\n    hasAssignee(): boolean {\n        return this.taskDetails.assignee ? true : false;\n    }\n\n    isTaskValid(): boolean {\n        return (this.appName || this.appName === '') && !!this.taskId;\n    }\n\n    isTaskAssigned(): boolean {\n        return this.taskDetails.assignee !== undefined;\n    }\n\n    isTaskEditable(): boolean {\n        return this.taskCloudService.isTaskEditable(this.taskDetails);\n    }\n\n    /**\n     * as per [ACA-3960] it required an empty array argument for now\n     * Empty array will be replaced with candidateGroups in feature\n     *\n     * @returns `true` if assignee property is clickable, otherwise `false`\n     */\n    isAssigneePropertyClickable(): boolean {\n        return this.taskCloudService.isAssigneePropertyClickable(this.taskDetails, this.candidateUsers, []);\n    }\n\n    private isValidSelection(filteredProperties: string[], cardItem: CardViewBaseItemModel): boolean {\n        return filteredProperties ? filteredProperties.indexOf(cardItem.key) >= 0 : true;\n    }\n}\n","<h3 *ngIf=\"showTitle\" class=\"adf-task-title\">{{ taskDetails?.name }}</h3>\n\n<div class=\"adf-task-header-container\">\n    <mat-card appearance=\"outlined\" *ngIf=\"isTaskValid()\" class=\"adf-card-container\">\n        <mat-card-content>\n            <adf-card-view\n                *ngIf=\"!isLoading; else loadingTemplate\"\n                [displayNoneOption]=\"false\"\n                [properties]=\"properties\"\n                [editable]=\"isTaskEditable()\"\n                [displayClearAction]=\"displayDateClearAction\" />\n        </mat-card-content>\n    </mat-card>\n</div>\n\n<ng-template #loadingTemplate>\n    <div class=\"adf-task-header-loading\">\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 { NgModule } from '@angular/core';\nimport { TaskListCloudModule } from './task-list/task-list-cloud.module';\nimport { TASK_FILTERS_CLOUD_DIRECTIVES } from './task-filters/task-filters-cloud.module';\nimport { TASK_FORM_CLOUD_DIRECTIVES } from './task-form/task-form.module';\nimport { TaskHeaderCloudComponent } from './task-header/components/task-header-cloud.component';\n\n/** @deprecated use standalone component imports instead */\n@NgModule({\n    imports: [TaskListCloudModule, ...TASK_FILTERS_CLOUD_DIRECTIVES, TaskHeaderCloudComponent, ...TASK_FORM_CLOUD_DIRECTIVES],\n    exports: [TaskListCloudModule, ...TASK_FILTERS_CLOUD_DIRECTIVES, TaskHeaderCloudComponent, ...TASK_FORM_CLOUD_DIRECTIVES]\n})\nexport class TaskCloudModule {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 no-underscore-dangle */\n\nimport { DateCloudFilterType } from '../../../models/date-cloud-filter.model';\nimport { DateRangeFilterService } from '../../../common/date-range-filter/date-range-filter.service';\nimport { ComponentSelectionMode } from '../../../types';\nimport { ProcessVariableFilterModel } from '../../../models/process-variable-filter.model';\n\nexport class ProcessFilterCloudModel {\n    id: string;\n    name: string;\n    key: string;\n    icon: string;\n    index: number;\n    appName: string;\n    appVersion?: number | number[];\n    parentId?: string;\n    processName: string;\n    processInstanceId: string;\n    initiator: string;\n    status: string;\n    sort: string;\n    order: string;\n    processDefinitionId: string;\n    processDefinitionName?: string;\n    processDefinitionKey: string;\n    lastModified: Date;\n    lastModifiedTo: Date;\n    lastModifiedFrom: Date;\n    startedDate: Date;\n    completedDateType: DateCloudFilterType;\n    startedDateType: DateCloudFilterType;\n    suspendedDateType: DateCloudFilterType;\n    completedDate: Date;\n    environmentId?: string;\n    showCounter: boolean;\n\n    processDefinitionNames: string[] | null;\n    processNames: string[] | null;\n    processInstanceIds: string[] | null;\n    parentIds: string[] | null;\n    initiators: string[] | null;\n    appVersions: string[] | null;\n    statuses: string[] | null;\n\n    processVariableFilters?: ProcessVariableFilterModel[];\n\n    private dateRangeFilterService = new DateRangeFilterService();\n    private _completedFrom: string;\n    private _completedTo: string;\n    private _startFrom: string;\n    private _startTo: string;\n    private _suspendedFrom: string;\n    private _suspendedTo: string;\n\n    constructor(obj?: any) {\n        if (obj) {\n            this.id = obj.id || Math.random().toString(36).substring(2, 9);\n            this.name = obj.name || null;\n            this.key = obj.key || null;\n            this.environmentId = obj.environmentId;\n            this.showCounter = obj.showCounter || false;\n            this.icon = obj.icon || null;\n            this.index = obj.index || null;\n            this.appName = obj.appName || obj.appName === '' ? obj.appName : null;\n            this.appVersion = obj.appVersion || null;\n\n            if (obj.appVersionMultiple && Array.isArray(obj.appVersionMultiple)) {\n                this.appVersion = obj.appVersionMultiple;\n            }\n\n            this.processInstanceId = obj.processInstanceId || null;\n            this.parentId = obj.parentId || '';\n            this.processName = obj.processName || null;\n            this.initiator = obj.initiator || null;\n            this.status = obj.status || null;\n            this.sort = obj.sort || null;\n            this.order = obj.order || null;\n            this.processDefinitionId = obj.processDefinitionId || null;\n            this.processDefinitionName = obj.processDefinitionName || null;\n            this.processDefinitionKey = obj.processDefinitionKey || null;\n            this.lastModified = obj.lastModified || null;\n            this.lastModifiedTo = obj.lastModifiedTo || null;\n            this.lastModifiedFrom = obj.lastModifiedFrom || null;\n            this.startedDate = obj.startedDate || null;\n            this.startFrom = obj._startFrom || null;\n            this.startTo = obj._startTo || null;\n            this.completedDateType = obj.completedDateType || null;\n            this.startedDateType = obj.startedDateType || null;\n            this.suspendedDateType = obj.suspendedDateType || null;\n            this.completedFrom = obj._completedFrom || null;\n            this.completedTo = obj._completedTo || null;\n            this.completedDate = obj.completedDate || null;\n            this._suspendedFrom = obj._suspendedFrom || null;\n            this._suspendedTo = obj._suspendedTo || null;\n\n            this.initArrayProperties(obj);\n        }\n    }\n\n    private initArrayProperties(obj) {\n        if (obj.processDefinitionNames) {\n            this.processDefinitionNames = obj.processDefinitionNames;\n        } else {\n            this.processDefinitionNames = obj.processDefinitionName ? [obj.processDefinitionName] : null;\n        }\n\n        if (obj.processNames) {\n            this.processNames = obj.processNames;\n        } else {\n            this.processNames = obj.processName ? [obj.processName] : null;\n        }\n\n        if (obj.processInstanceIds) {\n            this.processInstanceIds = obj.processInstanceIds;\n        } else {\n            this.processInstanceIds = obj.processInstanceId ? [obj.processInstanceId] : null;\n        }\n\n        if (obj.parentIds) {\n            this.parentIds = obj.parentIds;\n        } else {\n            this.parentIds = obj.parentId ? [obj.parentId] : null;\n        }\n\n        if (obj.initiators) {\n            this.initiators = obj.initiators;\n        } else {\n            this.initiators = obj.initiator ? [obj.initiator] : null;\n        }\n\n        if (obj.appVersions) {\n            this.appVersions = obj.appVersions;\n        } else {\n            this.appVersions = obj.appVersion ? [`${obj.appVersion}`] : null;\n        }\n\n        if (obj.statuses) {\n            this.statuses = obj.statuses;\n        } else {\n            this.statuses = obj.status ? [obj.status] : null;\n        }\n\n        this.processVariableFilters = obj.processVariableFilters ?? [];\n    }\n\n    set completedFrom(completedFrom: string) {\n        this._completedFrom = completedFrom;\n    }\n\n    get completedFrom() {\n        if (this.isDateRangeType(this.completedDateType)) {\n            return this._completedFrom;\n        }\n        return this.getStartDate(this.completedDateType);\n    }\n\n    set completedTo(completedTo: string) {\n        this._completedTo = completedTo;\n    }\n\n    get completedTo() {\n        if (this.isDateRangeType(this.completedDateType)) {\n            return this._completedTo;\n        }\n        return this.getEndDate(this.completedDateType);\n    }\n\n    set startFrom(startFrom: string) {\n        this._startFrom = startFrom;\n    }\n\n    get startFrom() {\n        if (this.isDateRangeType(this.startedDateType)) {\n            return this._startFrom;\n        }\n        return this.getStartDate(this.startedDateType);\n    }\n\n    set startTo(startTo: string) {\n        this._startTo = startTo;\n    }\n\n    get startTo() {\n        if (this.isDateRangeType(this.startedDateType)) {\n            return this._startTo;\n        }\n        return this.getEndDate(this.startedDateType);\n    }\n\n    set suspendedFrom(suspendedFrom: string) {\n        this._suspendedFrom = suspendedFrom;\n    }\n\n    get suspendedFrom(): string {\n        if (this.isDateRangeType(this.suspendedDateType)) {\n            return this._suspendedFrom;\n        }\n        return this.getStartDate(this.suspendedDateType);\n    }\n\n    set suspendedTo(suspendedTo: string) {\n        this._suspendedTo = suspendedTo;\n    }\n\n    get suspendedTo(): string {\n        if (this.isDateRangeType(this.suspendedDateType)) {\n            return this._suspendedTo;\n        }\n        return this.getEndDate(this.suspendedDateType);\n    }\n\n    private getStartDate(key: DateCloudFilterType) {\n        return this.dateRangeFilterService.getDateRange(key).startDate;\n    }\n\n    private getEndDate(key: DateCloudFilterType) {\n        return this.dateRangeFilterService.getDateRange(key).endDate;\n    }\n\n    private isDateRangeType(type: DateCloudFilterType) {\n        return !!this.dateRangeFilterService.isDateRangeType(type);\n    }\n}\n\nexport interface ProcessFilterAction {\n    actionType?: string;\n    icon?: string;\n    tooltip?: string;\n    filter?: ProcessFilterCloudModel;\n}\n\nexport interface ProcessFilterOptions {\n    label?: string;\n    value?: string | any;\n}\n\nexport interface ProcessFilterProperties {\n    label?: string;\n    type?: string;\n    value?: any;\n    key?: string;\n    attributes?: { [key: string]: string };\n    options?: ProcessFilterOptions[];\n    dateFilterOptions?: DateCloudFilterType[];\n    selectionMode?: ComponentSelectionMode;\n}\n\nexport interface ProcessSortFilterProperty {\n    label: string;\n    value: string | any;\n    key: string;\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, of, BehaviorSubject, Subject } from 'rxjs';\nimport { ProcessFilterCloudModel } from '../models/process-filter-cloud.model';\nimport { switchMap, map } from 'rxjs/operators';\nimport { PROCESS_FILTERS_SERVICE_TOKEN } from '../../../services/cloud-token.service';\nimport { PreferenceCloudServiceInterface } from '../../../services/preference-cloud.interface';\nimport { IdentityUserService } from '../../../people/services/identity-user.service';\nimport { NotificationCloudService } from '../../../services/notification-cloud.service';\nimport { TaskCloudEngineEvent } from '../../../models/engine-event-cloud.model';\n\nconst PROCESS_EVENT_SUBSCRIPTION_QUERY = `\n    subscription {\n        engineEvents(eventType: [\n            PROCESS_CANCELLED\n            PROCESS_COMPLETED\n            PROCESS_CREATED\n            PROCESS_RESUMED\n            PROCESS_SUSPENDED\n            PROCESS_STARTED\n        ]) {\n            eventType\n            entity\n        }\n    }\n`;\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class ProcessFilterCloudService {\n    private filtersSubject: BehaviorSubject<ProcessFilterCloudModel[]>;\n    filters$: Observable<ProcessFilterCloudModel[]>;\n    private filterKeyToBeRefreshedSource = new Subject<string>();\n    filterKeyToBeRefreshed$: Observable<string> = this.filterKeyToBeRefreshedSource.asObservable();\n\n    private readonly preferenceService = inject<PreferenceCloudServiceInterface>(PROCESS_FILTERS_SERVICE_TOKEN);\n    private readonly identityUserService = inject(IdentityUserService);\n    private readonly notificationCloudService = inject(NotificationCloudService);\n\n    constructor() {\n        this.filtersSubject = new BehaviorSubject([]);\n        this.filters$ = this.filtersSubject.asObservable();\n    }\n\n    readQueryParams(obj: any): ProcessFilterCloudModel {\n        const model = Object.assign({}, obj) as ProcessFilterCloudModel;\n\n        if (Object.prototype.hasOwnProperty.call(obj, 'appVersion') && obj['appVersion']) {\n            if (typeof obj['appVersion'] === 'string') {\n                model.appVersion = obj['appVersion'].split(',').map((str) => parseInt(str, 10));\n            }\n        }\n\n        if (Object.prototype.hasOwnProperty.call(obj, 'lastModifiedFrom')) {\n            model.lastModifiedFrom = new Date(parseInt(obj['lastModifiedFrom'], 10));\n        }\n\n        if (Object.prototype.hasOwnProperty.call(obj, 'lastModifiedTo')) {\n            model.lastModifiedTo = new Date(parseInt(obj['lastModifiedTo'], 10));\n        }\n\n        return model;\n    }\n\n    writeQueryParams(value: any, filterProperties: string[], appName?: string, id?: string): any {\n        value = value || {};\n        const result = {\n            appName: appName || value['appName'],\n            id: id || value['id'],\n            ...(value['environmentId'] && {\n                environmentId: value['environmentId']\n            })\n        };\n\n        for (const prop of filterProperties) {\n            if (prop === 'appVersionMultiple') {\n                const versions = value['appVersion'];\n\n                if (Array.isArray(versions) && versions.length > 0) {\n                    result['appVersion'] = versions.join(',');\n                }\n            } else if (prop === 'lastModified') {\n                if (value['lastModifiedFrom']) {\n                    result['lastModifiedFrom'] = value['lastModifiedFrom'].valueOf();\n                }\n\n                if (value['lastModifiedTo']) {\n                    result['lastModifiedTo'] = value['lastModifiedTo'].valueOf();\n                }\n            } else if (Object.prototype.hasOwnProperty.call(value, prop)) {\n                result[prop] = value[prop];\n            }\n        }\n\n        return result;\n    }\n\n    /**\n     * Creates and returns the default process instance filters for a app.\n     *\n     * @param appName Name of the target app\n     */\n    private createDefaultFilters(appName: string): void {\n        const key: string = this.prepareKey(appName);\n        this.preferenceService\n            .getPreferences(appName, key)\n            .pipe(\n                switchMap((response) => {\n                    const preferences = response?.list?.entries ? response.list.entries : [];\n                    if (!this.hasPreferences(preferences)) {\n                        return this.createProcessFilters(appName, key, this.defaultProcessFilters(appName));\n                    } else if (!this.hasProcessFilters(preferences, key)) {\n                        return this.createProcessFilters(appName, key, this.defaultProcessFilters(appName));\n                    } else {\n                        return of(this.findFiltersByKeyInPreferences(preferences, key));\n                    }\n                }),\n                switchMap((filters) => this.handleCreateFilterBackwardsCompatibility(appName, key, filters))\n            )\n            .subscribe((filters) => {\n                this.addFiltersToStream(filters);\n            });\n    }\n\n    /**\n     * Gets all process instance filters for a process app.\n     *\n     * @param appName Name of the target app\n     * @returns Observable of process filters details\n     */\n    getProcessFilters(appName: string): Observable<ProcessFilterCloudModel[]> {\n        this.createDefaultFilters(appName);\n        return this.filters$;\n    }\n\n    /**\n     * Get process instance filter for given filter id\n     *\n     * @param appName Name of the target app\n     * @param id Id of the target process instance filter\n     * @returns Observable of process instance filter details\n     */\n    getFilterById(appName: string, id: string): Observable<ProcessFilterCloudModel> {\n        const key: string = this.prepareKey(appName);\n        return this.getProcessFiltersByKey(appName, key).pipe(\n            switchMap((filters) => {\n                if (filters?.length === 0) {\n                    return this.createProcessFilters(appName, key, this.defaultProcessFilters(appName));\n                } else {\n                    return of(filters);\n                }\n            }),\n            map((filters) => filters.filter((filter) => filter.id === id)[0])\n        );\n    }\n\n    /**\n     * Adds a new process instance filter\n     *\n     * @param newFilter The new filter to add\n     * @returns Observable of process instance filters with newly added filter\n     */\n    addFilter(newFilter: ProcessFilterCloudModel): Observable<ProcessFilterCloudModel[]> {\n        const { appName, name } = newFilter;\n        const key = this.prepareKey(appName);\n\n        return this.getProcessFiltersByKey(appName, key).pipe(\n            switchMap((filters) => {\n                if (filters?.length === 0) {\n                    return this.createProcessFilters(appName, key, [newFilter]);\n                } else {\n                    const index = filters.findIndex((filter) => filter.name === name);\n                    if (index >= 0) {\n                        filters.splice(index, 1);\n                    }\n\n                    filters.push(newFilter);\n                    return this.preferenceService.updatePreference(appName, key, filters);\n                }\n            }),\n            map((filters) => {\n                this.addFiltersToStream(filters);\n                return filters;\n            })\n        );\n    }\n\n    /**\n     *  Update process instance filter\n     *\n     * @param updatedFilter The new filter to update\n     * @returns Observable of process instance filters with updated filter\n     */\n    updateFilter(updatedFilter: ProcessFilterCloudModel): Observable<ProcessFilterCloudModel[]> {\n        const key = this.prepareKey(updatedFilter.appName);\n        return this.getProcessFiltersByKey(updatedFilter.appName, key).pipe(\n            switchMap((filters) => {\n                if (filters?.length === 0) {\n                    return this.createProcessFilters(updatedFilter.appName, key, [updatedFilter]);\n                } else {\n                    const itemIndex = filters.findIndex((filter) => filter.id === updatedFilter.id);\n                    filters[itemIndex] = updatedFilter;\n                    return this.updateProcessFilters(updatedFilter.appName, key, filters);\n                }\n            }),\n            map((updatedFilters) => {\n                this.addFiltersToStream(updatedFilters);\n                return updatedFilters;\n            })\n        );\n    }\n\n    /**\n     *  Delete process instance filter\n     *\n     * @param deletedFilter The new filter to delete\n     * @returns Observable of process instance filters without deleted filter\n     */\n    deleteFilter(deletedFilter: ProcessFilterCloudModel): Observable<ProcessFilterCloudModel[]> {\n        const key = this.prepareKey(deletedFilter.appName);\n\n        return this.getProcessFiltersByKey(deletedFilter.appName, key).pipe(\n            switchMap((filters) => {\n                if (filters && filters.length > 0) {\n                    filters = filters.filter((filter) => filter.id !== deletedFilter.id);\n                    return this.updateProcessFilters(deletedFilter.appName, key, filters);\n                } else {\n                    return of([]);\n                }\n            }),\n            map((filters) => {\n                this.addFiltersToStream(filters);\n                return filters;\n            })\n        );\n    }\n\n    /**\n     * Checks if given filter is a default filter\n     *\n     * @param filterName Name of the target process filter\n     * @returns Boolean value for whether the filter is a default filter\n     */\n    isDefaultFilter(filterName: string): boolean {\n        const defaultFilters = this.defaultProcessFilters();\n        return defaultFilters.findIndex((filter) => filterName === filter.name) !== -1;\n    }\n\n    /**\n     * Reset the process filters to the default configuration if it exists and stores it.\n     * If there is no default configuration for the process cloud filter with the provided filter name,\n     * then it changes nothing but stores the current values of the filter\n     *\n     * @param appName Name of the target app\n     * @param filter The process filter to be restored to defaults\n     * @returns Observable of process filters details\n     */\n    resetProcessFilterToDefaults(appName: string, filter: ProcessFilterCloudModel): Observable<ProcessFilterCloudModel[]> {\n        const defaultFilter =\n            this.defaultProcessFilters(appName).find((defaultFilterDefinition) => defaultFilterDefinition.name === filter.name) || filter;\n        defaultFilter.id = filter.id;\n        return this.updateFilter(defaultFilter);\n    }\n\n    /**\n     * Checks user preference are empty or not\n     *\n     * @param preferences User preferences of the target app\n     * @returns Boolean value if the preferences are not empty\n     */\n    private hasPreferences(preferences: any): boolean {\n        return preferences && preferences.length > 0;\n    }\n\n    /**\n     * Checks for process instance filters in given user preferences\n     *\n     * @param preferences User preferences of the target app\n     * @param key Key of the process instance filters\n     * @returns Boolean value if the preference has process instance filters\n     */\n    private hasProcessFilters(preferences: any, key: string): boolean {\n        const filters = preferences.find((filter: any) => filter.entry.key === key);\n        return filters?.entry ? JSON.parse(filters.entry.value).length > 0 : false;\n    }\n\n    /**\n     * Calls create preference api to create process instance filters\n     *\n     * @param appName Name of the target app\n     * @param key Key of the process instance filters\n     * @param filters Details of new process instance filter\n     * @returns Observable of created process instance filters\n     */\n    private createProcessFilters(appName: string, key: string, filters: ProcessFilterCloudModel[]): Observable<ProcessFilterCloudModel[]> {\n        return this.preferenceService.createPreference(appName, key, filters);\n    }\n\n    /**\n     * Calls get preference api to get process instance filter by preference key\n     *\n     * @param appName Name of the target app\n     * @param key Key of the process instance filters\n     * @returns Observable of process instance filters\n     */\n    private getProcessFiltersByKey(appName: string, key: string): Observable<ProcessFilterCloudModel[]> {\n        return this.preferenceService.getPreferenceByKey(appName, key);\n    }\n\n    /**\n     * Calls update preference api to update process instance filter\n     *\n     * @param appName Name of the target app\n     * @param key Key of the process instance filters\n     * @param filters Details of update filter\n     * @returns Observable of updated process instance filters\n     */\n    private updateProcessFilters(appName: string, key: string, filters: ProcessFilterCloudModel[]): Observable<ProcessFilterCloudModel[]> {\n        return this.preferenceService.updatePreference(appName, key, filters);\n    }\n\n    /**\n     * Creates a uniq key with appName and username\n     *\n     * @param appName Name of the target app\n     * @returns String of process instance filters preference key\n     */\n    private prepareKey(appName: string): string {\n        const user = this.identityUserService.getCurrentUserInfo();\n        return `process-filters-${appName}-${user.username}`;\n    }\n\n    /**\n     * Finds and returns the process instance filters from preferences\n     *\n     * @returns Array of ProcessFilterCloudModel\n     * @param preferences preferences\n     * @param key key\n     */\n    private findFiltersByKeyInPreferences(preferences: any, key: string): ProcessFilterCloudModel[] {\n        const result = preferences.find((filter: any) => filter.entry.key === key);\n        return result?.entry ? JSON.parse(result.entry.value) : [];\n    }\n\n    private addFiltersToStream(filters: ProcessFilterCloudModel[]) {\n        this.filtersSubject.next(filters);\n    }\n\n    /**\n     * Creates and returns the default filters for a process app.\n     *\n     * @param appName Name of the target app\n     * @returns Array of ProcessFilterCloudModel\n     */\n    private defaultProcessFilters(appName?: string): ProcessFilterCloudModel[] {\n        return [\n            new ProcessFilterCloudModel({\n                name: 'ADF_CLOUD_PROCESS_FILTERS.RUNNING_PROCESSES',\n                icon: 'inbox',\n                key: 'running-processes',\n                appName,\n                sort: 'startDate',\n                status: 'RUNNING',\n                order: 'DESC',\n                showCounter: true\n            }),\n            new ProcessFilterCloudModel({\n                name: 'ADF_CLOUD_PROCESS_FILTERS.COMPLETED_PROCESSES',\n                icon: 'done',\n                key: 'completed-processes',\n                appName,\n                sort: 'startDate',\n                status: 'COMPLETED',\n                order: 'DESC',\n                showCounter: false\n            }),\n            new ProcessFilterCloudModel({\n                name: 'ADF_CLOUD_PROCESS_FILTERS.ALL_PROCESSES',\n                key: 'all-processes',\n                icon: 'adjust',\n                appName,\n                sort: 'startDate',\n                status: '',\n                order: 'DESC',\n                showCounter: false\n            })\n        ];\n    }\n\n    getProcessNotificationSubscription(appName: string): Observable<TaskCloudEngineEvent[]> {\n        return this.notificationCloudService\n            .makeGQLQuery(appName, PROCESS_EVENT_SUBSCRIPTION_QUERY)\n            .pipe(map((events: any) => events?.data?.engineEvents));\n    }\n\n    /**\n     * Refresh filter key\n     *\n     * @param filterKey  Key of the filter\n     */\n    refreshFilter(filterKey: string): void {\n        this.filterKeyToBeRefreshedSource.next(filterKey);\n    }\n\n    /**\n     * This method is run after retrieving the filter array from preferences.\n     * It handles the backwards compatibility with the new API by looking for the new properties and their counterparts in each passed filter.\n     * If the new property is not found, it is created and assigned the value constructed from the old property.\n     * The filters are then updated in the preferences and returned.\n     * Old properties are left untouched for purposes like feature toggling.\n     *\n     * @param appName Name of the target app.\n     * @param key Key of the process filters.\n     * @param filters Array of process filters to be checked for backward compatibility.\n     * @returns Observable of process filters with updated properties.\n     */\n    private handleCreateFilterBackwardsCompatibility(\n        appName: string,\n        key: string,\n        filters: ProcessFilterCloudModel[]\n    ): Observable<ProcessFilterCloudModel[]> {\n        filters.forEach((filter) => {\n            if (filter.processDefinitionName && !filter.processDefinitionNames) {\n                filter.processDefinitionNames = [filter.processDefinitionName];\n            }\n            if (filter.initiator && !filter.initiators) {\n                filter.initiators = [filter.initiator];\n            }\n            if (filter.appVersion && !filter.appVersions) {\n                filter.appVersions = [filter.appVersion.toString()];\n            }\n            if (filter.status && !filter.statuses) {\n                filter.statuses = [filter.status];\n            }\n        });\n\n        return this.updateProcessFilters(appName, key, filters);\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Injectable } from '@angular/core';\nimport { ProcessListRequestModel, ProcessQueryCloudRequestModel } from '../models/process-cloud-query-request.model';\nimport { Observable, throwError } from 'rxjs';\nimport { ProcessListCloudSortingModel } from '../models/process-list-sorting.model';\nimport { BaseCloudService } from '../../../services/base-cloud.service';\nimport { map } from 'rxjs/operators';\n\n@Injectable({ providedIn: 'root' })\nexport class ProcessListCloudService extends BaseCloudService {\n    private getProcess(\n        callback: (queryUrl: string, queryParams: any) => Observable<any>,\n        defaultQueryUrl: string,\n        requestNode: ProcessQueryCloudRequestModel,\n        queryUrl?: string\n    ): Observable<any> {\n        if (requestNode.appName || requestNode.appName === '') {\n            queryUrl = queryUrl || `${this.getBasePath(requestNode.appName)}/${defaultQueryUrl}`;\n            const queryParams = this.buildQueryParams(requestNode);\n            const sortingParams = this.buildSortingParam(requestNode.sorting);\n            if (sortingParams) {\n                queryParams['sort'] = sortingParams;\n            }\n\n            return callback(queryUrl, queryParams).pipe(\n                map((response: any) => {\n                    const entries = response.list?.entries;\n                    if (entries) {\n                        // TODO: this is a hack of the model and needs to be revisited\n                        response.list.entries = entries.map((entryData) => entryData.entry);\n                    }\n                    return response;\n                })\n            );\n        } else {\n            return throwError('Appname not configured');\n        }\n    }\n\n    /**\n     * Finds a process using an object with optional query properties.\n     *\n     * @deprecated From Activiti 8.7.0 forward, use ProcessListCloudService.fetchProcessList instead.\n     * @param requestNode Query object\n     * @param queryUrl Query url\n     * @returns Process information\n     */\n    getProcessByRequest(requestNode: ProcessQueryCloudRequestModel, queryUrl?: string): Observable<any> {\n        const callback = (url: string, queryParams: any) => this.get(url, queryParams);\n        const defaultQueryUrl = 'query/v1/process-instances';\n\n        return this.getProcess(callback, defaultQueryUrl, requestNode, queryUrl);\n    }\n\n    /**\n     * Available from Activiti version 8.7.0 onwards.\n     * Retrieves a list of processes using an object with optional query properties.\n     *\n     * @param requestNode Query object\n     * @param queryUrl Query url\n     * @returns List of processes\n     */\n    fetchProcessList(requestNode: ProcessListRequestModel, queryUrl?: string): Observable<any> {\n        if (!requestNode?.appName) {\n            return throwError(() => new Error('Appname not configured'));\n        }\n\n        queryUrl = queryUrl || `${this.getBasePath(requestNode.appName)}/query/v1/process-instances/search`;\n\n        const queryParams = {\n            maxItems: requestNode.pagination?.maxItems || 25,\n            skipCount: requestNode.pagination?.skipCount || 0\n        };\n\n        const queryData = this.buildQueryData(requestNode);\n        return this.post<any, any>(queryUrl, queryData, queryParams).pipe(\n            map((response: any) => {\n                const entries = response.list?.entries;\n                if (entries) {\n                    response.list.entries = entries.map((entryData) => entryData.entry);\n                }\n                return response;\n            })\n        );\n    }\n\n    protected buildQueryData(requestNode: ProcessListRequestModel) {\n        const queryData: any = {\n            name: requestNode.name,\n            id: requestNode.id,\n            parentId: requestNode.parentId,\n            processDefinitionName: requestNode.processDefinitionName,\n            initiator: requestNode.initiator,\n            appVersion: requestNode.appVersion,\n            status: requestNode.status,\n            lastModifiedFrom: requestNode.lastModifiedFrom,\n            lasModifiedTo: requestNode.lasModifiedTo,\n            startFrom: requestNode.startFrom,\n            startTo: requestNode.startTo,\n            completedFrom: requestNode.completedFrom,\n            completedTo: requestNode.completedTo,\n            suspendedFrom: requestNode.suspendedFrom,\n            suspendedTo: requestNode.suspendedTo,\n            processVariableKeys: requestNode.processVariableKeys,\n            processVariableFilters: requestNode.processVariableFilters\n        };\n\n        if (requestNode.sorting) {\n            queryData['sort'] = {\n                field: requestNode.sorting.orderBy,\n                direction: requestNode.sorting.direction.toLowerCase(),\n                isProcessVariable: requestNode.sorting.isFieldProcessVariable\n            };\n            if (queryData['sort'].isProcessVariable) {\n                queryData['sort'].processDefinitionKey = requestNode.sorting.processVariableData?.processDefinitionKey;\n                queryData['sort'].type = requestNode.sorting.processVariableData?.type;\n            }\n        }\n\n        /*\n         * Remove process variable filter keys with empty values from the query data.\n         */\n        if (queryData['processVariableFilters']) {\n            queryData['processVariableFilters'] = queryData['processVariableFilters'].filter(\n                (filter) => filter.value !== '' && filter.value !== null && filter.value !== undefined\n            );\n        }\n\n        /*\n         * Remove keys with empty values from the query data.\n         */\n        Object.keys(queryData).forEach((key) => {\n            const value = queryData[key];\n            const isValueEmpty = !value;\n            const isValueArrayWithEmptyValue = Array.isArray(value) && (value.length === 0 || value[0] === null);\n            if (isValueEmpty || isValueArrayWithEmptyValue) {\n                delete queryData[key];\n            }\n        });\n\n        return queryData;\n    }\n\n    getProcessListCounter(requestNode: ProcessListRequestModel): Observable<number> {\n        if (!requestNode.appName) {\n            return throwError(() => new Error('Appname not configured'));\n        }\n        return this.fetchProcessList(requestNode).pipe(map((processes) => processes.list.pagination.totalItems));\n    }\n\n    /**\n     * Finds a process using an object with optional query properties.\n     *\n     * @param appName app name\n     * @param status filter status\n     * @returns Total items\n     */\n    getProcessCounter(appName: string, status: string): Observable<any> {\n        const callback = (url: string, queryParams: any) => this.get(url, queryParams);\n        let queryUrl: string;\n        const defaultQueryUrl = 'query/v1/process-instances';\n        const requestNode: ProcessQueryCloudRequestModel = {\n            appName,\n            appVersion: '',\n            initiator: null,\n            id: '',\n            name: null,\n            processDefinitionId: '',\n            processDefinitionName: null,\n            processDefinitionKey: '',\n            status,\n            businessKey: '',\n            startFrom: null,\n            startTo: null,\n            completedFrom: null,\n            completedTo: null,\n            suspendedFrom: null,\n            suspendedTo: null,\n            completedDate: '',\n            maxItems: 1,\n            skipCount: 0,\n            sorting: [\n                {\n                    orderBy: 'startDate',\n                    direction: 'DESC'\n                }\n            ]\n        };\n\n        return this.getProcess(callback, defaultQueryUrl, requestNode, queryUrl).pipe(map((tasks) => tasks?.list?.pagination?.totalItems));\n    }\n\n    /**\n     * Finds a process using an object with optional query properties in admin app.\n     *\n     * @param requestNode Query object\n     * @param queryUrl Query url\n     * @returns Process information\n     */\n    getAdminProcessByRequest(requestNode: ProcessQueryCloudRequestModel, queryUrl?: string): Observable<any> {\n        const callback = (url: string, params: any) => {\n            const postBody = {\n                variableKeys: this.getVariableKeysFromQueryParams(params)\n            };\n\n            delete params['variableKeys'];\n\n            return this.post(url, postBody, params);\n        };\n\n        const defaultQueryUrl = 'query/admin/v1/process-instances';\n\n        return this.getProcess(callback, defaultQueryUrl, requestNode, queryUrl);\n    }\n\n    private getVariableKeysFromQueryParams(queryParams: any): string[] {\n        if (!queryParams['variableKeys'] || queryParams['variableKeys'].length <= 0) {\n            return [];\n        }\n\n        return queryParams['variableKeys'].split(',');\n    }\n\n    protected isPropertyValueValid(requestNode: ProcessQueryCloudRequestModel, property: string): boolean {\n        return requestNode[property] !== '' && requestNode[property] !== null && requestNode[property] !== undefined;\n    }\n\n    protected buildQueryParams(requestNode: ProcessQueryCloudRequestModel): any {\n        const queryParam = {};\n\n        for (const property in requestNode) {\n            if (\n                Object.prototype.hasOwnProperty.call(requestNode, property) &&\n                !this.isExcludedField(property) &&\n                this.isPropertyValueValid(requestNode, property)\n            ) {\n                queryParam[property] = this.getQueryParamValueFromRequestNode(requestNode, property as keyof ProcessQueryCloudRequestModel);\n            }\n        }\n\n        if (!queryParam['status']) {\n            queryParam['status'] = this.buildFilterForAllStatus();\n        }\n\n        return queryParam;\n    }\n\n    private getQueryParamValueFromRequestNode(requestNode: ProcessQueryCloudRequestModel, property: keyof ProcessQueryCloudRequestModel) {\n        if (property === 'variableKeys' && requestNode[property]?.length > 0) {\n            return `${requestNode[property].map((variableId) => variableId).join(',')}`;\n        }\n\n        return requestNode[property];\n    }\n\n    protected buildFilterForAllStatus(): string[] {\n        return ['RUNNING', 'SUSPENDED', 'CANCELLED', 'COMPLETED'];\n    }\n\n    protected isExcludedField(property: string): boolean {\n        return property === 'appName' || property === 'sorting';\n    }\n\n    protected buildSortingParam(models: ProcessListCloudSortingModel[]): string {\n        let finalSorting: string = '';\n        if (models) {\n            for (const sort of models) {\n                if (!finalSorting) {\n                    finalSorting = `${sort.orderBy},${sort.direction}`;\n                } else {\n                    finalSorting = `${finalSorting}&${sort.orderBy},${sort.direction}`;\n                }\n            }\n        }\n        return encodeURI(finalSorting);\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\nexport class ProcessListCloudSortingModel {\n    orderBy: string;\n    direction: string;\n     constructor(obj: any) {\n        if (obj) {\n            this.orderBy = obj.orderBy;\n            this.direction = obj.direction;\n        }\n    }\n}\nexport class ProcessListRequestSortingModel extends ProcessListCloudSortingModel {\n    orderBy: string;\n    direction: string;\n\n    isFieldProcessVariable: boolean;\n    processVariableData?: {\n        processDefinitionKey: string;\n        type: string;\n    }\n\n    constructor(obj: ProcessListRequestSortingModel) {\n        super(obj);\n        if (obj.isFieldProcessVariable) {\n            this.isFieldProcessVariable = true;\n            this.processVariableData = obj.processVariableData;\n            if (!this.processVariableData.processDefinitionKey || !this.processVariableData.type) {\n                throw new Error('missing required property when sorting by process variable');\n            }\n        } else {\n            this.isFieldProcessVariable = false;\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 { Pagination } from '@alfresco/js-api';\nimport { ProcessListCloudSortingModel, ProcessListRequestSortingModel } from './process-list-sorting.model';\nimport { ProcessFilterCloudModel } from '../../process-filters/models/process-filter-cloud.model';\nimport { ProcessVariableFilterModel } from '../../../models/process-variable-filter.model';\n\nexport class ProcessQueryCloudRequestModel {\n    appName: string;\n    appVersion?: number | string;\n    initiator?: null;\n    id?: string;\n    environmentId?: string;\n    name?: string;\n    parentId?: string;\n    processDefinitionId?: string;\n    processDefinitionName?: string;\n    processDefinitionKey?: string;\n    status?: string;\n    startDate?: string;\n    businessKey?: string;\n    lastModified?: string;\n    lastModifiedTo?: string;\n    lastModifiedFrom?: string;\n    startFrom?: string;\n    startTo?: string;\n    completedFrom?: string;\n    completedTo?: string;\n    suspendedFrom?: string;\n    suspendedTo?: string;\n    completedDate?: string;\n    maxItems: number;\n    skipCount: number;\n    sorting?: ProcessListCloudSortingModel[];\n    variableKeys?: string[];\n\n    constructor(obj?: any) {\n        if (obj) {\n            this.appName = obj.appName;\n            this.appVersion = obj.appVersion;\n            this.initiator = obj.initiator;\n            this.id = obj.id;\n            this.environmentId = obj.environmentId;\n            this.name = obj.name;\n            this.parentId = obj.parentId;\n            this.processDefinitionId = obj.processDefinitionId;\n            this.processDefinitionName = obj.processDefinitionName;\n            this.processDefinitionKey = obj.processDefinitionKey;\n            this.status = obj.status;\n            this.startDate = obj.startDate;\n            this.businessKey = obj.businessKey;\n            this.lastModified = obj.lastModified;\n            this.lastModifiedTo = obj.lastModifiedTo;\n            this.lastModifiedFrom = obj.lastModifiedFrom;\n            this.startFrom = obj.startFrom;\n            this.startTo = obj.startTo;\n            this.completedFrom = obj.completedFrom;\n            this.completedTo = obj.completedTo;\n            this.suspendedFrom = obj.suspendedFrom;\n            this.suspendedTo = obj.suspendedTo;\n            this.completedDate = obj.completedDate;\n            this.maxItems = obj.maxItems;\n            this.skipCount = obj.skipCount;\n            this.sorting = obj.sorting;\n            this.variableKeys = obj.variableKeys;\n        }\n    }\n}\n\nexport class ProcessListRequestModel {\n    appName: string;\n    pagination?: Pagination;\n    sorting?: ProcessListRequestSortingModel;\n\n    name?: string[];\n    id?: string[];\n    parentId?: string[];\n    processDefinitionName?: string[];\n    initiator?: string[];\n    appVersion?: string[];\n    status?: string[];\n    lastModifiedFrom?: string;\n    lasModifiedTo?: string;\n    startFrom?: string;\n    startTo?: string;\n    completedFrom?: string;\n    completedTo?: string;\n    suspendedFrom?: string;\n    suspendedTo?: string;\n\n    processVariableFilters?: ProcessVariableFilterModel[];\n    processVariableKeys?: string[];\n\n    constructor(obj: Partial<ProcessListRequestModel>) {\n        if (!obj.appName) {\n            throw new Error('appName not configured');\n        }\n\n        this.appName = obj.appName;\n        this.pagination = obj.pagination;\n        this.sorting = obj.sorting;\n\n        this.name = obj.name;\n        this.id = obj.id;\n        this.parentId = obj.parentId;\n        this.processDefinitionName = obj.processDefinitionName;\n        this.initiator = obj.initiator;\n        this.appVersion = obj.appVersion;\n        this.status = obj.status;\n        this.lastModifiedFrom = obj.lastModifiedFrom;\n        this.lasModifiedTo = obj.lasModifiedTo;\n        this.startFrom = obj.startFrom;\n        this.startTo = obj.startTo;\n        this.completedFrom = obj.completedFrom;\n        this.completedTo = obj.completedTo;\n        this.suspendedFrom = obj.suspendedFrom;\n        this.suspendedTo = obj.suspendedTo;\n        this.processVariableKeys = obj.processVariableKeys;\n        this.processVariableFilters = obj.processVariableFilters;\n    }\n}\n\nexport class ProcessFilterCloudAdapter extends ProcessListRequestModel {\n    constructor(filter: ProcessFilterCloudModel) {\n        super({\n            appName: filter.appName,\n            pagination: { maxItems: 25, skipCount: 0 },\n            sorting: new ProcessListRequestSortingModel({\n                orderBy: filter.sort,\n                direction: filter.order,\n                isFieldProcessVariable: false\n            }),\n\n            processDefinitionName: filter.processDefinitionNames,\n            name: filter.processNames,\n            id: filter.processInstanceIds,\n            parentId: filter.parentIds,\n            initiator: filter.initiators,\n            appVersion: filter.appVersions,\n            status: filter.statuses,\n            processVariableFilters: filter.processVariableFilters,\n            lastModifiedFrom: filter.lastModifiedFrom?.toISOString(),\n            lasModifiedTo: filter.lastModifiedTo?.toISOString(),\n            startFrom: filter.startFrom,\n            startTo: filter.startTo,\n            completedFrom: filter.completedFrom,\n            completedTo: filter.completedTo,\n            suspendedFrom: filter.suspendedFrom,\n            suspendedTo: filter.suspendedTo\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 { Observable } from 'rxjs';\nimport { ProcessFilterCloudService } from '../../services/process-filter-cloud.service';\nimport { ProcessFilterCloudModel } from '../../models/process-filter-cloud.model';\nimport { AppConfigService, IconComponent, TranslationService } from '@alfresco/adf-core';\nimport { FilterParamsModel } from '../../../../task/task-filters/models/filter-cloud.model';\nimport { debounceTime, tap } from 'rxjs/operators';\nimport { ProcessListCloudService } from '../../../process-list/services/process-list-cloud.service';\nimport { ProcessFilterCloudAdapter } from '../../../process-list/models/process-cloud-query-request.model';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { AsyncPipe, NgForOf, NgIf } from '@angular/common';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatListModule } from '@angular/material/list';\n\n@Component({\n    selector: 'adf-cloud-process-filters',\n    imports: [TranslatePipe, IconComponent, NgIf, MatProgressSpinnerModule, NgForOf, MatListModule, AsyncPipe],\n    templateUrl: './process-filters-cloud.component.html',\n    styleUrls: ['./process-filters-cloud.component.scss'],\n    encapsulation: ViewEncapsulation.None\n})\nexport class ProcessFiltersCloudComponent implements OnInit, OnChanges {\n    /** (required) The application name */\n    @Input()\n    appName: string = '';\n\n    /** (optional) From Activiti 8.7.0 forward, use the 'POST' method to get the process count */\n    @Input()\n    searchApiMethod: 'GET' | 'POST' = 'GET';\n\n    /** (optional) The filter to be selected by default */\n    @Input()\n    filterParam: FilterParamsModel;\n\n    /** (optional) Toggles showing an icon by the side of each filter */\n    @Input()\n    showIcons: boolean = false;\n\n    /** Emitted when a filter is being selected based on the filterParam input. */\n    @Output()\n    filterSelected = new EventEmitter<ProcessFilterCloudModel>();\n\n    /** Emitted when a filter is being clicked from the UI. */\n    @Output()\n    filterClicked = new EventEmitter<ProcessFilterCloudModel>();\n\n    /** Emitted when filters are loaded successfully */\n    @Output()\n    success = new EventEmitter<any>();\n\n    /** Emitted when any error occurs while loading the filters */\n    @Output()\n    error = new EventEmitter<any>();\n\n    /** Emitted when filter is updated. */\n    @Output()\n    updatedFilter: EventEmitter<string> = new EventEmitter<string>();\n\n    filters$: Observable<ProcessFilterCloudModel[]>;\n    currentFilter?: ProcessFilterCloudModel;\n    filters: ProcessFilterCloudModel[] = [];\n    counters: { [key: string]: number } = {};\n    enableNotifications: boolean;\n    currentFiltersValues: { [key: string]: number } = {};\n    updatedFiltersSet = new Set<string>();\n\n    private readonly destroyRef = inject(DestroyRef);\n    private readonly processFilterCloudService = inject(ProcessFilterCloudService);\n    private readonly translationService = inject(TranslationService);\n    private readonly appConfigService = inject(AppConfigService);\n    private readonly processListCloudService = inject(ProcessListCloudService);\n\n    ngOnInit() {\n        this.enableNotifications = this.appConfigService.get('notifications', true);\n        if (this.appName === '') {\n            this.getFilters(this.appName);\n        }\n        this.initProcessNotification();\n        this.getFilterKeysAfterExternalRefreshing();\n    }\n\n    ngOnChanges(changes: SimpleChanges) {\n        const appName = changes['appName'];\n        const filter = changes['filterParam'];\n        if (appName?.currentValue) {\n            this.getFilters(appName.currentValue);\n        } else if (filter && filter.currentValue !== filter.previousValue) {\n            this.selectFilterAndEmit(filter.currentValue);\n        }\n    }\n\n    /**\n     * Fetch the filter list based on appName\n     *\n     * @param appName application name\n     */\n    getFilters(appName: string): void {\n        this.filters$ = this.processFilterCloudService.getProcessFilters(appName);\n\n        this.filters$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe({\n            next: (res) => {\n                this.resetFilter();\n                this.filters = res || [];\n                this.initFilterCounters();\n                this.selectFilterAndEmit(this.filterParam);\n                this.success.emit(res);\n                this.updateFilterCounters();\n            },\n            error: (err: any) => {\n                this.error.emit(err);\n            }\n        });\n    }\n\n    /**\n     * Initialize counter collection for filters\n     */\n    initFilterCounters() {\n        this.filters.forEach((filter) => (this.counters[filter.key] = 0));\n    }\n\n    /**\n     * Pass the selected filter as next\n     *\n     * @param paramFilter filter model\n     */\n    selectFilter(paramFilter: FilterParamsModel) {\n        if (!paramFilter) {\n            return;\n        }\n\n        const preferredFilter = this.filters.find((filter) => paramFilter.id === filter.id);\n        this.currentFilter =\n            preferredFilter ??\n            this.filters.find(\n                (filter, index) =>\n                    paramFilter.id === filter.id ||\n                    (paramFilter.name && this.checkFilterNamesEquality(paramFilter.name, filter.name)) ||\n                    (paramFilter.key && paramFilter.key === filter.key) ||\n                    paramFilter.index === index\n            ); // fallback to preserve the previous behavior\n    }\n\n    /**\n     * Check equality of the filter names by translating the given name strings\n     *\n     * @param name1 source name\n     * @param name2 target name\n     * @returns `true` if filter names are equal, otherwise `false`\n     */\n    private checkFilterNamesEquality(name1: string, name2: string): boolean {\n        const translatedName1 = this.translationService.instant(name1);\n        const translatedName2 = this.translationService.instant(name2);\n\n        return translatedName1.toLocaleLowerCase() === translatedName2.toLocaleLowerCase();\n    }\n\n    /**\n     * Selects and emits the given filter\n     *\n     * @param newParamFilter new parameter filter\n     */\n    selectFilterAndEmit(newParamFilter: FilterParamsModel) {\n        if (newParamFilter) {\n            this.selectFilter(newParamFilter);\n            this.filterSelected.emit(this.currentFilter);\n        } else {\n            this.currentFilter = undefined;\n        }\n    }\n\n    /**\n     * Select filter with the id\n     *\n     * @param id filter id\n     */\n    selectFilterById(id: string) {\n        this.selectFilterAndEmit({ id });\n    }\n\n    /**\n     * Selects and emits the clicked filter\n     *\n     * @param filter filter model\n     */\n    onFilterClick(filter: ProcessFilterCloudModel) {\n        if (filter) {\n            this.selectFilter(filter);\n            this.filterClicked.emit(this.currentFilter);\n            this.updateFilterCounter(this.currentFilter);\n            this.updatedFiltersSet.delete(filter.key);\n        } else {\n            this.currentFilter = undefined;\n        }\n    }\n\n    /**\n     * Select as default process filter the first in the list\n     */\n    selectDefaultProcessFilter() {\n        if (!this.isFilterListEmpty()) {\n            this.currentFilter = this.filters[0];\n        }\n    }\n\n    /**\n     * Get current filter\n     *\n     * @returns filter model\n     */\n    getCurrentFilter(): ProcessFilterCloudModel {\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     * Reset the filters\n     */\n    private resetFilter() {\n        this.filters = [];\n        this.currentFilter = undefined;\n    }\n\n    isActiveFilter(filter: ProcessFilterCloudModel): boolean {\n        return this.currentFilter.name === filter.name;\n    }\n\n    initProcessNotification(): void {\n        if (this.appName && this.enableNotifications) {\n            this.processFilterCloudService\n                .getProcessNotificationSubscription(this.appName)\n                .pipe(debounceTime(1000), takeUntilDestroyed(this.destroyRef))\n                .subscribe(() => {\n                    this.updateFilterCounters();\n                });\n        }\n    }\n\n    /**\n     * Iterate over filters and update counters\n     */\n    updateFilterCounters(): void {\n        this.filters.forEach((filter: ProcessFilterCloudModel) => {\n            this.updateFilterCounter(filter);\n        });\n    }\n\n    /**\n     *  Get current value for filter and check if value has changed\n     *\n     * @param filter filter\n     */\n    updateFilterCounter(filter: ProcessFilterCloudModel): void {\n        if (!filter?.showCounter) {\n            return;\n        }\n\n        this.fetchProcessFilterCounter(filter)\n            .pipe(\n                tap((filterCounter) => {\n                    this.checkIfFilterValuesHasBeenUpdated(filter.key, filterCounter);\n                })\n            )\n            .subscribe((data) => {\n                this.counters = {\n                    ...this.counters,\n                    [filter.key]: data\n                };\n            });\n    }\n\n    checkIfFilterValuesHasBeenUpdated(filterKey: string, filterValue: number): void {\n        if (this.currentFiltersValues[filterKey] === undefined || this.currentFiltersValues[filterKey] !== filterValue) {\n            this.currentFiltersValues[filterKey] = filterValue;\n            this.updatedFilter.emit(filterKey);\n            this.updatedFiltersSet.add(filterKey);\n        }\n    }\n\n    isFilterUpdated(filterName: string): boolean {\n        return this.updatedFiltersSet.has(filterName);\n    }\n\n    /**\n     * Get filer key when filter was refreshed by external action\n     *\n     */\n    getFilterKeysAfterExternalRefreshing(): void {\n        this.processFilterCloudService.filterKeyToBeRefreshed$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((filterKey: string) => {\n            this.updatedFiltersSet.delete(filterKey);\n        });\n    }\n\n    private fetchProcessFilterCounter(filter: ProcessFilterCloudModel): Observable<number> {\n        return this.searchApiMethod === 'POST'\n            ? this.processListCloudService.getProcessListCounter(new ProcessFilterCloudAdapter(filter))\n            : this.processListCloudService.getProcessCounter(filter.appName, filter.status);\n    }\n}\n","<mat-action-list class=\"adf-process-filters\" *ngIf=\"filters$ | async as filterList; else loading\">\n    <button\n        *ngFor=\"let filter of filterList\"\n        mat-list-item\n        (click)=\"onFilterClick(filter)\"\n        [attr.aria-label]=\"filter.name | translate\"\n        [id]=\"filter.id\"\n        [attr.data-automation-id]=\"filter.key + '_filter'\"\n        [class.adf-active]=\"currentFilter === filter\"\n    >\n        <div class=\"adf-process-filters__entry\">\n            <div>\n                <adf-icon\n                    data-automation-id=\"adf-filter-icon\"\n                    *ngIf=\"showIcons\"\n                    [value]=\"filter.icon\" />\n                <span\n                    data-automation-id=\"adf-filter-label\"\n                    class=\"adf-filter-action-button__label\">\n                    {{ filter.name | translate }}\n                </span>\n            </div>\n            <span\n                *ngIf=\"counters[filter.key]\"\n                [attr.data-automation-id]=\"filter.key + '_filter-counter'\"\n                class=\"adf-process-filters__entry-counter\"\n                [class.adf-active]=\"isFilterUpdated(filter.key)\"\n               >\n                {{ counters[filter.key] }}\n            </span>\n        </div>\n    </button>\n</mat-action-list>\n<ng-template #loading>\n    <ng-container>\n        <div class=\"adf-app-list-spinner\">\n            <mat-spinner />\n        </div>\n    </ng-container>\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 { ChangeDetectionStrategy, Component, inject, ViewEncapsulation } from '@angular/core';\nimport { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatInputModule } from '@angular/material/input';\n\n@Component({\n    selector: 'adf-cloud-process-filter-dialog-cloud',\n    imports: [TranslatePipe, MatButtonModule, MatCardModule, MatInputModule, ReactiveFormsModule, MatDialogModule],\n    templateUrl: './process-filter-dialog-cloud.component.html',\n    styleUrls: ['./process-filter-dialog-cloud.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None\n})\nexport class ProcessFilterDialogCloudComponent {\n    public readonly dialogRef = inject(MatDialogRef<ProcessFilterDialogCloudComponent>);\n    public readonly data = inject(MAT_DIALOG_DATA);\n\n    public static ACTION_SAVE = 'SAVE';\n    defaultIcon = 'inbox';\n\n    filterForm = new FormGroup({\n        name: new FormControl(this.data.name, [Validators.required])\n    });\n\n    onSaveClick() {\n        this.dialogRef.close({\n            action: ProcessFilterDialogCloudComponent.ACTION_SAVE,\n            icon: this.defaultIcon,\n            name: this.filterForm.controls.name.value\n        });\n    }\n\n    onCancelClick() {\n        this.dialogRef.close();\n    }\n}\n","<div class=\"adf-process-filter-dialog\">\n    <span mat-dialog-title id=\"adf-process-filter-dialog-title\">\n         {{ 'ADF_CLOUD_EDIT_PROCESS_FILTER.DIALOG.TITLE' | translate}}\n    </span>\n    <mat-card appearance=\"outlined\" class=\"adf-process-filter-dialog-card\">\n        <mat-card-content class=\"adf-process-filter-dialog-card-content\">\n            <form [formGroup]=\"filterForm\">\n                <mat-form-field class=\"adf-process-filter-name\" [floatLabel]=\"'auto'\">\n                    <input\n                        matInput\n                       placeholder=\"{{ 'ADF_CLOUD_EDIT_PROCESS_FILTER.FILTER_NAME' | translate }}\"\n                       [formControl]=\"filterForm.controls.name\" id=\"adf-filter-name-id\">\n                </mat-form-field>\n            </form>\n        </mat-card-content>\n        <mat-card-actions class='adf-process-filter-dialog-actions'>\n            <button mat-button (click)=\"onSaveClick()\" id=\"adf-save-button-id\" [disabled]=\"!filterForm.valid\">\n                {{ 'ADF_CLOUD_EDIT_PROCESS_FILTER.DIALOG.SAVE' | translate}}\n            </button>\n            <button mat-button (click)=\"onCancelClick()\" id=\"adf-cancel-button-id\">\n               {{ 'ADF_CLOUD_EDIT_PROCESS_FILTER.DIALOG.CANCEL' | translate}}\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 { Injectable } from '@angular/core';\nimport { Observable, Subject, throwError } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { ProcessInstanceCloud } from '../start-process/models/process-instance-cloud.model';\nimport { BaseCloudService } from '../../services/base-cloud.service';\nimport { ProcessDefinitionCloud } from '../../models/process-definition-cloud.model';\nimport { ApplicationVersionModel, ApplicationVersionResponseModel } from '../../models/application-version.model';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class ProcessCloudService extends BaseCloudService {\n    dataChangesDetected = new Subject<ProcessInstanceCloud>();\n\n    /**\n     * Gets details of a process instance.\n     *\n     * @param appName Name of the app\n     * @param processInstanceId ID of the process instance whose details you want\n     * @returns Process instance details\n     */\n    getProcessInstanceById(appName: string, processInstanceId: string): Observable<ProcessInstanceCloud> {\n        if (appName && processInstanceId) {\n            const url = `${this.getBasePath(appName)}/query/v1/process-instances/${processInstanceId}`;\n\n            return this.get<{ entry: ProcessInstanceCloud }>(url).pipe(\n                map((res) => {\n                    this.dataChangesDetected.next(res.entry);\n                    return res.entry;\n                })\n            );\n        } else {\n            return throwError('AppName/ProcessInstanceId not configured');\n        }\n    }\n\n    /**\n     * Gets the process definitions associated with an app.\n     *\n     * @param appName Name of the target app\n     * @returns Array of process definitions\n     */\n    getProcessDefinitions(appName: string): Observable<ProcessDefinitionCloud[]> {\n        if (appName || appName === '') {\n            const url = `${this.getBasePath(appName)}/rb/v1/process-definitions`;\n\n            return this.get(url).pipe(map((res: any) => res.list.entries.map((processDefs) => new ProcessDefinitionCloud(processDefs.entry))));\n        } else {\n            return throwError('AppName not configured');\n        }\n    }\n\n    /**\n     * Gets the application versions associated with an app.\n     *\n     * @param appName Name of the target app\n     * @returns Array of Application Version Models\n     */\n    getApplicationVersions(appName: string): Observable<ApplicationVersionModel[]> {\n        if (appName) {\n            const url = `${this.getBasePath(appName)}/query/v1/applications`;\n\n            return this.get(url).pipe(map((appEntities: ApplicationVersionResponseModel) => appEntities.list.entries));\n        } else {\n            return throwError('AppName not configured');\n        }\n    }\n\n    /**\n     * Cancels a process.\n     *\n     * @param appName Name of the app\n     * @param processInstanceId Id of the process to cancel\n     * @returns Operation Information\n     */\n    cancelProcess(appName: string, processInstanceId: string): Observable<ProcessInstanceCloud> {\n        if (appName && processInstanceId) {\n            const queryUrl = `${this.getBasePath(appName)}/rb/v1/process-instances/${processInstanceId}`;\n            return this.delete(queryUrl).pipe(\n                map((res: any) => {\n                    this.dataChangesDetected.next(res.entry);\n                    return res.entry;\n                })\n            );\n        } else {\n            return throwError('App name and process id not configured');\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 { AbstractControl, FormBuilder, FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { DateAdapter } from '@angular/material/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { debounceTime, filter, finalize, switchMap, tap } from 'rxjs/operators';\nimport { Observable, Subscription } from 'rxjs';\nimport { AppsProcessCloudService } from '../../../../app/services/apps-process-cloud.service';\nimport {\n    ProcessFilterAction,\n    ProcessFilterCloudModel,\n    ProcessFilterOptions,\n    ProcessFilterProperties,\n    ProcessSortFilterProperty\n} from '../../models/process-filter-cloud.model';\nimport { DateFnsUtils, IconComponent, TranslationService, UserPreferencesService, UserPreferenceValues } from '@alfresco/adf-core';\nimport { ProcessFilterCloudService } from '../../services/process-filter-cloud.service';\nimport { ProcessFilterDialogCloudComponent } from '../process-filter-dialog/process-filter-dialog-cloud.component';\nimport { ProcessCloudService } from '../../../services/process-cloud.service';\nimport { DateCloudFilterType, DateRangeFilter } from '../../../../models/date-cloud-filter.model';\nimport { IdentityUserModel } from '../../../../people/models/identity-user.model';\nimport { Environment } from '../../../../common/interface/environment.interface';\nimport { endOfDay, isValid, startOfDay } from 'date-fns';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { NgForOf, NgIf } from '@angular/common';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatIconModule } from '@angular/material/icon';\nimport { DateRangeFilterComponent } from '../../../../common/date-range-filter/date-range-filter.component';\nimport { PeopleCloudComponent } from '../../../../people/components/people-cloud.component';\n\nexport const PROCESS_FILTER_ACTION_SAVE = 'save';\nexport const PROCESS_FILTER_ACTION_SAVE_AS = 'saveAs';\nexport const PROCESS_FILTER_ACTION_DELETE = 'delete';\nexport const PROCESS_FILTER_ACTION_SAVE_DEFAULT = 'saveDefaultFilter';\nexport const PROCESS_FILTER_ACTION_RESTORE = 'restoreDefaultFilter';\nconst DEFAULT_PROCESS_FILTER_PROPERTIES = ['status', 'sort', 'order', 'lastModified'];\nconst DEFAULT_SORT_PROPERTIES = ['id', 'name', 'status', 'startDate'];\nconst DEFAULT_ACTIONS = ['save', 'saveAs', 'delete'];\n\nexport interface DropdownOption {\n    value: string;\n    label: string;\n}\n\ninterface ProcessFilterFormProps {\n    appName?: FormControl<string>;\n    appVersion?: FormControl<number | number[]>;\n    processDefinitionName?: FormControl<string>;\n    lastModifiedFrom?: FormControl<Date>;\n    lastModifiedTo?: FormControl<Date>;\n    status?: FormControl<string>;\n    order?: FormControl<string>;\n    sort?: FormControl<string>;\n    completedDateType?: FormControl<DateCloudFilterType>;\n    [x: string]: FormControl<unknown>;\n}\n\n@Component({\n    selector: 'adf-cloud-edit-process-filter',\n    imports: [\n        IconComponent,\n        MatProgressSpinnerModule,\n        TranslatePipe,\n        MatButtonModule,\n        NgForOf,\n        NgIf,\n        MatExpansionModule,\n        MatFormFieldModule,\n        MatSelectModule,\n        ReactiveFormsModule,\n        MatInputModule,\n        MatDatepickerModule,\n        MatIconModule,\n        DateRangeFilterComponent,\n        PeopleCloudComponent\n    ],\n    templateUrl: './edit-process-filter-cloud.component.html',\n    styleUrls: ['./edit-process-filter-cloud.component.scss'],\n    encapsulation: ViewEncapsulation.None\n})\nexport class EditProcessFilterCloudComponent implements OnInit, OnChanges {\n    /** The name of the application. */\n    @Input()\n    appName: string = '';\n\n    /** roles to filter the apps */\n    @Input()\n    role: string = '';\n\n    /** Id of the process instance filter. */\n    @Input()\n    id: string;\n\n    /** List of process filter properties to display */\n    @Input()\n    filterProperties = DEFAULT_PROCESS_FILTER_PROPERTIES;\n\n    /** List of sort properties to display. */\n    @Input()\n    sortProperties = DEFAULT_SORT_PROPERTIES;\n\n    /** List of sort actions. */\n    @Input()\n    actions = DEFAULT_ACTIONS;\n\n    /** Environment ID of the application. */\n    @Input()\n    environmentId: string;\n\n    /** List of environments. */\n    @Input()\n    environmentList: Environment[] = [];\n\n    /** Toggles editing of process filter actions. */\n    @Input()\n    showFilterActions = true;\n\n    /** Toggles editing of the process filter title. */\n    @Input()\n    showTitle = true;\n\n    /** Toggles the appearance of the process filter name . */\n    @Input()\n    showProcessFilterName = true;\n\n    /** Emitted when a process instance filter property changes. */\n    @Output()\n    filterChange = new EventEmitter<ProcessFilterCloudModel>();\n\n    /** Emitted when a filter action occurs i.e Save, SaveAs, Delete. */\n    @Output()\n    action = new EventEmitter<ProcessFilterAction>();\n\n    private _filter: ProcessFilterCloudModel;\n    protected filterHasBeenChanged = false;\n\n    get processFilter() {\n        return this._filter;\n    }\n\n    /** Process filter */\n    @Input()\n    set processFilter(value: ProcessFilterCloudModel) {\n        const isChanged = this.isFilterChanged(this._filter, value);\n\n        this._filter = value;\n\n        if (value?.appName) {\n            this.appName = value.appName;\n        }\n\n        if (value?.id) {\n            this.id = value.id;\n        }\n\n        if (value?.environmentId) {\n            this.environmentId = value.environmentId;\n        }\n\n        this.processFilterProperties = this.createAndFilterProperties();\n        this.processFilterActions = this.createAndFilterActions();\n        this.buildForm(this.processFilterProperties);\n\n        if (isChanged) {\n            this.filterChange.emit(value);\n        }\n    }\n\n    status: Array<DropdownOption> = [\n        { value: '', label: 'ADF_CLOUD_PROCESS_FILTERS.STATUS.ALL' },\n        { value: 'RUNNING', label: 'ADF_CLOUD_PROCESS_FILTERS.STATUS.RUNNING' },\n        { value: 'SUSPENDED', label: 'ADF_CLOUD_PROCESS_FILTERS.STATUS.SUSPENDED' },\n        { value: 'CANCELLED', label: 'ADF_CLOUD_PROCESS_FILTERS.STATUS.CANCELLED' },\n        { value: 'COMPLETED', label: 'ADF_CLOUD_PROCESS_FILTERS.STATUS.COMPLETED' }\n    ];\n    directions: Array<DropdownOption> = [\n        { value: 'ASC', label: 'ADF_CLOUD_PROCESS_FILTERS.DIRECTION.ASCENDING' },\n        { value: 'DESC', label: 'ADF_CLOUD_PROCESS_FILTERS.DIRECTION.DESCENDING' }\n    ];\n    actionDisabledForDefault = [PROCESS_FILTER_ACTION_SAVE, PROCESS_FILTER_ACTION_DELETE];\n    applicationNames: any[] = [];\n    allProcessDefinitionNamesOption: DropdownOption = {\n        label: 'ADF_CLOUD_PROCESS_FILTERS.STATUS.ALL',\n        value: ''\n    };\n    processDefinitionNames: any[] = [];\n    editProcessFilterForm: FormGroup<ProcessFilterFormProps>;\n    processFilterProperties: ProcessFilterProperties[] = [];\n    processFilterActions: ProcessFilterAction[] = [];\n    toggleFilterActions: boolean = false;\n    appVersionOptions: ProcessFilterOptions[] = [];\n    initiatorOptions: IdentityUserModel[] = [];\n\n    isLoading: boolean = false;\n    private filterChangeSub: Subscription;\n\n    private readonly destroyRef = inject(DestroyRef);\n\n    constructor(\n        private formBuilder: FormBuilder,\n        public dialog: MatDialog,\n        private dateAdapter: DateAdapter<Date>,\n        private userPreferencesService: UserPreferencesService,\n        private translateService: TranslationService,\n        private processFilterCloudService: ProcessFilterCloudService,\n        private appsProcessCloudService: AppsProcessCloudService,\n        private processCloudService: ProcessCloudService\n    ) {}\n\n    ngOnInit() {\n        this.userPreferencesService\n            .select(UserPreferenceValues.Locale)\n            .pipe(takeUntilDestroyed(this.destroyRef))\n            .subscribe((locale) => this.dateAdapter.setLocale(locale));\n    }\n\n    ngOnChanges(changes: SimpleChanges) {\n        const id = changes['id'];\n        if (id && id.currentValue !== id.previousValue) {\n            this.retrieveProcessFilterAndBuildForm();\n        }\n    }\n    filterTracker(_index: number, item: ProcessFilterProperties) {\n        return item.key;\n    }\n\n    buildForm(processFilterProperties: ProcessFilterProperties[]) {\n        this.editProcessFilterForm = this.formBuilder.group(this.getFormControlsConfig(processFilterProperties));\n        this.onFilterChange();\n    }\n\n    getFormControlsConfig(processFilterProperties: ProcessFilterProperties[]): any {\n        const properties = processFilterProperties.map((property) => {\n            if (property.attributes) {\n                return this.getAttributesControlConfig(property);\n            } else {\n                return { [property.key]: property.value };\n            }\n        });\n        return properties.reduce((result, current) => Object.assign(result, current), {});\n    }\n\n    get lastModifiedFrom(): AbstractControl<Date> {\n        return this.editProcessFilterForm.get('lastModifiedFrom');\n    }\n\n    get lastModifiedTo(): AbstractControl<Date> {\n        return this.editProcessFilterForm.get('lastModifiedTo');\n    }\n\n    get completedDateType(): AbstractControl<DateCloudFilterType> {\n        return this.editProcessFilterForm.get('completedDateType');\n    }\n\n    private getAttributesControlConfig(property: ProcessFilterProperties) {\n        return Object.values(property.attributes).reduce((result, key) => {\n            result[key] = property.value[key];\n            return result;\n        }, {});\n    }\n\n    /**\n     * Fetches process instance filter by application name and filter id and creates filter properties, build form\n     */\n    retrieveProcessFilterAndBuildForm() {\n        this.isLoading = true;\n        this.processFilterCloudService\n            .getFilterById(this.appName, this.id)\n            .pipe(finalize(() => (this.isLoading = false)))\n            .subscribe((response) => {\n                this.filterHasBeenChanged = false;\n                this.processFilter = new ProcessFilterCloudModel(Object.assign({}, response || {}, this.processFilter || {}));\n            });\n    }\n\n    /**\n     * Check process instance filter changes\n     */\n    onFilterChange() {\n        if (this.filterChangeSub) {\n            this.filterChangeSub.unsubscribe();\n            this.filterChangeSub = null;\n        }\n\n        this.filterChangeSub = this.editProcessFilterForm.valueChanges\n            .pipe(\n                debounceTime(500),\n                filter(() => this.isFormValid()),\n                takeUntilDestroyed(this.destroyRef)\n            )\n            .subscribe((formValues: Partial<ProcessFilterCloudModel>) => {\n                this.setLastModifiedFromFilter(formValues);\n                this.setLastModifiedToFilter(formValues);\n\n                const newValue = new ProcessFilterCloudModel(Object.assign({}, this.processFilter, formValues));\n                const changed = !this.compareFilters(newValue, this.processFilter);\n                this.filterHasBeenChanged = changed;\n\n                if (changed) {\n                    this._filter = newValue;\n                    this.filterChange.emit(newValue);\n                }\n            });\n    }\n\n    createAndFilterProperties(): ProcessFilterProperties[] {\n        this.checkMandatoryFilterProperties();\n\n        if (this.filterProperties.includes('appName')) {\n            this.getDeployedApplications();\n        }\n\n        if (this.filterProperties.includes('processDefinitionName')) {\n            this.getProcessDefinitions();\n        }\n\n        if (this.filterProperties.includes('appVersionMultiple')) {\n            this.getAppVersionOptions();\n        }\n\n        if (this.filterProperties.includes('initiator')) {\n            this.initiatorOptions = this.processFilter.initiator\n                ? this.processFilter.initiator.split(',').map((username) => Object.assign({}, { username }))\n                : [];\n        }\n\n        const defaultProperties = this.createProcessFilterProperties(this.processFilter);\n        let filteredProperties = defaultProperties.filter((filterProperty) => this.isValidProperty(this.filterProperties, filterProperty.key));\n\n        if (!this.filterProperties.includes('sort')) {\n            filteredProperties = filteredProperties.filter((property) => property.key !== 'order');\n        }\n\n        if (this.filterProperties.includes('lastModified')) {\n            filteredProperties = [...filteredProperties, ...this.createLastModifiedProperty(this.processFilter)];\n        }\n\n        return filteredProperties;\n    }\n\n    checkMandatoryFilterProperties() {\n        if (this.filterProperties === undefined || this.filterProperties.length === 0) {\n            this.filterProperties = DEFAULT_PROCESS_FILTER_PROPERTIES;\n        }\n    }\n\n    private isValidProperty(filterProperties: string[], key: string): boolean {\n        return filterProperties ? filterProperties.indexOf(key) >= 0 : true;\n    }\n\n    get createSortProperties(): ProcessFilterOptions[] {\n        this.checkMandatorySortProperties();\n        const defaultSortProperties = this.createProcessSortProperties();\n        return defaultSortProperties.filter((sortProperty) => this.isValidProperty(this.sortProperties, sortProperty.key));\n    }\n\n    getAppVersionOptions() {\n        this.processCloudService.getApplicationVersions(this.appName).subscribe((appVersions) => {\n            this.appVersionOptions.length = 0;\n            appVersions.forEach((appVersion) => {\n                this.appVersionOptions.push({ label: appVersion.entry.version, value: appVersion.entry.version });\n            });\n        });\n    }\n\n    checkMandatorySortProperties() {\n        if (this.sortProperties === undefined || this.sortProperties.length === 0) {\n            this.sortProperties = DEFAULT_SORT_PROPERTIES;\n        }\n    }\n\n    createAndFilterActions() {\n        this.checkMandatoryActions();\n        const actions = this.createFilterActions();\n        return actions.filter((action) => this.isValidAction(this.actions, action));\n    }\n\n    checkMandatoryActions() {\n        if (this.actions === undefined || this.actions.length === 0) {\n            this.actions = DEFAULT_ACTIONS;\n        }\n    }\n\n    private isValidAction(actions: string[], action: ProcessFilterAction): boolean {\n        return actions ? actions.indexOf(action.actionType) >= 0 : true;\n    }\n\n    isFormValid(): boolean {\n        return this.editProcessFilterForm.valid;\n    }\n\n    getPropertyController(property: ProcessFilterProperties): AbstractControl {\n        return this.editProcessFilterForm.get(property.key);\n    }\n\n    onDateChanged(newDateValue: Date | string, dateProperty: ProcessFilterProperties) {\n        if (newDateValue) {\n            const controller = this.getPropertyController(dateProperty);\n\n            let date = newDateValue;\n\n            if (typeof newDateValue === 'string') {\n                date = DateFnsUtils.parseDate(newDateValue, 'dd/MM/yyyy');\n            }\n\n            if (isValid(date)) {\n                controller.setValue(date);\n                controller.setErrors(null);\n            } else {\n                controller.setValue(date);\n                controller.setErrors({ invalid: true });\n            }\n        }\n    }\n\n    onDateTypeChange(dateType: DateCloudFilterType, property: ProcessFilterProperties) {\n        this.editProcessFilterForm.get(property.attributes.dateType).setValue(dateType);\n    }\n\n    onDateRangeFilterChanged(dateRange: DateRangeFilter, property: ProcessFilterProperties) {\n        this.editProcessFilterForm.get(property.attributes?.from).setValue(dateRange.startDate ? dateRange.startDate : null);\n        this.editProcessFilterForm.get(property.attributes?.to).setValue(dateRange.endDate ? dateRange.endDate : null);\n        this.editProcessFilterForm.get(property.attributes.dateType).setValue(DateCloudFilterType.RANGE);\n    }\n\n    onChangedUser(users: IdentityUserModel[], processProperty: ProcessFilterProperties) {\n        this.getPropertyController(processProperty).setValue(users.map((user) => user.username).join(','));\n    }\n\n    hasError(property: ProcessFilterProperties): boolean {\n        const controller = this.getPropertyController(property);\n        return !!controller.errors?.invalid;\n    }\n\n    compareFilters(editedQuery: ProcessFilterCloudModel, currentQuery: ProcessFilterCloudModel): boolean {\n        return JSON.stringify(editedQuery).toLowerCase() === JSON.stringify(currentQuery).toLowerCase();\n    }\n\n    getDeployedApplications() {\n        this.appsProcessCloudService.getDeployedApplicationsByStatus('DEPLOYED', this.role).subscribe((applications) => {\n            if (applications && applications.length > 0) {\n                this.applicationNames.length = 0;\n                applications.map((application) => {\n                    this.applicationNames.push({\n                        label: this.appsProcessCloudService.getApplicationLabel(application, this.environmentList),\n                        value: application.name\n                    });\n                });\n            }\n        });\n    }\n\n    getProcessDefinitions() {\n        this.processCloudService.getProcessDefinitions(this.appName).subscribe((processDefinitions) => {\n            if (processDefinitions && processDefinitions.length > 0) {\n                this.processDefinitionNames.length = 0;\n                this.processDefinitionNames.push(this.allProcessDefinitionNamesOption);\n                processDefinitions.map((processDefinition) => {\n                    this.processDefinitionNames.push({ label: processDefinition.name, value: processDefinition.name });\n                });\n            }\n        });\n    }\n\n    executeFilterActions(event: Event, action: ProcessFilterAction): void {\n        if (action.actionType === PROCESS_FILTER_ACTION_SAVE) {\n            this.save(action);\n        } else if (action.actionType === PROCESS_FILTER_ACTION_SAVE_AS) {\n            this.saveAs(action);\n        } else if (action.actionType === PROCESS_FILTER_ACTION_DELETE) {\n            this.delete(action);\n        } else if (action.actionType === PROCESS_FILTER_ACTION_SAVE_DEFAULT) {\n            this.save(action);\n        } else if (action.actionType === PROCESS_FILTER_ACTION_RESTORE) {\n            this.reset(action);\n        }\n        event.stopPropagation();\n    }\n\n    save(saveAction: ProcessFilterAction) {\n        this.processFilterCloudService.updateFilter(this.processFilter).subscribe(() => {\n            saveAction.filter = this.processFilter;\n            this.filterHasBeenChanged = false;\n            this.action.emit(saveAction);\n        });\n    }\n\n    /**\n     * Delete a process instance filter\n     *\n     * @param deleteAction filter action\n     */\n    delete(deleteAction: ProcessFilterAction) {\n        this.processFilterCloudService\n            .deleteFilter(this.processFilter)\n            .pipe(\n                filter((filters) => {\n                    deleteAction.filter = this.processFilter;\n                    this.action.emit(deleteAction);\n                    return filters.length === 0;\n                }),\n                switchMap(() => this.restoreDefaultProcessFilters())\n            )\n            .subscribe(() => {});\n    }\n\n    /**\n     * Save As a process instance filter\n     *\n     * @param saveAsAction filter action\n     */\n    saveAs(saveAsAction: ProcessFilterAction) {\n        const dialogRef = this.dialog.open(ProcessFilterDialogCloudComponent, {\n            data: {\n                name: this.translateService.instant(this.processFilter.name)\n            },\n            height: 'auto',\n            minWidth: '30%'\n        });\n        dialogRef.afterClosed().subscribe((result) => {\n            if (result && result.action === ProcessFilterDialogCloudComponent.ACTION_SAVE) {\n                const filterId = Math.random().toString(36).substring(2, 9);\n                const filterKey = this.getSanitizeFilterName(result.name);\n                const newFilter = {\n                    name: result.name,\n                    icon: result.icon,\n                    id: filterId,\n                    key: 'custom-' + filterKey\n                };\n                const resultFilter: ProcessFilterCloudModel = Object.assign({}, this.processFilter, newFilter);\n                this.processFilterCloudService.addFilter(resultFilter).subscribe(() => {\n                    saveAsAction.filter = resultFilter;\n                    this.filterHasBeenChanged = false;\n                    this.action.emit(saveAsAction);\n                });\n            }\n        });\n    }\n\n    reset(resetAction: ProcessFilterAction) {\n        this.processFilterCloudService\n            .resetProcessFilterToDefaults(this.appName, this.processFilter)\n            .pipe(\n                tap((filters) => {\n                    resetAction.filter = filters.find((defaultFilter) => defaultFilter.name === this.processFilter.name) || this.processFilter;\n                    this.action.emit(resetAction);\n                }),\n                switchMap(() => this.restoreDefaultProcessFilters())\n            )\n            .subscribe(() => {});\n    }\n\n    /**\n     * Get sanitized filter name\n     *\n     * @param filterName filter name\n     * @returns sanitized filter name\n     */\n    getSanitizeFilterName(filterName: string): string {\n        const nameWithHyphen = this.replaceSpaceWithHyphen(filterName.trim());\n        return nameWithHyphen.toLowerCase();\n    }\n\n    /**\n     * Return name with hyphen\n     *\n     * @param name name\n     * @returns updated value\n     */\n    replaceSpaceWithHyphen(name: string): string {\n        const regExt = new RegExp(' ', 'g');\n        return name.replace(regExt, '-');\n    }\n\n    restoreDefaultProcessFilters(): Observable<ProcessFilterCloudModel[]> {\n        return this.processFilterCloudService.getProcessFilters(this.appName);\n    }\n\n    onExpand() {\n        this.toggleFilterActions = true;\n    }\n\n    onClose() {\n        this.toggleFilterActions = false;\n    }\n\n    isDisabledAction(action: ProcessFilterAction): boolean {\n        return this.processFilterCloudService.isDefaultFilter(this.processFilter.name) && this.actionDisabledForDefault.includes(action.actionType)\n            ? true\n            : this.hasFilterChanged(action);\n    }\n\n    hasFilterChanged(action: ProcessFilterAction): boolean {\n        return action.actionType === PROCESS_FILTER_ACTION_SAVE || action.actionType === PROCESS_FILTER_ACTION_SAVE_AS\n            ? !this.filterHasBeenChanged\n            : false;\n    }\n\n    private setLastModifiedToFilter(formValues: Partial<ProcessFilterCloudModel>) {\n        if (isValid(formValues.lastModifiedTo)) {\n            formValues.lastModifiedTo = endOfDay(formValues.lastModifiedTo);\n        }\n    }\n\n    private setLastModifiedFromFilter(formValues: Partial<ProcessFilterCloudModel>) {\n        if (isValid(formValues.lastModifiedFrom)) {\n            formValues.lastModifiedFrom = startOfDay(formValues.lastModifiedFrom);\n        }\n    }\n\n    private createFilterActions(): ProcessFilterAction[] {\n        return [\n            {\n                actionType: PROCESS_FILTER_ACTION_SAVE,\n                icon: 'adf:save',\n                tooltip: 'ADF_CLOUD_EDIT_PROCESS_FILTER.TOOL_TIP.SAVE'\n            },\n            {\n                actionType: PROCESS_FILTER_ACTION_SAVE_AS,\n                icon: 'adf:save-as',\n                tooltip: 'ADF_CLOUD_EDIT_PROCESS_FILTER.TOOL_TIP.SAVE_AS'\n            },\n            {\n                actionType: PROCESS_FILTER_ACTION_DELETE,\n                icon: 'delete',\n                tooltip: 'ADF_CLOUD_EDIT_PROCESS_FILTER.TOOL_TIP.DELETE'\n            },\n            {\n                actionType: PROCESS_FILTER_ACTION_SAVE_DEFAULT,\n                icon: 'adf:save',\n                tooltip: 'ADF_CLOUD_EDIT_PROCESS_FILTER.TOOL_TIP.SAVE'\n            },\n            {\n                actionType: PROCESS_FILTER_ACTION_RESTORE,\n                icon: 'settings_backup_restore',\n                tooltip: 'ADF_CLOUD_EDIT_PROCESS_FILTER.TOOL_TIP.RESTORE'\n            }\n        ];\n    }\n\n    private createLastModifiedProperty(filterModel: ProcessFilterCloudModel): ProcessFilterProperties[] {\n        return [\n            {\n                label: 'ADF_CLOUD_EDIT_PROCESS_FILTER.LABEL.LAST_MODIFIED_DATE_FORM',\n                type: 'date',\n                key: 'lastModifiedFrom',\n                value: filterModel.lastModifiedFrom\n            },\n            {\n                label: 'ADF_CLOUD_EDIT_PROCESS_FILTER.LABEL.LAST_MODIFIED_TO',\n                type: 'date',\n                key: 'lastModifiedTo',\n                value: filterModel.lastModifiedTo\n            }\n        ];\n    }\n\n    private createProcessSortProperties(): ProcessSortFilterProperty[] {\n        return [\n            {\n                label: 'ADF_CLOUD_EDIT_PROCESS_FILTER.LABEL.ID',\n                key: 'id',\n                value: 'id'\n            },\n            {\n                label: 'EnvironmentId',\n                key: 'environmentId',\n                value: 'environmentId'\n            },\n            {\n                label: 'ADF_CLOUD_EDIT_PROCESS_FILTER.LABEL.PROCESS_NAME',\n                key: 'name',\n                value: 'name'\n            },\n            {\n                label: 'ADF_CLOUD_EDIT_PROCESS_FILTER.LABEL.START_DATE',\n                key: 'startDate',\n                value: 'startDate'\n            },\n            {\n                label: 'ADF_CLOUD_EDIT_PROCESS_FILTER.LABEL.STATUS',\n                key: 'status',\n                value: 'status'\n            },\n            {\n                label: 'ADF_CLOUD_EDIT_PROCESS_FILTER.LABEL.STARTED_BY',\n                key: 'initiator',\n                value: 'initiator'\n            },\n            {\n                label: 'ADF_CLOUD_EDIT_PROCESS_FILTER.LABEL.APP_NAME',\n                key: 'appName',\n                value: 'appName'\n            },\n            {\n                label: 'ADF_CLOUD_EDIT_PROCESS_FILTER.LABEL.APP_VERSION',\n                key: 'appVersion',\n                value: 'appVersion'\n            },\n            {\n                label: 'ADF_CLOUD_EDIT_PROCESS_FILTER.LABEL.MAIN_PROCESS_ID',\n                key: 'parentId',\n                value: 'parentId'\n            },\n            {\n                label: 'ADF_CLOUD_EDIT_PROCESS_FILTER.LABEL.PROCESS_INS_ID',\n                key: 'processInstanceId',\n                value: 'processInstanceId'\n            },\n            {\n                label: 'ADF_CLOUD_EDIT_PROCESS_FILTER.LABEL.PROCESS_DEF_ID',\n                key: 'processDefinitionId',\n                value: 'processDefinitionId'\n            },\n            {\n                label: 'ADF_CLOUD_EDIT_PROCESS_FILTER.LABEL.PROCESS_DEF_NAME',\n                key: 'processDefinitionName',\n                value: 'processDefinitionName'\n            },\n            {\n                label: 'ADF_CLOUD_EDIT_PROCESS_FILTER.LABEL.PROCESS_DEF_KEY',\n                key: 'processDefinitionKey',\n                value: 'processDefinitionKey'\n            },\n            {\n                label: 'ADF_CLOUD_EDIT_PROCESS_FILTER.LABEL.LAST_MODIFIED',\n                key: 'lastModified',\n                value: 'lastModified'\n            },\n            {\n                label: 'ADF_CLOUD_EDIT_PROCESS_FILTER.LABEL.BUSINESS_KEY',\n                key: 'businessKey',\n                value: 'businessKey'\n            }\n        ];\n    }\n\n    private isFilterChanged(oldValue: ProcessFilterCloudModel, newValue: ProcessFilterCloudModel): boolean {\n        const oldJson = JSON.stringify(this.processFilterCloudService.writeQueryParams(oldValue || {}, this.filterProperties));\n        const newJson = JSON.stringify(this.processFilterCloudService.writeQueryParams(newValue || {}, this.filterProperties));\n\n        return oldJson !== newJson;\n    }\n\n    private createProcessFilterProperties(filterModel: ProcessFilterCloudModel): ProcessFilterProperties[] {\n        const appVersionMultiple = [];\n\n        if (filterModel.appVersion) {\n            appVersionMultiple.push(\n                Array.isArray(filterModel.appVersion) ? filterModel.appVersion.map((entry) => entry.toString()) : `${filterModel.appVersion}`\n            );\n        }\n\n        return [\n            {\n                label: 'ADF_CLOUD_EDIT_PROCESS_FILTER.LABEL.APP_NAME',\n                type: 'select',\n                key: 'appName',\n                value: filterModel.appName || '',\n                options: this.applicationNames\n            },\n            {\n                label: 'ADF_CLOUD_EDIT_PROCESS_FILTER.LABEL.APP_VERSION',\n                type: 'number',\n                key: 'appVersion',\n                value: filterModel.appVersion\n            },\n            {\n                label: 'ADF_CLOUD_EDIT_PROCESS_FILTER.LABEL.APP_VERSION',\n                type: 'multi-select',\n                key: 'appVersionMultiple',\n                value: appVersionMultiple,\n                options: this.appVersionOptions\n            },\n            {\n                label: 'ADF_CLOUD_EDIT_PROCESS_FILTER.LABEL.PROCESS_INS_ID',\n                type: 'text',\n                key: 'processInstanceId',\n                value: filterModel.processInstanceId || ''\n            },\n            {\n                label: 'ADF_CLOUD_EDIT_PROCESS_FILTER.LABEL.MAIN_PROCESS_ID',\n                type: 'text',\n                key: 'parentId',\n                value: filterModel.parentId\n            },\n            {\n                label: 'ADF_CLOUD_EDIT_PROCESS_FILTER.LABEL.PROCESS_NAME',\n                type: 'text',\n                key: 'processName',\n                value: filterModel.processName || ''\n            },\n            {\n                label: 'ADF_CLOUD_EDIT_PROCESS_FILTER.LABEL.PROCESS_DEF_NAME',\n                type: 'select',\n                key: 'processDefinitionName',\n                value: filterModel.processDefinitionName || '',\n                options: this.processDefinitionNames\n            },\n            {\n                label: 'ADF_CLOUD_EDIT_PROCESS_FILTER.LABEL.STATUS',\n                type: 'select',\n                key: 'status',\n                value: filterModel.status || this.status[0].value,\n                options: this.status\n            },\n            {\n                label: 'ADF_CLOUD_EDIT_PROCESS_FILTER.LABEL.PROCESS_DEF_ID',\n                type: 'text',\n                key: 'processDefinitionId',\n                value: filterModel.processDefinitionId || ''\n            },\n            {\n                label: 'ADF_CLOUD_EDIT_PROCESS_FILTER.LABEL.PROCESS_DEF_KEY',\n                type: 'text',\n                key: 'processDefinitionKey',\n                value: filterModel.processDefinitionKey || ''\n            },\n            {\n                label: 'ADF_CLOUD_EDIT_PROCESS_FILTER.LABEL.SORT',\n                type: 'select',\n                key: 'sort',\n                value: filterModel.sort || this.createSortProperties[0].value,\n                options: this.createSortProperties\n            },\n            {\n                label: 'ADF_CLOUD_EDIT_PROCESS_FILTER.LABEL.DIRECTION',\n                type: 'select',\n                key: 'order',\n                value: filterModel.order || this.directions[0].value,\n                options: this.directions\n            },\n            {\n                label: 'ADF_CLOUD_EDIT_PROCESS_FILTER.LABEL.COMPLETED_DATE',\n                type: 'date',\n                key: 'completedDate',\n                value: filterModel.completedDate || false\n            },\n            {\n                label: 'ADF_CLOUD_EDIT_PROCESS_FILTER.LABEL.STARTED_BY',\n                type: 'people',\n                key: 'initiator',\n                value: filterModel.initiator,\n                selectionMode: 'multiple'\n            },\n            {\n                label: 'ADF_CLOUD_EDIT_PROCESS_FILTER.LABEL.COMPLETED_DATE',\n                type: 'date-range',\n                key: 'completedDateRange',\n                attributes: { dateType: 'completedDateType', from: '_completedFrom', to: '_completedTo' },\n                value: {\n                    completedDateType: filterModel.completedDateType || null,\n                    _completedFrom: filterModel.completedFrom || null,\n                    _completedTo: filterModel.completedTo || null\n                }\n            },\n            {\n                label: 'ADF_CLOUD_EDIT_PROCESS_FILTER.LABEL.STARTED_DATE',\n                type: 'date-range',\n                key: 'startedDateRange',\n                attributes: { dateType: 'startedDateType', from: '_startFrom', to: '_startTo' },\n                value: {\n                    startedDateType: filterModel.startedDateType || null,\n                    _startFrom: filterModel.startFrom || null,\n                    _startTo: filterModel.startTo || null\n                }\n            },\n            {\n                label: 'ADF_CLOUD_EDIT_PROCESS_FILTER.LABEL.SUSPENDED_DATE',\n                type: 'date-range',\n                key: 'suspendedDateRange',\n                attributes: { dateType: 'suspendedDateType', from: '_suspendedFrom', to: '_suspendedTo' },\n                value: {\n                    suspendedDateType: filterModel.suspendedDateType || null,\n                    _suspendedFrom: filterModel.suspendedFrom || null,\n                    _suspendedTo: filterModel.suspendedTo || null\n                }\n            }\n        ];\n    }\n}\n","<mat-accordion [hideToggle]=\"isLoading\" class=\"adf-edit-process-filter\">\n    <mat-expansion-panel (afterExpand)=\"onExpand()\" (closed)=\"onClose()\">\n        <mat-expansion-panel-header *ngIf=\"processFilter\" id=\"adf-edit-process-filter-expansion-header\" class=\"adf-edit-process-filter-header\">\n            <ng-container *ngIf=\"!isLoading; else loadingTemplate\">\n                <mat-panel-title *ngIf=\"showProcessFilterName\" id=\"adf-edit-process-filter-title-id\" class=\"adf-edit-process-filter-header__title\">\n                    {{processFilter.name | translate}}</mat-panel-title>\n                <mat-panel-description  class=\"adf-edit-process-filter-header__description\" id=\"adf-edit-process-filter-sub-title-id\">\n                    <span *ngIf=\"showTitle\"> {{ 'ADF_CLOUD_EDIT_PROCESS_FILTER.TITLE' | translate}}</span>\n                    <div *ngIf=\"showFilterActions\" class=\"adf-cloud-edit-process-filter-actions\">\n                        <ng-container *ngIf=\"toggleFilterActions\">\n                            <button *ngFor=\"let filterAction of processFilterActions\"\n                                    mat-icon-button\n                                    [title]=\"filterAction.tooltip | translate\"\n                                    [attr.data-automation-id]=\"'adf-filter-action-' + filterAction.actionType\"\n                                    [disabled]=\"isDisabledAction(filterAction)\"\n                                    (click)=\"executeFilterActions($event, filterAction)\">\n                                <adf-icon [value]=\"filterAction.icon\" />\n                            </button>\n                        </ng-container>\n                    </div>\n                </mat-panel-description>\n            </ng-container>\n            <ng-template #loadingTemplate>\n                <div class=\"adf-cloud-edit-process-filter-loading-margin\">\n                    <mat-spinner [diameter]=\"30\" />\n                </div>\n            </ng-template>\n        </mat-expansion-panel-header>\n        <ng-container *ngIf=\"!isLoading\">\n            <form [formGroup]=\"editProcessFilterForm\" *ngIf=\"editProcessFilterForm\" class=\"adf-edit-process-filter-content\">\n                <div class=\"adf-edit-process-filter-form\">\n                    <ng-container *ngFor=\"let processFilterProperty of processFilterProperties; trackBy: filterTracker\">\n                        <mat-form-field [floatLabel]=\"'auto'\" *ngIf=\"processFilterProperty.type === 'select'\" [attr.data-automation-id]=\"processFilterProperty.key\">\n                            <mat-label class=\"adf-edit-process-filter-content__select-label\">{{processFilterProperty.label | translate}}</mat-label>\n                            <mat-select\n                                [formControlName]=\"processFilterProperty.key\"\n                                [attr.data-automation-id]=\"'adf-cloud-edit-process-property-' + processFilterProperty.key\">\n                                <mat-option\n                                    *ngFor=\"let propertyOption of processFilterProperty.options\"\n                                    [value]=\"propertyOption.value\"\n                                    [attr.data-automation-id]=\"'adf-cloud-edit-process-property-options-' + processFilterProperty.key\"\n                                >{{ propertyOption.label | translate }}</mat-option>\n                            </mat-select>\n                        </mat-form-field>\n                        <mat-form-field [floatLabel]=\"'auto'\" *ngIf=\"processFilterProperty.type === 'multi-select'\" [attr.data-automation-id]=\"processFilterProperty.key\">\n                            <mat-label class=\"adf-edit-process-filter-content__select-label\">{{processFilterProperty.label | translate}}</mat-label>\n                            <mat-select\n                                [formControlName]=\"processFilterProperty.key\"\n                                [attr.data-automation-id]=\"'adf-cloud-edit-process-property-' + processFilterProperty.key\"\n                                [multiple]=\"true\">\n                                <mat-option *ngFor=\"let propertyOption of processFilterProperty.options\" [value]=\"propertyOption.value\" [attr.data-automation-id]=\"'adf-cloud-edit-process-property-options-' + processFilterProperty.key\">\n                                    {{ propertyOption.label | translate }}\n                                </mat-option>\n                            </mat-select>\n                        </mat-form-field>\n                        <mat-form-field [floatLabel]=\"'auto'\" *ngIf=\"processFilterProperty.type === 'text'\" [attr.data-automation-id]=\"processFilterProperty.key\">\n                            <mat-label class=\"adf-edit-process-filter-content__text-label\">{{processFilterProperty.label | translate}}</mat-label>\n                            <input matInput\n                                [formControlName]=\"processFilterProperty.key\"\n                                type=\"text\"\n                                [attr.data-automation-id]=\"'adf-cloud-edit-process-property-' + processFilterProperty.key\"/>\n                        </mat-form-field>\n                        <mat-form-field [floatLabel]=\"'auto'\" *ngIf=\"processFilterProperty.type === 'number'\" [attr.data-automation-id]=\"processFilterProperty.key\">\n                            <input matInput\n                                [formControlName]=\"processFilterProperty.key\"\n                                type=\"number\" min=\"0\"\n                                placeholder=\"{{processFilterProperty.label | translate}}\"\n                                [attr.data-automation-id]=\"'adf-cloud-edit-process-property-' + processFilterProperty.key\"/>\n                        </mat-form-field>\n                        <mat-form-field [floatLabel]=\"'auto'\" *ngIf=\"processFilterProperty.type === 'date'\" [attr.data-automation-id]=\"processFilterProperty.key\">\n                            <mat-label>{{processFilterProperty.label | translate}}</mat-label>\n                            <input\n                                matInput\n                                [formControlName]=\"processFilterProperty.key\"\n                                (keyup)=\"onDateChanged($any($event).target.value, processFilterProperty)\"\n                                (dateChange)=\"onDateChanged($event.value, processFilterProperty)\"\n                                [matDatepicker]=\"dateController\"\n                                placeholder=\"{{processFilterProperty.label | translate}}\"\n                                [attr.data-automation-id]=\"'adf-cloud-edit-process-property-' + processFilterProperty.key\">\n                            <mat-datepicker-toggle\n                                matSuffix [for]=\"dateController\"\n                               [attr.data-automation-id]=\"'adf-cloud-edit-process-property-date-toggle-' + processFilterProperty.key\" />\n                            <mat-datepicker #dateController [attr.data-automation-id]=\"'adf-cloud-edit-process-property-date-picker-' + processFilterProperty.key\" />\n                            <div class=\"adf-edit-process-filter-date-error-container\">\n                                <div *ngIf=\"hasError(processFilterProperty)\">\n                                    <div class=\"adf-error-text\">{{'ADF_CLOUD_EDIT_PROCESS_FILTER.ERROR.DATE' | translate}}</div>\n                                    <mat-icon class=\"adf-error-icon\">warning</mat-icon>\n                                </div>\n                            </div>\n                        </mat-form-field>\n\n                        <adf-cloud-date-range-filter *ngIf=\"processFilterProperty.type === 'date-range'\"\n                            [processFilterProperty]=\"processFilterProperty\"\n                            [options]=\"processFilterProperty.dateFilterOptions\"\n                            (dateTypeChange)=\"onDateTypeChange($event, processFilterProperty)\"\n                            (dateChanged)=\"onDateRangeFilterChanged($event, processFilterProperty)\" />\n                        <adf-cloud-people\n                            *ngIf=\"processFilterProperty.type === 'people'\"\n                            [preSelectUsers]=\"initiatorOptions\"\n                            [title]=\"processFilterProperty.label\"\n                            [validate]=\"true\"\n                            [appName]=\"appName\"\n                            [mode]=\"processFilterProperty.selectionMode\"\n                            (changedUsers)=\"onChangedUser($event, processFilterProperty)\" />\n                    </ng-container>\n                </div>\n            </form>\n        </ng-container>\n    </mat-expansion-panel>\n</mat-accordion>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 } from '@angular/core';\nimport { ProcessFiltersCloudComponent } from './components/process-filters/process-filters-cloud.component';\nimport { EditProcessFilterCloudComponent } from './components/edit-process-filter/edit-process-filter-cloud.component';\nimport { ProcessFilterDialogCloudComponent } from './components/process-filter-dialog/process-filter-dialog-cloud.component';\n\nexport const PROCESS_FILTERS_CLOUD_DIRECTIVES = [\n    ProcessFiltersCloudComponent,\n    EditProcessFilterCloudComponent,\n    ProcessFilterDialogCloudComponent\n] as const;\n\n/** @deprecated use standalone components or PROCESS_FILTERS_CLOUD_DIRECTIVES instead */\n@NgModule({\n    imports: [...PROCESS_FILTERS_CLOUD_DIRECTIVES],\n    exports: [...PROCESS_FILTERS_CLOUD_DIRECTIVES]\n})\nexport class ProcessFiltersCloudModule {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 processCloudPresetsDefaultModel = {\n    default: [\n        {\n            id: 'id',\n            key: 'name',\n            type: 'text',\n            title: 'ADF_CLOUD_PROCESS_LIST.PROPERTIES.NAME',\n            sortable: true\n        },\n        {\n            id: 'startDate',\n            key: 'startDate',\n            type: 'date',\n            title: 'ADF_CLOUD_PROCESS_LIST.PROPERTIES.START_DATE',\n            cssClass: 'hidden',\n            sortable: true,\n            format: 'timeAgo'\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-next-line no-shadow\nexport enum ProcessListCloudPreferences {\n    columnOrder = 'processes-cloud-list-columns-order',\n    columnsVisibility = 'processes-cloud-columns-visibility',\n    columnsWidths = 'processes-cloud-columns-widths'\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 { DataColumn, DataRow, ObjectDataTableAdapter } from '@alfresco/adf-core';\nimport { ProcessListDataColumnCustomData, PROCESS_LIST_CUSTOM_VARIABLE_COLUMN } from '../../../models/data-column-custom-data';\nimport { ProcessInstanceCloudListViewModel } from '../models/perocess-instance-cloud-view.model';\n\nexport class ProcessListDatatableAdapter extends ObjectDataTableAdapter {\n    constructor(data: ProcessInstanceCloudListViewModel[], schema: DataColumn<ProcessListDataColumnCustomData>[]) {\n        super(data, schema, 'server');\n    }\n\n    getColumnType(row: DataRow, col: DataColumn<ProcessListDataColumnCustomData>): string {\n        if (col.customData?.columnType === PROCESS_LIST_CUSTOM_VARIABLE_COLUMN) {\n            const columnType = row.obj.variablesMap?.[col.id]?.type;\n            return columnType ?? 'text';\n        }\n\n        return super.getColumnType(row, col);\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    AfterContentInit,\n    Component,\n    ContentChild,\n    EventEmitter,\n    Inject,\n    Input,\n    OnChanges,\n    Output,\n    SimpleChanges,\n    ViewChild,\n    ViewEncapsulation\n} from '@angular/core';\nimport {\n    AppConfigService,\n    ColumnsSelectorComponent,\n    CustomEmptyContentTemplateDirective,\n    CustomLoadingContentTemplateDirective,\n    DataCellEvent,\n    DataColumn,\n    DataRowActionEvent,\n    DataRowEvent,\n    DataTableComponent,\n    DataTableSchema,\n    EmptyContentComponent,\n    LoadingContentTemplateDirective,\n    MainMenuDataTableTemplateDirective,\n    NoContentTemplateDirective,\n    PaginatedComponent,\n    PaginationModel,\n    UserPreferencesService,\n    UserPreferenceValues\n} from '@alfresco/adf-core';\nimport { ProcessListCloudService } from '../services/process-list-cloud.service';\nimport { BehaviorSubject, combineLatest, of, Subject, throwError } from 'rxjs';\nimport { processCloudPresetsDefaultModel } from '../models/process-cloud-preset.model';\nimport { ProcessListRequestModel, ProcessQueryCloudRequestModel } from '../models/process-cloud-query-request.model';\nimport { ProcessListCloudSortingModel, ProcessListRequestSortingModel } from '../models/process-list-sorting.model';\nimport { catchError, filter, map, switchMap, take, tap } from 'rxjs/operators';\nimport { PreferenceCloudServiceInterface } from '../../../services/preference-cloud.interface';\nimport { PROCESS_LISTS_PREFERENCES_SERVICE_TOKEN } from '../../../services/cloud-token.service';\nimport { ProcessListCloudPreferences } from '../models/process-cloud-preferences';\nimport { ProcessListDatatableAdapter } from '../datatable/process-list-datatable-adapter';\nimport { PROCESS_LIST_CUSTOM_VARIABLE_COLUMN, ProcessListDataColumnCustomData } from '../../../models/data-column-custom-data';\nimport { VariableMapperService } from '../../../services/variable-mapper.sevice';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ProcessVariableFilterModel } from '../../../models/process-variable-filter.model';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { NgIf } from '@angular/common';\n\nconst PRESET_KEY = 'adf-cloud-process-list.presets';\n\n/* eslint-disable @typescript-eslint/brace-style */\n\n@Component({\n    selector: 'adf-cloud-process-list',\n    imports: [\n        DataTableComponent,\n        MatProgressSpinnerModule,\n        TranslatePipe,\n        ColumnsSelectorComponent,\n        MainMenuDataTableTemplateDirective,\n        EmptyContentComponent,\n        NoContentTemplateDirective,\n        LoadingContentTemplateDirective,\n        NgIf\n    ],\n    templateUrl: './process-list-cloud.component.html',\n    styleUrls: ['./process-list-cloud.component.scss'],\n    encapsulation: ViewEncapsulation.None\n})\nexport class ProcessListCloudComponent\n    extends DataTableSchema<ProcessListDataColumnCustomData>\n    implements OnChanges, AfterContentInit, PaginatedComponent\n{\n    @ViewChild(DataTableComponent) dataTable: DataTableComponent;\n\n    @ContentChild(CustomEmptyContentTemplateDirective)\n    emptyCustomContent: CustomEmptyContentTemplateDirective;\n\n    @ContentChild(CustomLoadingContentTemplateDirective)\n    customLoadingContent: CustomLoadingContentTemplateDirective;\n\n    /** The name of the application. */\n    @Input()\n    appName: string = '';\n\n    /** The version of the application. */\n    @Input()\n    appVersion: number | number[];\n\n    /** Name of the initiator of the process. */\n    @Input()\n    initiator: string = '';\n\n    /** Filter the processes to display only the ones with this ID. */\n    @Input()\n    id: string = '';\n\n    /** Filter the processes to display only the ones with this environment ID. */\n    @Input()\n    environmentId: string;\n\n    /** Filter the processes to display only the ones with this name. */\n    @Input()\n    name: string = '';\n\n    /** Filter the processes to display only the ones with this parentId. */\n    @Input()\n    parentId?: string;\n\n    /** Filter the processes to display only the ones with this process definition ID. */\n    @Input()\n    processDefinitionId: string = '';\n\n    /** Filter the processes to display only the ones with this process definition name. */\n    @Input()\n    processDefinitionName: string = '';\n\n    /** Filter the processes to display only the ones with this process definition key. */\n    @Input()\n    processDefinitionKey: string = '';\n\n    /** Filter the processes to display only the ones with this status. */\n    @Input()\n    status: string = '';\n\n    /** Filter the processes to display only the ones with this businessKey value. */\n    @Input()\n    businessKey: string = '';\n\n    /** Filter the processes. Display only process with lastModifiedTo equal to the supplied date. */\n    @Input()\n    lastModifiedFrom: Date;\n\n    /** Filter the processes. Display only process with lastModifiedTo equal to the supplied date. */\n    @Input()\n    lastModifiedTo: Date;\n\n    /** Filter the processes. Display only process with startedDate greater then the supplied date. */\n    @Input()\n    startFrom: string = '';\n\n    /** Filter the processes. Display only process with startedDate less than the supplied date. */\n    @Input()\n    startTo: string = '';\n\n    /** Filter the processes. Display only process with completedFrom equal to the supplied date. */\n    @Input()\n    completedFrom: string = '';\n\n    /** Filter the processes. Display only process with completedTo equal to the supplied date. */\n    @Input()\n    completedTo: string = '';\n\n    /** Filter the processes. Display only process with completedDate equal to the supplied date. */\n    @Input()\n    completedDate: string = '';\n\n    /** Filter the processes. Display only process with suspendedFrom equal to the supplied date. */\n    @Input()\n    suspendedFrom: string = '';\n\n    /** Filter the processes. Display only process with suspendedTo equal to the supplied date. */\n    @Input()\n    suspendedTo: string = '';\n\n    /**\n     * Row selection mode. Can be \"none\", \"single\" or \"multiple\".\n     * For multiple mode, you can use Cmd (macOS) or Ctrl (Win) modifier\n     * key to toggle selection for multiple rows.\n     */\n    @Input()\n    selectionMode: string = 'single'; // none|single|multiple\n\n    /** Toggles multiple row selection and renders checkboxes at the beginning of each row */\n    @Input()\n    multiselect: boolean = false;\n\n    /**\n     * Array of objects specifying the sort order and direction for the\n     * list. The sort parameters are for BE sorting.\n     */\n    @Input()\n    sorting: ProcessListCloudSortingModel[];\n\n    /** Toggles the data actions column. */\n    @Input()\n    showActions: boolean = false;\n\n    /** Toggles the provided actions. */\n    @Input()\n    showProvidedActions: boolean = false;\n\n    /** Position of the actions dropdown menu. Can be \"left\" or \"right\". */\n    @Input()\n    actionsPosition: string = 'right'; // left|right\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    /** Toggle main datatable actions. */\n    @Input()\n    showMainDatatableActions: boolean = false;\n\n    /** Toggles main datatable column resizing feature. */\n    @Input()\n    isResizingEnabled: boolean = false;\n\n    /** From Activiti 8.7.0 forward, use 'POST' value and array inputs to enable advanced filtering. */\n    @Input()\n    searchApiMethod: 'GET' | 'POST' = 'GET';\n\n    /**\n     * Filter the processes. Display only processes with names matching any of the supplied strings.\n     * This input will be used only if searchApiMethod input is provided with 'POST' value.\n     */\n    @Input()\n    names: string[] = [];\n\n    /**\n     * Filter the processes. Display only processes with instance Ids matching any of the supplied strings.\n     * This input will be used only if searchApiMethod input is provided with 'POST' value.\n     */\n    @Input()\n    ids: string[] = [];\n\n    /**\n     * Filter the processes. Display only processes with parent Ids matching any of the supplied strings.\n     * This input will be used only if searchApiMethod input is provided with 'POST' value.\n     */\n    @Input()\n    parentIds: string[] = [];\n\n    /**\n     * Filter the processes. Display only processes with definition names matching any of the supplied strings.\n     * This input will be used only if searchApiMethod input is provided with 'POST' value.\n     */\n    @Input()\n    processDefinitionNames: string[] = [];\n\n    /**\n     * Filter the processes. Display only processes started by any of the users whose usernames are present in the array.\n     * This input will be used only if searchApiMethod input is provided with 'POST' value.\n     */\n    @Input()\n    initiators: string[] = [];\n\n    /**\n     * Filter the processes. Display only processes present in any of the specified app versions.\n     * This input will be used only if searchApiMethod input is provided with 'POST' value.\n     */\n    @Input()\n    appVersions: string[] = [];\n\n    /**\n     * Filter the processes. Display only processes with provided statuses.\n     * This input will be used only if searchApiMethod input is provided with 'POST' value.\n     */\n    @Input()\n    statuses: string[] = [];\n\n    /**\n     * Filter the processes. Display only processes with specific process variables.\n     * This input will be used only if searchApiMethod input is provided with 'POST' value.\n     */\n    @Input()\n    processVariables: ProcessVariableFilterModel[];\n\n    /** Emitted when a row in the process list is clicked. */\n    @Output()\n    rowClick: EventEmitter<string> = new EventEmitter<string>();\n\n    /** Emitted when rows are selected/unselected. */\n    @Output()\n    rowsSelected = new EventEmitter<any[]>();\n\n    /** Emitted before the context menu is displayed for a row. */\n    @Output()\n    showRowContextMenu = new EventEmitter<DataCellEvent>();\n\n    /** Emitted before the actions menu is displayed for a row. */\n    @Output()\n    showRowActionsMenu = new EventEmitter<DataCellEvent>();\n\n    /** Emitted when the user executes a row action. */\n    @Output()\n    executeRowAction = new EventEmitter<DataRowActionEvent>();\n\n    /** Emitted when an error occurs while loading the list of process instances from the server. */\n    @Output()\n    error = new EventEmitter<any>();\n\n    /** Emitted when the list of process instances has been loaded successfully from the server. */\n    @Output()\n    success = new EventEmitter<any>();\n\n    pagination: BehaviorSubject<PaginationModel>;\n    size: number;\n    skipCount: number = 0;\n    currentInstanceId: string;\n    selectedInstances: any[];\n    isLoading = true;\n\n    rows: any[] = [];\n    formattedSorting: any[];\n    requestNode: ProcessQueryCloudRequestModel;\n    processListRequestNode: ProcessListRequestModel;\n    dataAdapter: ProcessListDatatableAdapter;\n\n    private defaultSorting = { key: 'startDate', direction: 'desc' };\n\n    private fetchProcessesTrigger$ = new Subject<void>();\n\n    constructor(\n        private processListCloudService: ProcessListCloudService,\n        appConfigService: AppConfigService,\n        private userPreferences: UserPreferencesService,\n        @Inject(PROCESS_LISTS_PREFERENCES_SERVICE_TOKEN) private cloudPreferenceService: PreferenceCloudServiceInterface,\n        private variableMapperService: VariableMapperService\n    ) {\n        super(appConfigService, PRESET_KEY, processCloudPresetsDefaultModel);\n        this.size = userPreferences.paginationSize;\n        this.userPreferences.select(UserPreferenceValues.PaginationSize).subscribe((pageSize) => {\n            this.size = pageSize;\n        });\n        this.pagination = new BehaviorSubject<PaginationModel>({\n            maxItems: this.size,\n            skipCount: 0,\n            totalItems: 0\n        });\n\n        combineLatest([this.isColumnSchemaCreated$, this.fetchProcessesTrigger$])\n            .pipe(\n                tap(() => (this.isLoading = true)),\n                filter(([isColumnSchemaCreated]) => isColumnSchemaCreated),\n                switchMap(() => {\n                    if (this.searchApiMethod === 'POST') {\n                        const requestNode = this.createProcessListRequestNode();\n                        this.processListRequestNode = requestNode;\n                        return this.processListCloudService.fetchProcessList(requestNode).pipe(take(1));\n                    } else {\n                        const requestNode = this.createRequestNode();\n                        this.requestNode = requestNode;\n                        return this.processListCloudService.getProcessByRequest(requestNode).pipe(take(1));\n                    }\n                }),\n                takeUntilDestroyed()\n            )\n            .subscribe({\n                next: (processes) => {\n                    this.rows = this.variableMapperService.mapVariablesByColumnTitle(processes.list.entries, this.columns);\n\n                    this.dataAdapter = new ProcessListDatatableAdapter(this.rows, this.columns);\n\n                    this.success.emit(processes);\n                    this.isLoading = false;\n                    this.pagination.next(processes.list.pagination);\n                },\n                error: (error) => {\n                    console.error(error);\n                    this.error.emit(error);\n                    this.isLoading = false;\n                }\n            });\n    }\n\n    ngAfterContentInit() {\n        this.cloudPreferenceService\n            .getPreferences(this.appName)\n            .pipe(\n                take(1),\n                map((preferences) => {\n                    const preferencesList = preferences?.list?.entries || [];\n                    const columnsOrder = preferencesList.find((preference) => preference.entry.key === ProcessListCloudPreferences.columnOrder);\n                    const columnsVisibility = preferencesList.find(\n                        (preference) => preference.entry.key === ProcessListCloudPreferences.columnsVisibility\n                    );\n                    const columnsWidths = preferencesList.find((preference) => preference.entry.key === ProcessListCloudPreferences.columnsWidths);\n\n                    return {\n                        columnsOrder: columnsOrder ? JSON.parse(columnsOrder.entry.value) : undefined,\n                        columnsVisibility: columnsVisibility ? JSON.parse(columnsVisibility.entry.value) : this.columnsVisibility,\n                        columnsWidths: columnsWidths ? JSON.parse(columnsWidths.entry.value) : undefined\n                    };\n                }),\n                catchError((error) => {\n                    if (error.status === 404) {\n                        return of({\n                            columnsOrder: undefined,\n                            columnsVisibility: this.columnsVisibility,\n                            columnsWidths: undefined\n                        });\n                    } else {\n                        return throwError(error);\n                    }\n                })\n            )\n            .subscribe(({ columnsOrder, columnsVisibility, columnsWidths }) => {\n                if (columnsVisibility) {\n                    this.columnsVisibility = columnsVisibility;\n                }\n\n                if (columnsOrder) {\n                    this.columnsOrder = columnsOrder;\n                }\n\n                if (columnsWidths) {\n                    this.columnsWidths = columnsWidths;\n                }\n\n                this.createDatatableSchema();\n            });\n    }\n    ngOnChanges(changes: SimpleChanges) {\n        if (this.isPropertyChanged(changes, 'sorting')) {\n            this.formatSorting(changes['sorting'].currentValue);\n        }\n\n        if (this.isAnyPropertyChanged(changes)) {\n            this.reload();\n        }\n    }\n\n    getCurrentId(): string {\n        return this.currentInstanceId;\n    }\n\n    reload() {\n        if (this.appName || this.appName === '') {\n            this.fetchProcessesTrigger$.next();\n        } else {\n            this.rows = [];\n        }\n    }\n\n    private isAnyPropertyChanged(changes: SimpleChanges): boolean {\n        for (const property in changes) {\n            if (this.isPropertyChanged(changes, property)) {\n                return true;\n            }\n        }\n        return false;\n    }\n\n    private isPropertyChanged(changes: SimpleChanges, property: string): boolean {\n        return Object.prototype.hasOwnProperty.call(changes, property);\n    }\n\n    isListEmpty(): boolean {\n        return !this.rows || this.rows.length === 0;\n    }\n\n    /**\n     * Resets the pagination values\n     */\n    resetPagination() {\n        this.skipCount = 0;\n        this.size = this.userPreferences.paginationSize;\n        this.pagination.next({\n            skipCount: 0,\n            maxItems: this.size\n        });\n    }\n\n    /**\n     * Resets the pagination values and\n     * Reloads the process list\n     *\n     * @param pagination Pagination values to be set\n     */\n    updatePagination(pagination: PaginationModel) {\n        this.size = pagination.maxItems;\n        this.skipCount = pagination.skipCount;\n        this.pagination.next(pagination);\n        this.reload();\n    }\n\n    onSortingChanged(event: CustomEvent) {\n        this.setSorting(event.detail);\n        this.formatSorting(this.sorting);\n        this.reload();\n    }\n\n    onColumnOrderChanged(columnsWithNewOrder: DataColumn[]): void {\n        this.columnsOrder = columnsWithNewOrder.map((column) => column.id);\n        this.createColumns();\n\n        if (this.appName) {\n            this.cloudPreferenceService.updatePreference(this.appName, ProcessListCloudPreferences.columnOrder, this.columnsOrder);\n        }\n    }\n\n    onColumnsVisibilityChange(columns: DataColumn[]): void {\n        this.columnsVisibility = columns.reduce((visibleColumnsMap, column) => {\n            if (column.isHidden !== undefined) {\n                visibleColumnsMap[column.id] = !column.isHidden;\n            }\n\n            return visibleColumnsMap;\n        }, {});\n\n        this.createColumns();\n        this.createDatatableSchema();\n\n        if (this.appName) {\n            this.cloudPreferenceService.updatePreference(this.appName, ProcessListCloudPreferences.columnsVisibility, this.columnsVisibility);\n        }\n    }\n\n    onColumnsWidthChanged(columns: DataColumn[]): void {\n        const newColumnsWidths = columns.reduce((widthsColumnsMap, column) => {\n            if (column.width) {\n                widthsColumnsMap[column.id] = Math.ceil(column.width);\n            }\n            return widthsColumnsMap;\n        }, {});\n\n        this.columnsWidths = { ...this.columnsWidths, ...newColumnsWidths };\n\n        this.createColumns();\n\n        if (this.appName) {\n            this.cloudPreferenceService.updatePreference(this.appName, ProcessListCloudPreferences.columnsWidths, this.columnsWidths);\n        }\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            this.currentInstanceId = event.detail.row.getValue('id');\n            this.rowClick.emit(this.currentInstanceId);\n        }\n    }\n\n    onShowRowActionsMenu(event: DataCellEvent) {\n        this.showRowActionsMenu.emit(event);\n    }\n\n    onShowRowContextMenu(event: DataCellEvent) {\n        this.showRowContextMenu.emit(event);\n    }\n\n    onExecuteRowAction(row: DataRowActionEvent) {\n        this.executeRowAction.emit(row);\n    }\n\n    private createProcessListRequestNode(): ProcessListRequestModel {\n        const requestNode: ProcessListRequestModel = {\n            appName: this.appName,\n            pagination: {\n                maxItems: this.size,\n                skipCount: this.skipCount\n            },\n            sorting: this.getProcessListRequestSorting(),\n            name: this.names,\n            id: this.ids,\n            parentId: this.parentIds,\n            processDefinitionName: this.processDefinitionNames,\n            initiator: this.initiators,\n            appVersion: this.appVersions,\n            status: this.statuses,\n            lastModifiedFrom: this.lastModifiedFrom?.toISOString() || '',\n            lasModifiedTo: this.lastModifiedTo?.toISOString() || '',\n            startFrom: this.startFrom,\n            startTo: this.startTo,\n            completedFrom: this.completedFrom,\n            completedTo: this.completedTo,\n            suspendedFrom: this.suspendedFrom,\n            suspendedTo: this.suspendedTo,\n            processVariableKeys: this.getVariableDefinitionsRequestModel(),\n            processVariableFilters: this.processVariables\n        };\n\n        return new ProcessListRequestModel(requestNode);\n    }\n\n    private getProcessListRequestSorting(): ProcessListRequestSortingModel {\n        if (!this.sorting?.length) {\n            return new ProcessListRequestSortingModel({\n                orderBy: this.defaultSorting.key,\n                direction: this.defaultSorting.direction,\n                isFieldProcessVariable: false\n            });\n        }\n\n        const orderBy = this.sorting[0]?.orderBy;\n        const direction = this.sorting[0]?.direction;\n        const orderByColumn = this.columnList?.columns.find((column) => column.key === orderBy);\n        const isFieldProcessVariable = orderByColumn?.customData?.columnType === 'process-variable-column';\n\n        if (isFieldProcessVariable) {\n            const processDefinitionKey = orderByColumn.customData.variableDefinitionsPayload[0].split('/')[0];\n            const variableName = orderByColumn.customData.variableDefinitionsPayload[0].split('/')[1];\n            return new ProcessListRequestSortingModel({\n                orderBy: variableName,\n                direction,\n                isFieldProcessVariable: true,\n                processVariableData: {\n                    processDefinitionKey,\n                    type: orderByColumn.customData.variableType\n                }\n            });\n        } else {\n            return new ProcessListRequestSortingModel({ orderBy, direction, isFieldProcessVariable: false });\n        }\n    }\n\n    private createRequestNode(): ProcessQueryCloudRequestModel {\n        const requestNode = {\n            appName: this.appName,\n            appVersion: this.getAppVersions(),\n            maxItems: this.size,\n            skipCount: this.skipCount,\n            initiator: this.initiator,\n            id: this.id,\n            environmentId: this.environmentId,\n            name: this.name,\n            parentId: this.parentId,\n            processDefinitionId: this.processDefinitionId,\n            processDefinitionName: this.processDefinitionName,\n            processDefinitionKey: this.processDefinitionKey,\n            status: this.status,\n            businessKey: this.businessKey,\n            lastModifiedFrom: this.lastModifiedFrom,\n            lastModifiedTo: this.lastModifiedTo,\n            startFrom: this.startFrom,\n            startTo: this.startTo,\n            completedFrom: this.completedFrom,\n            completedTo: this.completedTo,\n            suspendedFrom: this.suspendedFrom,\n            suspendedTo: this.suspendedTo,\n            completedDate: this.completedDate,\n            sorting: this.sorting,\n            variableKeys: this.getVariableDefinitionsRequestModel()\n        };\n\n        return new ProcessQueryCloudRequestModel(requestNode);\n    }\n\n    getAppVersions(): string {\n        return this.appVersion instanceof Array ? this.appVersion.join(',') : this.appVersion ? String(this.appVersion) : '';\n    }\n\n    setSorting(sortDetail) {\n        const sorting = sortDetail\n            ? {\n                  orderBy: sortDetail.key,\n                  direction: sortDetail.direction.toUpperCase()\n              }\n            : { ...this.defaultSorting };\n        this.sorting = [new ProcessListCloudSortingModel(sorting)];\n    }\n\n    formatSorting(sorting: ProcessListCloudSortingModel[]) {\n        this.formattedSorting = this.isValidSorting(sorting) ? [sorting[0].orderBy, sorting[0].direction.toLocaleLowerCase()] : null;\n    }\n\n    isValidSorting(sorting: ProcessListCloudSortingModel[]) {\n        return sorting.length && sorting[0].orderBy && sorting[0].direction;\n    }\n\n    private getVariableDefinitionsRequestModel(): string[] | undefined {\n        const displayedVariableColumns = this.columns\n            .filter((column) => column.customData?.columnType === PROCESS_LIST_CUSTOM_VARIABLE_COLUMN && column.isHidden !== true)\n            .map((column) => {\n                const variableDefinitionsPayload = column.customData.variableDefinitionsPayload;\n                return variableDefinitionsPayload;\n            })\n            .reduce((variablesPayload, payload) => [...variablesPayload, ...payload], []);\n\n        return displayedVariableColumns.length ? displayedVariableColumns : undefined;\n    }\n}\n","<adf-datatable\n        [rows]=\"rows\"\n        [columns]=\"columns\"\n        [data]=\"dataAdapter\"\n        [stickyHeader]=\"stickyHeader\"\n        [loading]=\"isLoading\"\n        [sorting]=\"formattedSorting\"\n        [selectionMode]=\"selectionMode\"\n        [multiselect]=\"multiselect\"\n        [actions]=\"showActions\"\n        [actionsPosition]=\"actionsPosition\"\n        [contextMenu]=\"showContextMenu\"\n        [showMainDatatableActions]=\"showMainDatatableActions\"\n        [showProvidedActions]=\"showProvidedActions\"\n        [isResizingEnabled]=\"isResizingEnabled\"\n        (showRowActionsMenu)=\"onShowRowActionsMenu($event)\"\n        (showRowContextMenu)=\"onShowRowContextMenu($event)\"\n        (executeRowAction)=\"onExecuteRowAction($event)\"\n        (rowClick)=\"onRowClick($any($event))\"\n        (row-select)=\"onRowSelect($any($event))\"\n        (row-unselect)=\"onRowUnselect($any($event))\"\n        (row-keyup)=\"onRowKeyUp($any($event))\"\n        (sorting-changed)=\"onSortingChanged($any($event))\"\n        (columnOrderChanged)=\"onColumnOrderChanged($event)\"\n        (columnsWidthChanged)=\"onColumnsWidthChanged($event)\"\n        >\n        <adf-loading-content-template>\n            <ng-template>\n                <mat-progress-spinner\n                    *ngIf=\"!customLoadingContent\"\n                    class=\"adf-cloud-process-list-loading-margin\"\n                    [color]=\"'primary'\"\n                    [mode]=\"'indeterminate'\" />\n                <ng-content select=\"adf-custom-loading-content-template\" />\n            </ng-template>\n        </adf-loading-content-template>\n        <adf-no-content-template>\n            <ng-template>\n                <adf-empty-content *ngIf=\"!emptyCustomContent\"\n                    icon=\"assessment\"\n                    [title]=\"'ADF_CLOUD_PROCESS_LIST.MESSAGES.TITLE' | translate\"\n                    [subtitle]=\"'ADF_CLOUD_PROCESS_LIST.MESSAGES.SUBTITLE'| translate\" />\n                <ng-content select=\"adf-custom-empty-content-template\" />\n            </ng-template>\n        </adf-no-content-template>\n\n        <adf-main-menu-datatable-template>\n            <ng-template let-mainMenuTrigger>\n                <adf-datatable-column-selector\n                    [columns]=\"columns\"\n                    [mainMenuTrigger]=\"mainMenuTrigger\"\n                    (submitColumnsVisibility)=\"onColumnsVisibilityChange($event)\" />\n            </ng-template>\n        </adf-main-menu-datatable-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 { NgModule } from '@angular/core';\nimport { ProcessListCloudComponent } from './components/process-list-cloud.component';\nimport { LocalPreferenceCloudService } from '../../services/local-preference-cloud.service';\nimport { PROCESS_LISTS_PREFERENCES_SERVICE_TOKEN } from '../../services/cloud-token.service';\n\n@NgModule({\n    imports: [ProcessListCloudComponent],\n    providers: [\n        {\n            provide: PROCESS_LISTS_PREFERENCES_SERVICE_TOKEN,\n            useClass: LocalPreferenceCloudService\n        }\n    ],\n    exports: [ProcessListCloudComponent]\n})\nexport class ProcessListCloudModule {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 class ProcessPayloadCloud {\n    processDefinitionKey: string;\n    name: string;\n    businessKey: string;\n    variables: any;\n    payloadType: string = 'StartProcessPayload';\n\n    constructor(obj?: any) {\n        this.processDefinitionKey = obj?.processDefinitionKey;\n        this.name = obj?.name;\n        this.businessKey = obj?.businessKey;\n        this.variables = obj?.variables || {};\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\nexport class ProcessWithFormPayloadCloud {\n    processName: string;\n    processDefinitionKey: string;\n    variables: any;\n    values: any;\n    outcome?: string;\n\n    constructor(obj: ProcessWithFormPayloadCloud) {\n        this.processName = obj.processName;\n        this.processDefinitionKey = obj.processDefinitionKey;\n        this.variables = obj.variables;\n        this.values = obj.values;\n        this.outcome = obj.outcome;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Observable, throwError } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { ProcessInstanceCloud } from '../models/process-instance-cloud.model';\nimport { ProcessPayloadCloud } from '../models/process-payload-cloud.model';\nimport { ProcessDefinitionCloud } from '../../../models/process-definition-cloud.model';\nimport { BaseCloudService } from '../../../services/base-cloud.service';\nimport { TaskVariableCloud } from '../../../form/models/task-variable-cloud.model';\n\nexport interface QueryParams {\n    include: 'variables';\n    excludedCategory?: string;\n}\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class StartProcessCloudService extends BaseCloudService {\n    /**\n     * Gets the process definitions associated with an app.\n     *\n     * @param appName Name of the target app\n     * @param queryParams optional query parameters\n     * @returns Array of process definitions\n     */\n    getProcessDefinitions(appName: string, queryParams?: QueryParams): Observable<ProcessDefinitionCloud[]> {\n        if (appName || appName === '') {\n            const url = `${this.getBasePath(appName)}/rb/v1/process-definitions`;\n\n            return this.get(url, queryParams).pipe(\n                map((res: any) => res.list.entries.map((processDefs) => new ProcessDefinitionCloud(processDefs.entry)))\n            );\n        } else {\n            return throwError('AppName not configured');\n        }\n    }\n\n    /**\n     * Starts a process based on a process definition, name, form values or variables.\n     *\n     * @param appName name of the Application\n     * @param payload Details of the process (definition key, name, variables, etc)\n     * @returns Details of the process instance just started\n     */\n    startProcess(appName: string, payload: ProcessPayloadCloud): Observable<ProcessInstanceCloud> {\n        const url = `${this.getBasePath(appName)}/rb/v1/process-instances`;\n        payload.payloadType = 'StartProcessPayload';\n\n        return this.post(url, payload).pipe(map((result: any) => result.entry));\n    }\n\n    startProcessWithForm(appName: string, formId: string, version: number, payload: any): Observable<ProcessInstanceCloud> {\n        const url = `${this.getBasePath(appName)}/form/v1/forms/${formId}/submit/versions/${version}`;\n        payload.payloadType = 'StartProcessPayload';\n\n        return this.post(url, payload);\n    }\n\n    /**\n     * Update an existing process instance\n     *\n     * @param appName name of the Application\n     * @param processInstanceId process instance to update\n     * @param payload Details of the process (definition key, name, variables, etc)\n     * @returns Details of the process instance just started\n     */\n    updateProcess(appName: string, processInstanceId: string, payload: ProcessPayloadCloud): Observable<ProcessInstanceCloud> {\n        const url = `${this.getBasePath(appName)}/rb/v1/process-instances/${processInstanceId}`;\n        payload.payloadType = 'UpdateProcessPayload';\n\n        return this.put(url, payload).pipe(map((processInstance: any) => processInstance.entry));\n    }\n\n    /**\n     * Delete an existing process instance\n     *\n     * @param appName Application name\n     * @param processInstanceId the identifier of the process instance to update\n     * @returns Observable<void>\n     */\n    deleteProcess(appName: string, processInstanceId: string): Observable<void> {\n        const url = `${this.getBasePath(appName)}/rb/v1/process-instances/${processInstanceId}`;\n\n        return this.delete(url);\n    }\n\n    /**\n     * Gets the static values mapped to the start form of a process definition.\n     *\n     * @param appName Name of the app\n     * @param processDefinitionId ID of the target process definition\n     * @returns Static mappings for the start event\n     */\n    getStartEventFormStaticValuesMapping(appName: string, processDefinitionId: string): Observable<TaskVariableCloud[]> {\n        const apiUrl = `${this.getBasePath(appName)}/rb/v1/process-definitions/${processDefinitionId}/static-values`;\n        return this.get(apiUrl).pipe(\n            map((res: { [key: string]: any }) => {\n                const result = [];\n                if (res) {\n                    Object.keys(res).forEach((mapping) => result.push(new TaskVariableCloud({ name: mapping, value: res[mapping] })));\n                }\n                return result;\n            })\n        );\n    }\n\n    /**\n     * Gets the constants mapped to the start form of a process definition.\n     *\n     * @param appName Name of the app\n     * @param processDefinitionId ID of the target process definition\n     * @returns Constants values for the start event\n     */\n    getStartEventConstants(appName: string, processDefinitionId: string): Observable<TaskVariableCloud[]> {\n        const apiUrl = `${this.getBasePath(appName)}/rb/v1/process-definitions/${processDefinitionId}/constant-values`;\n        return this.get(apiUrl).pipe(\n            map((res: { [key: string]: any }) => {\n                const result = [];\n                if (res) {\n                    Object.keys(res).forEach((constant) =>\n                        result.push(new TaskVariableCloud({ name: constant, value: res[constant], type: 'string' }))\n                    );\n                }\n                return result;\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    Component,\n    DestroyRef,\n    EventEmitter,\n    HostListener,\n    inject,\n    Input,\n    OnChanges,\n    OnInit,\n    Output,\n    SimpleChanges,\n    ViewChild,\n    ViewEncapsulation\n} from '@angular/core';\nimport {\n    ConfirmDialogComponent,\n    ContentLinkModel,\n    FormModel,\n    InplaceFormInputComponent,\n    LocalizedDatePipe,\n    TranslationService,\n    isOutcomeButtonVisible\n} from '@alfresco/adf-core';\nimport { AbstractControl, FormControl, FormGroup, ReactiveFormsModule, ValidatorFn, Validators } from '@angular/forms';\nimport { MatAutocompleteModule, MatAutocompleteTrigger } from '@angular/material/autocomplete';\nimport { catchError, debounceTime, map } from 'rxjs/operators';\nimport { ProcessInstanceCloud } from '../models/process-instance-cloud.model';\nimport { ProcessPayloadCloud } from '../models/process-payload-cloud.model';\nimport { ProcessWithFormPayloadCloud } from '../models/process-with-form-payload-cloud.model';\nimport { StartProcessCloudService } from '../services/start-process-cloud.service';\nimport { BehaviorSubject, forkJoin, Observable, of, combineLatest } from 'rxjs';\nimport { ProcessDefinitionCloud } from '../../../models/process-definition-cloud.model';\nimport { TaskVariableCloud } from '../../../form/models/task-variable-cloud.model';\nimport { FormCloudDisplayModeConfiguration } from '../../../services/form-fields.interfaces';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { getTime } from 'date-fns';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatOptionModule } from '@angular/material/core';\nimport { FormCloudComponent } from '../../../form/components/form-cloud.component';\nimport { FormCustomOutcomesComponent } from '../../../form/components/form-cloud-custom-outcomes.component';\nimport { MatDialog } from '@angular/material/dialog';\n\nconst MAX_NAME_LENGTH: number = 255;\nconst PROCESS_DEFINITION_DEBOUNCE: number = 300;\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-cloud-start-process',\n    standalone: true,\n    imports: [\n        CommonModule,\n        TranslatePipe,\n        MatProgressSpinnerModule,\n        MatCardModule,\n        MatButtonModule,\n        InplaceFormInputComponent,\n        MatIconModule,\n        MatInputModule,\n        MatOptionModule,\n        MatAutocompleteModule,\n        ReactiveFormsModule,\n        FormCloudComponent,\n        FormCustomOutcomesComponent\n    ],\n    providers: [LocalizedDatePipe],\n    templateUrl: './start-process-cloud.component.html',\n    styleUrls: ['./start-process-cloud.component.scss'],\n    encapsulation: ViewEncapsulation.None\n})\nexport class StartProcessCloudComponent implements OnChanges, OnInit {\n    @ViewChild(MatAutocompleteTrigger)\n    inputAutocomplete: MatAutocompleteTrigger;\n\n    /** (required) Name of the app. */\n    @Input()\n    appName: string = '';\n\n    /** Maximum length of the process name. */\n    @Input()\n    maxNameLength: number = MAX_NAME_LENGTH;\n\n    /** Name of the process. */\n    @Input()\n    name: string = '';\n\n    /** Name of the process definition. */\n    @Input()\n    processDefinitionName: string;\n\n    /** Variables to attach to the payload. */\n    @Input()\n    variables: any;\n\n    /** Parameter to pass form field values in the start form if one is associated. */\n    @Input()\n    values: TaskVariableCloud[];\n\n    /** Show/hide the process dropdown list. */\n    @Input()\n    showSelectProcessDropdown: boolean = true;\n\n    /** Show/hide title. */\n    @Input()\n    showTitle: boolean = true;\n\n    /** Show/hide cancel button. */\n    @Input()\n    showCancelButton: boolean = true;\n\n    /**\n     * The available display configurations for the form.\n     * (start process event can have assigned form)\n     */\n    @Input()\n    displayModeConfigurations: FormCloudDisplayModeConfiguration[];\n\n    /** Emitted when the process is successfully started. */\n    @Output()\n    success = new EventEmitter<ProcessInstanceCloud>();\n\n    /** Emitted when the starting process is cancelled */\n    @Output()\n    cancel = new EventEmitter<ProcessInstanceCloud>();\n\n    /** Emitted when an error occurs. */\n    @Output()\n    error = new EventEmitter<any>();\n\n    /** Emitted when form content is clicked. */\n    @Output()\n    formContentClicked: EventEmitter<ContentLinkModel> = new EventEmitter();\n\n    /** Emitted when process definition selection changes. */\n    @Output()\n    processDefinitionSelection: EventEmitter<ProcessDefinitionCloud> = new EventEmitter<ProcessDefinitionCloud>();\n\n    processDefinitionList: ProcessDefinitionCloud[] = [];\n    processDefinitionCurrent?: ProcessDefinitionCloud;\n    errorMessageId: string = '';\n    processPayloadCloud = new ProcessPayloadCloud();\n    filteredProcesses: ProcessDefinitionCloud[] = [];\n    staticMappings: TaskVariableCloud[] = [];\n    resolvedValues?: TaskVariableCloud[];\n    customOutcome: string;\n\n    isProcessStarting = false;\n    isFormCloudLoaded = false;\n    isFormCloudLoading = false;\n    processDefinitionLoaded = false;\n\n    showStartProcessButton$: Observable<boolean>;\n    startProcessButtonLabel: string;\n    cancelButtonLabel: string;\n\n    formCloud?: FormModel;\n    processForm = new FormGroup({\n        processInstanceName: new FormControl('', [\n            Validators.required,\n            Validators.maxLength(this.getMaxNameLength()),\n            Validators.pattern('^[^\\\\s]+(\\\\s+[^\\\\s]+)*$')\n        ]),\n        processDefinition: new FormControl('', [Validators.required, this.processDefinitionNameValidator()])\n    });\n\n    private readonly destroyRef = inject(DestroyRef);\n    private readonly startProcessCloudService = inject(StartProcessCloudService);\n    private readonly localizedDatePipe = inject(LocalizedDatePipe);\n    private readonly displayStartSubject = new BehaviorSubject<string>(null);\n    private readonly hasVisibleOutcomesSubject = new BehaviorSubject<boolean>(false);\n    private readonly dialog = inject(MatDialog);\n\n    showSaveButton = false;\n    showCompleteButton = false;\n\n    get isProcessFormValid(): boolean {\n        if (this.hasForm && this.isFormCloudLoaded) {\n            return (this.formCloud ? !Object.keys(this.formCloud.values).length : false) || this.formCloud?.isValid || this.isProcessStarting;\n        } else {\n            return this.processForm.valid || this.isProcessStarting;\n        }\n    }\n\n    get disableStartButton(): boolean {\n        return !this.appName || !this.processDefinition.valid || this.isProcessStarting || this.isFormCloudLoading;\n    }\n\n    get isProcessDefinitionsEmpty(): boolean {\n        return !this.processDefinitionList.length;\n    }\n\n    get processInstanceName(): FormControl<string> {\n        return this.processForm.controls.processInstanceName;\n    }\n\n    get processDefinition(): FormControl<string> {\n        return this.processForm.controls.processDefinition;\n    }\n\n    get hasForm(): boolean {\n        return !!this.processDefinitionCurrent?.formKey;\n    }\n\n    get defaultStartProcessButtonLabel(): string {\n        return this.translateService.instant('ADF_CLOUD_PROCESS_LIST.ADF_CLOUD_START_PROCESS.FORM.ACTION.START').toUpperCase();\n    }\n\n    get defaultCancelProcessButtonLabel(): string {\n        return this.translateService.instant('ADF_CLOUD_PROCESS_LIST.ADF_CLOUD_START_PROCESS.FORM.ACTION.CANCEL').toUpperCase();\n    }\n\n    constructor(private translateService: TranslationService) {\n        this.startProcessButtonLabel = this.defaultStartProcessButtonLabel;\n        this.cancelButtonLabel = this.defaultCancelProcessButtonLabel;\n    }\n\n    ngOnInit() {\n        this.processDefinition.setValue(this.processDefinitionName);\n        this.processDefinition.valueChanges\n            .pipe(debounceTime(PROCESS_DEFINITION_DEBOUNCE))\n            .pipe(takeUntilDestroyed(this.destroyRef))\n            .subscribe((processDefinitionName) => {\n                this.selectProcessDefinitionByProcessDefinitionName(processDefinitionName);\n            });\n\n        this.showStartProcessButton$ = combineLatest([this.displayStartSubject, this.hasVisibleOutcomesSubject]).pipe(\n            map(([displayStart, hasVisibleOutcomes]) => (displayStart !== null ? displayStart === 'true' : !hasVisibleOutcomes))\n        );\n    }\n\n    ngOnChanges(changes: SimpleChanges) {\n        if (changes['appName'] && changes['appName'].currentValue !== changes['appName'].previousValue) {\n            this.appName = changes['appName'].currentValue;\n\n            if (this.appName || this.appName === '') {\n                this.loadProcessDefinitions();\n            }\n        }\n\n        if (changes['values'] && changes['values'].currentValue !== changes['values'].previousValue) {\n            this.resolvedValues = this.staticMappings.concat(this.values || []);\n        }\n    }\n\n    @HostListener('keydown', ['$event'])\n    onKeyDown(event: KeyboardEvent): void {\n        event.stopPropagation();\n    }\n\n    onFormLoaded(form: FormModel) {\n        this.isFormCloudLoaded = true;\n        this.formCloud = form;\n\n        const anyOutcomeVisible = form?.outcomes?.some((outcome) =>\n            isOutcomeButtonVisible(outcome, {\n                isFormReadOnly: form.readOnly,\n                showCompleteButton: this.showCompleteButton,\n                showSaveButton: this.showSaveButton\n            })\n        );\n        this.hasVisibleOutcomesSubject.next(anyOutcomeVisible);\n    }\n\n    private getMaxNameLength(): number {\n        return this.maxNameLength > MAX_NAME_LENGTH ? MAX_NAME_LENGTH : this.maxNameLength;\n    }\n\n    private selectProcessDefinitionByProcessDefinitionName(processDefinitionName: string): void {\n        this.filteredProcesses = this.getProcessDefinitionListByNameOrKey(processDefinitionName);\n\n        if (this.isProcessFormValid && this.filteredProcesses && this.filteredProcesses.length === 1) {\n            this.setProcessDefinitionOnForm(this.filteredProcesses[0].name);\n        }\n    }\n\n    setProcessDefinitionOnForm(selectedProcessDefinitionName: string) {\n        this.isFormCloudLoading = true;\n        const processDefinitionCurrent = this.filteredProcesses.find(\n            (process: ProcessDefinitionCloud) => process.name === selectedProcessDefinitionName || process.key === selectedProcessDefinitionName\n        );\n\n        forkJoin([\n            this.startProcessCloudService\n                .getStartEventFormStaticValuesMapping(this.appName, processDefinitionCurrent.id)\n                .pipe(catchError(() => of([] as TaskVariableCloud[]))),\n            this.startProcessCloudService\n                .getStartEventConstants(this.appName, processDefinitionCurrent.id)\n                .pipe(catchError(() => of([] as TaskVariableCloud[])))\n        ]).subscribe(([staticMappings, constants]) => {\n            this.staticMappings = staticMappings;\n            this.resolvedValues = this.staticMappings.concat(this.values || []);\n            this.processDefinitionCurrent = processDefinitionCurrent;\n            this.isFormCloudLoading = false;\n\n            const displayStart = constants?.find((constant) => constant.name === 'startEnabled');\n            const startLabel = constants?.find((constant) => constant.name === 'startLabel');\n\n            const displayCancel = constants?.find((constant) => constant.name === 'cancelEnabled');\n            const cancelLabel = constants?.find((constant) => constant.name === 'cancelLabel');\n\n            if (displayStart) {\n                this.displayStartSubject.next(displayStart?.value);\n            }\n            if (startLabel) {\n                this.startProcessButtonLabel = startLabel?.value?.trim()?.length > 0 ? startLabel.value.trim() : this.defaultStartProcessButtonLabel;\n            }\n\n            if (displayCancel) {\n                this.showCancelButton = displayCancel?.value === 'true' && this.showCancelButton;\n            }\n            if (cancelLabel) {\n                this.cancelButtonLabel = cancelLabel?.value?.trim()?.length > 0 ? cancelLabel.value.trim() : this.defaultCancelProcessButtonLabel;\n            }\n        });\n\n        this.isFormCloudLoaded = false;\n        this.processPayloadCloud.processDefinitionKey = processDefinitionCurrent.key;\n    }\n\n    private getProcessDefinitionListByNameOrKey(processDefinitionName: string): ProcessDefinitionCloud[] {\n        return this.processDefinitionList.filter(\n            (processDefinitionCloud) => !processDefinitionName || this.getProcessDefinition(processDefinitionCloud, processDefinitionName)\n        );\n    }\n\n    private getProcessIfExists(processDefinition: string): ProcessDefinitionCloud {\n        let matchedProcess = this.processDefinitionList.find((option) => this.getProcessDefinition(option, processDefinition));\n        if (!matchedProcess) {\n            matchedProcess = new ProcessDefinitionCloud();\n        }\n\n        return matchedProcess;\n    }\n\n    private getProcessDefinitionByName(processDefinitionName: string): ProcessDefinitionCloud {\n        const matchedProcess = processDefinitionName ? this.getProcessIfExists(processDefinitionName) : this.processDefinitionList[0];\n        return matchedProcess;\n    }\n\n    private selectDefaultProcessDefinition() {\n        const selectedProcess = this.getProcessDefinitionByName(this.processDefinitionName);\n        if (selectedProcess) {\n            this.processDefinition.setValue(selectedProcess.name);\n            this.processDefinitionSelectionChanged(selectedProcess);\n        }\n    }\n\n    public loadProcessDefinitions() {\n        this.resetErrorMessage();\n\n        this.startProcessCloudService\n            .getProcessDefinitions(this.appName)\n            .pipe(takeUntilDestroyed(this.destroyRef))\n            .subscribe(\n                (processDefinitionRepresentations: ProcessDefinitionCloud[]) => {\n                    this.processDefinitionList = processDefinitionRepresentations;\n                    if (processDefinitionRepresentations.length === 1) {\n                        this.selectDefaultProcessDefinition();\n                    } else if (this.processDefinitionName) {\n                        this.processDefinition.setValue(this.processDefinitionName);\n\n                        const processDefinition = this.processDefinitionList.find((process) => process.name === this.processDefinitionName);\n                        if (processDefinition) {\n                            this.filteredProcesses = this.getProcessDefinitionListByNameOrKey(processDefinition.name);\n                            this.setProcessDefinitionOnForm(processDefinition.name);\n                            this.processDefinitionSelectionChanged(processDefinition);\n                        }\n                    }\n\n                    this.processDefinitionLoaded = true;\n                },\n                () => {\n                    this.errorMessageId = 'ADF_CLOUD_PROCESS_LIST.ADF_CLOUD_START_PROCESS.ERROR.LOAD_PROCESS_DEFS';\n                }\n            );\n    }\n\n    private isValidName(name: string): boolean {\n        return !!name;\n    }\n\n    private getProcessDefinition(processDefinitionCloud: ProcessDefinitionCloud, processDefinitionName: string): boolean {\n        return (\n            (this.isValidName(processDefinitionCloud.name) &&\n                processDefinitionCloud.name.toLowerCase().includes(processDefinitionName.toLowerCase())) ||\n            processDefinitionCloud.key?.toLowerCase().includes(processDefinitionName.toLowerCase())\n        );\n    }\n\n    buildProcessCloudPayload() {\n        this.processPayloadCloud.name = this.processInstanceName.value;\n        if (this.variables) {\n            this.processPayloadCloud.variables = this.variables;\n        }\n\n        if (this.hasForm) {\n            this.processPayloadCloud.variables = Object.assign(this.processPayloadCloud.variables, this.formCloud.values);\n        }\n    }\n\n    onCustomOutcomeClicked(outcome: string) {\n        this.customOutcome = outcome;\n        this.startProcess();\n    }\n\n    startProcessWithoutConfirmation() {\n        this.isProcessStarting = true;\n\n        const action = this.hasForm\n            ? this.startProcessCloudService.startProcessWithForm(\n                  this.appName,\n                  this.processDefinitionCurrent.formKey,\n                  this.processDefinitionCurrent.version,\n                  new ProcessWithFormPayloadCloud({\n                      processName: this.processInstanceName.value,\n                      processDefinitionKey: this.processPayloadCloud.processDefinitionKey,\n                      variables: this.variables ?? {},\n                      values: this.formCloud.values,\n                      outcome: this.customOutcome\n                  })\n              )\n            : this.startProcessCloudService.startProcess(\n                  this.appName,\n                  new ProcessPayloadCloud({\n                      name: this.processInstanceName.value,\n                      processDefinitionKey: this.processPayloadCloud.processDefinitionKey,\n                      variables: this.variables ?? {}\n                  })\n              );\n\n        action.subscribe({\n            next: (res) => {\n                this.success.emit(res);\n                this.isProcessStarting = false;\n            },\n            error: (err) => {\n                this.errorMessageId = err?.response?.body?.message || 'ADF_CLOUD_PROCESS_LIST.ADF_CLOUD_START_PROCESS.ERROR.START_PROCESS';\n                this.error.emit(err);\n                this.isProcessStarting = false;\n            }\n        });\n    }\n\n    startProcess() {\n        if (!this.formCloud?.confirmMessage?.show) {\n            this.startProcessWithoutConfirmation();\n        } else {\n            const dialogRef = this.dialog.open(ConfirmDialogComponent, {\n                data: {\n                    message: this.formCloud.confirmMessage.message\n                },\n                minWidth: '450px'\n            });\n\n            dialogRef.afterClosed().subscribe((result) => {\n                if (result) {\n                    this.startProcessWithoutConfirmation();\n                }\n            });\n        }\n    }\n\n    cancelStartProcess() {\n        this.cancel.emit();\n    }\n\n    private resetErrorMessage() {\n        this.errorMessageId = '';\n    }\n\n    private resetProcessDefinitionList() {\n        this.processDefinition.setValue('');\n        this.filteredProcesses = this.processDefinitionList;\n    }\n\n    displayProcessNameOnDropdown(process: any) {\n        if (process) {\n            let processName = process;\n            if (typeof process !== 'string') {\n                processName = process.name;\n            }\n            return processName;\n        }\n    }\n\n    displayDropdown(event) {\n        event.stopPropagation();\n        if (!this.inputAutocomplete.panelOpen) {\n            this.resetProcessDefinitionList();\n            this.inputAutocomplete.openPanel();\n        } else {\n            this.inputAutocomplete.closePanel();\n        }\n    }\n\n    processDefinitionNameValidator(): ValidatorFn {\n        return (control: AbstractControl): { [key: string]: any } | null => {\n            const processDefinitionFieldValue = control.value;\n            let processDefinitionNameError = false;\n\n            if (processDefinitionFieldValue) {\n                const processDefinition = this.getProcessIfExists(processDefinitionFieldValue);\n                if (!processDefinition.key) {\n                    processDefinitionNameError = true;\n                }\n            }\n\n            return processDefinitionNameError ? { 'invalid name': true } : null;\n        };\n    }\n\n    getProcessDefinitionValue(process: ProcessDefinitionCloud): string {\n        return process.name ? process.name : process.key;\n    }\n\n    onFormContentClicked(content: ContentLinkModel) {\n        this.formContentClicked.emit(content);\n    }\n\n    processDefinitionSelectionChanged(processDefinition: ProcessDefinitionCloud) {\n        if (processDefinition) {\n            this.setDefaultProcessName(processDefinition.name);\n            this.processDefinitionSelection.emit(processDefinition);\n        }\n    }\n\n    setDefaultProcessName(processDefinitionName: string): void {\n        const processInstanceDetails: ProcessInstanceCloud = { processDefinitionName };\n        const defaultProcessName = this.getDefaultProcessName(this.name, processInstanceDetails);\n        this.processInstanceName.setValue(defaultProcessName);\n        this.processInstanceName.markAsDirty();\n        this.processInstanceName.markAsTouched();\n    }\n\n    getDefaultProcessName(processNameFormat: string, processInstance?: ProcessInstanceCloud): 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.localizedDatePipe.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","@if (processDefinitionLoaded) {\n    <mat-card appearance=\"outlined\" class=\"adf-start-process\">\n        <mat-card-content>\n            @if (showTitle) {\n                <mat-card-title class=\"adf-title\">\n                    {{ 'ADF_CLOUD_PROCESS_LIST.ADF_CLOUD_START_PROCESS.FORM.TITLE' | translate }}\n                </mat-card-title>\n            }\n\n            @if (errorMessageId) {\n                <mat-card-subtitle class=\"adf-error-message\" id=\"error-message\">\n                    {{ errorMessageId | translate }}\n                </mat-card-subtitle>\n            }\n\n            @if (!isProcessDefinitionsEmpty) {\n                <div>\n                    <form [formGroup]=\"processForm\" class=\"adf-select-process-form\">\n                        @if (showSelectProcessDropdown) {\n                            <mat-form-field\n                                class=\"adf-process-input-container\"\n                                floatLabel=\"always\"\n                                data-automation-id=\"adf-select-cloud-process-dropdown\"\n                            >\n                                <mat-label class=\"adf-start-process-input-label\">{{\n                                    'ADF_CLOUD_PROCESS_LIST.ADF_CLOUD_START_PROCESS.FORM.LABEL.TYPE' | translate\n                                }}</mat-label>\n                                <input matInput formControlName=\"processDefinition\" [matAutocomplete]=\"auto\" id=\"processDefinitionName\" />\n\n                                <div class=\"adf-process-input-autocomplete\">\n                                    <mat-autocomplete\n                                        #auto=\"matAutocomplete\"\n                                        id=\"processDefinitionOptions\"\n                                        [displayWith]=\"displayProcessNameOnDropdown\"\n                                        (optionSelected)=\"setProcessDefinitionOnForm($event.option.value)\"\n                                    >\n                                        <mat-option\n                                            *ngFor=\"let processDef of filteredProcesses\"\n                                            [value]=\"getProcessDefinitionValue(processDef)\"\n                                            (click)=\"processDefinitionSelectionChanged(processDef)\"\n                                        >\n                                            {{ getProcessDefinitionValue(processDef) }}\n                                        </mat-option>\n                                    </mat-autocomplete>\n\n                                    <button\n                                        id=\"adf-select-process-dropdown\"\n                                        title=\"{{ 'ADF_CLOUD_PROCESS_LIST.ADF_CLOUD_START_PROCESS.FORM.SELECT_PROCESS_DROPDOWN' | translate }}\"\n                                        mat-icon-button\n                                        (click)=\"displayDropdown($event)\"\n                                    >\n                                        <mat-icon>arrow_drop_down</mat-icon>\n                                    </button>\n                                </div>\n                                @if (processDefinition.hasError('required')) {\n                                    <mat-error class=\"adf-error-pb\">\n                                        {{ 'ADF_CLOUD_PROCESS_LIST.ADF_CLOUD_START_PROCESS.ERROR.PROCESS_DEFINITION_REQUIRED' | translate }}\n                                    </mat-error>\n                                }\n                            </mat-form-field>\n                        }\n\n                        <adf-inplace-form-input [control]=\"processInstanceName\">\n                            <ng-container label>\n                                {{ 'ADF_CLOUD_PROCESS_LIST.ADF_CLOUD_START_PROCESS.FORM.LABEL.NAME' | translate }}\n                            </ng-container>\n\n                            <ng-container error>\n                                @if (processInstanceName.hasError('required')) {\n                                    <span>\n                                        {{ 'ADF_CLOUD_PROCESS_LIST.ADF_CLOUD_START_PROCESS.ERROR.PROCESS_NAME_REQUIRED' | translate }}\n                                    </span>\n                                }\n                                @if (processInstanceName.hasError('maxlength')) {\n                                    <span id=\"adf-start-process-maxlength-error\">\n                                        {{\n                                            'ADF_CLOUD_PROCESS_LIST.ADF_CLOUD_START_PROCESS.ERROR.MAXIMUM_LENGTH'\n                                                | translate: { characters: maxNameLength }\n                                        }}\n                                    </span>\n                                }\n                                @if (processInstanceName.hasError('pattern')) {\n                                    <span>\n                                        {{ 'ADF_CLOUD_PROCESS_LIST.ADF_CLOUD_START_PROCESS.ERROR.SPACE_VALIDATOR' | translate }}\n                                    </span>\n                                }\n                            </ng-container>\n                        </adf-inplace-form-input>\n                    </form>\n\n                    @if (hasForm) {\n                        <adf-cloud-form\n                            #startForm\n                            [appName]=\"appName\"\n                            [appVersion]=\"processDefinitionCurrent.appVersion\"\n                            [data]=\"resolvedValues\"\n                            [formId]=\"processDefinitionCurrent.formKey\"\n                            [displayModeConfigurations]=\"displayModeConfigurations\"\n                            [showSaveButton]=\"showSaveButton\"\n                            [showCompleteButton]=\"showCompleteButton\"\n                            [showRefreshButton]=\"false\"\n                            [showValidationIcon]=\"false\"\n                            [showTitle]=\"false\"\n                            (formContentClicked)=\"onFormContentClicked($event)\"\n                            (formLoaded)=\"onFormLoaded($event)\"\n                            (executeOutcome)=\"onCustomOutcomeClicked($event.outcome.name)\"\n                        >\n                            <adf-cloud-form-custom-outcomes>\n                                <ng-template [ngTemplateOutlet]=\"taskFormCloudButtons\" />\n                            </adf-cloud-form-custom-outcomes>\n                        </adf-cloud-form>\n                    } @else {\n                        <ng-template [ngTemplateOutlet]=\"taskFormCloudButtons\" />\n                    }\n                </div>\n            } @else {\n                @if (processDefinitionLoaded) {\n                    <mat-card-content>\n                        <mat-card-subtitle class=\"error-message\" id=\"no-process-message\">\n                            {{ 'ADF_CLOUD_PROCESS_LIST.ADF_CLOUD_START_PROCESS.NO_PROCESS_DEFINITIONS' | translate | uppercase }}\n                        </mat-card-subtitle>\n                    </mat-card-content>\n                }\n            }\n        </mat-card-content>\n    </mat-card>\n} @else {\n    <div class=\"adf-loading-container\">\n        <mat-progress-spinner class=\"adf-loading\" color=\"primary\" mode=\"indeterminate\" />\n    </div>\n}\n\n<ng-template #taskFormCloudButtons>\n    <div class=\"adf-start-process-cloud-actions\">\n        @if (showCancelButton) {\n            <button mat-button (click)=\"cancelStartProcess()\" id=\"cancel_process\">\n                {{ cancelButtonLabel }}\n            </button>\n        }\n        @if (showStartProcessButton$ | async) {\n            <button\n                color=\"primary\"\n                mat-raised-button\n                [disabled]=\"disableStartButton || !isProcessFormValid\"\n                (click)=\"startProcess()\"\n                data-automation-id=\"btn-start\"\n                id=\"button-start\"\n                class=\"adf-btn-start\"\n            >\n                {{ startProcessButtonLabel }}\n            </button>\n        }\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, DestroyRef, EventEmitter, inject, Input, OnChanges, OnInit, Output, ViewEncapsulation } from '@angular/core';\nimport {\n    AppConfigService,\n    CardViewBaseItemModel,\n    CardViewComponent,\n    CardViewDateItemModel,\n    CardViewItem,\n    CardViewTextItemModel,\n    TranslationService\n} from '@alfresco/adf-core';\nimport { ProcessInstanceCloud } from '../../start-process/models/process-instance-cloud.model';\nimport { ProcessCloudService } from '../../services/process-cloud.service';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MatCardModule } from '@angular/material/card';\nimport { NgIf } from '@angular/common';\n\n@Component({\n    selector: 'adf-cloud-process-header',\n    imports: [CardViewComponent, MatCardModule, NgIf],\n    templateUrl: './process-header-cloud.component.html',\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./process-header-cloud.component.scss'],\n    host: { class: 'adf-cloud-process-header' }\n})\nexport class ProcessHeaderCloudComponent implements OnChanges, OnInit {\n    /** (Required) The name of the application. */\n    @Input({ required: true })\n    appName: string = '';\n\n    /** (Required) The id of the process instance. */\n    @Input({ required: true })\n    processInstanceId: string;\n\n    /** Gets emitted each time a new process instance details are loaded. */\n    @Output()\n    loaded = new EventEmitter<ProcessInstanceCloud>();\n\n    processInstanceDetails: ProcessInstanceCloud;\n    properties: CardViewItem[];\n    dateFormat: string;\n    dateLocale: string;\n\n    private readonly destroyRef = inject(DestroyRef);\n\n    constructor(\n        private processCloudService: ProcessCloudService,\n        private translationService: TranslationService,\n        private appConfig: AppConfigService\n    ) {}\n\n    ngOnInit() {\n        this.dateFormat = this.appConfig.get('adf-cloud-process-header.defaultDateFormat');\n        this.dateLocale = this.appConfig.get('dateValues.defaultDateLocale');\n\n        this.processCloudService.dataChangesDetected\n            .pipe(takeUntilDestroyed(this.destroyRef))\n            .subscribe((processDetails) => this.onLoaded(processDetails));\n    }\n\n    ngOnChanges() {\n        if ((this.appName || this.appName === '') && this.processInstanceId) {\n            this.loadProcessInstanceDetails(this.appName, this.processInstanceId);\n        }\n    }\n\n    private loadProcessInstanceDetails(appName: string, processInstanceId: string) {\n        this.processCloudService.getProcessInstanceById(appName, processInstanceId).subscribe((result) => this.onLoaded(result));\n    }\n\n    private onLoaded(processInstanceDetails: ProcessInstanceCloud) {\n        this.processInstanceDetails = processInstanceDetails;\n        this.refreshData();\n\n        this.loaded.emit(processInstanceDetails);\n    }\n\n    /**\n     * Refresh the card data\n     */\n    refreshData() {\n        if (this.processInstanceDetails) {\n            const defaultProperties = this.initDefaultProperties();\n            const filteredProperties = this.appConfig.get<string[]>('adf-cloud-process-header.presets.properties');\n            this.properties = defaultProperties.filter((cardItem) => this.isValidSelection(filteredProperties, cardItem));\n        }\n    }\n\n    private initDefaultProperties(): any[] {\n        return [\n            new CardViewTextItemModel({\n                label: 'ADF_CLOUD_PROCESS_HEADER.PROPERTIES.ID',\n                value: this.processInstanceDetails.id,\n                key: 'id'\n            }),\n            new CardViewTextItemModel({\n                label: 'ADF_CLOUD_PROCESS_HEADER.PROPERTIES.NAME',\n                value: this.processInstanceDetails.name,\n                key: 'name',\n                default: this.translationService.instant('ADF_CLOUD_PROCESS_HEADER.PROPERTIES.NAME_DEFAULT')\n            }),\n            new CardViewTextItemModel({\n                label: 'ADF_CLOUD_PROCESS_HEADER.PROPERTIES.STATUS',\n                value: this.processInstanceDetails.status,\n                key: 'status'\n            }),\n            new CardViewTextItemModel({\n                label: 'ADF_CLOUD_PROCESS_HEADER.PROPERTIES.INITIATOR',\n                value: this.processInstanceDetails.initiator,\n                key: 'initiator'\n            }),\n            new CardViewDateItemModel({\n                label: 'ADF_CLOUD_PROCESS_HEADER.PROPERTIES.START_DATE',\n                value: this.processInstanceDetails.startDate,\n                key: 'startDate',\n                format: this.dateFormat,\n                locale: this.dateLocale\n            }),\n            new CardViewDateItemModel({\n                label: 'ADF_CLOUD_PROCESS_HEADER.PROPERTIES.LAST_MODIFIED',\n                value: this.processInstanceDetails.lastModified,\n                key: 'lastModified',\n                format: this.dateFormat,\n                locale: this.dateLocale\n            }),\n            new CardViewTextItemModel({\n                label: 'ADF_CLOUD_PROCESS_HEADER.PROPERTIES.PARENT_ID',\n                value: this.processInstanceDetails.parentId,\n                key: 'parentId',\n                default: this.translationService.instant('ADF_CLOUD_PROCESS_HEADER.PROPERTIES.NONE')\n            }),\n            new CardViewTextItemModel({\n                label: 'ADF_CLOUD_PROCESS_HEADER.PROPERTIES.BUSINESS_KEY',\n                value: this.processInstanceDetails.businessKey,\n                key: 'businessKey',\n                default: this.translationService.instant('ADF_CLOUD_PROCESS_HEADER.PROPERTIES.NONE')\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=\"processInstanceDetails\" class=\"adf-process-header-cloud-card\">\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\nimport { NgModule } from '@angular/core';\nimport { PROCESS_FILTERS_CLOUD_DIRECTIVES } from './process-filters/process-filters-cloud.module';\nimport { ProcessListCloudModule } from './process-list/process-list-cloud.module';\nimport { StartProcessCloudComponent } from './start-process/components/start-process-cloud.component';\nimport { ProcessHeaderCloudComponent } from './process-header/components/process-header-cloud.component';\n\nexport const PROCESS_CLOUD_DIRECTIVES = [StartProcessCloudComponent, ProcessHeaderCloudComponent] as const;\n\n/** @deprecated use standalone components or PROCESS_CLOUD_DIRECTIVES instead */\n@NgModule({\n    imports: [...PROCESS_FILTERS_CLOUD_DIRECTIVES, ProcessListCloudModule, ...PROCESS_CLOUD_DIRECTIVES],\n    exports: [...PROCESS_FILTERS_CLOUD_DIRECTIVES, ProcessListCloudModule, ...PROCESS_CLOUD_DIRECTIVES]\n})\nexport class ProcessCloudModule {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 { map } from 'rxjs/operators';\nimport { from, Observable } from 'rxjs';\nimport { BaseCloudService } from '../../services/base-cloud.service';\nimport { FormRepresentation } from '../../services/form-fields.interfaces';\nimport { FormDefinitionSelectorCloudServiceInterface } from './form-definition-selector-cloud.service.interface';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class FormDefinitionSelectorCloudService extends BaseCloudService implements FormDefinitionSelectorCloudServiceInterface {\n    /**\n     * Get all forms of an app.\n     *\n     * @param appName Name of the application\n     * @returns Details of the forms\n     */\n    getForms(appName: string): Observable<FormRepresentation[]> {\n        const url = `${this.getBasePath(appName)}/form/v1/forms`;\n\n        return this.get(url).pipe(map((data: any) => data.map((formData: any) => formData.formRepresentation)));\n    }\n\n    /**\n     * Get all forms of an app.\n     *\n     * @param appName Name of the application\n     * @returns Details of the forms\n     */\n    getStandAloneTaskForms(appName: string): Observable<FormRepresentation[]> {\n        return from(this.getForms(appName)).pipe(\n            map((data: any) => data.filter((formData: any) => formData.standalone || formData.standalone === undefined))\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, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { FormDefinitionSelectorCloudService } from '../services/form-definition-selector-cloud.service';\nimport { MatSelectChange, MatSelectModule } from '@angular/material/select';\nimport { FormRepresentation } from '../../services/form-fields.interfaces';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\n\n@Component({\n    selector: 'adf-cloud-form-definition-selector',\n    imports: [CommonModule, TranslatePipe, MatSelectModule],\n    templateUrl: './form-definition-selector-cloud.component.html',\n    styleUrls: ['./form-definition-selector-cloud.component.scss']\n})\nexport class FormDefinitionSelectorCloudComponent implements OnInit {\n    /** Name of the application. If specified, this shows the users who have access to the app. */\n    @Input()\n    appName: string = '';\n\n    /** Emitted when a form is selected. */\n    @Output()\n    selectForm: EventEmitter<string> = new EventEmitter<string>();\n\n    forms$: Observable<FormRepresentation[]>;\n\n    constructor(private formDefinitionCloudService: FormDefinitionSelectorCloudService) {}\n\n    ngOnInit(): void {\n        this.forms$ = this.formDefinitionCloudService.getStandAloneTaskForms(this.appName);\n    }\n\n    onSelect(event: MatSelectChange) {\n        this.selectForm.emit(event.value);\n    }\n}\n","<mat-form-field class=\"adf-form-definition-selector\">\n    <mat-label>{{'ADF_CLOUD_TASK_LIST.START_TASK.FORM.LABEL.FORM' | translate}}</mat-label>\n    <mat-select class=\"adf-form-selector-dropdown\" (selectionChange)=\"onSelect($event)\">\n        <mat-option [value]=\"''\">{{'ADF_CLOUD_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","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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, ViewEncapsulation } from '@angular/core';\nimport { ErrorWidgetComponent, FormService, WidgetComponent } from '@alfresco/adf-core';\nimport { UntypedFormControl } from '@angular/forms';\nimport { filter } from 'rxjs/operators';\nimport { ComponentSelectionMode } from '../../../../types';\nimport { IdentityGroupModel } from '../../../../group/models/identity-group.model';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { GroupCloudComponent } from '../../../../group/components/group-cloud.component';\n\n/* eslint-disable @angular-eslint/component-selector */\n\n@Component({\n    selector: 'group-cloud-widget',\n    imports: [CommonModule, TranslatePipe, ErrorWidgetComponent, GroupCloudComponent],\n    templateUrl: './group-cloud.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 GroupCloudWidgetComponent extends WidgetComponent implements OnInit {\n    typeId = 'GroupCloudWidgetComponent';\n    roles: string[];\n    mode: ComponentSelectionMode;\n    title: string;\n    preSelectGroup: IdentityGroupModel[];\n    search: UntypedFormControl;\n    validate = false;\n\n    private readonly destroyRef = inject(DestroyRef);\n\n    constructor(formService: FormService) {\n        super(formService);\n    }\n\n    ngOnInit() {\n        if (this.field) {\n            this.roles = this.field.roles;\n            this.mode = this.field.optionType as ComponentSelectionMode;\n            this.title = this.field.placeholder;\n            this.preSelectGroup = this.field.value ? this.field.value : [];\n            this.validate = this.field.readOnly ? false : true;\n        }\n        this.search = new UntypedFormControl({ value: '', disabled: this.field.readOnly }, []);\n        this.search.statusChanges\n            .pipe(\n                filter((value: string) => value === 'INVALID'),\n                takeUntilDestroyed(this.destroyRef)\n            )\n            .subscribe(() => {\n                this.field.markAsInvalid();\n                this.field.form.markAsInvalid();\n            });\n\n        this.search.statusChanges\n            .pipe(\n                filter((value: string) => value === 'VALID'),\n                takeUntilDestroyed(this.destroyRef)\n            )\n            .subscribe(() => {\n                this.field.validate();\n                this.field.form.validateForm();\n            });\n    }\n    onChangedGroup(groups: IdentityGroupModel[]): void {\n        this.field.value = groups?.length ? [...groups] : null;\n        this.onFieldChanged(this.field);\n    }\n\n    isMultipleMode(): boolean {\n        return this.mode === 'multiple';\n    }\n}\n","<div\n    class=\"adf-dropdown-widget {{field.className}}\"\n    [class.adf-invalid]=\"!field.isValid && isTouched()\"\n    [class.adf-readonly]=\"field.readOnly\"\n    [class.adf-left-label-input-container]=\"field.leftLabels\"\n>\n    <div *ngIf=\"field.leftLabels\">\n        <label class=\"adf-label adf-left-label\" [attr.for]=\"field.id\"\n            >{{field.name | translate }}<span class=\"adf-asterisk\" [style.visibility]=\"isRequired() ? 'visible' : 'hidden'\">*</span></label\n        >\n    </div>\n    <div>\n        <adf-cloud-group\n            [mode]=\"mode\"\n            [title]=\"title\"\n            [readOnly]=\"field.readOnly\"\n            [validate]=\"validate\"\n            [roles]=\"roles\"\n            [searchGroupsControl]=\"search\"\n            [required]=\"field.required\"\n            (changedGroups)=\"onChangedGroup($event)\"\n            [preSelectGroups]=\"preSelectGroup\"\n            (blur)=\"markAsTouched()\"\n            [attr.title]=\"field.tooltip\"\n            [label] = \"field.name | translate\"\n        />\n        <error-widget [error]=\"field.validationSummary\" />\n        <error-widget\n            class=\"adf-dropdown-required-message\"\n            *ngIf=\"isInvalidFieldRequired() && isTouched()\"\n            required=\"{{ 'FORM.FIELD.REQUIRED' | translate }}\"\n        />\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 { Component, DestroyRef, inject, OnInit, ViewEncapsulation } from '@angular/core';\nimport { ErrorWidgetComponent, FormService, WidgetComponent } from '@alfresco/adf-core';\nimport { UntypedFormControl } from '@angular/forms';\nimport { filter } from 'rxjs/operators';\nimport { ComponentSelectionMode } from '../../../../types';\nimport { IdentityUserModel } from '../../../../people/models/identity-user.model';\nimport { IdentityUserService } from '../../../../people/services/identity-user.service';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { PeopleCloudComponent } from '../../../../people/components/people-cloud.component';\nimport { MatFormFieldModule } from '@angular/material/form-field';\n\n/* eslint-disable @angular-eslint/component-selector */\n\n@Component({\n    selector: 'people-cloud-widget',\n    imports: [CommonModule, TranslatePipe, ErrorWidgetComponent, PeopleCloudComponent, MatFormFieldModule],\n    templateUrl: './people-cloud.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 PeopleCloudWidgetComponent extends WidgetComponent implements OnInit {\n    private identityUserService = inject(IdentityUserService);\n\n    typeId = 'PeopleCloudWidgetComponent';\n    appName: string;\n    roles: string[];\n    mode: ComponentSelectionMode;\n    title: string;\n    preSelectUsers: IdentityUserModel[];\n    search: UntypedFormControl;\n    groupsRestriction: string[];\n    validate = false;\n\n    private readonly destroyRef = inject(DestroyRef);\n\n    constructor(formService: FormService) {\n        super(formService);\n    }\n\n    ngOnInit() {\n        if (this.field) {\n            this.roles = this.field.roles;\n            this.mode = this.field.optionType as ComponentSelectionMode;\n            this.title = this.field.placeholder;\n            this.preSelectUsers = this.field.value ? this.field.value : [];\n            this.groupsRestriction = this.field.groupsRestriction;\n            this.validate = this.field.readOnly ? false : true;\n        }\n\n        this.search = new UntypedFormControl({ value: '', disabled: this.field.readOnly }, []);\n\n        this.search.statusChanges\n            .pipe(\n                filter((value: string) => value === 'INVALID'),\n                takeUntilDestroyed(this.destroyRef)\n            )\n            .subscribe(() => {\n                this.field.markAsInvalid();\n                this.field.form.markAsInvalid();\n            });\n\n        this.search.statusChanges\n            .pipe(\n                filter((value: string) => value === 'VALID'),\n                takeUntilDestroyed(this.destroyRef)\n            )\n            .subscribe(() => {\n                this.field.validate();\n                this.field.form.validateForm();\n            });\n\n        if (this.field.selectLoggedUser && !this.field.value) {\n            const userInfo = this.identityUserService.getCurrentUserInfo();\n            this.preSelectUsers = [userInfo];\n            this.onChangedUser(this.preSelectUsers);\n        }\n    }\n\n    onChangedUser(users: IdentityUserModel[]): void {\n        this.field.value = users?.length ? [...users] : null;\n        this.onFieldChanged(this.field);\n    }\n\n    isMultipleMode(): boolean {\n        return this.mode === 'multiple';\n    }\n}\n","<div class=\"adf-dropdown-widget {{field.className}}\"\n     [class.adf-invalid]=\"!field.isValid && isTouched()\"\n     [class.adf-readonly]=\"field.readOnly\"\n     [class.adf-left-label-input-container]=\"field.leftLabels\">\n     <div *ngIf=\"field.leftLabels\">\n        <label class=\"adf-label adf-left-label\" [attr.for]=\"field.id\">{{field.name | translate }}<span class=\"adf-asterisk\" [style.visibility]=\"isRequired() ? 'visible' : 'hidden'\">*</span></label>\n    </div>\n    <div>\n        <adf-cloud-people\n            [preSelectUsers]=\"preSelectUsers\"\n            [appName]=\"appName\"\n            [readOnly]=\"field.readOnly\"\n            [validate]=\"validate\"\n            [searchUserCtrl]=\"search\"\n            [required]=\"field.required\"\n            (changedUsers)=\"onChangedUser($event)\"\n            [roles]=\"roles\"\n            [mode]=\"mode\"\n            [groupsRestriction]=\"groupsRestriction\"\n            (blur)=\"markAsTouched()\"\n            [attr.title]=\"field.tooltip\"\n            [label]=\"field.name | translate\"\n        />\n        <error-widget [error]=\"field.validationSummary\" />\n        <error-widget\n            class=\"adf-dropdown-required-message\"\n            *ngIf=\"isInvalidFieldRequired() && isTouched()\"\n            required=\"{{ 'FORM.FIELD.REQUIRED' | translate }}\" />\n    </div>\n</div>\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, OnChanges, OnInit, Output, SimpleChanges, ViewEncapsulation } from '@angular/core';\nimport { PresetConfig, NodesApiService, ContentMetadataComponent } from '@alfresco/adf-content-services';\nimport { Node } from '@alfresco/js-api';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { CommonModule } from '@angular/common';\n\n/* eslint-disable @angular-eslint/component-selector */\n\n@Component({\n    selector: 'adf-properties-viewer-wrapper',\n    imports: [CommonModule, MatProgressSpinnerModule, ContentMetadataComponent],\n    templateUrl: './properties-viewer-wrapper.component.html',\n    encapsulation: ViewEncapsulation.None\n})\nexport class PropertiesViewerWrapperComponent implements OnInit, OnChanges {\n    node: Node;\n    loading = true;\n\n    @Input()\n    nodeId: string;\n\n    /** Toggles whether the edit button should be shown */\n    @Input()\n    editable: boolean;\n\n    /** Toggles whether to display empty values in the card view */\n    @Input()\n    displayEmpty: boolean;\n\n    /**\n     * Toggles between expanded (ie, full information) and collapsed\n     * (ie, reduced information) in the display\n     */\n    @Input()\n    expanded: boolean;\n\n    /** The multi parameter of the underlying material expansion panel, set to true to allow multi accordion to be expanded at the same time */\n    @Input()\n    multi: boolean;\n\n    /** Name or configuration of the metadata preset, which defines aspects and their properties */\n    @Input()\n    preset: string | PresetConfig;\n\n    /** Toggles whether the metadata properties should be shown */\n    @Input()\n    displayDefaultProperties: boolean;\n\n    /** (optional) shows the given aspect in the expanded  card */\n    @Input()\n    displayAspect: string = null;\n\n    /** Toggles the clipboard action. */\n    @Input()\n    copyToClipboardAction: boolean;\n\n    /** Toggles chips for multivalued properties. */\n    @Input()\n    useChipsForMultiValueProperty: boolean;\n\n    @Output()\n    nodeContentLoaded = new EventEmitter<Node>();\n\n    constructor(private nodesApiService: NodesApiService) {}\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (changes?.['nodeId']?.currentValue && !changes['nodeId'].isFirstChange()) {\n            this.getNode(changes['nodeId'].currentValue);\n        }\n    }\n\n    ngOnInit(): void {\n        if (this.nodeId) {\n            this.getNode(this.nodeId);\n        }\n    }\n\n    private getNode(nodeId: string) {\n        this.loading = true;\n        this.nodesApiService.getNode(nodeId).subscribe((retrievedNode) => {\n            this.node = retrievedNode;\n            this.loading = false;\n            this.nodeContentLoaded.emit(retrievedNode);\n        });\n    }\n}\n","<adf-content-metadata\n    [displayDefaultProperties]=\"displayDefaultProperties\"\n    [expanded]=\"expanded\"\n    [node]=\"node\"\n    [preset]=\"preset\"\n    [displayEmpty]=\"displayEmpty\"\n    [readOnly]=\"!editable\"\n    [multi]=\"multi\"\n    [displayAspect]=\"displayAspect\"\n    [copyToClipboardAction]=\"copyToClipboardAction\"\n    [useChipsForMultiValueProperty]=\"useChipsForMultiValueProperty\"\n    [displayTags]=\"false\"\n    [displayCategories]=\"false\"\n    *ngIf=\"!loading; else loadingTemplate\"\n/>\n<ng-template #loadingTemplate>\n    <div class=\"adf-properties-viewer-wrapper-loading\">\n        <mat-progress-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, Output, ViewEncapsulation } from '@angular/core';\nimport { BaseViewerWidgetComponent, ErrorWidgetComponent, FormService } from '@alfresco/adf-core';\nimport { Node } from '@alfresco/js-api';\nimport { PropertiesViewerWrapperComponent } from './properties-viewer-wrapper/properties-viewer-wrapper.component';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { CommonModule } from '@angular/common';\n\n/* eslint-disable @angular-eslint/component-selector */\n\n@Component({\n    selector: 'adf-properties-viewer-widget',\n    imports: [CommonModule, ErrorWidgetComponent, PropertiesViewerWrapperComponent, TranslatePipe],\n    templateUrl: './properties-viewer.widget.html',\n    styleUrls: ['./properties-viewer.widget.scss'],\n    host: {\n        '(click)': 'event($event)',\n        '(blur)': 'event($event)',\n        '(change)': 'event($event)',\n        '(focus)': 'event($event)',\n        '(focusin)': 'event($event)',\n        '(focusout)': 'event($event)',\n        '(input)': 'event($event)',\n        '(invalid)': 'event($event)',\n        '(select)': 'event($event)'\n    },\n    encapsulation: ViewEncapsulation.None\n})\nexport class PropertiesViewerWidgetComponent extends BaseViewerWidgetComponent {\n    @Output()\n    nodeContentLoaded: EventEmitter<Node> = new EventEmitter();\n\n    constructor(formService: FormService) {\n        super(formService);\n    }\n\n    onNodeContentLoaded(node: Node) {\n        this.nodeContentLoaded.emit(node);\n    }\n}\n","<div class=\"adf-file-viewer-widget {{field.className}}\" [class.adf-invalid]=\"!field.isValid\" [class.adf-readonly]=\"field.readOnly\">\n    <label class=\"adf-label\" [attr.for]=\"field.id\"\n        >{{field.name | translate }}<span class=\"adf-asterisk\" [style.visibility]=\"isRequired() ? 'visible' : 'hidden'\">*</span></label\n    >\n    <ng-template\n        #properties\n        [ngTemplateOutlet]=\"properties\"\n        let-properties=\"properties\"\n        [ngTemplateOutletContext]=\"{ properties: field.params?.propertiesViewerOptions }\"\n    >\n        <adf-properties-viewer-wrapper\n            *ngIf=\"field.value\"\n            [nodeId]=\"field.value\"\n            [displayDefaultProperties]=\"properties?.displayDefaultProperties !== undefined ?  properties?.displayDefaultProperties : true\"\n            [expanded]=\"properties?.expanded !== undefined ? properties?.expanded : true\"\n            [preset]=\"properties?.preset\"\n            [displayEmpty]=\"properties?.displayEmpty !== undefined ? properties?.displayEmpty : false\"\n            [editable]=\"properties?.editable !== undefined ? properties?.editable : false\"\n            [multi]=\"properties?.multi !== undefined ? properties?.multi : false\"\n            [displayAspect]=\"properties?.displayAspect !== undefined ? properties?.displayAspect : null\"\n            [copyToClipboardAction]=\"properties?.copyToClipboardAction !== undefined ? properties?.copyToClipboardAction : true\"\n            [useChipsForMultiValueProperty]=\"properties?.useChipsForMultiValueProperty !== undefined ? properties?.useChipsForMultiValueProperty : true\"\n            (nodeContentLoaded)=\"onNodeContentLoaded($event)\"\n        />\n    </ng-template>\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 { ErrorMessageModel, ErrorWidgetComponent, FormFieldOption, FormService, WidgetComponent } from '@alfresco/adf-core';\nimport { FormCloudService } from '../../../services/form-cloud.service';\nimport { TranslatePipe, TranslateService } from '@ngx-translate/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormUtilsService } from '../../../services/form-utils.service';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n    selector: 'radio-buttons-cloud-widget',\n    imports: [CommonModule, ErrorWidgetComponent, MatRadioModule, TranslatePipe, FormsModule],\n    templateUrl: './radio-buttons-cloud.widget.html',\n    styleUrls: ['./radio-buttons-cloud.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 RadioButtonsCloudWidgetComponent extends WidgetComponent implements OnInit {\n    private formCloudService = inject(FormCloudService);\n    private translateService = inject(TranslateService);\n    private formUtilsService = inject(FormUtilsService);\n\n    typeId = 'RadioButtonsCloudWidgetComponent';\n    restApiError: ErrorMessageModel;\n\n    private readonly destroyRef = inject(DestroyRef);\n\n    constructor(formService: FormService) {\n        super(formService);\n    }\n\n    ngOnInit() {\n        if (this.isValidRestConfig() && !this.isReadOnlyForm()) {\n            this.getValuesFromRestApi();\n        }\n    }\n\n    getValuesFromRestApi() {\n        const body = this.formUtilsService.getRestUrlVariablesMap(this.field.form, this.field.restUrl, {});\n\n        this.formCloudService\n            .getRestWidgetData(this.field.form.id, this.field.id, body)\n            .pipe(takeUntilDestroyed(this.destroyRef))\n            .subscribe({\n                next: (result) => {\n                    this.field.options = result;\n                    this.field.updateForm();\n                },\n                error: (err) => {\n                    this.resetRestApiOptions();\n                    this.handleError(err);\n                }\n            });\n    }\n\n    onOptionClick(optionSelected: any) {\n        this.field.value = optionSelected;\n        this.onFieldChanged(this.field);\n    }\n\n    handleError(error: any) {\n        this.restApiError = new ErrorMessageModel({\n            message: this.translateService.instant('FORM.FIELD.REST_API_FAILED', { hostname: this.getRestUrlHostName() })\n        });\n        this.widgetError.emit(error);\n    }\n\n    isChecked(option: FormFieldOption): boolean {\n        if (this.field.value && typeof this.field.value === 'object') {\n            return this.field.value['id'] === option.id || this.field.value['name'] === option.name;\n        }\n        return this.field.value === option.id;\n    }\n\n    resetRestApiOptions() {\n        this.field.options = [];\n    }\n\n    getRestUrlHostName(): string {\n        return new URL(this.field?.restUrl).hostname ?? this.field?.restUrl;\n    }\n\n    hasError(): ErrorMessageModel {\n        return this.restApiError || this.field.validationSummary;\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-cloud {{field.className}}\"\n    [class.adf-readonly]=\"field.readOnly\" [id]=\"field.id\">\n    <div [ngClass]=\"(field.alignmentType === 'vertical') ? 'adf-radio-button-container': 'adf-radio-button-container-horizontal'\">\n        <label class=\"adf-label\"\n               [attr.for]=\"field.id\">{{field.name | translate }}<span class=\"adf-asterisk\" [style.visibility]=\"isRequired() ? 'visible' : 'hidden'\">*</span>\n        </label>\n        <mat-radio-group\n            [ngClass]=\"(field.alignmentType === 'vertical') ? 'adf-radio-group': 'adf-radio-group-horizontal'\"\n            class=\"adf-radio-group\"\n            [(ngModel)]=\"field.value\"\n            [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]=\"isChecked(opt)\"\n                (change)=\"onOptionClick(opt.id)\"\n                color=\"primary\"\n                class=\"adf-radio-button\" *ngFor=\"let opt of field.options\" >\n                {{opt.name}}\n            </mat-radio-button>\n        </mat-radio-group>\n    </div>\n    <error-widget class=\"adf-radio-group-error-message\" [error]=\"hasError()\" />\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, ViewEncapsulation } from '@angular/core';\nimport { FormService, BaseViewerWidgetComponent, ErrorWidgetComponent } from '@alfresco/adf-core';\nimport { AlfrescoViewerComponent } from '@alfresco/adf-content-services';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { NgIf } from '@angular/common';\n\n/* eslint-disable @angular-eslint/component-selector */\n\n@Component({\n    selector: 'file-viewer-widget',\n    imports: [NgIf, ErrorWidgetComponent, AlfrescoViewerComponent, TranslatePipe],\n    templateUrl: './file-viewer.widget.html',\n    styleUrls: ['./file-viewer.widget.scss'],\n    host: {\n        '(click)': 'event($event)',\n        '(blur)': 'event($event)',\n        '(change)': 'event($event)',\n        '(focus)': 'event($event)',\n        '(focusin)': 'event($event)',\n        '(focusout)': 'event($event)',\n        '(input)': 'event($event)',\n        '(invalid)': 'event($event)',\n        '(select)': 'event($event)'\n    },\n    encapsulation: ViewEncapsulation.None\n})\nexport class FileViewerWidgetComponent extends BaseViewerWidgetComponent {\n    constructor(formService: FormService) {\n        super(formService);\n    }\n}\n","<div class=\"adf-file-viewer-widget {{field.className}}\" [class.adf-invalid]=\"!field.isValid\"\n    [class.adf-readonly]=\"field.readOnly\">\n    <label class=\"adf-label\" [attr.for]=\"field.id\">{{field.name | translate }}<span class=\"adf-asterisk\"\n                                                                                    [style.visibility]=\"isRequired() ? 'visible' : 'hidden'\">*</span></label>\n    <adf-alfresco-viewer [overlayMode]=\"false\" [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 { Component, OnInit, SecurityContext, ViewEncapsulation } from '@angular/core';\nimport { WidgetComponent, FormService } from '@alfresco/adf-core';\nimport edjsHTML from 'editorjs-html';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Component({\n    selector: 'display-rich-text',\n    templateUrl: './display-rich-text.widget.html',\n    styleUrls: ['./display-rich-text.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 DisplayRichTextWidgetComponent extends WidgetComponent implements OnInit {\n    parsedHTML: any;\n\n    private static readonly CUSTOM_PARSER = {\n        header: (block: any): string => {\n            const paragraphAlign = block.data.alignment || block.data.align || block.tunes?.anyTuneName?.alignment;\n            if (typeof paragraphAlign !== 'undefined' && ['left', 'right', 'center'].includes(paragraphAlign)) {\n                return `<h${block.data.level} class=\"ce-tune-alignment--${paragraphAlign}\">${block.data.text}</h${block.data.level}>`;\n            } else {\n                return `<h${block.data.level}>${block.data.text}</h${block.data.level}>`;\n            }\n        },\n        paragraph: (block: any): string => {\n            const paragraphAlign = block.data.alignment || block.data.align || block.tunes?.anyTuneName?.alignment;\n\n            if (typeof paragraphAlign !== 'undefined' && ['left', 'right', 'center', 'justify'].includes(paragraphAlign)) {\n                return `<p class=\"ce-tune-alignment--${paragraphAlign}\">${block.data.text}</p>`;\n            } else {\n                return `<p>${block.data.text}</p>`;\n            }\n        }\n    };\n\n    constructor(public formService: FormService, private readonly sanitizer: DomSanitizer) {\n        super(formService);\n    }\n\n    ngOnInit(): void {\n        this.parsedHTML = edjsHTML(DisplayRichTextWidgetComponent.CUSTOM_PARSER, { strict: true }).parse(this.field.value);\n\n        if (!(this.parsedHTML instanceof Error)) {\n            this.sanitizeHtmlContent();\n        } else {\n            throw this.parsedHTML;\n        }\n    }\n\n    private sanitizeHtmlContent(): void {\n        this.parsedHTML = this.sanitizer.sanitize(SecurityContext.HTML, this.parsedHTML);\n    }\n}\n","<div class=\"adf-display-rich-text-widget\">\n    <div class=\"adf-display-rich-text-widget-parsed-html\" [innerHTML]=\"parsedHTML\"></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 { NgModule } from '@angular/core';\nimport { FormCloudComponent } from './components/form-cloud.component';\nimport { FormDefinitionSelectorCloudComponent } from './components/form-definition-selector-cloud.component';\nimport { FormCustomOutcomesComponent } from './components/form-cloud-custom-outcomes.component';\nimport { GroupCloudWidgetComponent } from './components/widgets/group/group-cloud.widget';\nimport { PeopleCloudWidgetComponent } from './components/widgets/people/people-cloud.widget';\nimport { AttachFileCloudWidgetComponent } from './components/widgets/attach-file/attach-file-cloud-widget.component';\nimport { UploadCloudWidgetComponent } from './components/widgets/upload/upload-cloud.widget';\nimport { PropertiesViewerWidgetComponent } from './components/widgets/properties-viewer/properties-viewer.widget';\nimport { PropertiesViewerWrapperComponent } from './components/widgets/properties-viewer/properties-viewer-wrapper/properties-viewer-wrapper.component';\nimport { RadioButtonsCloudWidgetComponent } from './components/widgets/radio-buttons/radio-buttons-cloud.widget';\nimport { FilePropertiesTableCloudComponent } from './components/widgets/attach-file/file-properties-table/file-properties-table-cloud.component';\nimport { FileViewerWidgetComponent } from './components/widgets/file-viewer/file-viewer.widget';\nimport { DisplayRichTextWidgetComponent } from './components/widgets/display-rich-text/display-rich-text.widget';\nimport { FormSpinnerComponent } from './components/spinner/form-spinner.component';\n\nexport const FORM_CLOUD_DIRECTIVES = [\n    FormSpinnerComponent,\n    PropertiesViewerWrapperComponent,\n    PropertiesViewerWidgetComponent,\n    DisplayRichTextWidgetComponent,\n    FileViewerWidgetComponent,\n    FilePropertiesTableCloudComponent,\n    FormCustomOutcomesComponent,\n    FormDefinitionSelectorCloudComponent,\n    RadioButtonsCloudWidgetComponent,\n    AttachFileCloudWidgetComponent,\n    UploadCloudWidgetComponent,\n    PeopleCloudWidgetComponent,\n    GroupCloudWidgetComponent,\n    FormCloudComponent\n] as const;\n\n/** @deprecated use ...FORM_CLOUD_DIRECTIVES instead */\n@NgModule({\n    imports: [...FORM_CLOUD_DIRECTIVES],\n    exports: [...FORM_CLOUD_DIRECTIVES]\n})\nexport class FormCloudModule {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 { DataRow } from '@alfresco/adf-core';\n\nexport class DataTablePathParserHelper {\n    private readonly removeSquareBracketsRegEx = /^\\[(.*)\\]$/;\n    private readonly indexReferencesRegEx = /(\\[\\d+\\])+$/;\n\n    retrieveDataFromPath(data: any, path: string): DataRow[] | undefined {\n        if (!path) {\n            return undefined;\n        }\n\n        const properties = this.splitPathIntoProperties(path);\n        const currentProperty = properties.shift();\n        const propertyIndexReferences = this.getIndexReferencesFromProperty(currentProperty);\n        const purePropertyName = this.extractPurePropertyName(currentProperty);\n        const isPropertyWithMultipleIndexReferences = propertyIndexReferences.length > 1;\n\n        if (isPropertyWithMultipleIndexReferences || !this.isPropertyExistsInData(data, purePropertyName)) {\n            return undefined;\n        }\n\n        const isPropertyWithSingleIndexReference = propertyIndexReferences.length === 1;\n        const nestedData = isPropertyWithSingleIndexReference ? data[purePropertyName]?.[propertyIndexReferences[0]] : data[purePropertyName];\n\n        if (nestedData && properties.length === 0) {\n            if (this.isDataArrayOrObject(nestedData)) {\n                return Array.isArray(nestedData) ? nestedData : [nestedData];\n            }\n        }\n\n        return this.retrieveDataFromPath(nestedData, properties.join('.'));\n    }\n\n    splitPathIntoProperties(path: string): string[] {\n        const properties: string[] = [];\n        const separator = '.';\n        const openBracket = '[';\n        const closeBracket = ']';\n\n        let currentPropertyBuffer = '';\n        let bracketCount = 0;\n        const isPropertySeparatorOutsideBrackets = () => bracketCount === 0;\n\n        if (!path) {\n            return properties;\n        }\n\n        for (const char of path) {\n            switch (char) {\n                case separator:\n                    if (isPropertySeparatorOutsideBrackets()) {\n                        properties.push(currentPropertyBuffer);\n                        currentPropertyBuffer = '';\n                    } else {\n                        currentPropertyBuffer += char;\n                    }\n                    break;\n                case openBracket:\n                    bracketCount++;\n                    currentPropertyBuffer += char;\n                    break;\n                case closeBracket:\n                    bracketCount--;\n                    currentPropertyBuffer += char;\n                    break;\n                default:\n                    currentPropertyBuffer += char;\n                    break;\n            }\n        }\n\n        if (currentPropertyBuffer) {\n            properties.push(currentPropertyBuffer);\n        }\n\n        return properties;\n    }\n\n    getIndexReferencesFromProperty(property: string): number[] {\n        const match = this.indexReferencesRegEx.exec(property);\n        if (!match) {\n            return [];\n        }\n\n        const indexReferencesString = match[0];\n        const numbersFromBrackets = indexReferencesString.slice(1, -1).split('][').map(Number);\n\n        return numbersFromBrackets;\n    }\n\n    extractPurePropertyName(property: string): string {\n        const propertyIndexReferences = this.getIndexReferencesFromProperty(property);\n        const numberOfIndexReferences = propertyIndexReferences.length;\n\n        if (property == null) {\n            return '';\n        } else if (numberOfIndexReferences !== 0) {\n            return this.removeSquareBracketsAndIndexReferencesFromProperty(property);\n        } else {\n            return this.removeSquareBracketsFromProperty(property);\n        }\n    }\n\n    private removeSquareBracketsAndIndexReferencesFromProperty(property: string): string {\n        const propertyWithoutIndexReferences = property?.replace(this.indexReferencesRegEx, '');\n\n        return this.removeSquareBracketsFromProperty(propertyWithoutIndexReferences);\n    }\n\n    private removeSquareBracketsFromProperty(property: string): string {\n        return property?.replace(this.removeSquareBracketsRegEx, '$1');\n    }\n\n    private isPropertyExistsInData(data: any, property: string): boolean {\n        return Object.prototype.hasOwnProperty.call(data, property);\n    }\n\n    private isDataArrayOrObject(data: any): boolean {\n        if (data == null) {\n            return false;\n        }\n        return Array.isArray(data) || typeof data === 'object';\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 { ObjectDataTableAdapter, DataColumn, DataRow, ObjectDataColumn, ObjectDataRow, DataTableAdapter, DataSorting } from '@alfresco/adf-core';\nimport { DataTablePathParserHelper } from './helpers/data-table-path-parser.helper';\nimport { Subject } from 'rxjs';\n\nexport class WidgetDataTableAdapter implements DataTableAdapter {\n    private adapter: ObjectDataTableAdapter;\n    private columnKeys: string[] = [];\n    private helper = new DataTablePathParserHelper();\n\n    get selectedRow(): DataRow {\n        return this.adapter.selectedRow;\n    }\n\n    get rowsChanged(): Subject<Array<DataRow>> {\n        return this.adapter.rowsChanged;\n    }\n\n    constructor(data: any[], schema: DataColumn[]) {\n        this.adapter = new ObjectDataTableAdapter(data, schema);\n\n        this.createColumns(schema);\n        this.createRows(data);\n    }\n\n    private createColumns(schema: DataColumn[]): void {\n        if (schema?.length) {\n            this.adapter.setColumns(this.buildColumnsFromSchema(schema));\n        }\n    }\n\n    private buildColumnsFromSchema(schema: DataColumn[]): ObjectDataColumn[] {\n        return schema.map((dataColumn) => {\n            this.columnKeys.push(dataColumn.key);\n\n            return new ObjectDataColumn(dataColumn);\n        });\n    }\n\n    private createRows(data: any[]): void {\n        if (data?.length) {\n            this.adapter.setRows(data.map((item) => this.buildDataRowFromItem(item)));\n        }\n    }\n\n    private buildDataRowFromItem(item: any): ObjectDataRow {\n        const rowData = {};\n        this.columnKeys.forEach((path, i) => {\n            const rowValue = this.extractPropertyValue(this.helper.splitPathIntoProperties(path), item);\n\n            if (rowValue) {\n                rowData[this.columnKeys[i]] = rowValue;\n            }\n        });\n\n        return new ObjectDataRow(rowData);\n    }\n\n    private extractPropertyValue(properties: string[], item: any): string {\n        return properties.reduce((acc, property) => {\n            if (!acc) {\n                return undefined;\n            }\n\n            const propertyIndexReferences = this.helper.getIndexReferencesFromProperty(property);\n            const isPropertyWithSingleIndexReference = propertyIndexReferences.length === 1;\n\n            const purePropertyName = this.helper.extractPurePropertyName(property);\n\n            return isPropertyWithSingleIndexReference ? acc[purePropertyName]?.[propertyIndexReferences[0]] : acc[purePropertyName];\n        }, item);\n    }\n\n    getColumns(): Array<DataColumn> {\n        return this.adapter.getColumns();\n    }\n\n    getRows(): DataRow[] {\n        if (this.isDataSourceValid()) {\n            return this.adapter.getRows();\n        }\n\n        return [];\n    }\n\n    setRows(rows: Array<DataRow>): void {\n        this.adapter.setRows(rows);\n    }\n\n    setColumns(columns: Array<DataColumn>): void {\n        this.adapter.setColumns(columns);\n    }\n\n    getValue(row: DataRow, col: DataColumn, resolverFn?: (_row: DataRow, _col: DataColumn) => any): any {\n        return this.adapter.getValue(row, col, resolverFn);\n    }\n\n    getColumnType(row: DataRow, col: DataColumn): string {\n        return this.adapter.getColumnType(row, col);\n    }\n\n    getSorting(): DataSorting {\n        return this.adapter.getSorting();\n    }\n\n    setSorting(sorting: DataSorting): void {\n        this.adapter.setSorting(sorting);\n    }\n\n    sort(key?: string, direction?: string): void {\n        this.adapter.sort(key, direction);\n    }\n\n    isDataSourceValid(): boolean {\n        return this.allColumnsHaveKeys();\n    }\n\n    private allColumnsHaveKeys(): boolean {\n        return this.adapter.getColumns().every((column) => !!column.key);\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, OnInit, ViewEncapsulation } from '@angular/core';\nimport {\n    WidgetComponent,\n    FormService,\n    FormBaseModule,\n    DataRow,\n    DataColumn,\n    DataTableComponent,\n    NoContentTemplateDirective,\n    EmptyContentComponent\n} from '@alfresco/adf-core';\nimport { NgIf } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { FormCloudService } from '../../../services/form-cloud.service';\nimport { TaskVariableCloud } from '../../../models/task-variable-cloud.model';\nimport { WidgetDataTableAdapter } from './data-table-adapter.widget';\nimport { DataTablePathParserHelper } from './helpers/data-table-path-parser.helper';\n\n@Component({\n    standalone: true,\n    imports: [NgIf, TranslatePipe, FormBaseModule, DataTableComponent, NoContentTemplateDirective, EmptyContentComponent],\n    selector: 'data-table',\n    templateUrl: './data-table.widget.html',\n    styleUrls: ['./data-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 DataTableWidgetComponent extends WidgetComponent implements OnInit {\n    dataSource: WidgetDataTableAdapter;\n    dataTableLoadFailed = false;\n    previewState = false;\n\n    private rowsData: DataRow[];\n    private columnsSchema: DataColumn[];\n    private variableName: string;\n    private defaultResponseProperty = 'data';\n    private pathParserHelper = new DataTablePathParserHelper();\n\n    constructor(public formService: FormService, private formCloudService: FormCloudService) {\n        super(formService);\n    }\n\n    ngOnInit(): void {\n        this.init();\n\n        this.formService.onFormVariableChanged.subscribe(({ field }) => {\n            if (field.id === this.field.id) {\n                this.init();\n            }\n        });\n    }\n\n    private init(): void {\n        this.dataTableLoadFailed = false;\n\n        this.setPreviewState();\n        this.getTableData();\n        this.initDataTable();\n    }\n\n    private getTableData(): void {\n        this.variableName = this.field?.variableConfig?.variableName;\n        this.columnsSchema = this.field?.schemaDefinition;\n\n        this.getRowsData();\n    }\n\n    private initDataTable(): void {\n        this.dataSource = new WidgetDataTableAdapter(this.rowsData, this.columnsSchema);\n\n        if (!this.dataSource.isDataSourceValid()) {\n            this.handleError();\n            return;\n        }\n\n        this.field.updateForm();\n    }\n\n    private getRowsData(): void {\n        const optionsPath = this.field?.variableConfig?.optionsPath ?? this.defaultResponseProperty;\n        const fieldValue = this.field?.value;\n\n        const rowsData = fieldValue || this.getDataFromVariable();\n\n        if (!rowsData) {\n            this.handleError();\n            return;\n        }\n\n        this.rowsData = this.extractRowsData(rowsData, optionsPath);\n\n        if (!this.rowsData) {\n            this.handleError();\n        }\n    }\n\n    private extractRowsData(rowsData: any, optionsPath: string): DataRow[] | undefined {\n        if (Array.isArray(rowsData)) {\n            return rowsData;\n        }\n\n        return this.pathParserHelper.retrieveDataFromPath(rowsData, optionsPath);\n    }\n\n    private getDataFromVariable(): any {\n        const processVariables = this.field?.form?.processVariables;\n        const formVariables = this.field?.form?.variables;\n\n        const processVariableData = this.getVariableValueByName(processVariables, this.variableName);\n        const formVariableData = this.getVariableValueByName(formVariables, this.variableName);\n\n        return processVariableData ?? formVariableData;\n    }\n\n    private getVariableValueByName(variables: TaskVariableCloud[], variableName: string): any {\n        return variables?.find((variable: TaskVariableCloud) => variable?.name === `variables.${variableName}` || variable?.name === variableName)\n            ?.value;\n    }\n\n    private setPreviewState(): void {\n        this.previewState = this.formCloudService.getPreviewState();\n    }\n\n    private handleError(): void {\n        if (!this.previewState) {\n            this.dataTableLoadFailed = true;\n        }\n    }\n}\n","<div class=\"adf-data-table-widget-container\">\n    <div class=\"adf-data-table-widget-label\">\n        <label\n            class=\"adf-label\"\n            [class.adf-left-label]=\"field.leftLabels\"\n            [attr.for]=\"field.id\">\n                {{field.name | translate }}\n        </label>\n    </div>\n\n    <ng-container *ngIf=\"!previewState; else previewTemplate\">\n        <adf-datatable data-automation-id=\"adf-data-table-widget\" [data]=\"dataSource\">\n            <adf-no-content-template>\n                <ng-template>\n                    <adf-empty-content\n                        icon=\"border_all\"\n                        [title]=\"'FORM.FIELD.DATA_TABLE_EMPTY_CONTENT' | translate\" />\n                </ng-template>\n            </adf-no-content-template>\n        </adf-datatable>\n\n        <error-widget *ngIf=\"dataTableLoadFailed\"\n            class=\"adf-data-table-widget-failed-message\"\n            [required]=\"'FORM.FIELD.DATA_TABLE_LOAD_FAILED' | translate\" />\n    </ng-container>\n\n    <ng-template #previewTemplate>\n        <adf-datatable data-automation-id=\"adf-data-table-widget-preview\" />\n        <div class=\"adf-preview-placeholder\"></div>\n    </ng-template>\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 { ChangeDetectionStrategy, Component, OnInit, ViewEncapsulation } from '@angular/core';\nimport { WidgetComponent, FormService, FormBaseModule } from '@alfresco/adf-core';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { FormCloudService } from '../../../services/form-cloud.service';\nimport { FormControl, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\n\n@Component({\n    standalone: true,\n    imports: [CommonModule, TranslatePipe, ReactiveFormsModule, MatFormFieldModule, MatInputModule, FormBaseModule],\n    selector: 'adf-cloud-display-external-property',\n    templateUrl: './display-external-property.widget.html',\n    styleUrls: ['./display-external-property.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    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DisplayExternalPropertyWidgetComponent extends WidgetComponent implements OnInit {\n    propertyLoadFailed = false;\n    previewState = false;\n    propertyControl: FormControl;\n\n    constructor(public readonly formService: FormService, private readonly formCloudService: FormCloudService) {\n        super(formService);\n    }\n\n    ngOnInit(): void {\n        this.initFormControl();\n        this.initPreviewState();\n        this.handleFailedPropertyLoad();\n    }\n\n    private initFormControl(): void {\n        this.propertyControl = new FormControl(\n            {\n                value: this.field?.value,\n                disabled: this.field?.readOnly || this.readOnly\n            },\n            this.isRequired() ? [Validators.required] : []\n        );\n    }\n\n    private isPropertyLoadFailed(): boolean {\n        return this.field.externalProperty && !this.field.value;\n    }\n\n    private handleFailedPropertyLoad(): void {\n        if (this.isPropertyLoadFailed()) {\n            this.handleError('External property not found');\n        }\n    }\n\n    private initPreviewState(): void {\n        this.previewState = this.formCloudService.getPreviewState();\n    }\n\n    private handleError(error: any): void {\n        if (!this.previewState) {\n            this.propertyLoadFailed = true;\n            this.widgetError.emit(error);\n        }\n    }\n}\n","<div\n    class=\"adf-textfield adf-display-external-property-widget {{ field.className }}\"\n    [class.adf-invalid]=\"!field.isValid && isTouched()\"\n    [class.adf-readonly]=\"field.readOnly\"\n    [class.adf-left-label-input-container]=\"field.leftLabels\"\n>\n    <div *ngIf=\"field.leftLabels\">\n        <label class=\"adf-label adf-left-label\" [attr.for]=\"field.id\">\n            {{ field.name | translate }}<span class=\"adf-asterisk\" [style.visibility]=\"isRequired() ? 'visible' : 'hidden'\">*</span>\n        </label>\n    </div>\n\n    <div>\n        <mat-form-field class=\"adf-form-field-input\" [floatLabel]=\"field.placeholder ? 'always' : null\">\n            @if( (field.name || field?.required) && !field.leftLabels) {\n            <mat-label class=\"adf-label\" [attr.for]=\"field.id\"> {{ field.name | translate }} </mat-label>\n            }\n            <input\n                matInput\n                class=\"adf-input\"\n                type=\"text\"\n                data-automation-id=\"adf-display-external-property-widget\"\n                [id]=\"field.id\"\n                [formControl]=\"propertyControl\"\n                [required]=\"field.required\"\n            />\n\n            <ng-container *ngIf=\"previewState\">\n                <span class=\"adf-display-external-property-widget-preview\" data-automation-id=\"adf-display-external-property-widget-preview\">\n                    {{ field.params.externalPropertyLabel }}\n                </span>\n            </ng-container>\n        </mat-form-field>\n\n        <div\n            class=\"adf-error-messages-container\"\n            [ngClass]=\"!previewState ? 'adf-error-messages-container-visible' : 'adf-error-messages-container-hidden'\"\n        >\n            <error-widget *ngIf=\"propertyLoadFailed\" [required]=\"'FORM.FIELD.EXTERNAL_PROPERTY_LOAD_FAILED' | translate\" />\n        </div>\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 { Injectable } from '@angular/core';\nimport { FormFieldTypes, FormRenderingService } from '@alfresco/adf-core';\nimport { AttachFileCloudWidgetComponent } from './widgets/attach-file/attach-file-cloud-widget.component';\nimport { DropdownCloudWidgetComponent } from './widgets/dropdown/dropdown-cloud.widget';\nimport { DateCloudWidgetComponent } from './widgets/date/date-cloud.widget';\nimport { PeopleCloudWidgetComponent } from './widgets/people/people-cloud.widget';\nimport { GroupCloudWidgetComponent } from './widgets/group/group-cloud.widget';\nimport { PropertiesViewerWidgetComponent } from './widgets/properties-viewer/properties-viewer.widget';\nimport { RadioButtonsCloudWidgetComponent } from './widgets/radio-buttons/radio-buttons-cloud.widget';\nimport { FileViewerWidgetComponent } from './widgets/file-viewer/file-viewer.widget';\nimport { DisplayRichTextWidgetComponent } from './widgets/display-rich-text/display-rich-text.widget';\nimport { DataTableWidgetComponent } from './widgets/data-table/data-table.widget';\nimport { DisplayExternalPropertyWidgetComponent } from './widgets/display-external-property/display-external-property.widget';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class CloudFormRenderingService extends FormRenderingService {\n    constructor() {\n        super();\n\n        this.register(\n            {\n                [FormFieldTypes.UPLOAD]: () => AttachFileCloudWidgetComponent,\n                [FormFieldTypes.DROPDOWN]: () => DropdownCloudWidgetComponent,\n                [FormFieldTypes.DATE]: () => DateCloudWidgetComponent,\n                [FormFieldTypes.PEOPLE]: () => PeopleCloudWidgetComponent,\n                [FormFieldTypes.FUNCTIONAL_GROUP]: () => GroupCloudWidgetComponent,\n                [FormFieldTypes.PROPERTIES_VIEWER]: () => PropertiesViewerWidgetComponent,\n                [FormFieldTypes.RADIO_BUTTONS]: () => RadioButtonsCloudWidgetComponent,\n                [FormFieldTypes.ALFRESCO_FILE_VIEWER]: () => FileViewerWidgetComponent,\n                [FormFieldTypes.DISPLAY_RICH_TEXT]: () => DisplayRichTextWidgetComponent,\n                [FormFieldTypes.DATA_TABLE]: () => DataTableWidgetComponent,\n                [FormFieldTypes.DISPLAY_EXTERNAL_PROPERTY]: () => DisplayExternalPropertyWidgetComponent\n            },\n            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 { PreferenceCloudServiceInterface } from './services/preference-cloud.interface';\nimport { Provider } from '@angular/core';\nimport {\n    PROCESS_FILTERS_SERVICE_TOKEN,\n    PROCESS_LISTS_PREFERENCES_SERVICE_TOKEN,\n    TASK_FILTERS_SERVICE_TOKEN,\n    TASK_LIST_PREFERENCES_SERVICE_TOKEN\n} from './services/cloud-token.service';\nimport { LocalPreferenceCloudService } from './services/local-preference-cloud.service';\nimport { FormRenderingService } from '@alfresco/adf-core';\nimport { CloudFormRenderingService } from './form/components/cloud-form-rendering.service';\n\n/**\n * Provides preferences service for the process services cloud components\n *\n * @param opts Optional settings\n * @param opts.filterPreferenceServiceInstance Custom filter instance for `PROCESS_FILTERS_SERVICE_TOKEN` and `TASK_FILTERS_SERVICE_TOKEN` (default: LocalPreferenceCloudService)\n * @param opts.listPreferenceServiceInstance Custom filter instance for `PROCESS_LISTS_PREFERENCES_SERVICE_TOKEN` and `TASK_LIST_PREFERENCES_SERVICE_TOKEN` (default: LocalPreferenceCloudService)\n * @returns list of providers\n */\nexport function provideCloudPreferences(opts?: {\n    filterPreferenceServiceInstance?: PreferenceCloudServiceInterface;\n    listPreferenceServiceInstance?: PreferenceCloudServiceInterface;\n}): Provider[] {\n    return [\n        { provide: PROCESS_FILTERS_SERVICE_TOKEN, useExisting: opts?.filterPreferenceServiceInstance ?? LocalPreferenceCloudService },\n        { provide: TASK_FILTERS_SERVICE_TOKEN, useExisting: opts?.filterPreferenceServiceInstance ?? LocalPreferenceCloudService },\n        { provide: PROCESS_LISTS_PREFERENCES_SERVICE_TOKEN, useExisting: opts?.listPreferenceServiceInstance ?? LocalPreferenceCloudService },\n        { provide: TASK_LIST_PREFERENCES_SERVICE_TOKEN, useExisting: opts?.listPreferenceServiceInstance ?? LocalPreferenceCloudService }\n    ];\n}\n\n/**\n * Provides form rendering services for process cloud components\n *\n * @returns list of providers\n */\nexport function provideCloudFormRenderer(): Provider[] {\n    return [FormRenderingService, { provide: FormRenderingService, useClass: CloudFormRenderingService }];\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 { NgModule, ModuleWithProviders } from '@angular/core';\nimport { provideTranslations } from '@alfresco/adf-core';\nimport { APP_LIST_CLOUD_DIRECTIVES } from './app/app-list-cloud.module';\nimport { TaskCloudModule } from './task/task-cloud.module';\nimport { ProcessCloudModule } from './process/process-cloud.module';\nimport { FORM_CLOUD_DIRECTIVES } from './form/form-cloud.module';\nimport { TASK_FORM_CLOUD_DIRECTIVES } from './task/task-form/task-form.module';\nimport { PreferenceCloudServiceInterface, TASK_LIST_CLOUD_TOKEN } from './services/public-api';\nimport { GroupCloudComponent } from './group/components/group-cloud.component';\nimport { PeopleCloudComponent } from './people/components/people-cloud.component';\nimport { provideCloudFormRenderer, provideCloudPreferences } from './providers';\nimport { TaskListCloudService } from './task/task-list/services/task-list-cloud.service';\n\nexport const PROCESS_SERVICES_CLOUD_DIRECTIVES = [\n    ...APP_LIST_CLOUD_DIRECTIVES,\n    ...FORM_CLOUD_DIRECTIVES,\n    ...TASK_FORM_CLOUD_DIRECTIVES,\n    PeopleCloudComponent\n] as const;\n\n/**\n * @deprecated this module is deprecated and will be removed in the future versions\n *\n * Instead, import the standalone components directly, or use the following provider API to replicate the behaviour:\n * ```\n * providers: [\n *      provideTranslations('adf-process-services-cloud', 'assets/adf-process-services-cloud')\n *      provideCloudPreferences()\n *      provideCloudFormRenderer(),\n *      { provide: TASK_LIST_CLOUD_TOKEN, useClass: TaskListCloudService }\n * ]\n * ```\n */\n@NgModule({\n    imports: [ProcessCloudModule, TaskCloudModule, GroupCloudComponent, ...PROCESS_SERVICES_CLOUD_DIRECTIVES],\n    exports: [ProcessCloudModule, TaskCloudModule, GroupCloudComponent, ...PROCESS_SERVICES_CLOUD_DIRECTIVES]\n})\nexport class ProcessServicesCloudModule {\n    static forRoot(\n        filterPreferenceServiceInstance?: PreferenceCloudServiceInterface,\n        listPreferenceServiceInstance?: PreferenceCloudServiceInterface\n    ): ModuleWithProviders<ProcessServicesCloudModule> {\n        return {\n            ngModule: ProcessServicesCloudModule,\n            providers: [\n                provideTranslations('adf-process-services-cloud', 'assets/adf-process-services-cloud'),\n                provideCloudPreferences({\n                    filterPreferenceServiceInstance,\n                    listPreferenceServiceInstance\n                }),\n                provideCloudFormRenderer(),\n                { provide: TASK_LIST_CLOUD_TOKEN, useClass: TaskListCloudService }\n            ]\n        };\n    }\n\n    static forChild(): ModuleWithProviders<ProcessServicesCloudModule> {\n        return {\n            ngModule: ProcessServicesCloudModule\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\nexport * from './components/app-list-cloud/app-list-cloud.component';\nexport * from './components/app-details-cloud/app-details-cloud.component';\nexport * from './services/apps-process-cloud.service';\nexport * from './models/application-instance.model';\nexport * from './app-list-cloud.module';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Observable, throwError } from 'rxjs';\nimport { BaseCloudService } from '../../../services/base-cloud.service';\nimport { map } from 'rxjs/operators';\nimport { TaskListRequestModel, TaskQueryCloudRequestModel } from '../../../models/filter-cloud-model';\nimport { TaskCloudNodePaging } from '../../../models/task-cloud.model';\nimport { TaskListCloudSortingModel } from '../../../models/task-list-sorting.model';\n\n@Injectable({ providedIn: 'root' })\nexport class ProcessTaskListCloudService extends BaseCloudService {\n    /**\n     * Finds a task using an object with optional query properties.\n     *\n     * @param requestNode Query object\n     * @param queryUrl Query url\n     * @returns Task information\n     */\n    getTaskByRequest(requestNode: TaskQueryCloudRequestModel, queryUrl?: string): Observable<any> {\n        if (requestNode.appName || requestNode.appName === '') {\n            queryUrl = queryUrl || `${this.getBasePath(requestNode.appName)}/query/v1/process-instances/${requestNode.processInstanceId}/tasks`;\n            const queryParams = this.buildQueryParams(requestNode);\n            const sortingParams = this.buildSortingParam(requestNode.sorting);\n            if (sortingParams) {\n                queryParams['sort'] = sortingParams;\n            }\n            return this.get<TaskCloudNodePaging>(queryUrl, queryParams).pipe(\n                map((response) => {\n                    const entries = response.list?.entries;\n                    if (entries) {\n                        // TODO: this is a hack of the model and should be revisited\n                        response.list.entries = entries.map((entryData: any) => entryData.entry);\n                    }\n                    return response;\n                })\n            );\n        } else {\n            return throwError('Appname not configured');\n        }\n    }\n\n    /**\n     * Retrieves a list of tasks using an object with optional query properties.\n     *\n     * @param requestNode Query object\n     * @param queryUrl Query url\n     * @returns List of tasks\n     */\n    fetchTaskList(requestNode: TaskListRequestModel, queryUrl?: string): Observable<any> {\n        return this.getTaskByRequest(\n            new TaskQueryCloudRequestModel({\n                appName: requestNode.appName,\n                processInstanceId: requestNode.processInstanceId\n            }),\n            queryUrl\n        );\n    }\n\n    getTaskListCounter(requestNode: TaskListRequestModel): Observable<number> {\n        if (!requestNode.appName) {\n            return throwError(() => new Error('Appname not configured'));\n        }\n        return this.fetchTaskList(requestNode).pipe(map((tasks) => tasks.list.pagination.totalItems));\n    }\n\n    protected buildQueryParams(requestNode: TaskQueryCloudRequestModel): any {\n        const queryParam: any = {};\n        for (const property in requestNode) {\n            if (\n                Object.prototype.hasOwnProperty.call(requestNode, property) &&\n                !this.isExcludedField(property) &&\n                this.isPropertyValueValid(requestNode, property)\n            ) {\n                queryParam[property] = requestNode[property];\n            }\n        }\n        return queryParam;\n    }\n\n    protected isExcludedField(property: string): boolean {\n        return property === 'appName' || property === 'sorting';\n    }\n\n    protected isPropertyValueValid(requestNode: TaskQueryCloudRequestModel, property: string): boolean {\n        return requestNode[property] !== '' && requestNode[property] !== null && requestNode[property] !== undefined;\n    }\n\n    protected buildSortingParam(models: TaskListCloudSortingModel[]): string {\n        let finalSorting: string = '';\n        if (models) {\n            for (const sort of models) {\n                if (!finalSorting) {\n                    finalSorting = `${sort.orderBy},${sort.direction}`;\n                } else {\n                    finalSorting = `${finalSorting}&${sort.orderBy},${sort.direction}`;\n                }\n            }\n        }\n        return encodeURI(finalSorting);\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\nexport * from './components/process-list-cloud.component';\n\nexport * from './models/process-cloud-query-request.model';\nexport * from './models/process-cloud-preset.model';\nexport * from './models/process-list-sorting.model';\nexport * from './models/process-cloud-preferences';\n\nexport * from './services/process-list-cloud.service';\nexport * from './services/process-task-list-cloud.service';\n\nexport * from './process-list-cloud.module';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 './components/process-filters/process-filters-cloud.component';\nexport * from './components/edit-process-filter/edit-process-filter-cloud.component';\nexport * from './components/process-filter-dialog/process-filter-dialog-cloud.component';\nexport * from './models/process-filter-cloud.model';\nexport * from './services/process-filter-cloud.service';\nexport * from './process-filters-cloud.module';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 { ProcessInstanceVariable } from '../../../models/process-instance-variable.model';\nexport interface ProcessInstanceCloud {\n    appName?: string;\n    appVersion?: string;\n    businessKey?: string;\n    completedDate?: string;\n    id?: string;\n    initiator?: string;\n    lastModified?: Date;\n    name?: string;\n    parentId?: string;\n    processDefinitionId?: string;\n    processDefinitionKey?: string;\n    processDefinitionName?: string;\n    processDefinitionVersion?: string;\n    serviceName?: string;\n    serviceFullName?: string;\n    serviceType?: string;\n    serviceVersion?: string;\n    startDate?: Date;\n    status?: string;\n    variables?: ProcessInstanceVariable[];\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 './components/start-process-cloud.component';\nexport * from './models/process-instance-cloud.model';\nexport * from './models/process-payload-cloud.model';\nexport * from './services/start-process-cloud.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 { NgModule } from '@angular/core';\nimport { ProcessHeaderCloudComponent } from './components/process-header-cloud.component';\n\n/** @deprecated use ProcessHeaderCloudComponent instead */\n@NgModule({\n    imports: [ProcessHeaderCloudComponent],\n    exports: [ProcessHeaderCloudComponent]\n})\nexport class ProcessHeaderCloudModule {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 './process-header-cloud.module';\nexport * from './components/process-header-cloud.component';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 './process-list/public-api';\nexport * from './process-filters/public-api';\nexport * from './start-process/public-api';\nexport * from './process-header/public-api';\nexport * from './services/process-cloud.service';\n\nexport * from './process-cloud.module';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 { TaskListCloudSortingModel } from '../../../models/task-list-sorting.model';\n\nexport interface ServiceTaskQueryCloudRequestModel {\n    appName: string;\n    appVersion?: string;\n    environmentId?: string;\n    id?: string;\n    status?: string;\n    maxItems: number;\n    skipCount: number;\n    sorting?: TaskListCloudSortingModel[];\n    activityName?: string;\n    activityType?: string;\n    completedDate?: Date;\n    elementId?: string;\n    executionId?: string;\n    processDefinitionId?: string;\n    processDefinitionKey?: string;\n    processDefinitionVersion?: number;\n    processInstanceId?: string;\n    serviceFullName?: string;\n    serviceName?: string;\n    serviceVersion?: string;\n    startedDate?: Date;\n}\n\nexport interface ServiceTaskIntegrationContextCloudModel extends ServiceTaskQueryCloudRequestModel {\n    errorDate?: Date;\n    errorClassName?: string;\n    errorCode?: string;\n    errorMessage?: string;\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 './components/task-list/task-list-cloud.component';\nexport * from './components/service-task-list/service-task-list-cloud.component';\n\nexport * from './models/service-task-cloud.model';\n\nexport * from './services/task-list-cloud.service';\nexport * from './services/service-task-list-cloud.service';\n\nexport * from './task-list-cloud.module';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 './components/edit-task-filters/edit-task-filter/edit-task-filter-cloud.component';\nexport * from './components/edit-task-filters/edit-service-task-filter/edit-service-task-filter-cloud.component';\nexport * from './components/service-task-filters/service-task-filters-cloud.component';\nexport * from './components/task-assignment-filter/task-assignment-filter.component';\nexport * from './components/task-filter-dialog/task-filter-dialog-cloud.component';\nexport * from './components/task-filters/task-filters-cloud.component';\nexport * from './models/filter-cloud.model';\nexport * from './services/task-filter-cloud.service';\nexport * from './services/service-task-filter-cloud.service';\nexport * from './task-filters-cloud.module';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 } from '@angular/core';\nimport { TaskHeaderCloudComponent } from './components/task-header-cloud.component';\n\n/** @deprecated use TaskHeaderCloudComponent standalone component */\n@NgModule({\n    imports: [TaskHeaderCloudComponent],\n    exports: [TaskHeaderCloudComponent]\n})\nexport class TaskHeaderCloudModule {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 './components/task-header-cloud.component';\n\nexport * from './task-header-cloud.module';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 './components/task-form-cloud/task-form-cloud.component';\nexport * from './components/user-task-cloud/user-task-cloud.component';\nexport * from './components/user-task-cloud-buttons/user-task-cloud-buttons.component';\nexport * from './task-form.module';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 './task-list/public-api';\nexport * from './task-filters/public-api';\nexport * from './models/task-details-cloud.model';\nexport * from './models/task.model';\nexport * from './models/start-task-cloud-request.model';\nexport * from './task-header/public-api';\nexport * from './task-form/public-api';\nexport * from './services/task-cloud.service';\nexport * from './task-cloud.module';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 interface IdentityGroupModel {\n    id?: string;\n    name: string;\n    readonly?: boolean;\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 { NgModule } from '@angular/core';\nimport { GroupCloudComponent } from './components/group-cloud.component';\n\n/** @deprecated use GroupCloudComponent instead */\n@NgModule({\n    imports: [GroupCloudComponent],\n    exports: [GroupCloudComponent]\n})\nexport class GroupCloudModule {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 './components/group-cloud.component';\nexport * from './models/identity-group.model';\nexport * from './group-cloud.module';\nexport * from './services/identity-group.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 { NgModule } from '@angular/core';\nimport { PeopleCloudComponent } from './components/people-cloud.component';\n\n/** @deprecated use PeopleCloudComponent instead */\n@NgModule({\n    imports: [PeopleCloudComponent],\n    exports: [PeopleCloudComponent]\n})\nexport class PeopleCloudModule {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 interface IdentityUserModel {\n    id?: string;\n    username: string;\n    firstName?: string;\n    lastName?: string;\n    email?: string;\n    readonly?: boolean;\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 './components/people-cloud.component';\nexport * from './people-cloud.module';\nexport * from './models/identity-user.model';\nexport * from './services/identity-user.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 { RadioButtonsThemeVariable, WidgetSchemaModel } from '@alfresco/adf-core';\n\nexport const radioButtonsSchema: WidgetSchemaModel<RadioButtonsThemeVariable> = {\n    themeProperties: [\n        {\n            name: 'FORM.FIELD_STYLE.FONT_SIZE',\n            cssPropertyName: 'font-size',\n            fieldVariableName: '--adf-radio-buttons-font-size',\n            formVariableName: '--adf-form-label-font-size',\n            type: 'number',\n            unit: 'px',\n            defaultValue: '16px'\n        },\n        {\n            name: 'FORM.FIELD_STYLE.FONT_WEIGHT',\n            cssPropertyName: 'font-weight',\n            fieldVariableName: '--adf-radio-buttons-font-weight',\n            formVariableName: '--adf-form-label-font-weight',\n            type: 'options',\n            options: [\n                {\n                    name: 'FORM.FIELD_STYLE.FONT_WEIGHTS.REGULAR',\n                    value: 'normal'\n                },\n                {\n                    name: 'FORM.FIELD_STYLE.FONT_WEIGHTS.BOLD',\n                    value: 'bold'\n                }\n            ],\n            defaultValue: 'normal'\n        },\n        {\n            name: 'FORM.FIELD_STYLE.FONT_COLOR',\n            cssPropertyName: 'color',\n            fieldVariableName: '--adf-radio-buttons-color',\n            formVariableName: '--adf-form-label-color',\n            type: 'colorOptions',\n            options: [\n                {\n                    name: 'FORM.FIELD_STYLE.COLORS.SYSTEM_COLOR',\n                    value: 'inherit'\n                },\n                {\n                    name: 'FORM.FIELD_STYLE.COLORS.BLACK',\n                    value: '#000000'\n                },\n                {\n                    name: 'FORM.FIELD_STYLE.COLORS.GREY',\n                    value: '#9CA3AF'\n                },\n                {\n                    name: 'FORM.FIELD_STYLE.COLORS.RED',\n                    value: '#DA1500'\n                },\n                {\n                    name: 'FORM.FIELD_STYLE.COLORS.GREEN',\n                    value: '#04A003'\n                },\n                {\n                    name: 'FORM.FIELD_STYLE.COLORS.BLUE',\n                    value: '#0A60CE'\n                },\n                {\n                    name: 'FORM.FIELD_STYLE.COLORS.YELLOW',\n                    value: '#FACC15'\n                }\n            ],\n            defaultValue: 'inherit'\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\nexport * from './models/task-variable-cloud.model';\n\nexport * from './components/spinner/form-spinner.component';\nexport * from './components/form-cloud-custom-outcomes.component';\nexport * from './components/form-cloud.component';\nexport * from './components/form-definition-selector-cloud.component';\nexport * from './components/cloud-form-rendering.service';\n\nexport * from './components/widgets/attach-file/attach-file-cloud-widget.component';\nexport * from './components/widgets/attach-file/file-properties-table/file-properties-table-cloud.component';\nexport * from './components/widgets/upload/upload-cloud.widget';\nexport * from './components/widgets/date/date-cloud.widget';\nexport * from './components/widgets/dropdown/dropdown-cloud.widget';\nexport * from './components/widgets/group/group-cloud.widget';\nexport * from './components/widgets/people/people-cloud.widget';\nexport * from './components/widgets/properties-viewer/properties-viewer.widget';\nexport * from './components/widgets/properties-viewer/properties-viewer-wrapper/properties-viewer-wrapper.component';\nexport * from './components/widgets/file-viewer/file-viewer.widget';\nexport * from './components/widgets/display-rich-text/display-rich-text.widget';\n\n// widgets with schema\nexport * from './components/widgets/radio-buttons/radio-buttons-cloud.widget';\nexport * from './components/widgets/radio-buttons/radio-buttons-cloud.schema';\n\nexport * from './services/content-cloud-node-selector.service';\nexport * from './services/form-cloud.service';\nexport * from './services/form-definition-selector-cloud.service';\nexport * from './services/content-cloud-node-selector.service';\nexport * from './services/process-cloud-content.service';\nexport * from './services/display-mode.service';\n\nexport * from './form-cloud.module';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 { EventEmitter } from '@angular/core';\n\nexport interface UserTaskCustomUi {\n    appName: string;\n    canClaimTask: boolean;\n    canUnclaimTask: boolean;\n    processInstanceId: string;\n    rootProcessInstanceId: string;\n    screenId: string;\n    showCancelButton: boolean;\n    taskName: string;\n    taskId: string;\n    isNextTaskCheckboxChecked: boolean;\n    showNextTaskCheckbox: boolean;\n    cancelTask: EventEmitter<any>;\n    claimTask: EventEmitter<any>;\n    error: EventEmitter<any>;\n    switchToDisplayMode?: (newDisplayMode?: string) => void;\n    taskCompleted: EventEmitter<any>;\n    taskSaved: EventEmitter<string>;\n    unclaimTask: EventEmitter<any>;\n    nextTaskCheckboxCheckedChanged: EventEmitter<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\nexport * from './components/screen-cloud/screen-cloud.model';\nexport * from './services/screen-rendering.service';\nexport * from './services/provide-screen';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 type ComponentSelectionMode = 'single' | 'multiple';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 interface Environment {\n    id: string;\n    name: string;\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 './environment.interface';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 './interface/index';\nexport * from './date-range-filter/date-range-filter.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 { Pagination } from '@alfresco/js-api';\n\nexport class ApplicationVersionModel {\n    entry: {\n        id: string;\n        name: string;\n        version: string;\n    };\n\n}\n\nexport class ApplicationVersionResponseModel {\n    list: {\n        entries: ApplicationVersionModel[];\n        pagination: Pagination;\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 { TaskDetailsCloudModel } from '../task/models/task-details-cloud.model';\n\nexport interface TaskCloudEngineEvent {\n    eventType: string;\n    entity: TaskDetailsCloudModel;\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 { Pagination } from '@alfresco/js-api';\nimport { IdentityGroupModel } from '../group/models/identity-group.model';\nimport { IdentityUserModel } from '../people/models/identity-user.model';\nimport { ProcessInstanceVariable } from './process-instance-variable.model';\nimport { ConstantValues } from './constant-values.type';\n\nexport class TaskCloudNodePaging {\n    list: TaskCloudPagingList;\n}\n\nexport class TaskCloudPagingList {\n    pagination: Pagination;\n    entries: TaskCloudEntryModel[];\n}\n\nexport class TaskCloudEntryModel {\n    entry: TaskCloudModel;\n}\n\nexport interface TaskCloudModel {\n    appName: string;\n    appVersion: string;\n    assignee: string;\n    candidateGroups: IdentityGroupModel[];\n    candidateUsers: IdentityUserModel[];\n    createdDate: string;\n    formKey: string;\n    id: string;\n    inFinalState: boolean;\n    lastModified: string;\n    name: string;\n    priority: number;\n    processDefinitionId: string;\n    processDefinitionName: string;\n    processDefinitionVersion: number;\n    processInstanceId: string;\n    serviceFullName: string;\n    serviceName: string;\n    serviceVersion: string;\n    standalone: boolean;\n    status: string;\n    taskDefinitionKey: string;\n    processVariables?: ProcessInstanceVariable[];\n    constantValues?: ConstantValues;\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 type WithVariablesMap<T> = T & {\n    variablesMap?: { [key: string]: ProcessInstanceVariable };\n};\n\nexport interface ProcessInstanceVariable  {\n    id: number;\n    variableDefinitionId: string;\n    processDefinitionKey: string;\n    value: string;\n    appName: string;\n    createTime: string;\n    lastUpdatedTime: string;\n    markedAsDeleted: boolean;\n    name: string;\n    processInstanceId: string;\n    serviceFullName: string;\n    serviceName: string;\n    serviceVersion: string;\n    taskVariable: boolean;\n    type: string;\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 interface ProcessVariableDefinition {\n    id: string;\n    name: string;\n    type: string;\n    required: boolean;\n    display: boolean;\n    displayName?: string;\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 const DATE_FORMAT_CLOUD = 'YYYY-MM-DD';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 type ProcessFilterOperators = 'eq' | 'ne' | 'like' | 'gt' | 'gte' | 'lt' | 'lte';\n\nexport interface ProcessVariableFilterModel {\n    processDefinitionKey: string;\n    name: string;\n    type: string;\n    value: string | number;\n    operator: ProcessFilterOperators;\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 './lib/process-services-cloud.module';\nexport * from './lib/app/public-api';\nexport * from './lib/process/public-api';\nexport * from './lib/task/public-api';\nexport * from './lib/group/public-api';\nexport * from './lib/people/public-api';\nexport * from './lib/form/public-api';\nexport * from './lib/services/public-api';\nexport * from './lib/screen/public-api';\n\nexport * from './lib/types';\nexport * from './lib/common/index';\nexport * from './lib/models/process-definition-cloud.model';\nexport * from './lib/models/date-cloud-filter.model';\nexport * from './lib/models/application-version.model';\nexport * from './lib/models/engine-event-cloud.model';\nexport * from './lib/models/task-cloud.model';\nexport * from './lib/models/filter-cloud-model';\nexport * from './lib/models/task-list-sorting.model';\nexport * from './lib/models/process-instance-variable.model';\nexport * from './lib/models/variable-definition';\nexport * from './lib/models/date-format-cloud.model';\nexport * from './lib/models/process-variable-filter.model';\nexport * from './lib/providers';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i3","i2","i1.AppsProcessCloudService","i4","i6","IDENTITY_MICRO_SERVICE_INGRESS","PRESET_KEY","i2.TaskCloudService","i3.VariableMapperService","i5","from","i1.WebSocketService","i2.NotificationCloudService","DEFAULT_ACTIONS","i1.IdentityUserService","i7","i8","i1.IdentityGroupService","i9","i10","uuidGeneration","RETRIEVE_METADATA_OPTION","i1.TaskCloudService","i2.IdentityUserService","catchError","i1.TaskFilterDialogCloudComponent","i2.TaskFiltersCloudComponent","i3.ServiceTaskFiltersCloudComponent","i4.EditTaskFilterCloudComponent","i5.TaskAssignmentFilterCloudComponent","i6.EditServiceTaskFilterCloudComponent","i7.UserTaskCloudButtonsComponent","i8.TaskFormCloudComponent","i9.UserTaskCloudComponent","i5.ProcessFilterCloudService","i6.AppsProcessCloudService","i7.ProcessCloudService","i11","i12","i13","i14","i1.ProcessCloudService","i1.ProcessFiltersCloudComponent","i2.EditProcessFilterCloudComponent","i3.ProcessFilterDialogCloudComponent","i1.FormDefinitionSelectorCloudService","i2.FormCloudService","i1.AppListCloudComponent","i2.AppDetailsCloudComponent","i3.FormSpinnerComponent","i4.PropertiesViewerWrapperComponent","i5.PropertiesViewerWidgetComponent","i6.DisplayRichTextWidgetComponent","i7.FileViewerWidgetComponent","i8.FilePropertiesTableCloudComponent","i9.FormCustomOutcomesComponent","i10.FormDefinitionSelectorCloudComponent","i11.RadioButtonsCloudWidgetComponent","i12.AttachFileCloudWidgetComponent","i13.UploadCloudWidgetComponent","i14.PeopleCloudWidgetComponent","i15.GroupCloudWidgetComponent","i16.FormCloudComponent","i17.UserTaskCloudButtonsComponent","i18.TaskFormCloudComponent","i19.UserTaskCloudComponent"],"mappings":"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"}