@valtimo/case 13.31.0 → 13.33.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/valtimo-case.mjs +1744 -240
- package/fesm2022/valtimo-case.mjs.map +1 -1
- package/lib/case-inspection/case-inspection.component.d.ts +40 -0
- package/lib/case-inspection/case-inspection.component.d.ts.map +1 -0
- package/lib/case-inspection/tabs/building-blocks/building-block-detail/building-block-detail.component.d.ts +31 -0
- package/lib/case-inspection/tabs/building-blocks/building-block-detail/building-block-detail.component.d.ts.map +1 -0
- package/lib/case-inspection/tabs/building-blocks/building-blocks-tab.component.d.ts +25 -0
- package/lib/case-inspection/tabs/building-blocks/building-blocks-tab.component.d.ts.map +1 -0
- package/lib/case-inspection/tabs/document/document-tab.component.d.ts +29 -0
- package/lib/case-inspection/tabs/document/document-tab.component.d.ts.map +1 -0
- package/lib/case-inspection/tabs/logs/logs-tab.component.d.ts +66 -0
- package/lib/case-inspection/tabs/logs/logs-tab.component.d.ts.map +1 -0
- package/lib/case-inspection/tabs/metadata/metadata-tab.component.d.ts +17 -0
- package/lib/case-inspection/tabs/metadata/metadata-tab.component.d.ts.map +1 -0
- package/lib/case-inspection/tabs/processes/process-detail/process-detail.component.d.ts +52 -0
- package/lib/case-inspection/tabs/processes/process-detail/process-detail.component.d.ts.map +1 -0
- package/lib/case-inspection/tabs/processes/process-variable-modal/process-variable-modal.component.d.ts +39 -0
- package/lib/case-inspection/tabs/processes/process-variable-modal/process-variable-modal.component.d.ts.map +1 -0
- package/lib/case-inspection/tabs/processes/processes-tab.component.d.ts +29 -0
- package/lib/case-inspection/tabs/processes/processes-tab.component.d.ts.map +1 -0
- package/lib/case-routing.module.d.ts.map +1 -1
- package/lib/components/case-detail/case-detail.component.d.ts +2 -0
- package/lib/components/case-detail/case-detail.component.d.ts.map +1 -1
- package/lib/components/case-detail/tab/widgets/widgets.component.d.ts +2 -0
- package/lib/components/case-detail/tab/widgets/widgets.component.d.ts.map +1 -1
- package/lib/components/case-process-start-modal/case-process-start-modal.component.d.ts +3 -1
- package/lib/components/case-process-start-modal/case-process-start-modal.component.d.ts.map +1 -1
- package/lib/components/case-supporting-process-start-modal/case-supporting-process-start-modal.component.d.ts +3 -1
- package/lib/components/case-supporting-process-start-modal/case-supporting-process-start-modal.component.d.ts.map +1 -1
- package/lib/constants/case-inspection.constants.d.ts +5 -0
- package/lib/constants/case-inspection.constants.d.ts.map +1 -0
- package/lib/constants/index.d.ts +1 -0
- package/lib/constants/index.d.ts.map +1 -1
- package/lib/models/case-inspection.models.d.ts +151 -0
- package/lib/models/case-inspection.models.d.ts.map +1 -0
- package/lib/models/case-widget.model.d.ts +2 -0
- package/lib/models/case-widget.model.d.ts.map +1 -1
- package/lib/models/index.d.ts +1 -0
- package/lib/models/index.d.ts.map +1 -1
- package/lib/permissions/case-detail.permissions.d.ts +3 -1
- package/lib/permissions/case-detail.permissions.d.ts.map +1 -1
- package/lib/services/case-inspection.service.d.ts +22 -0
- package/lib/services/case-inspection.service.d.ts.map +1 -0
- package/lib/services/case-widgets-api.service.d.ts +2 -0
- package/lib/services/case-widgets-api.service.d.ts.map +1 -1
- package/lib/services/index.d.ts +1 -0
- package/lib/services/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/public_api.d.ts +1 -0
- package/public_api.d.ts.map +1 -1
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Injectable, ViewEncapsulation, Component, EventEmitter, Output, ViewContainerRef, ViewChild, HostBinding, Optional, Inject, Input, ChangeDetectionStrategy, InjectionToken, signal, Pipe, inject, NgModule } from '@angular/core';
|
|
3
|
-
import { combineLatest, map, distinctUntilChanged, BehaviorSubject, take, Subject, switchMap, of, tap, filter, Subscription, startWith, forkJoin, catchError as catchError$1, shareReplay, first, fromEvent, from, debounceTime, defaultIfEmpty } from 'rxjs';
|
|
2
|
+
import { Injectable, ViewEncapsulation, Component, EventEmitter, Output, ViewContainerRef, ViewChild, HostBinding, Optional, Inject, Input, ChangeDetectionStrategy, InjectionToken, signal, Pipe, inject, computed, NgModule } from '@angular/core';
|
|
3
|
+
import { combineLatest, map, distinctUntilChanged, BehaviorSubject, take, Subject, switchMap, of, tap, filter, Subscription, startWith, forkJoin, catchError as catchError$1, shareReplay, first, fromEvent, from, debounceTime, defaultIfEmpty, Observable } from 'rxjs';
|
|
4
4
|
import * as i1 from '@valtimo/shared';
|
|
5
5
|
import { UploadProvider, ZGW_DOCUMENTEN_API_DOCUMENTS_COMPONENT_TOKEN, CaseListTab, TagColor, BaseApiService, ZGW_OBJECT_TYPE_COMPONENT_TOKEN, InterceptorSkip, FORM_VIEW_MODEL_TOKEN, ROLE_USER, ConfigModule, HttpLoaderFactory } from '@valtimo/shared';
|
|
6
6
|
import * as i1$1 from '@angular/common/http';
|
|
7
|
-
import { HttpHeaders, HttpClient } from '@angular/common/http';
|
|
7
|
+
import { HttpHeaders, HttpParams, HttpClient } from '@angular/common/http';
|
|
8
8
|
import * as i2 from '@valtimo/document';
|
|
9
9
|
import { AdvancedDocumentSearchRequestImpl, InternalCaseStatusUtils, CaseTagsUtils, DocumentSearchRequestImpl } from '@valtimo/document';
|
|
10
10
|
import * as i4 from '@ngx-translate/core';
|
|
@@ -13,7 +13,7 @@ import * as i1$2 from '@angular/router';
|
|
|
13
13
|
import { NavigationStart, RouterModule } from '@angular/router';
|
|
14
14
|
import * as i1$3 from 'ngx-logger';
|
|
15
15
|
import * as i2$1 from '@valtimo/components';
|
|
16
|
-
import { FormioOptionsImpl, TimelineItemImpl, CASES_WITHOUT_STATUS_KEY, CarbonListModule, FormIoModule, ViewType, QUICK_SEARCH_SERVICE, WidgetModule, AssignmentComponent, CurrentCarbonTheme, CARBON_THEME, ObserveSizeDirective, ValtimoCdsModalDirective, RenderInBodyComponent, CarbonListComponent, BpmnJsDiagramModule, TimelineModule, CamundaFormModule, FilterSidebarModule, DataListModule, ModalModule as ModalModule$1, SpinnerModule, UploaderModule, DropzoneModule,
|
|
16
|
+
import { FormioOptionsImpl, TimelineItemImpl, CASES_WITHOUT_STATUS_KEY, CarbonListModule, FormIoModule, ViewType, QUICK_SEARCH_SERVICE, WidgetModule, AssignmentComponent, CurrentCarbonTheme, CARBON_THEME, ObserveSizeDirective, ValtimoCdsModalDirective, RenderInBodyComponent, CarbonListComponent, JsonEditorComponent, SelectModule, ConfirmationModalModule, BpmnJsDiagramModule, TimelineModule, CamundaFormModule, FilterSidebarModule, DataListModule, ModalModule as ModalModule$1, SpinnerModule, UploaderModule, DropzoneModule, InputLabelModule, ParagraphModule, TableModule, VModalModule, SearchFieldsModule, InputModule as InputModule$1, FormModule as FormModule$1, IsArrayPipe, StatusSelectorComponent, RenderInPageHeaderDirective, OverflowMenuComponent, OverflowMenuOptionComponent, OverflowMenuTriggerComponent, CaseTagsSelectorComponent, RemoveClassnamesDirective, ListColumnViewComponent, QuickSearchComponent } from '@valtimo/components';
|
|
17
17
|
export { CASES_WITHOUT_STATUS_KEY } from '@valtimo/components';
|
|
18
18
|
import moment from 'moment';
|
|
19
19
|
import { catchError, switchMap as switchMap$1, map as map$1, tap as tap$1, take as take$1, filter as filter$1 } from 'rxjs/operators';
|
|
@@ -21,37 +21,37 @@ import * as i3 from '@valtimo/form';
|
|
|
21
21
|
import { FormModule } from '@valtimo/form';
|
|
22
22
|
import * as i5 from '@valtimo/sse';
|
|
23
23
|
import * as i6 from '@angular/common';
|
|
24
|
-
import { CommonModule, DOCUMENT } from '@angular/common';
|
|
25
|
-
import * as
|
|
26
|
-
import { InputModule, ButtonModule, PaginationModule, TilesModule, LoadingModule, LayerModule, TagModule, IconModule, DialogModule, ModalModule, Tabs, SelectModule as SelectModule$1,
|
|
27
|
-
import * as i2$
|
|
28
|
-
import { ProcessModule } from '@valtimo/process';
|
|
24
|
+
import { CommonModule, DOCUMENT, NgComponentOutlet } from '@angular/common';
|
|
25
|
+
import * as i4$1 from 'carbon-components-angular';
|
|
26
|
+
import { InputModule, ButtonModule, PaginationModule, TilesModule, LoadingModule, LayerModule, TagModule, IconModule, DialogModule, ModalModule, Tabs, StructuredListModule, DatePickerModule, DropdownModule, NumberModule, ToggleModule, LinkModule, TabsModule, SelectModule as SelectModule$1, ComboBoxModule, SkeletonModule, NotificationModule, ToggletipModule, TooltipModule } from 'carbon-components-angular';
|
|
27
|
+
import * as i2$2 from '@valtimo/process';
|
|
28
|
+
import { ProcessDiagramComponent, ProcessModule } from '@valtimo/process';
|
|
29
29
|
import * as i3$1 from 'ngx-spinner';
|
|
30
30
|
import * as i6$1 from '@ng-bootstrap/ng-bootstrap';
|
|
31
31
|
import { NgbTooltipModule, NgbButtonsModule, NgbPaginationModule, NgbModule } from '@ng-bootstrap/ng-bootstrap';
|
|
32
32
|
import * as i3$2 from '@valtimo/resource';
|
|
33
|
-
import * as i2$
|
|
33
|
+
import * as i2$3 from '@valtimo/access-control';
|
|
34
34
|
import * as i1$4 from '@angular/forms';
|
|
35
|
-
import { Validators,
|
|
35
|
+
import { Validators, ReactiveFormsModule, FormsModule } from '@angular/forms';
|
|
36
36
|
import * as i5$1 from '@valtimo/layout';
|
|
37
37
|
import { WidgetFieldComponent, WidgetCustomComponent, WidgetFormioComponent, WidgetTableComponent, WidgetCollectionComponent, WidgetMapComponent, WidgetPersonCardComponent, WidgetMetrolineComponent, WidgetHighlightComponent, WidgetType, WidgetContainerComponent } from '@valtimo/layout';
|
|
38
38
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
39
39
|
import { isEqual } from 'lodash-es';
|
|
40
40
|
import { isEqual as isEqual$1 } from 'lodash';
|
|
41
41
|
import * as i5$2 from '@valtimo/teams';
|
|
42
|
-
import { UserFilled20, Group20, ChevronDown16 } from '@carbon/icons';
|
|
42
|
+
import { UserFilled20, Group20, ChevronDown16, Add16, Edit16, TrashCan16, WarningAltFilled16, CheckmarkFilled16, CheckmarkOutline16 } from '@carbon/icons';
|
|
43
43
|
import * as i5$4 from 'keycloak-angular';
|
|
44
44
|
import * as i12 from '@valtimo/security';
|
|
45
45
|
import { AuthGuardService } from '@valtimo/security';
|
|
46
46
|
import * as i5$3 from '@valtimo/task';
|
|
47
47
|
import { CAN_VIEW_TASK_PERMISSION, TASK_DETAIL_PERMISSION_RESOURCE, TaskModule, CAN_ASSIGN_TASK_PERMISSION, CAN_MODIFY_TASK_PERMISSION, TaskDetailContentComponent, TaskDetailIntermediateSaveComponent, SetTaskDueDateComponent } from '@valtimo/task';
|
|
48
48
|
import * as i3$3 from '@valtimo/process-link';
|
|
49
|
-
import { FORM_CUSTOM_COMPONENT_TOKEN, ProcessLinkModule } from '@valtimo/process-link';
|
|
49
|
+
import { formSizeToCarbonModalSizeMap, FORM_CUSTOM_COMPONENT_TOKEN, ProcessLinkModule } from '@valtimo/process-link';
|
|
50
50
|
import * as i17 from 'angular-split';
|
|
51
51
|
import { AngularSplitModule } from 'angular-split';
|
|
52
52
|
|
|
53
53
|
/*
|
|
54
|
-
* Copyright 2015-
|
|
54
|
+
* Copyright 2015-2026 Ritense BV, the Netherlands.
|
|
55
55
|
*
|
|
56
56
|
* Licensed under EUPL, Version 1.2 (the "License");
|
|
57
57
|
* you may not use this file except in compliance with the License.
|
|
@@ -74,6 +74,8 @@ var PERMISSION_ACTION$1;
|
|
|
74
74
|
PERMISSION_ACTION["edit"] = "modify";
|
|
75
75
|
PERMISSION_ACTION["view"] = "view";
|
|
76
76
|
PERMISSION_ACTION["export"] = "export";
|
|
77
|
+
PERMISSION_ACTION["inspect"] = "inspect";
|
|
78
|
+
PERMISSION_ACTION["inspectModify"] = "inspect_modify";
|
|
77
79
|
})(PERMISSION_ACTION$1 || (PERMISSION_ACTION$1 = {}));
|
|
78
80
|
var CASE_DETAIL_PERMISSION_RESOURCE;
|
|
79
81
|
(function (CASE_DETAIL_PERMISSION_RESOURCE) {
|
|
@@ -117,6 +119,14 @@ const CAN_EXPORT_CASE_PERMISSION = {
|
|
|
117
119
|
action: PERMISSION_ACTION$1.export,
|
|
118
120
|
resource: CASE_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,
|
|
119
121
|
};
|
|
122
|
+
const CAN_INSPECT_CASE_PERMISSION = {
|
|
123
|
+
action: PERMISSION_ACTION$1.inspect,
|
|
124
|
+
resource: CASE_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,
|
|
125
|
+
};
|
|
126
|
+
const CAN_INSPECT_MODIFY_CASE_PERMISSION = {
|
|
127
|
+
action: PERMISSION_ACTION$1.inspectModify,
|
|
128
|
+
resource: CASE_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,
|
|
129
|
+
};
|
|
120
130
|
|
|
121
131
|
/*
|
|
122
132
|
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
@@ -1111,7 +1121,52 @@ class TabImpl {
|
|
|
1111
1121
|
*/
|
|
1112
1122
|
|
|
1113
1123
|
/*
|
|
1114
|
-
* Copyright 2015-
|
|
1124
|
+
* Copyright 2015-2026 Ritense BV, the Netherlands.
|
|
1125
|
+
*
|
|
1126
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
1127
|
+
* you may not use this file except in compliance with the License.
|
|
1128
|
+
* You may obtain a copy of the License at
|
|
1129
|
+
*
|
|
1130
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
1131
|
+
*
|
|
1132
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
1133
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
1134
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
1135
|
+
* See the License for the specific language governing permissions and
|
|
1136
|
+
* limitations under the License.
|
|
1137
|
+
*/
|
|
1138
|
+
var CaseInspectionLogLevel;
|
|
1139
|
+
(function (CaseInspectionLogLevel) {
|
|
1140
|
+
CaseInspectionLogLevel["TRACE"] = "TRACE";
|
|
1141
|
+
CaseInspectionLogLevel["DEBUG"] = "DEBUG";
|
|
1142
|
+
CaseInspectionLogLevel["INFO"] = "INFO";
|
|
1143
|
+
CaseInspectionLogLevel["WARN"] = "WARN";
|
|
1144
|
+
CaseInspectionLogLevel["ERROR"] = "ERROR";
|
|
1145
|
+
})(CaseInspectionLogLevel || (CaseInspectionLogLevel = {}));
|
|
1146
|
+
const CASE_INSPECTION_LOG_LEVEL_TAG = {
|
|
1147
|
+
TRACE: 'gray',
|
|
1148
|
+
DEBUG: 'teal',
|
|
1149
|
+
INFO: 'blue',
|
|
1150
|
+
WARN: 'purple',
|
|
1151
|
+
ERROR: 'red',
|
|
1152
|
+
};
|
|
1153
|
+
var ProcessDetailTab;
|
|
1154
|
+
(function (ProcessDetailTab) {
|
|
1155
|
+
ProcessDetailTab["DETAILS"] = "details";
|
|
1156
|
+
ProcessDetailTab["DIAGRAM"] = "diagram";
|
|
1157
|
+
})(ProcessDetailTab || (ProcessDetailTab = {}));
|
|
1158
|
+
var CaseInspectionTab;
|
|
1159
|
+
(function (CaseInspectionTab) {
|
|
1160
|
+
CaseInspectionTab["DOCUMENT"] = "document";
|
|
1161
|
+
CaseInspectionTab["PROCESSES"] = "processes";
|
|
1162
|
+
CaseInspectionTab["BUILDING_BLOCKS"] = "building-blocks";
|
|
1163
|
+
CaseInspectionTab["LOGS"] = "logs";
|
|
1164
|
+
CaseInspectionTab["ZGW"] = "zgw";
|
|
1165
|
+
CaseInspectionTab["METADATA"] = "metadata";
|
|
1166
|
+
})(CaseInspectionTab || (CaseInspectionTab = {}));
|
|
1167
|
+
|
|
1168
|
+
/*
|
|
1169
|
+
* Copyright 2015-2026 Ritense BV, the Netherlands.
|
|
1115
1170
|
*
|
|
1116
1171
|
* Licensed under EUPL, Version 1.2 (the "License");
|
|
1117
1172
|
* you may not use this file except in compliance with the License.
|
|
@@ -1200,7 +1255,7 @@ class CaseDetailTabSummaryComponent {
|
|
|
1200
1255
|
.subscribe());
|
|
1201
1256
|
}
|
|
1202
1257
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseDetailTabSummaryComponent, deps: [{ token: i2.DocumentService }, { token: i1$2.ActivatedRoute }, { token: i3.FormService }, { token: i4.TranslateService }, { token: i5.SseService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1203
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: CaseDetailTabSummaryComponent, isStandalone: false, selector: "ng-component", ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<ng-container\n *ngIf=\"{\n formDefinition: formDefinition$ | async,\n document: document$ | async,\n loading: loading$ | async,\n notificationObj: notificationObj$ | async,\n } as obs\"\n>\n @if (!obs.loading && obs.document && obs.formDefinition) {\n <valtimo-form-io\n class=\"valtimo-summary-form\"\n [form]=\"obs.formDefinition\"\n [options]=\"options\"\n ></valtimo-form-io>\n } @else if (obs.notificationObj) {\n <cds-inline-notification [notificationObj]=\"obs.notificationObj\"></cds-inline-notification>\n }\n</ng-container>\n", styles: [".hoverable:hover{background-color:#eee}.valtimo-summary-form .formio-component{margin-bottom:0!important}.valtimo-summary-form .formio-component div[ref=element] .form-control{height:24px!important;background-color:#fff;border:0px;margin:0;padding:0!important;font-size:13px}.valtimo-summary-form .formio-field div[ref=element] .form-control{font-weight:400}.valtimo-summary-form .formio-value div[ref=element] .form-control{font-weight:700}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$1.FormioComponent, selector: "valtimo-form-io", inputs: ["options", "submission", "form", "readOnly", "formRefresh$"], outputs: ["submit", "change", "event"] }, { kind: "component", type:
|
|
1258
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: CaseDetailTabSummaryComponent, isStandalone: false, selector: "ng-component", ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<ng-container\n *ngIf=\"{\n formDefinition: formDefinition$ | async,\n document: document$ | async,\n loading: loading$ | async,\n notificationObj: notificationObj$ | async,\n } as obs\"\n>\n @if (!obs.loading && obs.document && obs.formDefinition) {\n <valtimo-form-io\n class=\"valtimo-summary-form\"\n [form]=\"obs.formDefinition\"\n [options]=\"options\"\n ></valtimo-form-io>\n } @else if (obs.notificationObj) {\n <cds-inline-notification [notificationObj]=\"obs.notificationObj\"></cds-inline-notification>\n }\n</ng-container>\n", styles: [".hoverable:hover{background-color:#eee}.valtimo-summary-form .formio-component{margin-bottom:0!important}.valtimo-summary-form .formio-component div[ref=element] .form-control{height:24px!important;background-color:#fff;border:0px;margin:0;padding:0!important;font-size:13px}.valtimo-summary-form .formio-field div[ref=element] .form-control{font-weight:400}.valtimo-summary-form .formio-value div[ref=element] .form-control{font-weight:700}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$1.FormioComponent, selector: "valtimo-form-io", inputs: ["options", "submission", "form", "readOnly", "formRefresh$"], outputs: ["submit", "change", "event"] }, { kind: "component", type: i4$1.Notification, selector: "cds-notification, cds-inline-notification, ibm-notification, ibm-inline-notification", inputs: ["notificationObj"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
1204
1259
|
}
|
|
1205
1260
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseDetailTabSummaryComponent, decorators: [{
|
|
1206
1261
|
type: Component,
|
|
@@ -1254,7 +1309,7 @@ class CaseDetailTabProgressComponent {
|
|
|
1254
1309
|
}
|
|
1255
1310
|
}
|
|
1256
1311
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseDetailTabProgressComponent, deps: [{ token: i1$2.ActivatedRoute }, { token: i2.DocumentService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1257
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: CaseDetailTabProgressComponent, isStandalone: false, selector: "valtimo-case-detail-tab-progress", ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<ng-container\n class=\"full-height-tab-content\"\n *ngIf=\"{\n processInstanceItems: processInstanceItems$ | async,\n selectedProcessInstance: selectedProcessInstance$ | async,\n } as obs\"\n>\n <span *ngIf=\"!obs.processInstanceItems.isLoading && !obs.processInstanceItems.value\">{{\n 'progress.noProcessDocumentInstances' | translate\n }}</span>\n\n <div class=\"process-info-row\">\n <cds-dropdown\n [dropUp]=\"false\"\n [label]=\"'progress.process' | translate\"\n [skeleton]=\"obs.processInstanceItems.isLoading\"\n [style.width.px]=\"350\"\n (selected)=\"loadProcessInstance($event.item.processInstanceId)\"\n >\n <cds-dropdown-list [items]=\"obs.processInstanceItems.value || []\"></cds-dropdown-list>\n </cds-dropdown>\n\n <div>\n <v-input-label [title]=\"'progress.version' | translate\"></v-input-label>\n\n <cds-skeleton-text\n *ngIf=\"obs.selectedProcessInstance.isLoading\"\n [lines]=\"1\"\n [maxLineWidth]=\"30\"\n ></cds-skeleton-text>\n\n <span *ngIf=\"!obs.selectedProcessInstance.isLoading\" class=\"process-info-text\">\n {{ obs.selectedProcessInstance.value.version }} ({{ 'progress.of' | translate }}\n {{ obs.selectedProcessInstance.value.latestVersion }})\n </span>\n </div>\n\n <div>\n <v-input-label [title]=\"'progress.startedBy' | translate\"></v-input-label>\n\n <cds-skeleton-text\n *ngIf=\"obs.selectedProcessInstance.isLoading\"\n [lines]=\"1\"\n [maxLineWidth]=\"50\"\n ></cds-skeleton-text>\n\n <span *ngIf=\"!obs.selectedProcessInstance.isLoading\" class=\"process-info-text\">\n {{ obs.selectedProcessInstance.value.startedBy || ('progress.system' | translate) }}\n </span>\n </div>\n\n <div>\n <v-input-label [title]=\"'progress.startedOn' | translate\"></v-input-label>\n\n <cds-skeleton-text\n *ngIf=\"obs.selectedProcessInstance.isLoading\"\n [lines]=\"1\"\n [maxLineWidth]=\"50\"\n ></cds-skeleton-text>\n\n <span *ngIf=\"!obs.selectedProcessInstance.isLoading\" class=\"process-info-text\">\n {{ obs.selectedProcessInstance.value.startedOn.toLocaleDateString() }}\n </span>\n </div>\n </div>\n\n <div>\n <valtimo-process-diagram\n *ngIf=\"!obs.selectedProcessInstance.isLoading\"\n [processInstanceId]=\"obs.selectedProcessInstance.value.id.processInstanceId\"\n ></valtimo-process-diagram>\n </div>\n</ng-container>\n", styles: [".full-height-tab-content{height:calc(100vh - 380px);width:100%}.process-info-row{display:flex;gap:24px}.process-info-text{color:var(--v-color-black);font-size:var(--v-font-size-default)}.process-info-text{display:flex;height:40px;align-items:center}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$
|
|
1312
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: CaseDetailTabProgressComponent, isStandalone: false, selector: "valtimo-case-detail-tab-progress", ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<ng-container\n class=\"full-height-tab-content\"\n *ngIf=\"{\n processInstanceItems: processInstanceItems$ | async,\n selectedProcessInstance: selectedProcessInstance$ | async,\n } as obs\"\n>\n <span *ngIf=\"!obs.processInstanceItems.isLoading && !obs.processInstanceItems.value\">{{\n 'progress.noProcessDocumentInstances' | translate\n }}</span>\n\n <div class=\"process-info-row\">\n <cds-dropdown\n [dropUp]=\"false\"\n [label]=\"'progress.process' | translate\"\n [skeleton]=\"obs.processInstanceItems.isLoading\"\n [style.width.px]=\"350\"\n (selected)=\"loadProcessInstance($event.item.processInstanceId)\"\n >\n <cds-dropdown-list [items]=\"obs.processInstanceItems.value || []\"></cds-dropdown-list>\n </cds-dropdown>\n\n <div>\n <v-input-label [title]=\"'progress.version' | translate\"></v-input-label>\n\n <cds-skeleton-text\n *ngIf=\"obs.selectedProcessInstance.isLoading\"\n [lines]=\"1\"\n [maxLineWidth]=\"30\"\n ></cds-skeleton-text>\n\n <span *ngIf=\"!obs.selectedProcessInstance.isLoading\" class=\"process-info-text\">\n {{ obs.selectedProcessInstance.value.version }} ({{ 'progress.of' | translate }}\n {{ obs.selectedProcessInstance.value.latestVersion }})\n </span>\n </div>\n\n <div>\n <v-input-label [title]=\"'progress.startedBy' | translate\"></v-input-label>\n\n <cds-skeleton-text\n *ngIf=\"obs.selectedProcessInstance.isLoading\"\n [lines]=\"1\"\n [maxLineWidth]=\"50\"\n ></cds-skeleton-text>\n\n <span *ngIf=\"!obs.selectedProcessInstance.isLoading\" class=\"process-info-text\">\n {{ obs.selectedProcessInstance.value.startedBy || ('progress.system' | translate) }}\n </span>\n </div>\n\n <div>\n <v-input-label [title]=\"'progress.startedOn' | translate\"></v-input-label>\n\n <cds-skeleton-text\n *ngIf=\"obs.selectedProcessInstance.isLoading\"\n [lines]=\"1\"\n [maxLineWidth]=\"50\"\n ></cds-skeleton-text>\n\n <span *ngIf=\"!obs.selectedProcessInstance.isLoading\" class=\"process-info-text\">\n {{ obs.selectedProcessInstance.value.startedOn.toLocaleDateString() }}\n </span>\n </div>\n </div>\n\n <div>\n <valtimo-process-diagram\n *ngIf=\"!obs.selectedProcessInstance.isLoading\"\n [processInstanceId]=\"obs.selectedProcessInstance.value.id.processInstanceId\"\n ></valtimo-process-diagram>\n </div>\n</ng-container>\n", styles: [".full-height-tab-content{height:calc(100vh - 380px);width:100%}.process-info-row{display:flex;gap:24px}.process-info-text{color:var(--v-color-black);font-size:var(--v-font-size-default)}.process-info-text{display:flex;height:40px;align-items:center}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$2.ProcessDiagramComponent, selector: "valtimo-process-diagram", inputs: ["processDefinitionKey", "processInstanceId"], outputs: ["importDone"] }, { kind: "component", type: i2$1.InputLabelComponent, selector: "v-input-label", inputs: ["name", "tooltip", "tooltipTranslationKey", "largeMargin", "small", "noMargin", "title", "titleTranslationKey", "required", "disabled", "carbonTheme"] }, { kind: "component", type: i4$1.Dropdown, selector: "cds-dropdown, ibm-dropdown", inputs: ["id", "label", "hideLabel", "helperText", "placeholder", "displayValue", "clearText", "size", "type", "theme", "disabled", "readonly", "skeleton", "inline", "disableArrowKeys", "invalid", "invalidText", "warn", "warnText", "appendInline", "scrollableContainer", "itemValueKey", "selectionFeedback", "menuButtonLabel", "selectedLabel", "dropUp", "fluid"], outputs: ["selected", "onClose", "close"] }, { kind: "component", type: i4$1.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "component", type: i4$1.SkeletonText, selector: "cds-skeleton-text, ibm-skeleton-text", inputs: ["lines", "minLineWidth", "maxLineWidth"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
|
|
1258
1313
|
}
|
|
1259
1314
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseDetailTabProgressComponent, decorators: [{
|
|
1260
1315
|
type: Component,
|
|
@@ -1654,7 +1709,7 @@ class NoteModalComponent {
|
|
|
1654
1709
|
this.formGroup.reset();
|
|
1655
1710
|
}
|
|
1656
1711
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: NoteModalComponent, deps: [{ token: i1$4.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1657
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: NoteModalComponent, isStandalone: false, selector: "valtimo-note-modal", inputs: { modalType: "modalType", customData: "customData", open: "open" }, outputs: { modalClosed: "modalClosed" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<cds-modal valtimoCdsModal [open]=\"open\" size=\"sm\" showFooter=\"true\" (close)=\"onCancel()\">\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCancel()\">\n <h3 cdsModalHeaderHeading>\n {{ 'case.notes.' + modalType + 'Note' | translate }}\n </h3>\n </cds-modal-header>\n\n <form [formGroup]=\"formGroup\" cdsModalContent>\n <cds-textarea-label>\n {{ 'case.notes.input.content' | translate }}\n\n <textarea\n cdsTextArea\n cdsLayer=\"1\"\n class=\"valtimo-note-modal__textarea\"\n formControlName=\"content\"\n [rows]=\"10\"\n ></textarea>\n </cds-textarea-label>\n </form>\n\n <cds-modal-footer>\n <button cdsButton=\"ghost\" (click)=\"onCancel()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button [disabled]=\"!formGroup.valid\" cdsButton=\"primary\" (click)=\"onConfirm()\">\n {{ 'case.notes.' + modalType + 'Note' | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n", styles: [":host textarea{width:100%}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i1$4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type:
|
|
1712
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: NoteModalComponent, isStandalone: false, selector: "valtimo-note-modal", inputs: { modalType: "modalType", customData: "customData", open: "open" }, outputs: { modalClosed: "modalClosed" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<cds-modal valtimoCdsModal [open]=\"open\" size=\"sm\" showFooter=\"true\" (close)=\"onCancel()\">\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCancel()\">\n <h3 cdsModalHeaderHeading>\n {{ 'case.notes.' + modalType + 'Note' | translate }}\n </h3>\n </cds-modal-header>\n\n <form [formGroup]=\"formGroup\" cdsModalContent>\n <cds-textarea-label>\n {{ 'case.notes.input.content' | translate }}\n\n <textarea\n cdsTextArea\n cdsLayer=\"1\"\n class=\"valtimo-note-modal__textarea\"\n formControlName=\"content\"\n [rows]=\"10\"\n ></textarea>\n </cds-textarea-label>\n </form>\n\n <cds-modal-footer>\n <button cdsButton=\"ghost\" (click)=\"onCancel()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button [disabled]=\"!formGroup.valid\" cdsButton=\"primary\" (click)=\"onConfirm()\">\n {{ 'case.notes.' + modalType + 'Note' | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n", styles: [":host textarea{width:100%}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i1$4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i4$1.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "component", type: i4$1.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i4$1.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "component", type: i4$1.ModalFooter, selector: "cds-modal-footer, ibm-modal-footer" }, { kind: "directive", type: i4$1.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }, { kind: "directive", type: i4$1.ModalHeaderHeading, selector: "[cdsModalHeaderHeading], [ibmModalHeaderHeading]" }, { kind: "directive", type: i2$1.ValtimoCdsModalDirective, selector: "[valtimoCdsModal]", inputs: ["minContentHeight"] }, { kind: "directive", type: i4$1.LayerDirective, selector: "[cdsLayer], [ibmLayer]", inputs: ["ibmLayer", "cdsLayer"], exportAs: ["layer"] }, { kind: "component", type: i4$1.TextareaLabelComponent, selector: "cds-textarea-label, ibm-textarea-label", inputs: ["labelInputID", "disabled", "skeleton", "labelTemplate", "textAreaTemplate", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel", "fluid"] }, { kind: "directive", type: i4$1.TextArea, selector: "[cdsTextArea], [ibmTextArea]", inputs: ["theme", "invalid", "skeleton"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1658
1713
|
}
|
|
1659
1714
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: NoteModalComponent, decorators: [{
|
|
1660
1715
|
type: Component,
|
|
@@ -1818,13 +1873,13 @@ class CaseDetailTabNotesComponent {
|
|
|
1818
1873
|
this.idToDelete$.next(data.customData?.['id'] ?? '');
|
|
1819
1874
|
this.showDeleteModal$.next(true);
|
|
1820
1875
|
}
|
|
1821
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseDetailTabNotesComponent, deps: [{ token: i1.GlobalNotificationService }, { token: NotesService }, { token: i2$
|
|
1822
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: CaseDetailTabNotesComponent, isStandalone: false, selector: "ng-component", host: { properties: { "class.tab--no-margin": "this.noMargin" } }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<ng-container\n *ngIf=\"{\n canAdd: canAdd$ | async,\n notes: notes$ | async,\n pagination: pagination$ | async,\n loading: loading$ | async,\n } as obs\"\n>\n <div class=\"cds--toolbar-content\">\n <button\n cdsButton=\"primary\"\n *ngIf=\"obs.canAdd\"\n [disabled]=\"obs.loading\"\n (click)=\"showAddModal()\"\n aria-expanded=\"false\"\n aria-haspopup=\"true\"\n >\n {{ 'case.notes.addNote' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n </div>\n\n <div *ngIf=\"timelineItems\">\n <valtimo-timeline\n *ngIf=\"timelineItems.length > 0\"\n [actions]=\"actions\"\n [items]=\"timelineItems\"\n ></valtimo-timeline>\n\n <valtimo-no-results\n *ngIf=\"timelineItems.length === 0\"\n [description]=\"'case.notes.noResults.description' | translate\"\n [title]=\"'case.notes.noResults.title' | translate\"\n illustration=\"valtimo-layout/img/emptystate-no-result.svg\"\n ></valtimo-no-results>\n </div>\n\n <valtimo-spinner\n [useBootstrapSpinner]=\"false\"\n name=\"auditSpinner\"\n bdColor=\"rgba(125, 125, 125, 0.35)\"\n color=\"#264251\"\n type=\"square-jelly-box\"\n >\n </valtimo-spinner>\n\n <div *ngIf=\"obs.pagination\" class=\"d-flex justify-content-end row mr-0 ml-0\">\n <ngb-pagination\n *ngIf=\"obs.pagination.collectionSize > obs.pagination.size\"\n [collectionSize]=\"obs.pagination.collectionSize\"\n [maxSize]=\"obs.pagination.size\"\n [pageSize]=\"obs.pagination.size\"\n [rotate]=\"true\"\n [(page)]=\"obs.pagination.page\"\n (pageChange)=\"paginationClicked($event)\"\n ></ngb-pagination>\n </div>\n</ng-container>\n\n<valtimo-note-modal\n [customData]=\"customData$ | async\"\n [modalType]=\"modalType$ | async\"\n [open]=\"modalOpen$ | async\"\n (modalClosed)=\"onModalClosed($event)\"\n></valtimo-note-modal>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"case.notes.deleteConfirmation.description\"\n [outputOnConfirm]=\"idToDelete$ | async\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"case.notes.deleteConfirmation.title\"\n (confirmEvent)=\"onDeleteConfirm($event)\"\n></valtimo-confirmation-modal>\n", styles: [":host{display:flex;flex-direction:column}.add-note{align-self:flex-end}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$1.TimelineComponent, selector: "valtimo-timeline", inputs: ["items", "actions"] }, { kind: "component", type: i2$1.SpinnerComponent, selector: "valtimo-spinner", inputs: ["useBootstrapSpinner", "name", "type", "size", "color", "bdColor", "fullScreen", "noMarginTop"] }, { kind: "component", type: i6$1.NgbPagination, selector: "ngb-pagination", inputs: ["disabled", "boundaryLinks", "directionLinks", "ellipses", "rotate", "collectionSize", "maxSize", "page", "pageSize", "size"], outputs: ["pageChange"] }, { kind: "directive", type:
|
|
1876
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseDetailTabNotesComponent, deps: [{ token: i1.GlobalNotificationService }, { token: NotesService }, { token: i2$3.PermissionService }, { token: i1$2.ActivatedRoute }, { token: i4.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1877
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: CaseDetailTabNotesComponent, isStandalone: false, selector: "ng-component", host: { properties: { "class.tab--no-margin": "this.noMargin" } }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<ng-container\n *ngIf=\"{\n canAdd: canAdd$ | async,\n notes: notes$ | async,\n pagination: pagination$ | async,\n loading: loading$ | async,\n } as obs\"\n>\n <div class=\"cds--toolbar-content\">\n <button\n cdsButton=\"primary\"\n *ngIf=\"obs.canAdd\"\n [disabled]=\"obs.loading\"\n (click)=\"showAddModal()\"\n aria-expanded=\"false\"\n aria-haspopup=\"true\"\n >\n {{ 'case.notes.addNote' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n </div>\n\n <div *ngIf=\"timelineItems\">\n <valtimo-timeline\n *ngIf=\"timelineItems.length > 0\"\n [actions]=\"actions\"\n [items]=\"timelineItems\"\n ></valtimo-timeline>\n\n <valtimo-no-results\n *ngIf=\"timelineItems.length === 0\"\n [description]=\"'case.notes.noResults.description' | translate\"\n [title]=\"'case.notes.noResults.title' | translate\"\n illustration=\"valtimo-layout/img/emptystate-no-result.svg\"\n ></valtimo-no-results>\n </div>\n\n <valtimo-spinner\n [useBootstrapSpinner]=\"false\"\n name=\"auditSpinner\"\n bdColor=\"rgba(125, 125, 125, 0.35)\"\n color=\"#264251\"\n type=\"square-jelly-box\"\n >\n </valtimo-spinner>\n\n <div *ngIf=\"obs.pagination\" class=\"d-flex justify-content-end row mr-0 ml-0\">\n <ngb-pagination\n *ngIf=\"obs.pagination.collectionSize > obs.pagination.size\"\n [collectionSize]=\"obs.pagination.collectionSize\"\n [maxSize]=\"obs.pagination.size\"\n [pageSize]=\"obs.pagination.size\"\n [rotate]=\"true\"\n [(page)]=\"obs.pagination.page\"\n (pageChange)=\"paginationClicked($event)\"\n ></ngb-pagination>\n </div>\n</ng-container>\n\n<valtimo-note-modal\n [customData]=\"customData$ | async\"\n [modalType]=\"modalType$ | async\"\n [open]=\"modalOpen$ | async\"\n (modalClosed)=\"onModalClosed($event)\"\n></valtimo-note-modal>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"case.notes.deleteConfirmation.description\"\n [outputOnConfirm]=\"idToDelete$ | async\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"case.notes.deleteConfirmation.title\"\n (confirmEvent)=\"onDeleteConfirm($event)\"\n></valtimo-confirmation-modal>\n", styles: [":host{display:flex;flex-direction:column}.add-note{align-self:flex-end}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$1.TimelineComponent, selector: "valtimo-timeline", inputs: ["items", "actions"] }, { kind: "component", type: i2$1.SpinnerComponent, selector: "valtimo-spinner", inputs: ["useBootstrapSpinner", "name", "type", "size", "color", "bdColor", "fullScreen", "noMarginTop"] }, { kind: "component", type: i6$1.NgbPagination, selector: "ngb-pagination", inputs: ["disabled", "boundaryLinks", "directionLinks", "ellipses", "rotate", "collectionSize", "maxSize", "page", "pageSize", "size"], outputs: ["pageChange"] }, { kind: "directive", type: i4$1.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "directive", type: i4$1.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: i2$1.ConfirmationModalComponent, selector: "valtimo-confirmation-modal", inputs: ["titleTranslationKey", "title", "content", "contentTranslationKey", "confirmButtonText", "confirmButtonTextTranslationKey", "confirmButtonType", "showOptionalButton", "optionalButtonText", "optionalButtonTextTranslationKey", "optionalButtonType", "cancelButtonText", "cancelButtonTextTranslationKey", "cancelButtonType", "showModalSubject$", "outputOnConfirm", "outputOnOptional", "spacerAfterCancelButton"], outputs: ["confirmEvent", "optionalEvent", "cancelEvent"] }, { kind: "component", type: i2$1.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "component", type: NoteModalComponent, selector: "valtimo-note-modal", inputs: ["modalType", "customData", "open"], outputs: ["modalClosed"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
|
|
1823
1878
|
}
|
|
1824
1879
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseDetailTabNotesComponent, decorators: [{
|
|
1825
1880
|
type: Component,
|
|
1826
1881
|
args: [{ standalone: false, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<ng-container\n *ngIf=\"{\n canAdd: canAdd$ | async,\n notes: notes$ | async,\n pagination: pagination$ | async,\n loading: loading$ | async,\n } as obs\"\n>\n <div class=\"cds--toolbar-content\">\n <button\n cdsButton=\"primary\"\n *ngIf=\"obs.canAdd\"\n [disabled]=\"obs.loading\"\n (click)=\"showAddModal()\"\n aria-expanded=\"false\"\n aria-haspopup=\"true\"\n >\n {{ 'case.notes.addNote' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n </div>\n\n <div *ngIf=\"timelineItems\">\n <valtimo-timeline\n *ngIf=\"timelineItems.length > 0\"\n [actions]=\"actions\"\n [items]=\"timelineItems\"\n ></valtimo-timeline>\n\n <valtimo-no-results\n *ngIf=\"timelineItems.length === 0\"\n [description]=\"'case.notes.noResults.description' | translate\"\n [title]=\"'case.notes.noResults.title' | translate\"\n illustration=\"valtimo-layout/img/emptystate-no-result.svg\"\n ></valtimo-no-results>\n </div>\n\n <valtimo-spinner\n [useBootstrapSpinner]=\"false\"\n name=\"auditSpinner\"\n bdColor=\"rgba(125, 125, 125, 0.35)\"\n color=\"#264251\"\n type=\"square-jelly-box\"\n >\n </valtimo-spinner>\n\n <div *ngIf=\"obs.pagination\" class=\"d-flex justify-content-end row mr-0 ml-0\">\n <ngb-pagination\n *ngIf=\"obs.pagination.collectionSize > obs.pagination.size\"\n [collectionSize]=\"obs.pagination.collectionSize\"\n [maxSize]=\"obs.pagination.size\"\n [pageSize]=\"obs.pagination.size\"\n [rotate]=\"true\"\n [(page)]=\"obs.pagination.page\"\n (pageChange)=\"paginationClicked($event)\"\n ></ngb-pagination>\n </div>\n</ng-container>\n\n<valtimo-note-modal\n [customData]=\"customData$ | async\"\n [modalType]=\"modalType$ | async\"\n [open]=\"modalOpen$ | async\"\n (modalClosed)=\"onModalClosed($event)\"\n></valtimo-note-modal>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"case.notes.deleteConfirmation.description\"\n [outputOnConfirm]=\"idToDelete$ | async\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"case.notes.deleteConfirmation.title\"\n (confirmEvent)=\"onDeleteConfirm($event)\"\n></valtimo-confirmation-modal>\n", styles: [":host{display:flex;flex-direction:column}.add-note{align-self:flex-end}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
1827
|
-
}], ctorParameters: () => [{ type: i1.GlobalNotificationService }, { type: NotesService }, { type: i2$
|
|
1882
|
+
}], ctorParameters: () => [{ type: i1.GlobalNotificationService }, { type: NotesService }, { type: i2$3.PermissionService }, { type: i1$2.ActivatedRoute }, { type: i4.TranslateService }], propDecorators: { noMargin: [{
|
|
1828
1883
|
type: HostBinding,
|
|
1829
1884
|
args: ['class.tab--no-margin']
|
|
1830
1885
|
}] } });
|
|
@@ -1984,7 +2039,24 @@ const CASE_DETAIL_START_PROCESS_DROPDOWN_WIDTH = {
|
|
|
1984
2039
|
};
|
|
1985
2040
|
|
|
1986
2041
|
/*
|
|
1987
|
-
* Copyright 2015-
|
|
2042
|
+
* Copyright 2015-2026 Ritense BV, the Netherlands.
|
|
2043
|
+
*
|
|
2044
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
2045
|
+
* you may not use this file except in compliance with the License.
|
|
2046
|
+
* You may obtain a copy of the License at
|
|
2047
|
+
*
|
|
2048
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
2049
|
+
*
|
|
2050
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
2051
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
2052
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
2053
|
+
* See the License for the specific language governing permissions and
|
|
2054
|
+
* limitations under the License.
|
|
2055
|
+
*/
|
|
2056
|
+
const ZGW_CASE_INSPECTION_TAB_TOKEN = new InjectionToken('Component contributed by @valtimo/zgw to render the ZGW tab on the case inspection screen.');
|
|
2057
|
+
|
|
2058
|
+
/*
|
|
2059
|
+
* Copyright 2015-2026 Ritense BV, the Netherlands.
|
|
1988
2060
|
*
|
|
1989
2061
|
* Licensed under EUPL, Version 1.2 (the "License");
|
|
1990
2062
|
* you may not use this file except in compliance with the License.
|
|
@@ -2046,7 +2118,7 @@ class CaseDetailTabFormioComponent {
|
|
|
2046
2118
|
}));
|
|
2047
2119
|
}
|
|
2048
2120
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseDetailTabFormioComponent, deps: [{ token: CaseTabService }, { token: i1$2.ActivatedRoute }, { token: i3.FormService }, { token: i5.SseService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2049
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: CaseDetailTabFormioComponent, isStandalone: false, selector: "ng-component", ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<ng-container\n *ngIf=\"{\n prefilledForm: prefilledForm$ | async,\n loading: loading$ | async,\n formNotFound: formNotFound$ | async,\n noFormSpecified: noFormSpecified$ | async,\n } as obs\"\n>\n <div *ngIf=\"obs.loading\" class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n\n <p *ngIf=\"obs.formNotFound\" class=\"error-message\">\n {{ 'case.formio.formNotFound' | translate: {formDefinitionName: obs.formNotFound} }}\n </p>\n\n <p *ngIf=\"obs.noFormSpecified\" class=\"error-message\">\n {{ 'case.formio.noFormSpecified' | translate }}\n </p>\n\n <valtimo-form-io *ngIf=\"obs.prefilledForm\" [form]=\"obs.prefilledForm\"> </valtimo-form-io>\n</ng-container>\n", styles: [".loading-container{display:flex;width:100%;flex-direction:row;justify-content:center}.error-message{text-align:center}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$1.FormioComponent, selector: "valtimo-form-io", inputs: ["options", "submission", "form", "readOnly", "formRefresh$"], outputs: ["submit", "change", "event"] }, { kind: "component", type:
|
|
2121
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: CaseDetailTabFormioComponent, isStandalone: false, selector: "ng-component", ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<ng-container\n *ngIf=\"{\n prefilledForm: prefilledForm$ | async,\n loading: loading$ | async,\n formNotFound: formNotFound$ | async,\n noFormSpecified: noFormSpecified$ | async,\n } as obs\"\n>\n <div *ngIf=\"obs.loading\" class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n\n <p *ngIf=\"obs.formNotFound\" class=\"error-message\">\n {{ 'case.formio.formNotFound' | translate: {formDefinitionName: obs.formNotFound} }}\n </p>\n\n <p *ngIf=\"obs.noFormSpecified\" class=\"error-message\">\n {{ 'case.formio.noFormSpecified' | translate }}\n </p>\n\n <valtimo-form-io *ngIf=\"obs.prefilledForm\" [form]=\"obs.prefilledForm\"> </valtimo-form-io>\n</ng-container>\n", styles: [".loading-container{display:flex;width:100%;flex-direction:row;justify-content:center}.error-message{text-align:center}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$1.FormioComponent, selector: "valtimo-form-io", inputs: ["options", "submission", "form", "readOnly", "formRefresh$"], outputs: ["submit", "change", "event"] }, { kind: "component", type: i4$1.Loading, selector: "cds-loading, ibm-loading", inputs: ["title", "isActive", "size", "overlay"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2050
2122
|
}
|
|
2051
2123
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseDetailTabFormioComponent, decorators: [{
|
|
2052
2124
|
type: Component,
|
|
@@ -2249,8 +2321,8 @@ class CaseWidgetFieldComponent extends WidgetProcess {
|
|
|
2249
2321
|
return;
|
|
2250
2322
|
this.widgetsService.startProcess(process.processDefinitionKey);
|
|
2251
2323
|
}
|
|
2252
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseWidgetFieldComponent, deps: [{ token: i2.DocumentService }, { token: i2$
|
|
2253
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: CaseWidgetFieldComponent, isStandalone: true, selector: "valtimo-case-widget-field", inputs: { documentId: "documentId", widgetConfiguration: "widgetConfiguration", widgetUuid: "widgetUuid" }, usesInheritance: true, ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<valtimo-widget-field\n *ngIf=\"{\n widgetConfiguration: widgetConfiguration$ | async,\n widgetData: widgetData$ | async,\n } as obs\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetData]=\"obs.widgetData\"\n>\n @if (obs.widgetConfiguration?.actions?.length === 1) {\n @if (obs.widgetConfiguration.actions[0].processDefinitionKey) {\n <button\n *ngIf=\"canCreateCamundaExecution$ | async\"\n cdsButton=\"ghost\"\n (click)=\"onProcessStartClick(obs.widgetConfiguration.actions[0])\"\n >\n {{ obs.widgetConfiguration.actions[0].name }}\n </button>\n }\n }\n</valtimo-widget-field>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "ngmodule", type: InputModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: CarbonListModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type:
|
|
2324
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseWidgetFieldComponent, deps: [{ token: i2.DocumentService }, { token: i2$3.PermissionService }, { token: WidgetsService }, { token: CaseTabService }, { token: CaseWidgetsApiService }, { token: i5$1.WidgetLayoutService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2325
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: CaseWidgetFieldComponent, isStandalone: true, selector: "valtimo-case-widget-field", inputs: { documentId: "documentId", widgetConfiguration: "widgetConfiguration", widgetUuid: "widgetUuid" }, usesInheritance: true, ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<valtimo-widget-field\n *ngIf=\"{\n widgetConfiguration: widgetConfiguration$ | async,\n widgetData: widgetData$ | async,\n } as obs\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetData]=\"obs.widgetData\"\n>\n @if (obs.widgetConfiguration?.actions?.length === 1) {\n @if (obs.widgetConfiguration.actions[0].processDefinitionKey) {\n <button\n *ngIf=\"canCreateCamundaExecution$ | async\"\n cdsButton=\"ghost\"\n (click)=\"onProcessStartClick(obs.widgetConfiguration.actions[0])\"\n >\n {{ obs.widgetConfiguration.actions[0].name }}\n </button>\n }\n }\n</valtimo-widget-field>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "ngmodule", type: InputModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: CarbonListModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i4$1.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "component", type: WidgetFieldComponent, selector: "valtimo-widget-field", inputs: ["widgetConfiguration", "widgetData"], outputs: ["noVisibleFieldsEvent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2254
2326
|
}
|
|
2255
2327
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseWidgetFieldComponent, decorators: [{
|
|
2256
2328
|
type: Component,
|
|
@@ -2262,7 +2334,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
|
|
|
2262
2334
|
ButtonModule,
|
|
2263
2335
|
WidgetFieldComponent,
|
|
2264
2336
|
], template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<valtimo-widget-field\n *ngIf=\"{\n widgetConfiguration: widgetConfiguration$ | async,\n widgetData: widgetData$ | async,\n } as obs\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetData]=\"obs.widgetData\"\n>\n @if (obs.widgetConfiguration?.actions?.length === 1) {\n @if (obs.widgetConfiguration.actions[0].processDefinitionKey) {\n <button\n *ngIf=\"canCreateCamundaExecution$ | async\"\n cdsButton=\"ghost\"\n (click)=\"onProcessStartClick(obs.widgetConfiguration.actions[0])\"\n >\n {{ obs.widgetConfiguration.actions[0].name }}\n </button>\n }\n }\n</valtimo-widget-field>\n" }]
|
|
2265
|
-
}], ctorParameters: () => [{ type: i2.DocumentService }, { type: i2$
|
|
2337
|
+
}], ctorParameters: () => [{ type: i2.DocumentService }, { type: i2$3.PermissionService }, { type: WidgetsService }, { type: CaseTabService }, { type: CaseWidgetsApiService }, { type: i5$1.WidgetLayoutService }], propDecorators: { documentId: [{
|
|
2266
2338
|
type: Input,
|
|
2267
2339
|
args: [{ required: true }]
|
|
2268
2340
|
}], widgetConfiguration: [{
|
|
@@ -2309,13 +2381,13 @@ class CaseWidgetCustomComponent extends WidgetProcess {
|
|
|
2309
2381
|
onProcessStartClick(process) {
|
|
2310
2382
|
this.widgetsService.startProcess(process.processDefinitionKey);
|
|
2311
2383
|
}
|
|
2312
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseWidgetCustomComponent, deps: [{ token: WidgetsService }, { token: i2.DocumentService }, { token: i2$
|
|
2313
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: CaseWidgetCustomComponent, isStandalone: true, selector: "valtimo-case-widget-custom", inputs: { documentId: "documentId", widgetConfiguration: "widgetConfiguration", widgetUuid: "widgetUuid" }, usesInheritance: true, ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<valtimo-widget-custom\n *ngIf=\"{\n widgetConfiguration: widgetConfig$ | async\n } as obs\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetUuid]=\"widgetUuid\"\n>\n @if (obs.widgetConfiguration?.actions?.length === 1) {\n @if (obs.widgetConfiguration.actions[0].processDefinitionKey) {\n <button\n *ngIf=\"canCreateCamundaExecution$ | async\"\n cdsButton=\"ghost\"\n (click)=\"onProcessStartClick(obs.widgetConfiguration.actions[0])\"\n >\n {{ obs.widgetConfiguration.actions[0].name }}\n </button>\n }\n }\n</valtimo-widget-custom>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "ngmodule", type: CarbonListModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type:
|
|
2384
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseWidgetCustomComponent, deps: [{ token: WidgetsService }, { token: i2.DocumentService }, { token: i2$3.PermissionService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2385
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: CaseWidgetCustomComponent, isStandalone: true, selector: "valtimo-case-widget-custom", inputs: { documentId: "documentId", widgetConfiguration: "widgetConfiguration", widgetUuid: "widgetUuid" }, usesInheritance: true, ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<valtimo-widget-custom\n *ngIf=\"{\n widgetConfiguration: widgetConfig$ | async\n } as obs\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetUuid]=\"widgetUuid\"\n>\n @if (obs.widgetConfiguration?.actions?.length === 1) {\n @if (obs.widgetConfiguration.actions[0].processDefinitionKey) {\n <button\n *ngIf=\"canCreateCamundaExecution$ | async\"\n cdsButton=\"ghost\"\n (click)=\"onProcessStartClick(obs.widgetConfiguration.actions[0])\"\n >\n {{ obs.widgetConfiguration.actions[0].name }}\n </button>\n }\n }\n</valtimo-widget-custom>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "ngmodule", type: CarbonListModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i4$1.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "component", type: WidgetCustomComponent, selector: "valtimo-widget-custom", inputs: ["widgetConfiguration", "widgetData", "widgetUuid"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2314
2386
|
}
|
|
2315
2387
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseWidgetCustomComponent, decorators: [{
|
|
2316
2388
|
type: Component,
|
|
2317
2389
|
args: [{ selector: 'valtimo-case-widget-custom', standalone: true, imports: [CommonModule, CarbonListModule, TranslateModule, ButtonModule, WidgetCustomComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<valtimo-widget-custom\n *ngIf=\"{\n widgetConfiguration: widgetConfig$ | async\n } as obs\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetUuid]=\"widgetUuid\"\n>\n @if (obs.widgetConfiguration?.actions?.length === 1) {\n @if (obs.widgetConfiguration.actions[0].processDefinitionKey) {\n <button\n *ngIf=\"canCreateCamundaExecution$ | async\"\n cdsButton=\"ghost\"\n (click)=\"onProcessStartClick(obs.widgetConfiguration.actions[0])\"\n >\n {{ obs.widgetConfiguration.actions[0].name }}\n </button>\n }\n }\n</valtimo-widget-custom>\n" }]
|
|
2318
|
-
}], ctorParameters: () => [{ type: WidgetsService }, { type: i2.DocumentService }, { type: i2$
|
|
2390
|
+
}], ctorParameters: () => [{ type: WidgetsService }, { type: i2.DocumentService }, { type: i2$3.PermissionService }], propDecorators: { documentId: [{
|
|
2319
2391
|
type: Input,
|
|
2320
2392
|
args: [{ required: true }]
|
|
2321
2393
|
}], widgetConfiguration: [{
|
|
@@ -2392,13 +2464,13 @@ class CaseWidgetFormioComponent extends WidgetProcess {
|
|
|
2392
2464
|
onProcessStartClick(process) {
|
|
2393
2465
|
this.widgetsService.startProcess(process.processDefinitionKey);
|
|
2394
2466
|
}
|
|
2395
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseWidgetFormioComponent, deps: [{ token: i2.DocumentService }, { token: i2$
|
|
2396
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: CaseWidgetFormioComponent, isStandalone: true, selector: "valtimo-case-widget-formio", inputs: { documentId: "documentId", widgetConfiguration: "widgetConfiguration", widgetUuid: "widgetUuid" }, usesInheritance: true, ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<valtimo-widget-formio\n *ngIf=\"{\n widgetConfiguration: widgetConfiguration$ | async,\n widgetData: widgetData$ | async,\n documentId: documentId$ | async,\n } as obs\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetData]=\"obs.widgetData\"\n [documentId]=\"obs.documentId\"\n [widgetUuid]=\"widgetUuid\"\n [refreshForm]=\"refreshForm\"\n>\n @if (obs.widgetConfiguration?.actions?.length === 1) {\n @if (obs.widgetConfiguration.actions[0].processDefinitionKey) {\n <button\n *ngIf=\"canCreateCamundaExecution$ | async\"\n cdsButton=\"ghost\"\n (click)=\"onProcessStartClick(obs.widgetConfiguration.actions[0])\"\n >\n {{ obs.widgetConfiguration.actions[0].name }}\n </button>\n }\n }\n</valtimo-widget-formio>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: FormIoModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type:
|
|
2467
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseWidgetFormioComponent, deps: [{ token: i2.DocumentService }, { token: i2$3.PermissionService }, { token: WidgetsService }, { token: i0.DestroyRef }, { token: CaseTabService }, { token: CaseWidgetsApiService }, { token: i5$1.WidgetLayoutService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2468
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: CaseWidgetFormioComponent, isStandalone: true, selector: "valtimo-case-widget-formio", inputs: { documentId: "documentId", widgetConfiguration: "widgetConfiguration", widgetUuid: "widgetUuid" }, usesInheritance: true, ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<valtimo-widget-formio\n *ngIf=\"{\n widgetConfiguration: widgetConfiguration$ | async,\n widgetData: widgetData$ | async,\n documentId: documentId$ | async,\n } as obs\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetData]=\"obs.widgetData\"\n [documentId]=\"obs.documentId\"\n [widgetUuid]=\"widgetUuid\"\n [refreshForm]=\"refreshForm\"\n>\n @if (obs.widgetConfiguration?.actions?.length === 1) {\n @if (obs.widgetConfiguration.actions[0].processDefinitionKey) {\n <button\n *ngIf=\"canCreateCamundaExecution$ | async\"\n cdsButton=\"ghost\"\n (click)=\"onProcessStartClick(obs.widgetConfiguration.actions[0])\"\n >\n {{ obs.widgetConfiguration.actions[0].name }}\n </button>\n }\n }\n</valtimo-widget-formio>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: FormIoModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i4$1.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "component", type: WidgetFormioComponent, selector: "valtimo-widget-formio", inputs: ["documentId", "widgetConfiguration", "widgetData", "widgetUuid", "refreshForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2397
2469
|
}
|
|
2398
2470
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseWidgetFormioComponent, decorators: [{
|
|
2399
2471
|
type: Component,
|
|
2400
2472
|
args: [{ selector: 'valtimo-case-widget-formio', standalone: true, imports: [CommonModule, TranslateModule, FormIoModule, ButtonModule, WidgetFormioComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<valtimo-widget-formio\n *ngIf=\"{\n widgetConfiguration: widgetConfiguration$ | async,\n widgetData: widgetData$ | async,\n documentId: documentId$ | async,\n } as obs\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetData]=\"obs.widgetData\"\n [documentId]=\"obs.documentId\"\n [widgetUuid]=\"widgetUuid\"\n [refreshForm]=\"refreshForm\"\n>\n @if (obs.widgetConfiguration?.actions?.length === 1) {\n @if (obs.widgetConfiguration.actions[0].processDefinitionKey) {\n <button\n *ngIf=\"canCreateCamundaExecution$ | async\"\n cdsButton=\"ghost\"\n (click)=\"onProcessStartClick(obs.widgetConfiguration.actions[0])\"\n >\n {{ obs.widgetConfiguration.actions[0].name }}\n </button>\n }\n }\n</valtimo-widget-formio>\n" }]
|
|
2401
|
-
}], ctorParameters: () => [{ type: i2.DocumentService }, { type: i2$
|
|
2473
|
+
}], ctorParameters: () => [{ type: i2.DocumentService }, { type: i2$3.PermissionService }, { type: WidgetsService }, { type: i0.DestroyRef }, { type: CaseTabService }, { type: CaseWidgetsApiService }, { type: i5$1.WidgetLayoutService }], propDecorators: { documentId: [{
|
|
2402
2474
|
type: Input
|
|
2403
2475
|
}], widgetConfiguration: [{
|
|
2404
2476
|
type: Input
|
|
@@ -2476,8 +2548,8 @@ class CaseWidgetTableComponent extends WidgetProcess {
|
|
|
2476
2548
|
getPageSizeParam(widgetConfiguration) {
|
|
2477
2549
|
return `size=${widgetConfiguration.properties.defaultPageSize}`;
|
|
2478
2550
|
}
|
|
2479
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseWidgetTableComponent, deps: [{ token: i2.DocumentService }, { token: i2$
|
|
2480
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: CaseWidgetTableComponent, isStandalone: true, selector: "valtimo-case-widget-table", inputs: { documentId: "documentId", widgetConfiguration: "widgetConfiguration", widgetUuid: "widgetUuid" }, usesInheritance: true, ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<valtimo-widget-table\n [widgetData]=\"widgetData$ | async\"\n [widgetConfiguration]=\"widgetConfiguration\"\n (paginationEvent)=\"onPaginationEvent($event)\"\n>\n @if (widgetConfiguration?.actions?.length === 1) {\n @if (widgetConfiguration.actions[0].processDefinitionKey) {\n <button\n *ngIf=\"canCreateCamundaExecution$ | async\"\n cdsButton=\"ghost\"\n (click)=\"onProcessStartClick(widgetConfiguration.actions[0])\"\n >\n {{ widgetConfiguration.actions[0].name }}\n </button>\n }\n }\n</valtimo-widget-table>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "ngmodule", type: CarbonListModule }, { kind: "ngmodule", type: PaginationModule }, { kind: "ngmodule", type: TilesModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type:
|
|
2551
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseWidgetTableComponent, deps: [{ token: i2.DocumentService }, { token: i2$3.PermissionService }, { token: CaseWidgetsApiService }, { token: WidgetsService }, { token: CaseTabService }, { token: i5$1.WidgetLayoutService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2552
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: CaseWidgetTableComponent, isStandalone: true, selector: "valtimo-case-widget-table", inputs: { documentId: "documentId", widgetConfiguration: "widgetConfiguration", widgetUuid: "widgetUuid" }, usesInheritance: true, ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<valtimo-widget-table\n [widgetData]=\"widgetData$ | async\"\n [widgetConfiguration]=\"widgetConfiguration\"\n (paginationEvent)=\"onPaginationEvent($event)\"\n>\n @if (widgetConfiguration?.actions?.length === 1) {\n @if (widgetConfiguration.actions[0].processDefinitionKey) {\n <button\n *ngIf=\"canCreateCamundaExecution$ | async\"\n cdsButton=\"ghost\"\n (click)=\"onProcessStartClick(widgetConfiguration.actions[0])\"\n >\n {{ widgetConfiguration.actions[0].name }}\n </button>\n }\n }\n</valtimo-widget-table>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "ngmodule", type: CarbonListModule }, { kind: "ngmodule", type: PaginationModule }, { kind: "ngmodule", type: TilesModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i4$1.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "component", type: WidgetTableComponent, selector: "valtimo-widget-table", inputs: ["widgetConfiguration", "widgetData"], outputs: ["paginationEvent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
2481
2553
|
}
|
|
2482
2554
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseWidgetTableComponent, decorators: [{
|
|
2483
2555
|
type: Component,
|
|
@@ -2490,7 +2562,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
|
|
|
2490
2562
|
ButtonModule,
|
|
2491
2563
|
WidgetTableComponent,
|
|
2492
2564
|
], template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<valtimo-widget-table\n [widgetData]=\"widgetData$ | async\"\n [widgetConfiguration]=\"widgetConfiguration\"\n (paginationEvent)=\"onPaginationEvent($event)\"\n>\n @if (widgetConfiguration?.actions?.length === 1) {\n @if (widgetConfiguration.actions[0].processDefinitionKey) {\n <button\n *ngIf=\"canCreateCamundaExecution$ | async\"\n cdsButton=\"ghost\"\n (click)=\"onProcessStartClick(widgetConfiguration.actions[0])\"\n >\n {{ widgetConfiguration.actions[0].name }}\n </button>\n }\n }\n</valtimo-widget-table>\n" }]
|
|
2493
|
-
}], ctorParameters: () => [{ type: i2.DocumentService }, { type: i2$
|
|
2565
|
+
}], ctorParameters: () => [{ type: i2.DocumentService }, { type: i2$3.PermissionService }, { type: CaseWidgetsApiService }, { type: WidgetsService }, { type: CaseTabService }, { type: i5$1.WidgetLayoutService }], propDecorators: { documentId: [{
|
|
2494
2566
|
type: Input,
|
|
2495
2567
|
args: [{ required: true }]
|
|
2496
2568
|
}], widgetConfiguration: [{
|
|
@@ -2572,8 +2644,8 @@ class CaseWidgetCollectionComponent extends WidgetProcess {
|
|
|
2572
2644
|
getPageSizeParam(widgetConfiguration) {
|
|
2573
2645
|
return `size=${widgetConfiguration.properties.defaultPageSize}`;
|
|
2574
2646
|
}
|
|
2575
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseWidgetCollectionComponent, deps: [{ token: i2.DocumentService }, { token: i2$
|
|
2576
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: CaseWidgetCollectionComponent, isStandalone: true, selector: "valtimo-case-widget-collection", inputs: { documentId: "documentId", widgetConfiguration: "widgetConfiguration", widgetUuid: "widgetUuid" }, usesInheritance: true, ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<valtimo-widget-collection\n *ngIf=\"{\n widgetConfiguration: widgetConfiguration$ | async,\n widgetData: widgetData$ | async,\n } as obs\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetData]=\"obs.widgetData\"\n (paginationEvent)=\"onPaginationEvent($event)\"\n>\n @if (obs.widgetConfiguration?.actions?.length === 1) {\n @if (obs.widgetConfiguration.actions[0].processDefinitionKey) {\n <button\n *ngIf=\"canCreateCamundaExecution$ | async\"\n cdsButton=\"ghost\"\n (click)=\"onProcessStartClick(obs.widgetConfiguration.actions[0])\"\n >\n {{ obs.widgetConfiguration.actions[0].name }}\n </button>\n }\n }\n</valtimo-widget-collection>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "ngmodule", type: InputModule }, { kind: "ngmodule", type: PaginationModule }, { kind: "ngmodule", type: TilesModule }, { kind: "ngmodule", type: CarbonListModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type:
|
|
2647
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseWidgetCollectionComponent, deps: [{ token: i2.DocumentService }, { token: i2$3.PermissionService }, { token: CaseWidgetsApiService }, { token: WidgetsService }, { token: i5$1.WidgetLayoutService }, { token: CaseTabService }, { token: CaseWidgetsApiService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2648
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: CaseWidgetCollectionComponent, isStandalone: true, selector: "valtimo-case-widget-collection", inputs: { documentId: "documentId", widgetConfiguration: "widgetConfiguration", widgetUuid: "widgetUuid" }, usesInheritance: true, ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<valtimo-widget-collection\n *ngIf=\"{\n widgetConfiguration: widgetConfiguration$ | async,\n widgetData: widgetData$ | async,\n } as obs\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetData]=\"obs.widgetData\"\n (paginationEvent)=\"onPaginationEvent($event)\"\n>\n @if (obs.widgetConfiguration?.actions?.length === 1) {\n @if (obs.widgetConfiguration.actions[0].processDefinitionKey) {\n <button\n *ngIf=\"canCreateCamundaExecution$ | async\"\n cdsButton=\"ghost\"\n (click)=\"onProcessStartClick(obs.widgetConfiguration.actions[0])\"\n >\n {{ obs.widgetConfiguration.actions[0].name }}\n </button>\n }\n }\n</valtimo-widget-collection>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "ngmodule", type: InputModule }, { kind: "ngmodule", type: PaginationModule }, { kind: "ngmodule", type: TilesModule }, { kind: "ngmodule", type: CarbonListModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i4$1.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "component", type: WidgetCollectionComponent, selector: "valtimo-widget-collection", inputs: ["widgetConfiguration", "widgetData"], outputs: ["paginationEvent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
2577
2649
|
}
|
|
2578
2650
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseWidgetCollectionComponent, decorators: [{
|
|
2579
2651
|
type: Component,
|
|
@@ -2587,7 +2659,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
|
|
|
2587
2659
|
ButtonModule,
|
|
2588
2660
|
WidgetCollectionComponent,
|
|
2589
2661
|
], template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<valtimo-widget-collection\n *ngIf=\"{\n widgetConfiguration: widgetConfiguration$ | async,\n widgetData: widgetData$ | async,\n } as obs\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetData]=\"obs.widgetData\"\n (paginationEvent)=\"onPaginationEvent($event)\"\n>\n @if (obs.widgetConfiguration?.actions?.length === 1) {\n @if (obs.widgetConfiguration.actions[0].processDefinitionKey) {\n <button\n *ngIf=\"canCreateCamundaExecution$ | async\"\n cdsButton=\"ghost\"\n (click)=\"onProcessStartClick(obs.widgetConfiguration.actions[0])\"\n >\n {{ obs.widgetConfiguration.actions[0].name }}\n </button>\n }\n }\n</valtimo-widget-collection>\n" }]
|
|
2590
|
-
}], ctorParameters: () => [{ type: i2.DocumentService }, { type: i2$
|
|
2662
|
+
}], ctorParameters: () => [{ type: i2.DocumentService }, { type: i2$3.PermissionService }, { type: CaseWidgetsApiService }, { type: WidgetsService }, { type: i5$1.WidgetLayoutService }, { type: CaseTabService }, { type: CaseWidgetsApiService }], propDecorators: { documentId: [{
|
|
2591
2663
|
type: Input,
|
|
2592
2664
|
args: [{ required: true }]
|
|
2593
2665
|
}], widgetConfiguration: [{
|
|
@@ -2652,8 +2724,8 @@ class CaseWidgetMapComponent extends WidgetProcess {
|
|
|
2652
2724
|
return;
|
|
2653
2725
|
this.widgetsService.startProcess(process.processDefinitionKey);
|
|
2654
2726
|
}
|
|
2655
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseWidgetMapComponent, deps: [{ token: i2.DocumentService }, { token: i2$
|
|
2656
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: CaseWidgetMapComponent, isStandalone: true, selector: "valtimo-case-widget-map", inputs: { documentId: "documentId", widgetConfiguration: "widgetConfiguration", widgetUuid: "widgetUuid" }, usesInheritance: true, ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<valtimo-widget-map\n *ngIf=\"{\n widgetConfiguration: widgetConfiguration$ | async,\n widgetData: widgetData$ | async\n } as obs\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetData]=\"obs.widgetData\"\n>\n @if (\n obs.widgetConfiguration?.actions?.length === 1 &&\n obs.widgetConfiguration.actions[0]?.processDefinitionKey &&\n (canCreateCamundaExecution$ | async)\n ) {\n <button\n cdsButton=\"ghost\"\n (click)=\"onProcessStartClick(obs.widgetConfiguration.actions[0])\"\n >\n {{ obs.widgetConfiguration.actions[0].name }}\n </button>\n }\n</valtimo-widget-map>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "ngmodule", type: InputModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: CarbonListModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type:
|
|
2727
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseWidgetMapComponent, deps: [{ token: i2.DocumentService }, { token: i2$3.PermissionService }, { token: WidgetsService }, { token: CaseTabService }, { token: CaseWidgetsApiService }, { token: i5$1.WidgetLayoutService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2728
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: CaseWidgetMapComponent, isStandalone: true, selector: "valtimo-case-widget-map", inputs: { documentId: "documentId", widgetConfiguration: "widgetConfiguration", widgetUuid: "widgetUuid" }, usesInheritance: true, ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<valtimo-widget-map\n *ngIf=\"{\n widgetConfiguration: widgetConfiguration$ | async,\n widgetData: widgetData$ | async\n } as obs\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetData]=\"obs.widgetData\"\n>\n @if (\n obs.widgetConfiguration?.actions?.length === 1 &&\n obs.widgetConfiguration.actions[0]?.processDefinitionKey &&\n (canCreateCamundaExecution$ | async)\n ) {\n <button\n cdsButton=\"ghost\"\n (click)=\"onProcessStartClick(obs.widgetConfiguration.actions[0])\"\n >\n {{ obs.widgetConfiguration.actions[0].name }}\n </button>\n }\n</valtimo-widget-map>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "ngmodule", type: InputModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: CarbonListModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i4$1.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "component", type: WidgetMapComponent, selector: "valtimo-widget-map", inputs: ["widgetConfiguration", "widgetData"], outputs: ["noVisibleMapEvent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2657
2729
|
}
|
|
2658
2730
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseWidgetMapComponent, decorators: [{
|
|
2659
2731
|
type: Component,
|
|
@@ -2665,7 +2737,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
|
|
|
2665
2737
|
ButtonModule,
|
|
2666
2738
|
WidgetMapComponent,
|
|
2667
2739
|
], template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<valtimo-widget-map\n *ngIf=\"{\n widgetConfiguration: widgetConfiguration$ | async,\n widgetData: widgetData$ | async\n } as obs\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetData]=\"obs.widgetData\"\n>\n @if (\n obs.widgetConfiguration?.actions?.length === 1 &&\n obs.widgetConfiguration.actions[0]?.processDefinitionKey &&\n (canCreateCamundaExecution$ | async)\n ) {\n <button\n cdsButton=\"ghost\"\n (click)=\"onProcessStartClick(obs.widgetConfiguration.actions[0])\"\n >\n {{ obs.widgetConfiguration.actions[0].name }}\n </button>\n }\n</valtimo-widget-map>\n" }]
|
|
2668
|
-
}], ctorParameters: () => [{ type: i2.DocumentService }, { type: i2$
|
|
2740
|
+
}], ctorParameters: () => [{ type: i2.DocumentService }, { type: i2$3.PermissionService }, { type: WidgetsService }, { type: CaseTabService }, { type: CaseWidgetsApiService }, { type: i5$1.WidgetLayoutService }], propDecorators: { documentId: [{
|
|
2669
2741
|
type: Input,
|
|
2670
2742
|
args: [{ required: true }]
|
|
2671
2743
|
}], widgetConfiguration: [{
|
|
@@ -2789,8 +2861,8 @@ class CaseWidgetMetrolineComponent extends WidgetProcess {
|
|
|
2789
2861
|
return;
|
|
2790
2862
|
this.widgetsService.startProcess(process.processDefinitionKey);
|
|
2791
2863
|
}
|
|
2792
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseWidgetMetrolineComponent, deps: [{ token: i2.DocumentService }, { token: i2$
|
|
2793
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: CaseWidgetMetrolineComponent, isStandalone: true, selector: "valtimo-case-widget-metroline", inputs: { documentId: "documentId", widgetConfiguration: "widgetConfiguration", widgetUuid: "widgetUuid" }, usesInheritance: true, ngImport: i0, template: "<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<valtimo-widget-metroline\n *ngIf=\"{\n widgetConfiguration: widgetConfiguration$ | async,\n widgetData: widgetData$ | async,\n } as obs\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetData]=\"obs.widgetData\"\n>\n @if (\n obs.widgetConfiguration?.actions?.length === 1 &&\n obs.widgetConfiguration.actions[0]?.processDefinitionKey &&\n (canCreateCamundaExecution$ | async)\n ) {\n <button cdsButton=\"ghost\" (click)=\"onProcessStartClick(obs.widgetConfiguration.actions[0])\">\n {{ obs.widgetConfiguration.actions[0].name }}\n </button>\n }\n</valtimo-widget-metroline>\n", dependencies: [{ kind: "ngmodule", type: ButtonModule }, { kind: "directive", type:
|
|
2864
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseWidgetMetrolineComponent, deps: [{ token: i2.DocumentService }, { token: i2$3.PermissionService }, { token: WidgetsService }, { token: CaseTabService }, { token: CaseWidgetsApiService }, { token: i5$1.WidgetLayoutService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2865
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: CaseWidgetMetrolineComponent, isStandalone: true, selector: "valtimo-case-widget-metroline", inputs: { documentId: "documentId", widgetConfiguration: "widgetConfiguration", widgetUuid: "widgetUuid" }, usesInheritance: true, ngImport: i0, template: "<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<valtimo-widget-metroline\n *ngIf=\"{\n widgetConfiguration: widgetConfiguration$ | async,\n widgetData: widgetData$ | async,\n } as obs\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetData]=\"obs.widgetData\"\n>\n @if (\n obs.widgetConfiguration?.actions?.length === 1 &&\n obs.widgetConfiguration.actions[0]?.processDefinitionKey &&\n (canCreateCamundaExecution$ | async)\n ) {\n <button cdsButton=\"ghost\" (click)=\"onProcessStartClick(obs.widgetConfiguration.actions[0])\">\n {{ obs.widgetConfiguration.actions[0].name }}\n </button>\n }\n</valtimo-widget-metroline>\n", dependencies: [{ kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i4$1.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: CarbonListModule }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "component", type: WidgetMetrolineComponent, selector: "valtimo-widget-metroline", inputs: ["widgetConfiguration", "widgetData"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2794
2866
|
}
|
|
2795
2867
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseWidgetMetrolineComponent, decorators: [{
|
|
2796
2868
|
type: Component,
|
|
@@ -2801,7 +2873,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
|
|
|
2801
2873
|
TranslateModule,
|
|
2802
2874
|
WidgetMetrolineComponent,
|
|
2803
2875
|
], template: "<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<valtimo-widget-metroline\n *ngIf=\"{\n widgetConfiguration: widgetConfiguration$ | async,\n widgetData: widgetData$ | async,\n } as obs\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetData]=\"obs.widgetData\"\n>\n @if (\n obs.widgetConfiguration?.actions?.length === 1 &&\n obs.widgetConfiguration.actions[0]?.processDefinitionKey &&\n (canCreateCamundaExecution$ | async)\n ) {\n <button cdsButton=\"ghost\" (click)=\"onProcessStartClick(obs.widgetConfiguration.actions[0])\">\n {{ obs.widgetConfiguration.actions[0].name }}\n </button>\n }\n</valtimo-widget-metroline>\n" }]
|
|
2804
|
-
}], ctorParameters: () => [{ type: i2.DocumentService }, { type: i2$
|
|
2876
|
+
}], ctorParameters: () => [{ type: i2.DocumentService }, { type: i2$3.PermissionService }, { type: WidgetsService }, { type: CaseTabService }, { type: CaseWidgetsApiService }, { type: i5$1.WidgetLayoutService }], propDecorators: { documentId: [{
|
|
2805
2877
|
type: Input,
|
|
2806
2878
|
args: [{ required: true }]
|
|
2807
2879
|
}], widgetConfiguration: [{
|
|
@@ -2906,9 +2978,10 @@ class CaseDetailWidgetsComponent {
|
|
|
2906
2978
|
this._tabKey$,
|
|
2907
2979
|
this._documentUpdates$,
|
|
2908
2980
|
]).pipe(switchMap(([documentId, tabKey, documentUpdatedEvent]) => {
|
|
2909
|
-
return this.filterDuplicateConfigurations(this.widgetsApiService.
|
|
2981
|
+
return this.filterDuplicateConfigurations(this.widgetsApiService.getWidgetTab(documentId, tabKey), documentUpdatedEvent);
|
|
2910
2982
|
}), shareReplay({ bufferSize: 1, refCount: true }));
|
|
2911
|
-
this.widgetGroups$ = this._widgetConfiguration$.pipe(map(
|
|
2983
|
+
this.widgetGroups$ = this._widgetConfiguration$.pipe(map(configuration => this.toCaseWidgetGroups(configuration.widgets)));
|
|
2984
|
+
this.widgetLayout$ = this._widgetConfiguration$.pipe(map(configuration => configuration.widgetLayout));
|
|
2912
2985
|
this.widgetComponentMap = {
|
|
2913
2986
|
[WidgetType.FIELDS]: CaseWidgetFieldComponent,
|
|
2914
2987
|
[WidgetType.CUSTOM]: CaseWidgetCustomComponent,
|
|
@@ -2954,20 +3027,20 @@ class CaseDetailWidgetsComponent {
|
|
|
2954
3027
|
filterDuplicateConfigurations(widgetConfiguration, documentUpdatedEvent) {
|
|
2955
3028
|
return widgetConfiguration.pipe(map(configuration => {
|
|
2956
3029
|
const configurationChanged = !this._previousWidgetConfiguration ||
|
|
2957
|
-
!isEqual(this._previousWidgetConfiguration, configuration);
|
|
3030
|
+
!isEqual(this._previousWidgetConfiguration, configuration.widgets);
|
|
2958
3031
|
if (!configurationChanged && documentUpdatedEvent) {
|
|
2959
3032
|
this.widgetsService.refreshWidgets();
|
|
2960
3033
|
return null;
|
|
2961
3034
|
}
|
|
2962
3035
|
if (configurationChanged) {
|
|
2963
|
-
this._previousWidgetConfiguration = configuration;
|
|
3036
|
+
this._previousWidgetConfiguration = configuration.widgets;
|
|
2964
3037
|
return configuration;
|
|
2965
3038
|
}
|
|
2966
3039
|
return null;
|
|
2967
3040
|
}), filter((configuration) => configuration !== null));
|
|
2968
3041
|
}
|
|
2969
3042
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseDetailWidgetsComponent, deps: [{ token: i1$2.ActivatedRoute }, { token: CaseTabService }, { token: CaseWidgetsApiService }, { token: i5.SseService }, { token: WidgetsService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2970
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: CaseDetailWidgetsComponent, isStandalone: true, selector: "ng-component", host: { properties: { "class.tab--no-margin": "this._noMargin", "class.tab--no-background": "this._noBackground", "class.tab--no-min-height": "this._noMinHeight" } }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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@for (widgetGroup of widgetGroups$ | async; track $index) {\n <div *ngIf=\"widgetGroup.divider\" class=\"divider\" [ngClass]=\"{'divider--first': $first}\">\n {{ widgetGroup.divider.title || '-' }}\n </div>\n\n <valtimo-widget-container\n [widgets]=\"widgetGroup.widgets\"\n [widgetComponentMap]=\"widgetComponentMap\"\n ></valtimo-widget-container>\n}\n", styles: [".loading-container{display:flex;justify-content:center;padding:16px 0}.divider{width:100%;font-weight:700;font-size:20px;padding:32px 0 16px 8px}.divider--first{padding-top:0}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "ngmodule", type: LoadingModule }, { kind: "component", type: WidgetContainerComponent, selector: "valtimo-widget-container", inputs: ["widgets", "widgetComponentMap", "widgetParams"] }, { kind: "ngmodule", type: CarbonListModule }, { kind: "ngmodule", type: TranslateModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
3043
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: CaseDetailWidgetsComponent, isStandalone: true, selector: "ng-component", host: { properties: { "class.tab--no-margin": "this._noMargin", "class.tab--no-background": "this._noBackground", "class.tab--no-min-height": "this._noMinHeight" } }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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@for (widgetGroup of widgetGroups$ | async; track $index) {\n <div *ngIf=\"widgetGroup.divider\" class=\"divider\" [ngClass]=\"{'divider--first': $first}\">\n {{ widgetGroup.divider.title || '-' }}\n </div>\n\n <valtimo-widget-container\n [widgets]=\"widgetGroup.widgets\"\n [widgetComponentMap]=\"widgetComponentMap\"\n [widgetLayout]=\"widgetLayout$ | async\"\n ></valtimo-widget-container>\n}\n", styles: [".loading-container{display:flex;justify-content:center;padding:16px 0}.divider{width:100%;font-weight:700;font-size:20px;padding:32px 0 16px 8px}.divider--first{padding-top:0}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "ngmodule", type: LoadingModule }, { kind: "component", type: WidgetContainerComponent, selector: "valtimo-widget-container", inputs: ["widgets", "widgetLayout", "widgetComponentMap", "widgetParams"] }, { kind: "ngmodule", type: CarbonListModule }, { kind: "ngmodule", type: TranslateModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2971
3044
|
}
|
|
2972
3045
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseDetailWidgetsComponent, decorators: [{
|
|
2973
3046
|
type: Component,
|
|
@@ -2977,7 +3050,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
|
|
|
2977
3050
|
WidgetContainerComponent,
|
|
2978
3051
|
CarbonListModule,
|
|
2979
3052
|
TranslateModule,
|
|
2980
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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@for (widgetGroup of widgetGroups$ | async; track $index) {\n <div *ngIf=\"widgetGroup.divider\" class=\"divider\" [ngClass]=\"{'divider--first': $first}\">\n {{ widgetGroup.divider.title || '-' }}\n </div>\n\n <valtimo-widget-container\n [widgets]=\"widgetGroup.widgets\"\n [widgetComponentMap]=\"widgetComponentMap\"\n ></valtimo-widget-container>\n}\n", styles: [".loading-container{display:flex;justify-content:center;padding:16px 0}.divider{width:100%;font-weight:700;font-size:20px;padding:32px 0 16px 8px}.divider--first{padding-top:0}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
3053
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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@for (widgetGroup of widgetGroups$ | async; track $index) {\n <div *ngIf=\"widgetGroup.divider\" class=\"divider\" [ngClass]=\"{'divider--first': $first}\">\n {{ widgetGroup.divider.title || '-' }}\n </div>\n\n <valtimo-widget-container\n [widgets]=\"widgetGroup.widgets\"\n [widgetComponentMap]=\"widgetComponentMap\"\n [widgetLayout]=\"widgetLayout$ | async\"\n ></valtimo-widget-container>\n}\n", styles: [".loading-container{display:flex;justify-content:center;padding:16px 0}.divider{width:100%;font-weight:700;font-size:20px;padding:32px 0 16px 8px}.divider--first{padding-top:0}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
2981
3054
|
}], ctorParameters: () => [{ type: i1$2.ActivatedRoute }, { type: CaseTabService }, { type: CaseWidgetsApiService }, { type: i5.SseService }, { type: WidgetsService }], propDecorators: { _noMargin: [{
|
|
2982
3055
|
type: HostBinding,
|
|
2983
3056
|
args: ['class.tab--no-margin']
|
|
@@ -3296,9 +3369,10 @@ class CaseWidgetsApiService extends BaseApiService {
|
|
|
3296
3369
|
this.configService = configService;
|
|
3297
3370
|
}
|
|
3298
3371
|
getWidgetTabConfiguration(documentId, tabKey) {
|
|
3299
|
-
return this.
|
|
3300
|
-
|
|
3301
|
-
|
|
3372
|
+
return this.getWidgetTab(documentId, tabKey).pipe(map(res => res.widgets));
|
|
3373
|
+
}
|
|
3374
|
+
getWidgetTab(documentId, tabKey) {
|
|
3375
|
+
return this.httpClient.get(this.getApiUrl(`v1/document/${documentId}/widget-tab/${tabKey}`));
|
|
3302
3376
|
}
|
|
3303
3377
|
getWidgetData(documentId, tabKey, widgetKey, queryParams) {
|
|
3304
3378
|
return this.httpClient.get(this.getApiUrl(!queryParams
|
|
@@ -4069,18 +4143,72 @@ class CaseListOrchestrationService {
|
|
|
4069
4143
|
};
|
|
4070
4144
|
});
|
|
4071
4145
|
}
|
|
4072
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseListOrchestrationService, deps: [{ token: CaseListAssigneeService }, { token: CaseListCaseTagService }, { token: CaseListHiddenColumnsService }, { token: CaseColumnService }, { token: i0.DestroyRef }, { token: i2.DocumentService }, { token: CaseListService }, { token: i2$1.PageTitleService }, { token: CaseListPaginationService }, { token: CaseParameterService }, { token: i2$
|
|
4146
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseListOrchestrationService, deps: [{ token: CaseListAssigneeService }, { token: CaseListCaseTagService }, { token: CaseListHiddenColumnsService }, { token: CaseColumnService }, { token: i0.DestroyRef }, { token: i2.DocumentService }, { token: CaseListService }, { token: i2$1.PageTitleService }, { token: CaseListPaginationService }, { token: CaseParameterService }, { token: i2$3.PermissionService }, { token: CaseListSearchService }, { token: CaseListStatusService }, { token: i4.TranslateService }, { token: QUICK_SEARCH_SERVICE }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
4073
4147
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseListOrchestrationService }); }
|
|
4074
4148
|
}
|
|
4075
4149
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseListOrchestrationService, decorators: [{
|
|
4076
4150
|
type: Injectable
|
|
4077
|
-
}], ctorParameters: () => [{ type: CaseListAssigneeService }, { type: CaseListCaseTagService }, { type: CaseListHiddenColumnsService }, { type: CaseColumnService }, { type: i0.DestroyRef }, { type: i2.DocumentService }, { type: CaseListService }, { type: i2$1.PageTitleService }, { type: CaseListPaginationService }, { type: CaseParameterService }, { type: i2$
|
|
4151
|
+
}], ctorParameters: () => [{ type: CaseListAssigneeService }, { type: CaseListCaseTagService }, { type: CaseListHiddenColumnsService }, { type: CaseColumnService }, { type: i0.DestroyRef }, { type: i2.DocumentService }, { type: CaseListService }, { type: i2$1.PageTitleService }, { type: CaseListPaginationService }, { type: CaseParameterService }, { type: i2$3.PermissionService }, { type: CaseListSearchService }, { type: CaseListStatusService }, { type: i4.TranslateService }, { type: undefined, decorators: [{
|
|
4078
4152
|
type: Inject,
|
|
4079
4153
|
args: [QUICK_SEARCH_SERVICE]
|
|
4080
4154
|
}] }] });
|
|
4081
4155
|
|
|
4082
4156
|
/*
|
|
4083
|
-
* Copyright 2015-
|
|
4157
|
+
* Copyright 2015-2026 Ritense BV, the Netherlands.
|
|
4158
|
+
*
|
|
4159
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
4160
|
+
* you may not use this file except in compliance with the License.
|
|
4161
|
+
* You may obtain a copy of the License at
|
|
4162
|
+
*
|
|
4163
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
4164
|
+
*
|
|
4165
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
4166
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
4167
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
4168
|
+
* See the License for the specific language governing permissions and
|
|
4169
|
+
* limitations under the License.
|
|
4170
|
+
*/
|
|
4171
|
+
class CaseInspectionService {
|
|
4172
|
+
constructor(http, configService) {
|
|
4173
|
+
this.http = http;
|
|
4174
|
+
this.configService = configService;
|
|
4175
|
+
this._baseUrl = this.configService.config.valtimoApi.endpointUri;
|
|
4176
|
+
}
|
|
4177
|
+
getDocument(caseId) {
|
|
4178
|
+
return this.http.get(`${this._baseUrl}management/v1/case/${caseId}`);
|
|
4179
|
+
}
|
|
4180
|
+
modifyDocumentForInspection(caseId, request) {
|
|
4181
|
+
return this.http.put(`${this._baseUrl}management/v1/case/${caseId}`, request);
|
|
4182
|
+
}
|
|
4183
|
+
getProcessInspection(caseId) {
|
|
4184
|
+
return this.http.get(`${this._baseUrl}management/v1/case/${caseId}/processes`);
|
|
4185
|
+
}
|
|
4186
|
+
getBuildingBlockInstances(caseId) {
|
|
4187
|
+
return this.http.get(`${this._baseUrl}management/v1/case/${caseId}/building-blocks`);
|
|
4188
|
+
}
|
|
4189
|
+
searchCaseLogs(caseId, request, page, size) {
|
|
4190
|
+
const params = new HttpParams({ fromObject: { page: String(page), size: String(size) } });
|
|
4191
|
+
return this.http.post(`${this._baseUrl}management/v1/case/${caseId}/logs`, request, { params });
|
|
4192
|
+
}
|
|
4193
|
+
createProcessVariable(caseId, processInstanceId, request) {
|
|
4194
|
+
return this.http.post(`${this._baseUrl}management/v1/case/${caseId}/process-instance/${processInstanceId}/variables`, request);
|
|
4195
|
+
}
|
|
4196
|
+
updateProcessVariable(caseId, processInstanceId, name, request) {
|
|
4197
|
+
return this.http.put(`${this._baseUrl}management/v1/case/${caseId}/process-instance/${processInstanceId}/variables/${encodeURIComponent(name)}`, request);
|
|
4198
|
+
}
|
|
4199
|
+
deleteProcessVariable(caseId, processInstanceId, name) {
|
|
4200
|
+
return this.http.delete(`${this._baseUrl}management/v1/case/${caseId}/process-instance/${processInstanceId}/variables/${encodeURIComponent(name)}`);
|
|
4201
|
+
}
|
|
4202
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseInspectionService, deps: [{ token: i1$1.HttpClient }, { token: i1.ConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
4203
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseInspectionService, providedIn: 'root' }); }
|
|
4204
|
+
}
|
|
4205
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseInspectionService, decorators: [{
|
|
4206
|
+
type: Injectable,
|
|
4207
|
+
args: [{ providedIn: 'root' }]
|
|
4208
|
+
}], ctorParameters: () => [{ type: i1$1.HttpClient }, { type: i1.ConfigService }] });
|
|
4209
|
+
|
|
4210
|
+
/*
|
|
4211
|
+
* Copyright 2015-2026 Ritense BV, the Netherlands.
|
|
4084
4212
|
*
|
|
4085
4213
|
* Licensed under EUPL, Version 1.2 (the "License");
|
|
4086
4214
|
* you may not use this file except in compliance with the License.
|
|
@@ -4201,13 +4329,13 @@ class CaseBulkAssignModalComponent {
|
|
|
4201
4329
|
trackByIndex(index) {
|
|
4202
4330
|
return index;
|
|
4203
4331
|
}
|
|
4204
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseBulkAssignModalComponent, deps: [{ token: CaseBulkAssignService }, { token: i1$4.FormBuilder }, { token: i2$
|
|
4205
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: CaseBulkAssignModalComponent, isStandalone: false, selector: "valtimo-case-bulk-assign-modal", inputs: { documentIds: "documentIds", open: "open" }, outputs: { closeEvent: "closeEvent" }, host: { properties: { "class": "this.modalClass" } }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<cds-modal valtimoCdsModal [open]=\"open\" (close)=\"closeModal()\" showFooter=\"true\">\n <cds-modal-header showCloseButton=\"true\" (closeSelect)=\"closeModal()\">\n <h3 cdsModalHeaderHeading>{{ 'case.bulkAssign.modal.title' | translate }}</h3>\n </cds-modal-header>\n\n <section cdsModalContent>\n <ng-container\n *ngIf=\"{\n candidateUserItems: candidateUserItems$ | async,\n teamItems: teamItems$ | async,\n canAssignAllDocuments: canAssignAllDocuments$ | async,\n canAssignAnyDocuments: canAssignAnyDocuments$ | async,\n } as obs\"\n >\n <cds-inline-notification\n *ngIf=\"!obs.canAssignAnyDocuments\"\n [notificationObj]=\"{\n type: 'warning',\n title: ('case.bulkAssign.modal.warningTitle' | translate),\n message: ('case.bulkAssign.modal.cannotAssignAnyWarning' | translate),\n showClose: false,\n lowContrast: true,\n }\"\n ></cds-inline-notification>\n\n <cds-inline-notification\n *ngIf=\"obs.canAssignAnyDocuments && !obs.canAssignAllDocuments\"\n [notificationObj]=\"{\n type: 'warning',\n title: ('case.bulkAssign.modal.warningTitle' | translate),\n message: ('case.bulkAssign.modal.cannotAssignSomeWarning' | translate),\n showClose: false,\n lowContrast: true,\n }\"\n ></cds-inline-notification>\n\n <form *ngIf=\"obs.canAssignAnyDocuments && obs.candidateUserItems\" [formGroup]=\"formGroup\">\n <cds-combo-box\n formControlName=\"assignee\"\n [dropUp]=\"false\"\n [items]=\"obs.candidateUserItems\"\n [label]=\"'case.bulkAssign.modal.selectLabel' | translate\"\n [placeholder]=\"'case.bulkAssign.modal.selectPlaceholder' | translate\"\n [cdsLayer]=\"1\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n\n <cds-combo-box\n *ngIf=\"obs.teamItems?.length\"\n formControlName=\"team\"\n [dropUp]=\"false\"\n [items]=\"obs.teamItems\"\n [label]=\"'case.bulkAssign.modal.selectTeamLabel' | translate\"\n [placeholder]=\"'case.bulkAssign.modal.selectPlaceholder' | translate\"\n [cdsLayer]=\"1\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n </form>\n </ng-container>\n </section>\n\n <cds-modal-footer>\n <ng-container\n *ngIf=\"{\n canAssignAnyDocuments: canAssignAnyDocuments$ | async,\n } as obs\"\n >\n <button cdsButton=\"ghost\" (click)=\"closeModal()\">{{ 'interface.cancel' | translate }}</button>\n\n <button\n cdsButton=\"primary\"\n [disabled]=\"!isFormValid || !obs.canAssignAnyDocuments\"\n (click)=\"closeModal(true)\"\n >\n {{ 'case.bulkAssign.modal.confirm' | translate }}\n </button>\n </ng-container>\n </cds-modal-footer>\n</cds-modal>\n", styles: ["::ng-deep .valtimo-case-bulk-assign-modal .cds--modal-container,::ng-deep .valtimo-case-bulk-assign-modal .cds--modal-content{overflow:unset}form{display:flex;flex-direction:column;gap:1rem}\n/*!\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type:
|
|
4332
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseBulkAssignModalComponent, deps: [{ token: CaseBulkAssignService }, { token: i1$4.FormBuilder }, { token: i2$3.PermissionService }, { token: i5$2.TeamsApiService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4333
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: CaseBulkAssignModalComponent, isStandalone: false, selector: "valtimo-case-bulk-assign-modal", inputs: { documentIds: "documentIds", open: "open" }, outputs: { closeEvent: "closeEvent" }, host: { properties: { "class": "this.modalClass" } }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<cds-modal valtimoCdsModal [open]=\"open\" (close)=\"closeModal()\" showFooter=\"true\">\n <cds-modal-header showCloseButton=\"true\" (closeSelect)=\"closeModal()\">\n <h3 cdsModalHeaderHeading>{{ 'case.bulkAssign.modal.title' | translate }}</h3>\n </cds-modal-header>\n\n <section cdsModalContent>\n <ng-container\n *ngIf=\"{\n candidateUserItems: candidateUserItems$ | async,\n teamItems: teamItems$ | async,\n canAssignAllDocuments: canAssignAllDocuments$ | async,\n canAssignAnyDocuments: canAssignAnyDocuments$ | async,\n } as obs\"\n >\n <cds-inline-notification\n *ngIf=\"!obs.canAssignAnyDocuments\"\n [notificationObj]=\"{\n type: 'warning',\n title: ('case.bulkAssign.modal.warningTitle' | translate),\n message: ('case.bulkAssign.modal.cannotAssignAnyWarning' | translate),\n showClose: false,\n lowContrast: true,\n }\"\n ></cds-inline-notification>\n\n <cds-inline-notification\n *ngIf=\"obs.canAssignAnyDocuments && !obs.canAssignAllDocuments\"\n [notificationObj]=\"{\n type: 'warning',\n title: ('case.bulkAssign.modal.warningTitle' | translate),\n message: ('case.bulkAssign.modal.cannotAssignSomeWarning' | translate),\n showClose: false,\n lowContrast: true,\n }\"\n ></cds-inline-notification>\n\n <form *ngIf=\"obs.canAssignAnyDocuments && obs.candidateUserItems\" [formGroup]=\"formGroup\">\n <cds-combo-box\n formControlName=\"assignee\"\n [dropUp]=\"false\"\n [items]=\"obs.candidateUserItems\"\n [label]=\"'case.bulkAssign.modal.selectLabel' | translate\"\n [placeholder]=\"'case.bulkAssign.modal.selectPlaceholder' | translate\"\n [cdsLayer]=\"1\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n\n <cds-combo-box\n *ngIf=\"obs.teamItems?.length\"\n formControlName=\"team\"\n [dropUp]=\"false\"\n [items]=\"obs.teamItems\"\n [label]=\"'case.bulkAssign.modal.selectTeamLabel' | translate\"\n [placeholder]=\"'case.bulkAssign.modal.selectPlaceholder' | translate\"\n [cdsLayer]=\"1\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n </form>\n </ng-container>\n </section>\n\n <cds-modal-footer>\n <ng-container\n *ngIf=\"{\n canAssignAnyDocuments: canAssignAnyDocuments$ | async,\n } as obs\"\n >\n <button cdsButton=\"ghost\" (click)=\"closeModal()\">{{ 'interface.cancel' | translate }}</button>\n\n <button\n cdsButton=\"primary\"\n [disabled]=\"!isFormValid || !obs.canAssignAnyDocuments\"\n (click)=\"closeModal(true)\"\n >\n {{ 'case.bulkAssign.modal.confirm' | translate }}\n </button>\n </ng-container>\n </cds-modal-footer>\n</cds-modal>\n", styles: ["::ng-deep .valtimo-case-bulk-assign-modal .cds--modal-container,::ng-deep .valtimo-case-bulk-assign-modal .cds--modal-content{overflow:unset}form{display:flex;flex-direction:column;gap:1rem}\n/*!\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i4$1.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "component", type: i4$1.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i4$1.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "component", type: i4$1.ModalFooter, selector: "cds-modal-footer, ibm-modal-footer" }, { kind: "directive", type: i4$1.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }, { kind: "directive", type: i4$1.ModalHeaderHeading, selector: "[cdsModalHeaderHeading], [ibmModalHeaderHeading]" }, { kind: "component", type: i4$1.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "component", type: i4$1.ComboBox, selector: "cds-combo-box, ibm-combo-box", inputs: ["placeholder", "openMenuAria", "closeMenuAria", "clearSelectionsTitle", "clearSelectionsAria", "clearSelectionTitle", "clearSelectionAria", "id", "labelId", "items", "type", "size", "itemValueKey", "label", "hideLabel", "helperText", "appendInline", "invalid", "invalidText", "warn", "warnText", "maxLength", "theme", "selectionFeedback", "autocomplete", "dropUp", "disabled", "readonly", "fluid"], outputs: ["selected", "submit", "close", "search", "clear"] }, { kind: "directive", type: i2$1.ValtimoCdsModalDirective, selector: "[valtimoCdsModal]", inputs: ["minContentHeight"] }, { kind: "directive", type: i4$1.LayerDirective, selector: "[cdsLayer], [ibmLayer]", inputs: ["ibmLayer", "cdsLayer"], exportAs: ["layer"] }, { kind: "component", type: i4$1.Notification, selector: "cds-notification, cds-inline-notification, ibm-notification, ibm-inline-notification", inputs: ["notificationObj"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
4206
4334
|
}
|
|
4207
4335
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseBulkAssignModalComponent, decorators: [{
|
|
4208
4336
|
type: Component,
|
|
4209
4337
|
args: [{ standalone: false, selector: 'valtimo-case-bulk-assign-modal', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<cds-modal valtimoCdsModal [open]=\"open\" (close)=\"closeModal()\" showFooter=\"true\">\n <cds-modal-header showCloseButton=\"true\" (closeSelect)=\"closeModal()\">\n <h3 cdsModalHeaderHeading>{{ 'case.bulkAssign.modal.title' | translate }}</h3>\n </cds-modal-header>\n\n <section cdsModalContent>\n <ng-container\n *ngIf=\"{\n candidateUserItems: candidateUserItems$ | async,\n teamItems: teamItems$ | async,\n canAssignAllDocuments: canAssignAllDocuments$ | async,\n canAssignAnyDocuments: canAssignAnyDocuments$ | async,\n } as obs\"\n >\n <cds-inline-notification\n *ngIf=\"!obs.canAssignAnyDocuments\"\n [notificationObj]=\"{\n type: 'warning',\n title: ('case.bulkAssign.modal.warningTitle' | translate),\n message: ('case.bulkAssign.modal.cannotAssignAnyWarning' | translate),\n showClose: false,\n lowContrast: true,\n }\"\n ></cds-inline-notification>\n\n <cds-inline-notification\n *ngIf=\"obs.canAssignAnyDocuments && !obs.canAssignAllDocuments\"\n [notificationObj]=\"{\n type: 'warning',\n title: ('case.bulkAssign.modal.warningTitle' | translate),\n message: ('case.bulkAssign.modal.cannotAssignSomeWarning' | translate),\n showClose: false,\n lowContrast: true,\n }\"\n ></cds-inline-notification>\n\n <form *ngIf=\"obs.canAssignAnyDocuments && obs.candidateUserItems\" [formGroup]=\"formGroup\">\n <cds-combo-box\n formControlName=\"assignee\"\n [dropUp]=\"false\"\n [items]=\"obs.candidateUserItems\"\n [label]=\"'case.bulkAssign.modal.selectLabel' | translate\"\n [placeholder]=\"'case.bulkAssign.modal.selectPlaceholder' | translate\"\n [cdsLayer]=\"1\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n\n <cds-combo-box\n *ngIf=\"obs.teamItems?.length\"\n formControlName=\"team\"\n [dropUp]=\"false\"\n [items]=\"obs.teamItems\"\n [label]=\"'case.bulkAssign.modal.selectTeamLabel' | translate\"\n [placeholder]=\"'case.bulkAssign.modal.selectPlaceholder' | translate\"\n [cdsLayer]=\"1\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n </form>\n </ng-container>\n </section>\n\n <cds-modal-footer>\n <ng-container\n *ngIf=\"{\n canAssignAnyDocuments: canAssignAnyDocuments$ | async,\n } as obs\"\n >\n <button cdsButton=\"ghost\" (click)=\"closeModal()\">{{ 'interface.cancel' | translate }}</button>\n\n <button\n cdsButton=\"primary\"\n [disabled]=\"!isFormValid || !obs.canAssignAnyDocuments\"\n (click)=\"closeModal(true)\"\n >\n {{ 'case.bulkAssign.modal.confirm' | translate }}\n </button>\n </ng-container>\n </cds-modal-footer>\n</cds-modal>\n", styles: ["::ng-deep .valtimo-case-bulk-assign-modal .cds--modal-container,::ng-deep .valtimo-case-bulk-assign-modal .cds--modal-content{overflow:unset}form{display:flex;flex-direction:column;gap:1rem}\n/*!\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
4210
|
-
}], ctorParameters: () => [{ type: CaseBulkAssignService }, { type: i1$4.FormBuilder }, { type: i2$
|
|
4338
|
+
}], ctorParameters: () => [{ type: CaseBulkAssignService }, { type: i1$4.FormBuilder }, { type: i2$3.PermissionService }, { type: i5$2.TeamsApiService }], propDecorators: { modalClass: [{
|
|
4211
4339
|
type: HostBinding,
|
|
4212
4340
|
args: ['class']
|
|
4213
4341
|
}], documentIds: [{
|
|
@@ -4339,8 +4467,8 @@ class CaseDetailTaskListComponent {
|
|
|
4339
4467
|
? { ...acc, myTasks: [...acc.myTasks, curr] }
|
|
4340
4468
|
: { ...acc, otherTasks: [...acc.otherTasks, curr] }, { myTasks: [], otherTasks: [] });
|
|
4341
4469
|
}
|
|
4342
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseDetailTaskListComponent, deps: [{ token: i2.DocumentService }, { token:
|
|
4343
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: CaseDetailTaskListComponent, isStandalone: true, selector: "valtimo-case-detail-task-list", inputs: { openTaskAndProcessLinkInModal: "openTaskAndProcessLinkInModal" }, outputs: { taskClickEvent: "taskClickEvent", formSubmitEvent: "formSubmitEvent" }, viewQueries: [{ propertyName: "_taskDetailModal", first: true, predicate: ["taskDetail"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<div\n class=\"task-list\"\n *ngIf=\"{loadingTasks: loadingTasks$ | async, tasks: processInstanceTasks$ | async} as obs\"\n>\n @if (obs.loadingTasks && !obs.tasks) {\n <ng-container *ngTemplateOutlet=\"loadingTasksTemplate\"></ng-container>\n } @else if (obs.tasks?.myTasks?.length === 0 && obs.tasks?.otherTasks?.length === 0) {\n <ng-container *ngTemplateOutlet=\"noTasksTemplate\"></ng-container>\n } @else {\n <h2 class=\"task-list__title\">{{ 'summary.tasks' | translate }}</h2>\n\n <div class=\"task-list__tasks-container\" cdsLayer=\"1\">\n <h3 class=\"task-list__subtitle\">{{ 'summary.myTasks' | translate }}</h3>\n\n @if (obs.tasks?.myTasks.length === 0) {\n {{ 'summary.noResultsMyTasks' | translate }}\n } @else {\n @for (taskWithProcessLink of obs.tasks?.myTasks; track taskWithProcessLink.task.id) {\n <ng-container\n *ngTemplateOutlet=\"taskTemplate; context: {taskWithProcessLink: taskWithProcessLink}\"\n ></ng-container>\n }\n }\n </div>\n\n <div class=\"task-list__tasks-container\" cdsLayer=\"1\">\n <h3 class=\"task-list__subtitle\">{{ 'summary.otherTasks' | translate }}</h3>\n\n @if (obs.tasks?.otherTasks.length === 0) {\n {{ 'summary.noResultsOtherTasks' | translate }}\n } @else {\n @for (taskWithProcessLink of obs.tasks?.otherTasks; track taskWithProcessLink.task.id) {\n <ng-container\n *ngTemplateOutlet=\"taskTemplate; context: {taskWithProcessLink: taskWithProcessLink}\"\n ></ng-container>\n }\n }\n </div>\n }\n\n <valtimo-task-detail-modal\n #taskDetail\n [openFromCaseManagement]=\"true\"\n [modalSize]=\"formSize$ | async\"\n (formSubmit)=\"onFormSubmit()\"\n (assignmentOfTaskChanged)=\"refresh()\"\n (dueDateChanged)=\"refresh()\"\n ></valtimo-task-detail-modal>\n</div>\n\n<ng-template #taskTemplate let-taskWithProcessLink=\"taskWithProcessLink\">\n <cds-clickable-tile [href]=\"null\" (click)=\"rowTaskClick(taskWithProcessLink)\">\n <div class=\"task\">\n <div class=\"task__header\">\n <span class=\"task__title\">{{ taskWithProcessLink.task.name }}</span>\n\n @if (!!taskWithProcessLink.task.assignedTeam || !!taskWithProcessLink.task.assignee) {\n <cds-tag\n class=\"cds-tag--no-margin\"\n [ngbTooltip]=\"getAssigneeTooltip(taskWithProcessLink.task) || ('summary.taskIsAssigned' | translate)\"\n [type]=\"'cool-gray'\"\n >\n @if (!!taskWithProcessLink.task.assignedTeam) {\n <svg cdsIcon=\"group\" size=\"20\"></svg>\n } @else {\n <svg cdsIcon=\"user--filled\" size=\"20\"></svg>\n }\n </cds-tag>\n }\n <cds-tag\n class=\"cds-tag--no-margin\"\n [type]=\"taskWithProcessLink.task.isLocked ? 'cool-gray' : 'green'\"\n >\n @if (!taskWithProcessLink.task.isLocked) {\n {{ 'summary.taskOpen' | translate }}\n } @else {\n <i class=\"icon mdi mdi-lock\"></i>\n }\n </cds-tag>\n </div>\n\n <div class=\"task__description\">\n {{ 'summary.taskCreated' | translate }} {{ taskWithProcessLink.task.created }}\n </div>\n\n <div class=\"task__subtitles\">\n @for (subtitle of taskWithProcessLink.task?.subtitles || []; track subtitle) {\n <p class=\"task__subtitle\">{{ subtitle }}</p>\n }\n </div>\n </div>\n </cds-clickable-tile>\n</ng-template>\n\n<ng-template #noTasksTemplate>\n <valtimo-no-results\n [alwaysRenderVertically]=\"true\"\n illustration=\"valtimo-layout/img/emptystate-success.svg\"\n [description]=\"'summary.userTasksDoneState' | translate\"\n [smallPadding]=\"true\"\n ></valtimo-no-results>\n</ng-template>\n\n<ng-template #loadingTasksTemplate>\n <div class=\"loading-container\">\n <cds-loading size=\"sm\"></cds-loading>\n </div>\n</ng-template>\n", styles: [".task-list{width:100%;background-color:var(--cds-layer);padding:24px;display:flex;flex-direction:column;gap:16px}.task-list__title{font-size:24px;line-height:24px;font-weight:600}.task-list__subtitle{font-size:16px;line-height:16px;font-weight:600}.task-list__tasks-container,.task{display:flex;flex-direction:column;gap:8px}.task__header{display:flex;justify-content:space-between;align-items:center;gap:8px}.task__header .cds--tag{margin:0;white-space:pre}.task__title{flex:1;font-size:14px;font-weight:600;line-height:20px;letter-spacing:.16px;text-align:left;text-underline-position:from-font;text-decoration-skip-ink:none}.task__subtitle{font-size:12px;font-weight:400;line-height:16px;letter-spacing:.32px;text-align:left;text-underline-position:from-font;text-decoration-skip-ink:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.task__subtitles{display:flex;flex-direction:column;gap:4px}.task__description{font-size:12px;font-weight:400;line-height:16px;letter-spacing:.32px;text-align:left;text-underline-position:from-font;text-decoration-skip-ink:none}.loading-container{width:100%;display:flex;justify-content:center}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "ngmodule", type: NgbTooltipModule }, { kind: "directive", type: i6$1.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: WidgetModule }, { kind: "ngmodule", type: LoadingModule }, { kind: "component", type:
|
|
4470
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseDetailTaskListComponent, deps: [{ token: i2.DocumentService }, { token: i4$1.IconService }, { token: i1$2.ActivatedRoute }, { token: i2$3.PermissionService }, { token: i5.SseService }, { token: CaseDetailLayoutService }, { token: i3$3.ProcessLinkService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4471
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: CaseDetailTaskListComponent, isStandalone: true, selector: "valtimo-case-detail-task-list", inputs: { openTaskAndProcessLinkInModal: "openTaskAndProcessLinkInModal" }, outputs: { taskClickEvent: "taskClickEvent", formSubmitEvent: "formSubmitEvent" }, viewQueries: [{ propertyName: "_taskDetailModal", first: true, predicate: ["taskDetail"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<div\n class=\"task-list\"\n *ngIf=\"{loadingTasks: loadingTasks$ | async, tasks: processInstanceTasks$ | async} as obs\"\n>\n @if (obs.loadingTasks && !obs.tasks) {\n <ng-container *ngTemplateOutlet=\"loadingTasksTemplate\"></ng-container>\n } @else if (obs.tasks?.myTasks?.length === 0 && obs.tasks?.otherTasks?.length === 0) {\n <ng-container *ngTemplateOutlet=\"noTasksTemplate\"></ng-container>\n } @else {\n <h2 class=\"task-list__title\">{{ 'summary.tasks' | translate }}</h2>\n\n <div class=\"task-list__tasks-container\" cdsLayer=\"1\">\n <h3 class=\"task-list__subtitle\">{{ 'summary.myTasks' | translate }}</h3>\n\n @if (obs.tasks?.myTasks.length === 0) {\n {{ 'summary.noResultsMyTasks' | translate }}\n } @else {\n @for (taskWithProcessLink of obs.tasks?.myTasks; track taskWithProcessLink.task.id) {\n <ng-container\n *ngTemplateOutlet=\"taskTemplate; context: {taskWithProcessLink: taskWithProcessLink}\"\n ></ng-container>\n }\n }\n </div>\n\n <div class=\"task-list__tasks-container\" cdsLayer=\"1\">\n <h3 class=\"task-list__subtitle\">{{ 'summary.otherTasks' | translate }}</h3>\n\n @if (obs.tasks?.otherTasks.length === 0) {\n {{ 'summary.noResultsOtherTasks' | translate }}\n } @else {\n @for (taskWithProcessLink of obs.tasks?.otherTasks; track taskWithProcessLink.task.id) {\n <ng-container\n *ngTemplateOutlet=\"taskTemplate; context: {taskWithProcessLink: taskWithProcessLink}\"\n ></ng-container>\n }\n }\n </div>\n }\n\n <valtimo-task-detail-modal\n #taskDetail\n [openFromCaseManagement]=\"true\"\n [modalSize]=\"formSize$ | async\"\n (formSubmit)=\"onFormSubmit()\"\n (assignmentOfTaskChanged)=\"refresh()\"\n (dueDateChanged)=\"refresh()\"\n ></valtimo-task-detail-modal>\n</div>\n\n<ng-template #taskTemplate let-taskWithProcessLink=\"taskWithProcessLink\">\n <cds-clickable-tile [href]=\"null\" (click)=\"rowTaskClick(taskWithProcessLink)\">\n <div class=\"task\">\n <div class=\"task__header\">\n <span class=\"task__title\">{{ taskWithProcessLink.task.name }}</span>\n\n @if (!!taskWithProcessLink.task.assignedTeam || !!taskWithProcessLink.task.assignee) {\n <cds-tag\n class=\"cds-tag--no-margin\"\n [ngbTooltip]=\"getAssigneeTooltip(taskWithProcessLink.task) || ('summary.taskIsAssigned' | translate)\"\n [type]=\"'cool-gray'\"\n >\n @if (!!taskWithProcessLink.task.assignedTeam) {\n <svg cdsIcon=\"group\" size=\"20\"></svg>\n } @else {\n <svg cdsIcon=\"user--filled\" size=\"20\"></svg>\n }\n </cds-tag>\n }\n <cds-tag\n class=\"cds-tag--no-margin\"\n [type]=\"taskWithProcessLink.task.isLocked ? 'cool-gray' : 'green'\"\n >\n @if (!taskWithProcessLink.task.isLocked) {\n {{ 'summary.taskOpen' | translate }}\n } @else {\n <i class=\"icon mdi mdi-lock\"></i>\n }\n </cds-tag>\n </div>\n\n <div class=\"task__description\">\n {{ 'summary.taskCreated' | translate }} {{ taskWithProcessLink.task.created }}\n </div>\n\n <div class=\"task__subtitles\">\n @for (subtitle of taskWithProcessLink.task?.subtitles || []; track subtitle) {\n <p class=\"task__subtitle\">{{ subtitle }}</p>\n }\n </div>\n </div>\n </cds-clickable-tile>\n</ng-template>\n\n<ng-template #noTasksTemplate>\n <valtimo-no-results\n [alwaysRenderVertically]=\"true\"\n illustration=\"valtimo-layout/img/emptystate-success.svg\"\n [description]=\"'summary.userTasksDoneState' | translate\"\n [smallPadding]=\"true\"\n ></valtimo-no-results>\n</ng-template>\n\n<ng-template #loadingTasksTemplate>\n <div class=\"loading-container\">\n <cds-loading size=\"sm\"></cds-loading>\n </div>\n</ng-template>\n", styles: [".task-list{width:100%;background-color:var(--cds-layer);padding:24px;display:flex;flex-direction:column;gap:16px}.task-list__title{font-size:24px;line-height:24px;font-weight:600}.task-list__subtitle{font-size:16px;line-height:16px;font-weight:600}.task-list__tasks-container,.task{display:flex;flex-direction:column;gap:8px}.task__header{display:flex;justify-content:space-between;align-items:center;gap:8px}.task__header .cds--tag{margin:0;white-space:pre}.task__title{flex:1;font-size:14px;font-weight:600;line-height:20px;letter-spacing:.16px;text-align:left;text-underline-position:from-font;text-decoration-skip-ink:none}.task__subtitle{font-size:12px;font-weight:400;line-height:16px;letter-spacing:.32px;text-align:left;text-underline-position:from-font;text-decoration-skip-ink:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.task__subtitles{display:flex;flex-direction:column;gap:4px}.task__description{font-size:12px;font-weight:400;line-height:16px;letter-spacing:.32px;text-align:left;text-underline-position:from-font;text-decoration-skip-ink:none}.loading-container{width:100%;display:flex;justify-content:center}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "ngmodule", type: NgbTooltipModule }, { kind: "directive", type: i6$1.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: WidgetModule }, { kind: "ngmodule", type: LoadingModule }, { kind: "component", type: i4$1.Loading, selector: "cds-loading, ibm-loading", inputs: ["title", "isActive", "size", "overlay"] }, { kind: "ngmodule", type: TaskModule }, { kind: "component", type: i5$3.TaskDetailModalComponent, selector: "valtimo-task-detail-modal", inputs: ["modalSize", "openFromCaseManagement"], outputs: ["formSubmit", "assignmentOfTaskChanged", "dueDateChanged", "modalClosed"] }, { kind: "ngmodule", type: TilesModule }, { kind: "component", type: i4$1.ClickableTile, selector: "cds-clickable-tile, ibm-clickable-tile", inputs: ["theme", "href", "target", "rel", "disabled", "route", "routeExtras"], outputs: ["navigation"] }, { kind: "ngmodule", type: LayerModule }, { kind: "directive", type: i4$1.LayerDirective, selector: "[cdsLayer], [ibmLayer]", inputs: ["ibmLayer", "cdsLayer"], exportAs: ["layer"] }, { kind: "ngmodule", type: TagModule }, { kind: "component", type: i4$1.Tag, selector: "cds-tag, ibm-tag", inputs: ["type", "size", "class", "skeleton"] }, { kind: "ngmodule", type: CarbonListModule }, { kind: "component", type: i2$1.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "ngmodule", type: IconModule }, { kind: "directive", type: i4$1.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }] }); }
|
|
4344
4472
|
}
|
|
4345
4473
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseDetailTaskListComponent, decorators: [{
|
|
4346
4474
|
type: Component,
|
|
@@ -4357,7 +4485,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
|
|
|
4357
4485
|
CarbonListModule,
|
|
4358
4486
|
IconModule,
|
|
4359
4487
|
], template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<div\n class=\"task-list\"\n *ngIf=\"{loadingTasks: loadingTasks$ | async, tasks: processInstanceTasks$ | async} as obs\"\n>\n @if (obs.loadingTasks && !obs.tasks) {\n <ng-container *ngTemplateOutlet=\"loadingTasksTemplate\"></ng-container>\n } @else if (obs.tasks?.myTasks?.length === 0 && obs.tasks?.otherTasks?.length === 0) {\n <ng-container *ngTemplateOutlet=\"noTasksTemplate\"></ng-container>\n } @else {\n <h2 class=\"task-list__title\">{{ 'summary.tasks' | translate }}</h2>\n\n <div class=\"task-list__tasks-container\" cdsLayer=\"1\">\n <h3 class=\"task-list__subtitle\">{{ 'summary.myTasks' | translate }}</h3>\n\n @if (obs.tasks?.myTasks.length === 0) {\n {{ 'summary.noResultsMyTasks' | translate }}\n } @else {\n @for (taskWithProcessLink of obs.tasks?.myTasks; track taskWithProcessLink.task.id) {\n <ng-container\n *ngTemplateOutlet=\"taskTemplate; context: {taskWithProcessLink: taskWithProcessLink}\"\n ></ng-container>\n }\n }\n </div>\n\n <div class=\"task-list__tasks-container\" cdsLayer=\"1\">\n <h3 class=\"task-list__subtitle\">{{ 'summary.otherTasks' | translate }}</h3>\n\n @if (obs.tasks?.otherTasks.length === 0) {\n {{ 'summary.noResultsOtherTasks' | translate }}\n } @else {\n @for (taskWithProcessLink of obs.tasks?.otherTasks; track taskWithProcessLink.task.id) {\n <ng-container\n *ngTemplateOutlet=\"taskTemplate; context: {taskWithProcessLink: taskWithProcessLink}\"\n ></ng-container>\n }\n }\n </div>\n }\n\n <valtimo-task-detail-modal\n #taskDetail\n [openFromCaseManagement]=\"true\"\n [modalSize]=\"formSize$ | async\"\n (formSubmit)=\"onFormSubmit()\"\n (assignmentOfTaskChanged)=\"refresh()\"\n (dueDateChanged)=\"refresh()\"\n ></valtimo-task-detail-modal>\n</div>\n\n<ng-template #taskTemplate let-taskWithProcessLink=\"taskWithProcessLink\">\n <cds-clickable-tile [href]=\"null\" (click)=\"rowTaskClick(taskWithProcessLink)\">\n <div class=\"task\">\n <div class=\"task__header\">\n <span class=\"task__title\">{{ taskWithProcessLink.task.name }}</span>\n\n @if (!!taskWithProcessLink.task.assignedTeam || !!taskWithProcessLink.task.assignee) {\n <cds-tag\n class=\"cds-tag--no-margin\"\n [ngbTooltip]=\"getAssigneeTooltip(taskWithProcessLink.task) || ('summary.taskIsAssigned' | translate)\"\n [type]=\"'cool-gray'\"\n >\n @if (!!taskWithProcessLink.task.assignedTeam) {\n <svg cdsIcon=\"group\" size=\"20\"></svg>\n } @else {\n <svg cdsIcon=\"user--filled\" size=\"20\"></svg>\n }\n </cds-tag>\n }\n <cds-tag\n class=\"cds-tag--no-margin\"\n [type]=\"taskWithProcessLink.task.isLocked ? 'cool-gray' : 'green'\"\n >\n @if (!taskWithProcessLink.task.isLocked) {\n {{ 'summary.taskOpen' | translate }}\n } @else {\n <i class=\"icon mdi mdi-lock\"></i>\n }\n </cds-tag>\n </div>\n\n <div class=\"task__description\">\n {{ 'summary.taskCreated' | translate }} {{ taskWithProcessLink.task.created }}\n </div>\n\n <div class=\"task__subtitles\">\n @for (subtitle of taskWithProcessLink.task?.subtitles || []; track subtitle) {\n <p class=\"task__subtitle\">{{ subtitle }}</p>\n }\n </div>\n </div>\n </cds-clickable-tile>\n</ng-template>\n\n<ng-template #noTasksTemplate>\n <valtimo-no-results\n [alwaysRenderVertically]=\"true\"\n illustration=\"valtimo-layout/img/emptystate-success.svg\"\n [description]=\"'summary.userTasksDoneState' | translate\"\n [smallPadding]=\"true\"\n ></valtimo-no-results>\n</ng-template>\n\n<ng-template #loadingTasksTemplate>\n <div class=\"loading-container\">\n <cds-loading size=\"sm\"></cds-loading>\n </div>\n</ng-template>\n", styles: [".task-list{width:100%;background-color:var(--cds-layer);padding:24px;display:flex;flex-direction:column;gap:16px}.task-list__title{font-size:24px;line-height:24px;font-weight:600}.task-list__subtitle{font-size:16px;line-height:16px;font-weight:600}.task-list__tasks-container,.task{display:flex;flex-direction:column;gap:8px}.task__header{display:flex;justify-content:space-between;align-items:center;gap:8px}.task__header .cds--tag{margin:0;white-space:pre}.task__title{flex:1;font-size:14px;font-weight:600;line-height:20px;letter-spacing:.16px;text-align:left;text-underline-position:from-font;text-decoration-skip-ink:none}.task__subtitle{font-size:12px;font-weight:400;line-height:16px;letter-spacing:.32px;text-align:left;text-underline-position:from-font;text-decoration-skip-ink:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.task__subtitles{display:flex;flex-direction:column;gap:4px}.task__description{font-size:12px;font-weight:400;line-height:16px;letter-spacing:.32px;text-align:left;text-underline-position:from-font;text-decoration-skip-ink:none}.loading-container{width:100%;display:flex;justify-content:center}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
4360
|
-
}], ctorParameters: () => [{ type: i2.DocumentService }, { type:
|
|
4488
|
+
}], ctorParameters: () => [{ type: i2.DocumentService }, { type: i4$1.IconService }, { type: i1$2.ActivatedRoute }, { type: i2$3.PermissionService }, { type: i5.SseService }, { type: CaseDetailLayoutService }, { type: i3$3.ProcessLinkService }], propDecorators: { _taskDetailModal: [{
|
|
4361
4489
|
type: ViewChild,
|
|
4362
4490
|
args: ['taskDetail']
|
|
4363
4491
|
}], openTaskAndProcessLinkInModal: [{
|
|
@@ -4497,8 +4625,8 @@ class CaseDetailsTaskDetailComponent {
|
|
|
4497
4625
|
onFormSubmitEvent() {
|
|
4498
4626
|
this.formSubmit.emit();
|
|
4499
4627
|
}
|
|
4500
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseDetailsTaskDetailComponent, deps: [{ token: i1.ConfigService }, { token: i2$1.PageHeaderService }, { token: i2$
|
|
4501
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: CaseDetailsTaskDetailComponent, isStandalone: true, selector: "valtimo-case-detail-task-detail", inputs: { taskAndProcessLink: "taskAndProcessLink" }, outputs: { closeEvent: "closeEvent", assignmentOfTaskChanged: "assignmentOfTaskChanged", dueDateChanged: "dueDateChanged", activeChange: "activeChange", formSubmit: "formSubmit" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<div\n *ngIf=\"{\n canAssignUserToTask: canAssignUserToTask$ | async,\n intermediateSaveValue: intermediateSaveValue$ | async,\n task: task$ | async,\n taskAndProcessLink: taskAndProcessLink$ | async,\n canModifyTask: canModifyTask$ | async,\n } as obs\"\n class=\"valtimo-case-detail-task-detail\"\n>\n <section class=\"valtimo-case-detail-task-detail__header\">\n <valtimo-task-detail-intermediate-save\n *ngIf=\"enableIntermediateSave$ | async\"\n [taskAndProcessLink]=\"obs.taskAndProcessLink\"\n (currentIntermediateSaveEvent)=\"onCurrentIntermediateSaveEvent($event)\"\n ></valtimo-task-detail-intermediate-save>\n\n <button cdsButton=\"ghost\" [iconOnly]=\"true\" (click)=\"onClose()\">\n <svg cdsIcon=\"close\" size=\"16\"></svg>\n </button>\n </section>\n\n <section\n class=\"valtimo-case-detail-task-detail__body\"\n [class.valtimo-case-detail-task-detail__body--compact]=\"compactMode$ | async\"\n >\n <div class=\"title-container\">\n <p class=\"valtimo-case-detail-task-detail__title\">{{ pageValue()?.title }}</p>\n\n <p class=\"cds--modal-header__label cds--type-delta\">{{ pageValue()?.subtitle }}</p>\n\n <p *ngIf=\"obs.intermediateSaveValue\" class=\"cds--modal-header__label\">\n {{ 'formManagement.intermediateSave.lastSavedBy' | translate }}:\n\n {{\n obs.intermediateSaveValue.editedBy\n ? obs.intermediateSaveValue.editedBy\n : obs.intermediateSaveValue.createdBy\n }}\n\n {{ 'formManagement.intermediateSave.on' | translate }}:\n\n {{\n obs.intermediateSaveValue.editedOn\n ? obs.intermediateSaveValue.editedOn\n : obs.intermediateSaveValue.createdOn\n }}\n </p>\n\n <div class=\"task-actions\">\n @if (obs.task) {\n <valtimo-assignment\n mode=\"task\"\n [assigneeId]=\"obs.task.assignee\"\n [assigneeFullName]=\"obs.task.valtimoAssignee?.fullName\"\n [assignedTeamKey]=\"obs.task.assignedTeam?.key\"\n [assignedTeamTitle]=\"obs.task.assignedTeam?.title\"\n [hasPermission]=\"obs.canAssignUserToTask\"\n [candidateUsers$]=\"candidateUsers$\"\n [candidateTeams$]=\"candidateTeams$\"\n (assignmentChangedEvent)=\"onAssignmentChanged($event)\"\n (unassignedEvent)=\"onUnassigned()\"\n ></valtimo-assignment>\n\n <valtimo-set-task-due-date\n [task]=\"obs.task\"\n [canModifyTask]=\"obs.canModifyTask\"\n (dueDateChanged)=\"onDueDateChanged()\"\n ></valtimo-set-task-due-date>\n }\n </div>\n </div>\n\n <valtimo-task-detail-content\n [taskAndProcessLink]=\"obs.taskAndProcessLink\"\n (activeChange)=\"onActiveChangeEvent($event)\"\n (formSubmit)=\"onFormSubmitEvent()\"\n ></valtimo-task-detail-content>\n </section>\n</div>\n", styles: [".valtimo-case-detail-task-detail{width:100%;display:flex;flex-direction:column;background-color:var(--cds-layer);padding:8px 16px 16px}.valtimo-case-detail-task-detail__header{display:flex;justify-content:flex-end}.valtimo-case-detail-task-detail__title{color:var(--cds-text-primary);font-weight:600;font-size:16px;line-height:24px}.valtimo-case-detail-task-detail__body{overflow-y:auto;max-height:calc(100vh - 320px)}.valtimo-case-detail-task-detail__body--compact{max-height:calc(100vh - 280px)}.valtimo-case-detail-task-detail__body .title-container{position:sticky;background-color:var(--cds-layer);top:0;z-index:12;padding-bottom:16px}.valtimo-case-detail-task-detail .task-actions{display:flex;flex-wrap:wrap;width:100%;padding-top:8px;gap:8px}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "component", type: TaskDetailContentComponent, selector: "valtimo-task-detail-content", inputs: ["task", "taskAndProcessLink", "modalClosed"], outputs: ["closeModalEvent", "formSubmit", "activeChange", "taskUpdated"] }, { kind: "component", type: TaskDetailIntermediateSaveComponent, selector: "valtimo-task-detail-intermediate-save", inputs: ["task", "taskAndProcessLink"], outputs: ["currentIntermediateSaveEvent", "showModalEvent"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type:
|
|
4628
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseDetailsTaskDetailComponent, deps: [{ token: i1.ConfigService }, { token: i2$1.PageHeaderService }, { token: i2$3.PermissionService }, { token: i4.TranslateService }, { token: i5$3.TaskService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4629
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: CaseDetailsTaskDetailComponent, isStandalone: true, selector: "valtimo-case-detail-task-detail", inputs: { taskAndProcessLink: "taskAndProcessLink" }, outputs: { closeEvent: "closeEvent", assignmentOfTaskChanged: "assignmentOfTaskChanged", dueDateChanged: "dueDateChanged", activeChange: "activeChange", formSubmit: "formSubmit" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<div\n *ngIf=\"{\n canAssignUserToTask: canAssignUserToTask$ | async,\n intermediateSaveValue: intermediateSaveValue$ | async,\n task: task$ | async,\n taskAndProcessLink: taskAndProcessLink$ | async,\n canModifyTask: canModifyTask$ | async,\n } as obs\"\n class=\"valtimo-case-detail-task-detail\"\n>\n <section class=\"valtimo-case-detail-task-detail__header\">\n <valtimo-task-detail-intermediate-save\n *ngIf=\"enableIntermediateSave$ | async\"\n [taskAndProcessLink]=\"obs.taskAndProcessLink\"\n (currentIntermediateSaveEvent)=\"onCurrentIntermediateSaveEvent($event)\"\n ></valtimo-task-detail-intermediate-save>\n\n <button cdsButton=\"ghost\" [iconOnly]=\"true\" (click)=\"onClose()\">\n <svg cdsIcon=\"close\" size=\"16\"></svg>\n </button>\n </section>\n\n <section\n class=\"valtimo-case-detail-task-detail__body\"\n [class.valtimo-case-detail-task-detail__body--compact]=\"compactMode$ | async\"\n >\n <div class=\"title-container\">\n <p class=\"valtimo-case-detail-task-detail__title\">{{ pageValue()?.title }}</p>\n\n <p class=\"cds--modal-header__label cds--type-delta\">{{ pageValue()?.subtitle }}</p>\n\n <p *ngIf=\"obs.intermediateSaveValue\" class=\"cds--modal-header__label\">\n {{ 'formManagement.intermediateSave.lastSavedBy' | translate }}:\n\n {{\n obs.intermediateSaveValue.editedBy\n ? obs.intermediateSaveValue.editedBy\n : obs.intermediateSaveValue.createdBy\n }}\n\n {{ 'formManagement.intermediateSave.on' | translate }}:\n\n {{\n obs.intermediateSaveValue.editedOn\n ? obs.intermediateSaveValue.editedOn\n : obs.intermediateSaveValue.createdOn\n }}\n </p>\n\n <div class=\"task-actions\">\n @if (obs.task) {\n <valtimo-assignment\n mode=\"task\"\n [assigneeId]=\"obs.task.assignee\"\n [assigneeFullName]=\"obs.task.valtimoAssignee?.fullName\"\n [assignedTeamKey]=\"obs.task.assignedTeam?.key\"\n [assignedTeamTitle]=\"obs.task.assignedTeam?.title\"\n [hasPermission]=\"obs.canAssignUserToTask\"\n [candidateUsers$]=\"candidateUsers$\"\n [candidateTeams$]=\"candidateTeams$\"\n (assignmentChangedEvent)=\"onAssignmentChanged($event)\"\n (unassignedEvent)=\"onUnassigned()\"\n ></valtimo-assignment>\n\n <valtimo-set-task-due-date\n [task]=\"obs.task\"\n [canModifyTask]=\"obs.canModifyTask\"\n (dueDateChanged)=\"onDueDateChanged()\"\n ></valtimo-set-task-due-date>\n }\n </div>\n </div>\n\n <valtimo-task-detail-content\n [taskAndProcessLink]=\"obs.taskAndProcessLink\"\n (activeChange)=\"onActiveChangeEvent($event)\"\n (formSubmit)=\"onFormSubmitEvent()\"\n ></valtimo-task-detail-content>\n </section>\n</div>\n", styles: [".valtimo-case-detail-task-detail{width:100%;display:flex;flex-direction:column;background-color:var(--cds-layer);padding:8px 16px 16px}.valtimo-case-detail-task-detail__header{display:flex;justify-content:flex-end}.valtimo-case-detail-task-detail__title{color:var(--cds-text-primary);font-weight:600;font-size:16px;line-height:24px}.valtimo-case-detail-task-detail__body{overflow-y:auto;max-height:calc(100vh - 320px)}.valtimo-case-detail-task-detail__body--compact{max-height:calc(100vh - 280px)}.valtimo-case-detail-task-detail__body .title-container{position:sticky;background-color:var(--cds-layer);top:0;z-index:12;padding-bottom:16px}.valtimo-case-detail-task-detail .task-actions{display:flex;flex-wrap:wrap;width:100%;padding-top:8px;gap:8px}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "component", type: TaskDetailContentComponent, selector: "valtimo-task-detail-content", inputs: ["task", "taskAndProcessLink", "modalClosed"], outputs: ["closeModalEvent", "formSubmit", "activeChange", "taskUpdated"] }, { kind: "component", type: TaskDetailIntermediateSaveComponent, selector: "valtimo-task-detail-intermediate-save", inputs: ["task", "taskAndProcessLink"], outputs: ["currentIntermediateSaveEvent", "showModalEvent"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i4$1.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: IconModule }, { kind: "directive", type: i4$1.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: AssignmentComponent, selector: "valtimo-assignment", inputs: ["mode", "hasPermission", "assigneeId", "assigneeFullName", "assignedTeamKey", "assignedTeamTitle", "candidateUsers$", "candidateTeams$"], outputs: ["assignmentChangedEvent", "unassignedEvent"] }, { kind: "component", type: SetTaskDueDateComponent, selector: "valtimo-set-task-due-date", inputs: ["canModifyTask", "task"], outputs: ["dueDateChanged"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
4502
4630
|
}
|
|
4503
4631
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseDetailsTaskDetailComponent, decorators: [{
|
|
4504
4632
|
type: Component,
|
|
@@ -4512,7 +4640,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
|
|
|
4512
4640
|
AssignmentComponent,
|
|
4513
4641
|
SetTaskDueDateComponent,
|
|
4514
4642
|
], template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<div\n *ngIf=\"{\n canAssignUserToTask: canAssignUserToTask$ | async,\n intermediateSaveValue: intermediateSaveValue$ | async,\n task: task$ | async,\n taskAndProcessLink: taskAndProcessLink$ | async,\n canModifyTask: canModifyTask$ | async,\n } as obs\"\n class=\"valtimo-case-detail-task-detail\"\n>\n <section class=\"valtimo-case-detail-task-detail__header\">\n <valtimo-task-detail-intermediate-save\n *ngIf=\"enableIntermediateSave$ | async\"\n [taskAndProcessLink]=\"obs.taskAndProcessLink\"\n (currentIntermediateSaveEvent)=\"onCurrentIntermediateSaveEvent($event)\"\n ></valtimo-task-detail-intermediate-save>\n\n <button cdsButton=\"ghost\" [iconOnly]=\"true\" (click)=\"onClose()\">\n <svg cdsIcon=\"close\" size=\"16\"></svg>\n </button>\n </section>\n\n <section\n class=\"valtimo-case-detail-task-detail__body\"\n [class.valtimo-case-detail-task-detail__body--compact]=\"compactMode$ | async\"\n >\n <div class=\"title-container\">\n <p class=\"valtimo-case-detail-task-detail__title\">{{ pageValue()?.title }}</p>\n\n <p class=\"cds--modal-header__label cds--type-delta\">{{ pageValue()?.subtitle }}</p>\n\n <p *ngIf=\"obs.intermediateSaveValue\" class=\"cds--modal-header__label\">\n {{ 'formManagement.intermediateSave.lastSavedBy' | translate }}:\n\n {{\n obs.intermediateSaveValue.editedBy\n ? obs.intermediateSaveValue.editedBy\n : obs.intermediateSaveValue.createdBy\n }}\n\n {{ 'formManagement.intermediateSave.on' | translate }}:\n\n {{\n obs.intermediateSaveValue.editedOn\n ? obs.intermediateSaveValue.editedOn\n : obs.intermediateSaveValue.createdOn\n }}\n </p>\n\n <div class=\"task-actions\">\n @if (obs.task) {\n <valtimo-assignment\n mode=\"task\"\n [assigneeId]=\"obs.task.assignee\"\n [assigneeFullName]=\"obs.task.valtimoAssignee?.fullName\"\n [assignedTeamKey]=\"obs.task.assignedTeam?.key\"\n [assignedTeamTitle]=\"obs.task.assignedTeam?.title\"\n [hasPermission]=\"obs.canAssignUserToTask\"\n [candidateUsers$]=\"candidateUsers$\"\n [candidateTeams$]=\"candidateTeams$\"\n (assignmentChangedEvent)=\"onAssignmentChanged($event)\"\n (unassignedEvent)=\"onUnassigned()\"\n ></valtimo-assignment>\n\n <valtimo-set-task-due-date\n [task]=\"obs.task\"\n [canModifyTask]=\"obs.canModifyTask\"\n (dueDateChanged)=\"onDueDateChanged()\"\n ></valtimo-set-task-due-date>\n }\n </div>\n </div>\n\n <valtimo-task-detail-content\n [taskAndProcessLink]=\"obs.taskAndProcessLink\"\n (activeChange)=\"onActiveChangeEvent($event)\"\n (formSubmit)=\"onFormSubmitEvent()\"\n ></valtimo-task-detail-content>\n </section>\n</div>\n", styles: [".valtimo-case-detail-task-detail{width:100%;display:flex;flex-direction:column;background-color:var(--cds-layer);padding:8px 16px 16px}.valtimo-case-detail-task-detail__header{display:flex;justify-content:flex-end}.valtimo-case-detail-task-detail__title{color:var(--cds-text-primary);font-weight:600;font-size:16px;line-height:24px}.valtimo-case-detail-task-detail__body{overflow-y:auto;max-height:calc(100vh - 320px)}.valtimo-case-detail-task-detail__body--compact{max-height:calc(100vh - 280px)}.valtimo-case-detail-task-detail__body .title-container{position:sticky;background-color:var(--cds-layer);top:0;z-index:12;padding-bottom:16px}.valtimo-case-detail-task-detail .task-actions{display:flex;flex-wrap:wrap;width:100%;padding-top:8px;gap:8px}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
4515
|
-
}], ctorParameters: () => [{ type: i1.ConfigService }, { type: i2$1.PageHeaderService }, { type: i2$
|
|
4643
|
+
}], ctorParameters: () => [{ type: i1.ConfigService }, { type: i2$1.PageHeaderService }, { type: i2$3.PermissionService }, { type: i4.TranslateService }, { type: i5$3.TaskService }], propDecorators: { taskAndProcessLink: [{
|
|
4516
4644
|
type: Input
|
|
4517
4645
|
}], closeEvent: [{
|
|
4518
4646
|
type: Output
|
|
@@ -4580,13 +4708,13 @@ class CaseDetailHeaderWidgetComponent {
|
|
|
4580
4708
|
onNoVisibleFields(noVisibleFields) {
|
|
4581
4709
|
this.$noVisibleFields.set(noVisibleFields);
|
|
4582
4710
|
}
|
|
4583
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseDetailHeaderWidgetComponent, deps: [{ token: CaseHeaderWidgetApiService }, { token: i1$2.ActivatedRoute }, { token: i2$
|
|
4584
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: CaseDetailHeaderWidgetComponent, isStandalone: true, selector: "valtimo-case-detail-header-widget", ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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@if (canViewCaseHeaderWidget$ | async) {\n <ng-container\n *ngIf=\"{\n headerWidget: headerWidget$ | async,\n headerWidgetData: headerWidgetData$ | async,\n theme: theme$ | async,\n } as obs\"\n >\n <div\n *ngIf=\"obs.headerWidget\"\n class=\"header-widget-container\"\n [attr.data-carbon-theme]=\"obs.theme\"\n [style.display]=\"$noVisibleFields() && 'none'\"\n >\n @if (!obs.headerWidgetData) {\n <div class=\"header-widget-container__loader\"><cds-loading size=\"sm\"></cds-loading></div>\n } @else {\n <valtimo-widget-field\n class=\"valtimo-widget-field--compact\"\n [cdsLayer]=\"1\"\n [widgetConfiguration]=\"obs.headerWidget\"\n [widgetData]=\"obs.headerWidgetData\"\n (noVisibleFieldsEvent)=\"onNoVisibleFields($event)\"\n ></valtimo-widget-field>\n }\n </div>\n </ng-container>\n}\n", styles: [".header-widget-container{display:flex;width:100%;justify-content:center;background:var(--cds-layer);margin-top:16px;margin-bottom:16px}.header-widget-container__loader{margin:16px}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "component", type: WidgetFieldComponent, selector: "valtimo-widget-field", inputs: ["widgetConfiguration", "widgetData"], outputs: ["noVisibleFieldsEvent"] }, { kind: "ngmodule", type: LoadingModule }, { kind: "component", type:
|
|
4711
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseDetailHeaderWidgetComponent, deps: [{ token: CaseHeaderWidgetApiService }, { token: i1$2.ActivatedRoute }, { token: i2$3.PermissionService }, { token: i2$1.CdsThemeService }, { token: i5.SseService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4712
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: CaseDetailHeaderWidgetComponent, isStandalone: true, selector: "valtimo-case-detail-header-widget", ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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@if (canViewCaseHeaderWidget$ | async) {\n <ng-container\n *ngIf=\"{\n headerWidget: headerWidget$ | async,\n headerWidgetData: headerWidgetData$ | async,\n theme: theme$ | async,\n } as obs\"\n >\n <div\n *ngIf=\"obs.headerWidget\"\n class=\"header-widget-container\"\n [attr.data-carbon-theme]=\"obs.theme\"\n [style.display]=\"$noVisibleFields() && 'none'\"\n >\n @if (!obs.headerWidgetData) {\n <div class=\"header-widget-container__loader\"><cds-loading size=\"sm\"></cds-loading></div>\n } @else {\n <valtimo-widget-field\n class=\"valtimo-widget-field--compact\"\n [cdsLayer]=\"1\"\n [widgetConfiguration]=\"obs.headerWidget\"\n [widgetData]=\"obs.headerWidgetData\"\n (noVisibleFieldsEvent)=\"onNoVisibleFields($event)\"\n ></valtimo-widget-field>\n }\n </div>\n </ng-container>\n}\n", styles: [".header-widget-container{display:flex;width:100%;justify-content:center;background:var(--cds-layer);margin-top:16px;margin-bottom:16px}.header-widget-container__loader{margin:16px}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "component", type: WidgetFieldComponent, selector: "valtimo-widget-field", inputs: ["widgetConfiguration", "widgetData"], outputs: ["noVisibleFieldsEvent"] }, { kind: "ngmodule", type: LoadingModule }, { kind: "component", type: i4$1.Loading, selector: "cds-loading, ibm-loading", inputs: ["title", "isActive", "size", "overlay"] }, { kind: "ngmodule", type: LayerModule }, { kind: "directive", type: i4$1.LayerDirective, selector: "[cdsLayer], [ibmLayer]", inputs: ["ibmLayer", "cdsLayer"], exportAs: ["layer"] }, { kind: "ngmodule", type: InputModule }] }); }
|
|
4585
4713
|
}
|
|
4586
4714
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseDetailHeaderWidgetComponent, decorators: [{
|
|
4587
4715
|
type: Component,
|
|
4588
4716
|
args: [{ standalone: true, selector: 'valtimo-case-detail-header-widget', imports: [CommonModule, WidgetFieldComponent, LoadingModule, LayerModule, InputModule], template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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@if (canViewCaseHeaderWidget$ | async) {\n <ng-container\n *ngIf=\"{\n headerWidget: headerWidget$ | async,\n headerWidgetData: headerWidgetData$ | async,\n theme: theme$ | async,\n } as obs\"\n >\n <div\n *ngIf=\"obs.headerWidget\"\n class=\"header-widget-container\"\n [attr.data-carbon-theme]=\"obs.theme\"\n [style.display]=\"$noVisibleFields() && 'none'\"\n >\n @if (!obs.headerWidgetData) {\n <div class=\"header-widget-container__loader\"><cds-loading size=\"sm\"></cds-loading></div>\n } @else {\n <valtimo-widget-field\n class=\"valtimo-widget-field--compact\"\n [cdsLayer]=\"1\"\n [widgetConfiguration]=\"obs.headerWidget\"\n [widgetData]=\"obs.headerWidgetData\"\n (noVisibleFieldsEvent)=\"onNoVisibleFields($event)\"\n ></valtimo-widget-field>\n }\n </div>\n </ng-container>\n}\n", styles: [".header-widget-container{display:flex;width:100%;justify-content:center;background:var(--cds-layer);margin-top:16px;margin-bottom:16px}.header-widget-container__loader{margin:16px}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
4589
|
-
}], ctorParameters: () => [{ type: CaseHeaderWidgetApiService }, { type: i1$2.ActivatedRoute }, { type: i2$
|
|
4717
|
+
}], ctorParameters: () => [{ type: CaseHeaderWidgetApiService }, { type: i1$2.ActivatedRoute }, { type: i2$3.PermissionService }, { type: i2$1.CdsThemeService }, { type: i5.SseService }] });
|
|
4590
4718
|
|
|
4591
4719
|
/*
|
|
4592
4720
|
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
@@ -4603,6 +4731,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
|
|
|
4603
4731
|
* See the License for the specific language governing permissions and
|
|
4604
4732
|
* limitations under the License.
|
|
4605
4733
|
*/
|
|
4734
|
+
const DEFAULT_START_MODAL_SIZE$1 = 'sm';
|
|
4606
4735
|
class CaseSupportingProcessStartModalComponent {
|
|
4607
4736
|
constructor(router, processService, processLinkService, formViewModel, formCustomComponentConfig) {
|
|
4608
4737
|
this.router = router;
|
|
@@ -4624,6 +4753,7 @@ class CaseSupportingProcessStartModalComponent {
|
|
|
4624
4753
|
this.formFlowInstanceId$ = new BehaviorSubject(undefined);
|
|
4625
4754
|
this.documentId$ = new BehaviorSubject(undefined);
|
|
4626
4755
|
this.modalOpen$ = new BehaviorSubject(false);
|
|
4756
|
+
this.modalSize$ = new BehaviorSubject(DEFAULT_START_MODAL_SIZE$1);
|
|
4627
4757
|
this.isLoading$ = new BehaviorSubject(true);
|
|
4628
4758
|
this._formCustomComponentConfig$ = new BehaviorSubject({});
|
|
4629
4759
|
this._buildingBlockDefinitionKey = null;
|
|
@@ -4636,6 +4766,9 @@ class CaseSupportingProcessStartModalComponent {
|
|
|
4636
4766
|
}
|
|
4637
4767
|
loadProcessLink() {
|
|
4638
4768
|
this.startProcessLinkType$.next(null);
|
|
4769
|
+
this.modalSize$.next(DEFAULT_START_MODAL_SIZE$1);
|
|
4770
|
+
this.formViewModelDynamicContainer?.clear();
|
|
4771
|
+
this.formCustomComponentDynamicContainer?.clear();
|
|
4639
4772
|
combineLatest([this.processDefinitionId$, this.documentId$])
|
|
4640
4773
|
.pipe(take$1(1), switchMap(([processDefinitionId, documentId]) => this.processService.getProcessDefinitionStartProcessLink(processDefinitionId, documentId, null)))
|
|
4641
4774
|
.subscribe(startProcessResult => {
|
|
@@ -4646,6 +4779,7 @@ class CaseSupportingProcessStartModalComponent {
|
|
|
4646
4779
|
case 'form':
|
|
4647
4780
|
this.formDefinition$.next(startProcessResult.properties.prefilledForm);
|
|
4648
4781
|
this.processLinkId$.next(startProcessResult.processLinkId);
|
|
4782
|
+
this.setModalSize(startProcessResult.properties.formSize);
|
|
4649
4783
|
break;
|
|
4650
4784
|
case 'form-flow':
|
|
4651
4785
|
this.formFlowInstanceId$.next(startProcessResult.properties.formFlowInstanceId);
|
|
@@ -4664,6 +4798,9 @@ class CaseSupportingProcessStartModalComponent {
|
|
|
4664
4798
|
}
|
|
4665
4799
|
});
|
|
4666
4800
|
}
|
|
4801
|
+
setModalSize(formSize) {
|
|
4802
|
+
this.modalSize$.next(formSize ? formSizeToCarbonModalSizeMap[formSize] : DEFAULT_START_MODAL_SIZE$1);
|
|
4803
|
+
}
|
|
4667
4804
|
openModalForStartableItem(item, documentId, caseDefinitionKey, caseDefinitionVersionTag) {
|
|
4668
4805
|
this.isLoading$.next(true);
|
|
4669
4806
|
this.documentId$.next(documentId);
|
|
@@ -4756,7 +4893,7 @@ class CaseSupportingProcessStartModalComponent {
|
|
|
4756
4893
|
this._formViewModelSubscription = this.closeModalEvent.subscribe(() => {
|
|
4757
4894
|
formViewModelComponent.destroy();
|
|
4758
4895
|
});
|
|
4759
|
-
this.isLoading$.next(
|
|
4896
|
+
this.isLoading$.next(false);
|
|
4760
4897
|
}
|
|
4761
4898
|
setFormCustomComponent(formCustomComponentKey) {
|
|
4762
4899
|
this.formCustomComponentDynamicContainer.clear();
|
|
@@ -4765,11 +4902,12 @@ class CaseSupportingProcessStartModalComponent {
|
|
|
4765
4902
|
this._formCustomComponentConfig$.pipe(take$1(1)).subscribe(formCustomComponentConfig => {
|
|
4766
4903
|
const customComponent = formCustomComponentConfig[formCustomComponentKey];
|
|
4767
4904
|
const renderedComponent = this.formCustomComponentDynamicContainer.createComponent(customComponent);
|
|
4768
|
-
combineLatest([this.processDefinitionKey$, this.caseDefinitionKey$])
|
|
4905
|
+
combineLatest([this.processDefinitionKey$, this.caseDefinitionKey$, this.documentId$])
|
|
4769
4906
|
.pipe(take$1(1))
|
|
4770
|
-
.subscribe(([processDefinitionKey, caseDefinitionKey]) => {
|
|
4907
|
+
.subscribe(([processDefinitionKey, caseDefinitionKey, documentId]) => {
|
|
4771
4908
|
renderedComponent.instance.processDefinitionKey = processDefinitionKey;
|
|
4772
4909
|
renderedComponent.instance.documentDefinitionName = caseDefinitionKey;
|
|
4910
|
+
renderedComponent.instance.documentId = documentId;
|
|
4773
4911
|
});
|
|
4774
4912
|
renderedComponent.instance.submittedEvent.subscribe(() => {
|
|
4775
4913
|
this.formSubmitted();
|
|
@@ -4782,13 +4920,13 @@ class CaseSupportingProcessStartModalComponent {
|
|
|
4782
4920
|
openCdsModal() {
|
|
4783
4921
|
this.modalOpen$.next(true);
|
|
4784
4922
|
}
|
|
4785
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseSupportingProcessStartModalComponent, deps: [{ token: i1$2.Router }, { token: i2$
|
|
4786
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: CaseSupportingProcessStartModalComponent, isStandalone: false, selector: "valtimo-case-supporting-process-start-modal", inputs: { isAdmin: "isAdmin" }, outputs: { formSubmit: "formSubmit" }, viewQueries: [{ propertyName: "form", first: true, predicate: ["form"], descendants: true }, { propertyName: "formViewModelDynamicContainer", first: true, predicate: ["formViewModelComponent"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: "formCustomComponentDynamicContainer", first: true, predicate: ["formCustomComponent"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<cds-modal
|
|
4923
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseSupportingProcessStartModalComponent, deps: [{ token: i1$2.Router }, { token: i2$2.ProcessService }, { token: i3$3.ProcessLinkService }, { token: FORM_VIEW_MODEL_TOKEN, optional: true }, { token: FORM_CUSTOM_COMPONENT_TOKEN, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4924
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: CaseSupportingProcessStartModalComponent, isStandalone: false, selector: "valtimo-case-supporting-process-start-modal", inputs: { isAdmin: "isAdmin" }, outputs: { formSubmit: "formSubmit" }, viewQueries: [{ propertyName: "form", first: true, predicate: ["form"], descendants: true }, { propertyName: "formViewModelDynamicContainer", first: true, predicate: ["formViewModelComponent"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: "formCustomComponentDynamicContainer", first: true, predicate: ["formCustomComponent"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<cds-modal\n [open]=\"modalOpen$ | async\"\n valtimoCdsModal\n [size]=\"modalSize$ | async\"\n [minContentHeight]=\"480\"\n>\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCloseSelect()\" [cdsLayer]=\"1\"\n ><h3 cdsModalHeaderHeading>\n {{\n (processDefinitionKey$ | async | translate) !== (processDefinitionKey$ | async)\n ? (processDefinitionKey$ | async | translate)\n : (processName$ | async)\n }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent [cdsLayer]=\"1\">\n <ng-template #formViewModelComponent></ng-template>\n <ng-template #formCustomComponent></ng-template>\n\n @if (isLoading$ | async) {\n <div class=\"loading-container\">\n <cds-loading size=\"sm\"></cds-loading>\n </div>\n }\n\n @if (\n !(isLoading$ | async) &&\n (startProcessLinkType$ | async) === 'form' &&\n (formDefinition$ | async)\n ) {\n <valtimo-form-io\n #form\n [submission]=\"submission$ | async\"\n [form]=\"formDefinition$ | async\"\n [options]=\"options$ | async\"\n (submit)=\"onSubmit($event)\"\n ></valtimo-form-io>\n }\n\n @if (\n !(isLoading$ | async) &&\n (startProcessLinkType$ | async) === 'form-flow' &&\n (formFlowInstanceId$ | async)\n ) {\n <valtimo-form-flow\n #formFlow\n [formFlowInstanceId]=\"formFlowInstanceId$ | async\"\n (formFlowComplete)=\"formSubmitted()\"\n ></valtimo-form-flow>\n }\n\n @if (\n !(isLoading$ | async) &&\n !(formDefinition$ | async) &&\n !(formFlowInstanceId$ | async) &&\n (startProcessLinkType$ | async) !== 'ui-component'\n ) {\n <div class=\"bg-warning text-black mb-0 p-3 text-center\">\n {{\n isAdmin\n ? ('formManagement.noFormDefinitionFoundAdmin' | translate)\n : ('formManagement.noFormDefinitionFoundUser' | translate)\n }}\n </div>\n\n <div class=\"mb-0 mt-4 p-3 text-center\">\n <button\n class=\"btn btn-secondary btn-space\"\n type=\"button\"\n (click)=\"gotoFormLinkScreen()\"\n id=\"form-link-button\"\n >\n {{ 'formManagement.gotoProcessLinksButton' | translate }}\n </button>\n </div>\n }\n </section>\n</cds-modal>\n", styles: ["#supportingProcessStartModal .formio-component-submit{text-align:right}.loading-container{width:100%;display:flex;justify-content:center}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "component", type: i2$1.FormioComponent, selector: "valtimo-form-io", inputs: ["options", "submission", "form", "readOnly", "formRefresh$"], outputs: ["submit", "change", "event"] }, { kind: "component", type: i4$1.Loading, selector: "cds-loading, ibm-loading", inputs: ["title", "isActive", "size", "overlay"] }, { kind: "component", type: i3$3.FormFlowComponent, selector: "valtimo-form-flow", inputs: ["formIoFormData", "formFlowInstanceId"], outputs: ["formFlowComplete", "formFlowChange"] }, { kind: "component", type: i4$1.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i4$1.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "directive", type: i4$1.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }, { kind: "directive", type: i4$1.ModalHeaderHeading, selector: "[cdsModalHeaderHeading], [ibmModalHeaderHeading]" }, { kind: "directive", type: i2$1.ValtimoCdsModalDirective, selector: "[valtimoCdsModal]", inputs: ["minContentHeight"] }, { kind: "directive", type: i4$1.LayerDirective, selector: "[cdsLayer], [ibmLayer]", inputs: ["ibmLayer", "cdsLayer"], exportAs: ["layer"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
4787
4925
|
}
|
|
4788
4926
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseSupportingProcessStartModalComponent, decorators: [{
|
|
4789
4927
|
type: Component,
|
|
4790
|
-
args: [{ standalone: false, selector: 'valtimo-case-supporting-process-start-modal', encapsulation: ViewEncapsulation.None, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<cds-modal
|
|
4791
|
-
}], ctorParameters: () => [{ type: i1$2.Router }, { type: i2$
|
|
4928
|
+
args: [{ standalone: false, selector: 'valtimo-case-supporting-process-start-modal', encapsulation: ViewEncapsulation.None, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<cds-modal\n [open]=\"modalOpen$ | async\"\n valtimoCdsModal\n [size]=\"modalSize$ | async\"\n [minContentHeight]=\"480\"\n>\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCloseSelect()\" [cdsLayer]=\"1\"\n ><h3 cdsModalHeaderHeading>\n {{\n (processDefinitionKey$ | async | translate) !== (processDefinitionKey$ | async)\n ? (processDefinitionKey$ | async | translate)\n : (processName$ | async)\n }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent [cdsLayer]=\"1\">\n <ng-template #formViewModelComponent></ng-template>\n <ng-template #formCustomComponent></ng-template>\n\n @if (isLoading$ | async) {\n <div class=\"loading-container\">\n <cds-loading size=\"sm\"></cds-loading>\n </div>\n }\n\n @if (\n !(isLoading$ | async) &&\n (startProcessLinkType$ | async) === 'form' &&\n (formDefinition$ | async)\n ) {\n <valtimo-form-io\n #form\n [submission]=\"submission$ | async\"\n [form]=\"formDefinition$ | async\"\n [options]=\"options$ | async\"\n (submit)=\"onSubmit($event)\"\n ></valtimo-form-io>\n }\n\n @if (\n !(isLoading$ | async) &&\n (startProcessLinkType$ | async) === 'form-flow' &&\n (formFlowInstanceId$ | async)\n ) {\n <valtimo-form-flow\n #formFlow\n [formFlowInstanceId]=\"formFlowInstanceId$ | async\"\n (formFlowComplete)=\"formSubmitted()\"\n ></valtimo-form-flow>\n }\n\n @if (\n !(isLoading$ | async) &&\n !(formDefinition$ | async) &&\n !(formFlowInstanceId$ | async) &&\n (startProcessLinkType$ | async) !== 'ui-component'\n ) {\n <div class=\"bg-warning text-black mb-0 p-3 text-center\">\n {{\n isAdmin\n ? ('formManagement.noFormDefinitionFoundAdmin' | translate)\n : ('formManagement.noFormDefinitionFoundUser' | translate)\n }}\n </div>\n\n <div class=\"mb-0 mt-4 p-3 text-center\">\n <button\n class=\"btn btn-secondary btn-space\"\n type=\"button\"\n (click)=\"gotoFormLinkScreen()\"\n id=\"form-link-button\"\n >\n {{ 'formManagement.gotoProcessLinksButton' | translate }}\n </button>\n </div>\n }\n </section>\n</cds-modal>\n", styles: ["#supportingProcessStartModal .formio-component-submit{text-align:right}.loading-container{width:100%;display:flex;justify-content:center}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
4929
|
+
}], ctorParameters: () => [{ type: i1$2.Router }, { type: i2$2.ProcessService }, { type: i3$3.ProcessLinkService }, { type: undefined, decorators: [{
|
|
4792
4930
|
type: Optional
|
|
4793
4931
|
}, {
|
|
4794
4932
|
type: Inject,
|
|
@@ -4852,7 +4990,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
|
|
|
4852
4990
|
}], ctorParameters: () => [{ type: i4.TranslateService }] });
|
|
4853
4991
|
|
|
4854
4992
|
/*
|
|
4855
|
-
* Copyright 2015-
|
|
4993
|
+
* Copyright 2015-2026 Ritense BV, the Netherlands.
|
|
4856
4994
|
*
|
|
4857
4995
|
* Licensed under EUPL, Version 1.2 (the "License");
|
|
4858
4996
|
* you may not use this file except in compliance with the License.
|
|
@@ -4970,6 +5108,10 @@ class CaseDetailComponent {
|
|
|
4970
5108
|
resource: CASE_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,
|
|
4971
5109
|
identifier: params.get('documentId') ?? '',
|
|
4972
5110
|
})));
|
|
5111
|
+
this.canInspect$ = this.route.paramMap.pipe(switchMap((params) => this.permissionService.requestPermission(CAN_INSPECT_CASE_PERMISSION, {
|
|
5112
|
+
resource: CASE_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,
|
|
5113
|
+
identifier: params.get('documentId') ?? '',
|
|
5114
|
+
})));
|
|
4973
5115
|
this.loadingTabs$ = new BehaviorSubject(true);
|
|
4974
5116
|
this.noTabsConfigured$ = new BehaviorSubject(false);
|
|
4975
5117
|
this.showNoAccess$ = new BehaviorSubject(false);
|
|
@@ -5067,6 +5209,15 @@ class CaseDetailComponent {
|
|
|
5067
5209
|
deleteDocument() {
|
|
5068
5210
|
this.showDeleteModal$.next(true);
|
|
5069
5211
|
}
|
|
5212
|
+
navigateToInspection() {
|
|
5213
|
+
this.router.navigate([
|
|
5214
|
+
'/cases',
|
|
5215
|
+
this.caseDefinitionKey,
|
|
5216
|
+
'document',
|
|
5217
|
+
this.documentId,
|
|
5218
|
+
'case-inspection',
|
|
5219
|
+
]);
|
|
5220
|
+
}
|
|
5070
5221
|
onConfirmDelete() {
|
|
5071
5222
|
this.isDeleting$.next(true);
|
|
5072
5223
|
this.documentService.deleteDocument(this.documentId).subscribe({
|
|
@@ -5281,13 +5432,13 @@ class CaseDetailComponent {
|
|
|
5281
5432
|
}
|
|
5282
5433
|
}));
|
|
5283
5434
|
}
|
|
5284
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseDetailComponent, deps: [{ token: i2$1.BreadcrumbService }, { token: i2.CaseStatusService }, { token: i2$1.CdsThemeService }, { token: i0.ComponentFactoryResolver }, { token: i2.DocumentService }, { token: CaseDetailLayoutService }, { token: CaseService }, { token: CaseTabService }, { token:
|
|
5285
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: CaseDetailComponent, isStandalone: false, selector: "ng-component", providers: [CaseTabService, CaseDetailLayoutService, ObserveSizeDirective], viewQueries: [{ propertyName: "supportingProcessStart", first: true, predicate: ["supportingProcessStartModal"], descendants: true }, { propertyName: "viewContainerRef", first: true, predicate: ["tabContainer"], descendants: true, read: ViewContainerRef }, { propertyName: "_tabContentContainer", first: true, predicate: ["tabContentContainer"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<div\n class=\"main-content\"\n [ngClass]=\"{'main-content--no-horizontal-overflow': $tabHorizontalOverflowDisabled()}\"\n>\n <div class=\"container-fluid\">\n <div\n class=\"main-content__header\"\n observeSize\n (heightChange)=\"onMainContentHeaderHeightChange($event)\"\n >\n <valtimo-case-detail-header-widget></valtimo-case-detail-header-widget>\n\n <ng-container *ngIf=\"caseTags$ | async as caseTags\">\n @if ((caseTags || []).length > 0) {\n <div class=\"spacing-case-tags\">\n @for (tag of caseTags; track tag) {\n <cds-tag size=\"sm\" [type]=\"tag.tagType\">\n {{ tag.title }}\n </cds-tag>\n }\n </div>\n }\n </ng-container>\n\n <ng-container *ngTemplateOutlet=\"tabs\"></ng-container>\n\n <ng-template #tabs>\n <ng-container *ngIf=\"{activeTab: activeTab$ | async} as obs\">\n <cds-tabs *ngIf=\"tabLoader\" type=\"inline\" class=\"case-detail-tabs\">\n <cds-tab\n *ngFor=\"let tab of tabLoader.tabs\"\n [active]=\"tab.name === (activeTabName$ | async)\"\n heading=\"{{ tab | tabTranslate | async }}\"\n (selected)=\"onTabSelected(tab, obs.activeTab)\"\n ></cds-tab>\n </cds-tabs>\n </ng-container>\n </ng-template>\n </div>\n\n <div\n *ngIf=\"{\n noTabsConfigured: noTabsConfigured$ | async,\n showTaskList: showTaskList$ | async,\n showNoAccess: showNoAccess$ | async,\n caseDetailLayout: caseDetailLayout$ | async,\n openTaskAndProcessLinkInModal: openTaskAndProcessLinkInModal$ | async,\n taskAndProcessLinkOpenedInPanel: taskAndProcessLinkOpenedInPanel$ | async,\n isDarkMode: isDarkMode$ | async,\n compactMode: compactMode$ | async,\n tabContentContainerMaxHeight: tabContentContainerMaxHeight$ | async,\n } as tabContentObs\"\n #tabContentContainer\n class=\"tab-content-container\"\n [ngClass]=\"{\n 'tab-content-container--dark': tabContentObs.isDarkMode,\n 'tab-content-container--compact': tabContentObs.compactMode,\n }\"\n [style.max-height]=\"tabContentObs.tabContentContainerMaxHeight\"\n [style.height]=\"tabContentObs.tabContentContainerMaxHeight\"\n >\n <as-split\n direction=\"horizontal\"\n [disabled]=\"!tabContentObs.caseDetailLayout.widthAdjustable\"\n [gutterSize]=\"CASE_DETAIL_GUTTER_SIZE\"\n [unit]=\"tabContentObs.caseDetailLayout.unit\"\n class=\"split-area\"\n >\n <as-split-area\n [size]=\"tabContentObs.caseDetailLayout.leftPanelWidth\"\n [minSize]=\"tabContentObs.caseDetailLayout.leftPanelMinWidth\"\n [maxSize]=\"tabContentObs.caseDetailLayout.leftPanelMaxWidth\"\n class=\"split-area__content\"\n >\n <div\n class=\"card-body bg-white p-5 position-relative tab-container\"\n [class.tab-container--compact]=\"compactMode$ | async\"\n >\n <div *ngIf=\"loadingTabs$ | async\" class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n\n <valtimo-no-results\n *ngIf=\"tabContentObs.showNoAccess\"\n description=\"{{ 'case.noAccess.description' | translate }}\"\n title=\"{{ 'case.noAccess.title' | translate }}\"\n illustration=\"valtimo-layout/img/emptystate-not-authorised.svg\"\n >\n </valtimo-no-results>\n\n <valtimo-no-results\n *ngIf=\"tabContentObs.noTabsConfigured\"\n [description]=\"'case.tabs.noResultsDescription' | translate\"\n [title]=\"'case.tabs.noResults' | translate\"\n ></valtimo-no-results>\n\n <ng-template #tabContainer></ng-template>\n\n <div class=\"clearfix\"></div>\n </div>\n </as-split-area>\n\n <as-split-area\n *ngIf=\"tabContentObs.caseDetailLayout.showRightPanel\"\n [size]=\"tabContentObs.caseDetailLayout.rightPanelWidth\"\n [minSize]=\"tabContentObs.caseDetailLayout.rightPanelMinWidth\"\n [maxSize]=\"tabContentObs.caseDetailLayout.rightPanelMaxWidth\"\n >\n @if (tabContentObs.showTaskList) {\n <div class=\"task-panel\">\n @if (!tabContentObs.taskAndProcessLinkOpenedInPanel) {\n <valtimo-case-detail-task-list\n [openTaskAndProcessLinkInModal]=\"tabContentObs.openTaskAndProcessLinkInModal\"\n (taskClickEvent)=\"onTaskClickEvent($event)\"\n (formSubmitEvent)=\"onFormSubmitEvent()\"\n ></valtimo-case-detail-task-list>\n }\n\n @if (tabContentObs.taskAndProcessLinkOpenedInPanel) {\n <valtimo-case-detail-task-detail\n [taskAndProcessLink]=\"tabContentObs.taskAndProcessLinkOpenedInPanel\"\n (activeChange)=\"onActiveChangeEvent($event)\"\n (closeEvent)=\"onTaskDetailsClose()\"\n (formSubmit)=\"onFormSubmitEvent()\"\n (dueDateChanged)=\"onDueDateChanged()\"\n >\n </valtimo-case-detail-task-detail>\n }\n </div>\n }\n </as-split-area>\n </as-split>\n </div>\n </div>\n\n <valtimo-case-supporting-process-start-modal\n [isAdmin]=\"isAdmin$ | async\"\n (formSubmit)=\"onFormSubmitEvent()\"\n #supportingProcessStartModal\n ></valtimo-case-supporting-process-start-modal>\n</div>\n\n<ng-template\n #caseDetailHeader\n let-canHaveAssignee=\"canHaveAssignee\"\n let-document=\"document\"\n let-canAssign=\"canAssign\"\n>\n <ng-container\n *ngTemplateOutlet=\"\n caseDetailAssignee;\n context: {canHaveAssignee: canHaveAssignee, document: document, canAssign: canAssign}\n \"\n ></ng-container>\n</ng-template>\n\n<ng-template\n #caseDetailAssignee\n let-canHaveAssignee=\"canHaveAssignee\"\n let-document=\"document\"\n let-canAssign=\"canAssign\"\n>\n <div *ngIf=\"canHaveAssignee && document\">\n <valtimo-assignment\n *ngIf=\"canAssignLoaded$ | async\"\n mode=\"case\"\n [assigneeFullName]=\"document?.assigneeFullName\"\n [assigneeId]=\"document.assigneeId\"\n [assignedTeamKey]=\"document.assignedTeamKey\"\n [assignedTeamTitle]=\"document.assignedTeamTitle\"\n [hasPermission]=\"canAssign\"\n [candidateUsers$]=\"candidateUsers$\"\n [candidateTeams$]=\"candidateTeams$\"\n (assignmentChangedEvent)=\"onAssignmentChanged($event)\"\n (unassignedEvent)=\"onUnassigned()\"\n ></valtimo-assignment>\n </div>\n</ng-template>\n\n<ng-template #claimButton let-canClaim=\"canClaim\" let-canHaveAssignee=\"canHaveAssignee\">\n <v-overflow-menu-option\n *ngIf=\"canClaim && canHaveAssignee\"\n [disabled]=\"(isAssigning$ | async) || (isAssignedToCurrentUser$ | async)\"\n (selected)=\"claimAssignee()\"\n >\n {{ 'case.claimAssigneeCase' | translate }}\n </v-overflow-menu-option>\n</ng-template>\n\n<ng-template\n #unassignButton\n let-canAssign=\"canAssign\"\n let-canHaveAssignee=\"canHaveAssignee\"\n let-assigneeId=\"assigneeId\"\n>\n <v-overflow-menu-option\n *ngIf=\"canHaveAssignee && canAssign\"\n [disabled]=\"!assigneeId\"\n (selected)=\"unassignAssignee()\"\n >\n {{ 'assignDocument.remove' | translate }}\n </v-overflow-menu-option>\n</ng-template>\n\n<ng-template #deleteButton let-canDelete=\"canDelete\">\n <v-overflow-menu-option\n *ngIf=\"canDelete\"\n [disabled]=\"isDeleting$ | async\"\n (selected)=\"deleteDocument()\"\n type=\"danger\"\n >\n {{ 'case.delete.delete' | translate }}\n </v-overflow-menu-option>\n</ng-template>\n\n<ng-template #customStartTrigger>\n <button\n [size]=\"(compactMode$ | async) ? 'sm' : 'lg'\"\n cdsButton=\"primary\"\n [disabled]=\"startableItems.length === 0\"\n [ngbTooltip]=\"startableItems.length === 0 ? 'No action' : null\"\n >\n {{ 'case.startSubProcess' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"chevron--down\" size=\"16\"></svg>\n </button>\n</ng-template>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"case.delete.confirm\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"case.delete.description\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"case.delete.delete\"\n (confirmEvent)=\"onConfirmDelete()\"\n></valtimo-confirmation-modal>\n\n<ng-container renderInPageHeader [fullWidth]=\"true\">\n <ng-template>\n <div\n class=\"case-actions\"\n [ngClass]=\"{\n 'case-actions--compact': compactMode$ | async,\n 'case-actions--small-title': smallTitle$ | async,\n }\"\n *ngIf=\"{\n assigneeId: assigneeId$ | async,\n canAssign: canAssign$ | async,\n canClaim: canClaim$ | async,\n canHaveAssignee: canHaveAssignee$ | async,\n canDelete: canDelete$ | async,\n document: document$ | async,\n caseStatus: caseStatus$ | async,\n } as obs\"\n >\n <div class=\"case-status-assign-custom-title\" [ngClass]=\"{'--compact': compactMode$ | async}\">\n @if (obs.caseStatus) {\n <cds-tag size=\"sm\" [type]=\"obs.caseStatus.tagType\" [title]=\"obs.caseStatus.title\">{{\n obs.caseStatus.title\n }}</cds-tag>\n }\n\n <div [ngClass]=\"{'--compact': compactMode$ | async}\">\n <ng-container\n *ngTemplateOutlet=\"\n caseDetailAssignee;\n context: {\n canHaveAssignee: obs.canHaveAssignee,\n document: obs.document,\n canAssign: obs.canAssign,\n }\n \"\n ></ng-container>\n </div>\n\n <ng-container *ngTemplateOutlet=\"caseDetailHeader\"></ng-container>\n </div>\n\n <div class=\"buttons-container\">\n <v-overflow-menu\n *ngIf=\"obs.canHaveAssignee || obs.canDelete\"\n placement=\"bottom-end\"\n class=\"overflow-button assign-overflow\"\n [ngClass]=\"{'--compact': compactMode$ | async}\"\n >\n <v-overflow-menu-trigger\n overflowTrigger\n [compact]=\"compactMode$ | async\"\n ></v-overflow-menu-trigger>\n\n <ng-container\n *ngTemplateOutlet=\"\n claimButton;\n context: {canClaim: obs.canClaim, canHaveAssignee: obs.canHaveAssignee}\n \"\n >\n </ng-container>\n\n <ng-container\n *ngTemplateOutlet=\"\n unassignButton;\n context: {\n canAssign: obs.canAssign,\n canHaveAssignee: obs.canHaveAssignee,\n assigneeId: obs.assigneeId,\n }\n \"\n >\n </ng-container>\n\n <ng-container *ngTemplateOutlet=\"deleteButton; context: {canDelete: obs.canDelete}\">\n </ng-container>\n </v-overflow-menu>\n\n <v-overflow-menu\n [ngClass]=\"{'--compact': compactMode$ | async}\"\n [menuWidth]=\"dropdownWidth$ | async\"\n placement=\"bottom-end\"\n class=\"overflow-button case-detail-overflow\"\n >\n <ng-container overflowTrigger>\n <ng-container *ngTemplateOutlet=\"customStartTrigger\"></ng-container>\n </ng-container>\n <v-overflow-menu-option\n *ngFor=\"let startableItem of startableItems\"\n [attr.title]=\"startableItem.displayName\"\n (selected)=\"startItem(startableItem)\"\n >\n {{ startableItem.displayName }}\n </v-overflow-menu-option>\n </v-overflow-menu>\n </div>\n </div>\n </ng-template>\n</ng-container>\n", styles: [".main-content{overflow:hidden;padding-bottom:0}.main-content--no-horizontal-overflow{overflow-x:hidden}.tab-container{height:min-content;min-height:300px;overflow-y:auto;overflow-x:hidden}.tab-container:has(>.tab--no-margin){padding:0!important}.tab-container:has(>.tab--no-min-height){min-height:unset}.tab-container:has(>.tab--no-background){background:transparent!important}.tab-content-container{display:flex;gap:32px;overflow:auto;margin-bottom:16px}.loading-container{display:flex;justify-content:center;flex-direction:row}.case-detail-tabs{display:flex;margin-bottom:24px}.case-detail-tabs cds-tab{display:none!important}.buttons-container{display:flex;flex-direction:row;gap:8px;align-items:center}.case-actions{display:flex;width:100%;justify-content:space-between;align-items:flex-end;padding-bottom:4px}.case-actions--compact,.case-actions--small-title{padding-bottom:0;align-items:flex-start}.case-actions ::ng-deep .version-selection{width:160px}.case-actions ::ng-deep .version-selection .cds--list-box__selection{display:none}.case-status-assign-custom-title{display:flex;gap:16px;align-items:flex-end}.case-status-assign-custom-title .cds--tag{margin:0;overflow:hidden;text-overflow:ellipsis;line-height:24px;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;max-width:100%}.case-status-assign-custom-title.--compact{align-items:center}.task-panel{width:100%;transition:height .15s ease-in-out}.split-area__content{height:100%!important}.split-area__content .tab-container{height:min-content!important;overflow:hidden!important}:host ::ng-deep .container-fluid{height:100%!important;width:100%!important;margin:0!important;padding:0!important}::ng-deep .tab-content-container .as-split-gutter{background-color:transparent!important;--_as-gutter-icon-disabled: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1' height='1'/%3E\");--_as-gutter-icon-horizontal: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAABQJJREFUeF7dWll22zAMpNwzlM5xmpMlOVl6mzrKHexWm8UFy4xIp+/FP3mxQWAwWAiRGsJ3/gwhhJvt4CRCfgCtosYhDOHm4SlW7rZyq9t/R7GsZoYQDhCA89UIrzakKuQtpRTiHv03ycJB3t8KuU9AByNfw5dWJpj1h5YABmGRsvgufzsSG21NEwGWUrv5yiuZb31yMZoAAjBFPqBdor9G0vpwu2+PBgE6TK/q0pUxxiwZxnE0SefkE0sHWQUygGG3ll0c2tGNn+M0DiSfHDlHQBu2rffoWgBWPRHWIUreM654li5bMwDQBIhI9naHFgVQCSS2PHliWlLm0/YsMrcwK6ISp1QGANhzG7XFDj2gUFr8yzrkydOJ6CyACBB1lIWkbPyeQ2UQ2ZKxksCLft4EaWqB/AshHCdg0b/1gB7wJB1QBrQ0ml4E2MMyFgxJ6iABuEGdgCUeZVQm+fQ7fhfAsflzAKFLS1G2ptmMwUpDl1oyAGxo2fw2hHBzjpsm+XiO2TGQF1GWACJGfecAjHmgCTZum/lQfezQTZ3L7z+g3goc2xGtFT86A0qLh5pgjPF13aLmv9aHdYiVn8uMwFNixQlYqVuNvayK3sZxNElgHarlP6duo2bpOcbXWxheVhkTj7Tv4ATsTG/OL6CG8DZ+KCQMIcSf6HnAAo8hrAjGRpIblLxveDm8/q4YC6fT6flyufzWBhXGoTWd4QOUp6enX9fr9X2od6SFhJlTu4FBGZA5n+jbnddZjPG8nz8lo222ItHJEraRICAAMmG6rPGb2FTjedqHsET+4/Lbu+phHWLlJ/g+Cd4gpJDgp71HHzAHFCqOEFCSULjrNkaxw2rO/zidnv/MNY99WIcY+TKufibUmOcSEB5IxLTHXLal2FG4h83VPzET1h6wUxDP8fXfJW5V8xuQhqFwVtGNgDuQ6Yo367Pb9ixdjVckVE1QS/0ekZhybRw/zMZblkBpd1sMPIdJkAsClF2ghQQPYJYBQjp5BKCBEHD4JZDi6bED3AebRDFbAp58Ski3JrgphQcgozEwXZ2dBH3nZ2Bq5KcyahuEgO1wIWBnyIuoS5hA9pHIp01dnANSdlvKwXWocRC6Pw/U70MBozCQAWI5JKDF5wFrtk8uR6XKYQibnL9dr+/CjgA5v81AamMFByTTmOhQp56hPw5/vrrvx61euz2gZKfHgcj98bUkgjo/WJCxeMrJFyQgR8ocQcGnwqsJpgSK8pymTPeIThus4DKwBKWJFNsFklEcOT9ApyFADswAQJMiwkaUldeQ7ZTKDWf79tsSgIasDwGduro1CbY+hVqZgpJ1SA5L6bQHMJNjOy19MsCgBiNgV8DK+1GxSXoYAcMwhNttOedPIZTPAhm8bQ6Anx57ZMBGgfHuXs6yuEANBBtR/2bIjzkj8bAMSIYU+KLDaoKSU8KFCOP7LAsTcDTZ2jPAfrUWf3VGnwdo1pgF5xiz9yhazwOExwfv9suEm2XArJwNtSP/+AxgwlHL1iVwiAUdhEaAxhtLWGbZDEbPEiCyhHWIla93KO7AvMoAwre7bW5jxCAfwaHnoa4N3gVU5X2RthX0gdVNBPhDZnYgzMH7ImKbCOA8wnfsVO+jeUgIEHfYFUs7jHYNLN2YvJkBXwYaNuQIwnp2cgoCag3LN1Z2+EwfwCVPLPAOJ1n05oDt9x5oRR37Pb72s/e+kU81L/EXSRwjcUdkvjUAAAAASUVORK5CYII=)}::ng-deep .tab-content-container .as-split-gutter-icon{background-repeat:no-repeat;background-size:16px 16px}::ng-deep .tab-content-container--dark .as-split-gutter{--_as-gutter-icon-horizontal: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAABPlJREFUeF7tm1tW3DAMhu2+krCmdmWlKytrIuGV9HjixDddfjkOtOd0XmAGWZfPsiw7g3fVyzvntvpD9H01+JIuwCamX5YKf9VfmCVaDze2S2fXIDG+CGC8YsrqMCvDFDmHZYCeI5gE6LietD2LlNb6uQAQTLWfCDTLmLpOIfoRvxEZydZn+pH7+vdlAEJyoIwIwDIrFtk7C2TyA/Po9gxY1zVWrN2haZq85FqS3zEF+YET3qi6rFzjfAR0yGkBwQA0wyFU75zf5MaOBYDoR2YGDigqY+U7HOKHlAsFiQOXqax+JYCYBGJr32ZAB+lEpxwc3i1nDcDWtBUYPjN8p35VBxf/4/MQUI7lqAGPzwjYBQDv3PQ0+Ue/CjV/sODp8+UiyNE7XLHO6EM+Dg4/ntBdAI69zdIqBlgTlDldADLN9a7R551cDot0kDPNbn40AIh6LSS4DS0Be9jJg7sAXPHJfBZojbXriMscGgDvvhUYmRGEes6iocJiyVejWdelYDPNk5cquhnAxVSAlgDZQG/7bUqKjvZEDqgdYwaAzQsrVQHowFkPqd5bA4LlO1ytp+zoFM0Ml2V5CYPmeX78lF7v67rla8B6GpynKZxnxBfmD03MvASCMe/9z+DRtm2/SAiZLXRGqcapbYTaICB/BHwggN1wbuzQSUHI3UQBHPqo+wPO/7dlefkWJ0PyR0ofEIAjg49Z8GOe51fOCAYgIcPkd2vLsnz33v+ubadJ0TZw8Fqcmnkk+CBjCahHXodQ49mhHGjUDJCDf37Vjmn54Sa4MuxGaL/weWzDdggJigjgDL7KpG3bxLTPmY/PALqa90JgAahpf/ohb8jjAfAlrQdCCSDG0gRPxCiHzf81XwKUVA1M7gDwbojbspsM4GZea3jov5cFp6cGoHYRFCWE5FthQwKAGCnLS9vD6UXwXbnIRpGUcsH3D6JxI2sADwFHwEnqAI4HKW0AB07ci6QDXgLHELUIghPxbxRBBukICDuAZMCaAbu8XnLf1K4wzBjdGYpzSUGI66ntBQg/8QzYB+PyyW18++sAEHvu8wSY02IbosyONaBTPj7XO6/F+SxVzgPKRooWlN7l0A0g+i0tGXrmvdu2D/qYTrBgO0GKG3ocRlrhB/jm6a13zR2i8GAk+BOOw/lmy95RMIlgAlAvh4ex5/ll5CUndYMkJfGNFyL84sCuoHa3tSVQW9HkGxjeueUNv6Krx7dbTO5R/J1FARSQ9X3d8gyh13RSZAYA9iOcmHkJWO1ZA+LkRdbaRAlO3wogKL/+/YDZl5cuFQogC/P4k/j+mx0AYVDyYVQGWDMPlbcDQDVHOREA1DmGDAgv7emA0bEofgmAmn3euXUpT3d9Z4G+4PRR+6PR9oigRqarPiT6ng4nBzRguCe0ZJEBatyqQGvkfw249VtiHTNSzdGZAddVESmW1YBDv5bSpoxBnOZkst7h6jISx5sCEltnJFp7KKkG3KNfPQvULluB2UMuR1zaBiXjB08+IJr4FQA9c3gDgNINKSDK4SCff67VjEsZEI+Cl3Scg3vwA4cU6uu0bRL3d4k3ZEDm3mAoY2YqdX7BvVsA2OJW9qlhUe+KQvObX1DYANS+2iIdHArR0bArgXfUBoAMoewopH9ROd3oBmcZiMkOANA3sXUq9mm5Pqrvq7IYXLo3Vs713ao7WRAZ8NULfTACRd0fdjtUcYyr1cIAAAAASUVORK5CYII=)}.spacing-case-tags{margin-bottom:8px}\n/*!\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i6$1.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "component", type: i2$2.Loading, selector: "cds-loading, ibm-loading", inputs: ["title", "isActive", "size", "overlay"] }, { kind: "directive", type: i2$2.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "directive", type: i2$2.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: i2$1.ConfirmationModalComponent, selector: "valtimo-confirmation-modal", inputs: ["titleTranslationKey", "title", "content", "contentTranslationKey", "confirmButtonText", "confirmButtonTextTranslationKey", "confirmButtonType", "showOptionalButton", "optionalButtonText", "optionalButtonTextTranslationKey", "optionalButtonType", "cancelButtonText", "cancelButtonTextTranslationKey", "cancelButtonType", "showModalSubject$", "outputOnConfirm", "outputOnOptional", "spacerAfterCancelButton"], outputs: ["confirmEvent", "optionalEvent", "cancelEvent"] }, { kind: "component", type: i2$2.Tabs, selector: "cds-tabs, ibm-tabs", inputs: ["position", "cacheActive", "followFocus", "isNavigation", "ariaLabel", "ariaLabelledby", "type", "theme", "skeleton"] }, { kind: "component", type: i2$2.Tab, selector: "cds-tab, ibm-tab", inputs: ["heading", "title", "context", "active", "disabled", "tabIndex", "id", "cacheActive", "tabContent", "templateContext"], outputs: ["selected"] }, { kind: "component", type: i2$1.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "directive", type: i2$1.RenderInPageHeaderDirective, selector: "[renderInPageHeader]", inputs: ["fullWidth"] }, { kind: "component", type: i2$2.Tag, selector: "cds-tag, ibm-tag", inputs: ["type", "size", "class", "skeleton"] }, { kind: "component", type: i2$1.OverflowMenuComponent, selector: "v-overflow-menu", inputs: ["open", "placement", "menuWidth", "offsetX", "offsetY", "closeOnSelect", "useHostAsReference", "portalToBody"], outputs: ["openChange"] }, { kind: "component", type: i2$1.OverflowMenuOptionComponent, selector: "v-overflow-menu-option", inputs: ["disabled", "type", "testId", "optionId"], outputs: ["selected"] }, { kind: "component", type: i2$1.OverflowMenuTriggerComponent, selector: "v-overflow-menu-trigger", inputs: ["compact"] }, { kind: "component", type: CaseDetailTaskListComponent, selector: "valtimo-case-detail-task-list", inputs: ["openTaskAndProcessLinkInModal"], outputs: ["taskClickEvent", "formSubmitEvent"] }, { kind: "component", type: CaseDetailsTaskDetailComponent, selector: "valtimo-case-detail-task-detail", inputs: ["taskAndProcessLink"], outputs: ["closeEvent", "assignmentOfTaskChanged", "dueDateChanged", "activeChange", "formSubmit"] }, { kind: "component", type: i17.SplitComponent, selector: "as-split", inputs: ["gutterSize", "gutterStep", "disabled", "gutterClickDeltaPx", "direction", "dir", "unit", "gutterAriaLabel", "restrictMove", "useTransition", "gutterDblClickDuration"], outputs: ["gutterClick", "gutterDblClick", "dragStart", "dragEnd", "transitionEnd"], exportAs: ["asSplit"] }, { kind: "component", type: i17.SplitAreaComponent, selector: "as-split-area", inputs: ["size", "minSize", "maxSize", "lockSize", "visible"], exportAs: ["asSplitArea"] }, { kind: "component", type: CaseDetailHeaderWidgetComponent, selector: "valtimo-case-detail-header-widget" }, { kind: "directive", type: i2$1.ObserveSizeDirective, selector: "[observeSize]", outputs: ["widthChange", "heightChange"] }, { kind: "component", type: i2$1.AssignmentComponent, selector: "valtimo-assignment", inputs: ["mode", "hasPermission", "assigneeId", "assigneeFullName", "assignedTeamKey", "assignedTeamTitle", "candidateUsers$", "candidateTeams$"], outputs: ["assignmentChangedEvent", "unassignedEvent"] }, { kind: "component", type: CaseSupportingProcessStartModalComponent, selector: "valtimo-case-supporting-process-start-modal", inputs: ["isAdmin"], outputs: ["formSubmit"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "pipe", type: TabTranslatePipe, name: "tabTranslate" }] }); }
|
|
5435
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseDetailComponent, deps: [{ token: i2$1.BreadcrumbService }, { token: i2.CaseStatusService }, { token: i2$1.CdsThemeService }, { token: i0.ComponentFactoryResolver }, { token: i2.DocumentService }, { token: CaseDetailLayoutService }, { token: CaseService }, { token: CaseTabService }, { token: i4$1.IconService }, { token: i5$4.KeycloakService }, { token: i1$3.NGXLogger }, { token: i1.GlobalNotificationService }, { token: i2$1.PageHeaderService }, { token: i2$1.PageTitleService }, { token: i2$3.PermissionService }, { token: i4.TranslateService }, { token: i0.Renderer2 }, { token: i1$2.ActivatedRoute }, { token: i1$2.Router }, { token: WidgetsService }, { token: i12.UserProviderService }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5436
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: CaseDetailComponent, isStandalone: false, selector: "ng-component", providers: [CaseTabService, CaseDetailLayoutService, ObserveSizeDirective], viewQueries: [{ propertyName: "supportingProcessStart", first: true, predicate: ["supportingProcessStartModal"], descendants: true }, { propertyName: "viewContainerRef", first: true, predicate: ["tabContainer"], descendants: true, read: ViewContainerRef }, { propertyName: "_tabContentContainer", first: true, predicate: ["tabContentContainer"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<div\n class=\"main-content\"\n [ngClass]=\"{'main-content--no-horizontal-overflow': $tabHorizontalOverflowDisabled()}\"\n>\n <div class=\"container-fluid\">\n <div\n class=\"main-content__header\"\n observeSize\n (heightChange)=\"onMainContentHeaderHeightChange($event)\"\n >\n <valtimo-case-detail-header-widget></valtimo-case-detail-header-widget>\n\n <ng-container *ngIf=\"caseTags$ | async as caseTags\">\n @if ((caseTags || []).length > 0) {\n <div class=\"spacing-case-tags\">\n @for (tag of caseTags; track tag) {\n <cds-tag size=\"sm\" [type]=\"tag.tagType\">\n {{ tag.title }}\n </cds-tag>\n }\n </div>\n }\n </ng-container>\n\n <ng-container *ngTemplateOutlet=\"tabs\"></ng-container>\n\n <ng-template #tabs>\n <ng-container *ngIf=\"{activeTab: activeTab$ | async} as obs\">\n <cds-tabs *ngIf=\"tabLoader\" type=\"inline\" class=\"case-detail-tabs\">\n <cds-tab\n *ngFor=\"let tab of tabLoader.tabs\"\n [active]=\"tab.name === (activeTabName$ | async)\"\n heading=\"{{ tab | tabTranslate | async }}\"\n (selected)=\"onTabSelected(tab, obs.activeTab)\"\n ></cds-tab>\n </cds-tabs>\n </ng-container>\n </ng-template>\n </div>\n\n <div\n *ngIf=\"{\n noTabsConfigured: noTabsConfigured$ | async,\n showTaskList: showTaskList$ | async,\n showNoAccess: showNoAccess$ | async,\n caseDetailLayout: caseDetailLayout$ | async,\n openTaskAndProcessLinkInModal: openTaskAndProcessLinkInModal$ | async,\n taskAndProcessLinkOpenedInPanel: taskAndProcessLinkOpenedInPanel$ | async,\n isDarkMode: isDarkMode$ | async,\n compactMode: compactMode$ | async,\n tabContentContainerMaxHeight: tabContentContainerMaxHeight$ | async,\n } as tabContentObs\"\n #tabContentContainer\n class=\"tab-content-container\"\n [ngClass]=\"{\n 'tab-content-container--dark': tabContentObs.isDarkMode,\n 'tab-content-container--compact': tabContentObs.compactMode,\n }\"\n [style.max-height]=\"tabContentObs.tabContentContainerMaxHeight\"\n [style.height]=\"tabContentObs.tabContentContainerMaxHeight\"\n >\n <as-split\n direction=\"horizontal\"\n [disabled]=\"!tabContentObs.caseDetailLayout.widthAdjustable\"\n [gutterSize]=\"CASE_DETAIL_GUTTER_SIZE\"\n [unit]=\"tabContentObs.caseDetailLayout.unit\"\n class=\"split-area\"\n >\n <as-split-area\n [size]=\"tabContentObs.caseDetailLayout.leftPanelWidth\"\n [minSize]=\"tabContentObs.caseDetailLayout.leftPanelMinWidth\"\n [maxSize]=\"tabContentObs.caseDetailLayout.leftPanelMaxWidth\"\n class=\"split-area__content\"\n >\n <div\n class=\"card-body bg-white p-5 position-relative tab-container\"\n [class.tab-container--compact]=\"compactMode$ | async\"\n >\n <div *ngIf=\"loadingTabs$ | async\" class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n\n <valtimo-no-results\n *ngIf=\"tabContentObs.showNoAccess\"\n description=\"{{ 'case.noAccess.description' | translate }}\"\n title=\"{{ 'case.noAccess.title' | translate }}\"\n illustration=\"valtimo-layout/img/emptystate-not-authorised.svg\"\n >\n </valtimo-no-results>\n\n <valtimo-no-results\n *ngIf=\"tabContentObs.noTabsConfigured\"\n [description]=\"'case.tabs.noResultsDescription' | translate\"\n [title]=\"'case.tabs.noResults' | translate\"\n ></valtimo-no-results>\n\n <ng-template #tabContainer></ng-template>\n\n <div class=\"clearfix\"></div>\n </div>\n </as-split-area>\n\n <as-split-area\n *ngIf=\"tabContentObs.caseDetailLayout.showRightPanel\"\n [size]=\"tabContentObs.caseDetailLayout.rightPanelWidth\"\n [minSize]=\"tabContentObs.caseDetailLayout.rightPanelMinWidth\"\n [maxSize]=\"tabContentObs.caseDetailLayout.rightPanelMaxWidth\"\n >\n @if (tabContentObs.showTaskList) {\n <div class=\"task-panel\">\n @if (!tabContentObs.taskAndProcessLinkOpenedInPanel) {\n <valtimo-case-detail-task-list\n [openTaskAndProcessLinkInModal]=\"tabContentObs.openTaskAndProcessLinkInModal\"\n (taskClickEvent)=\"onTaskClickEvent($event)\"\n (formSubmitEvent)=\"onFormSubmitEvent()\"\n ></valtimo-case-detail-task-list>\n }\n\n @if (tabContentObs.taskAndProcessLinkOpenedInPanel) {\n <valtimo-case-detail-task-detail\n [taskAndProcessLink]=\"tabContentObs.taskAndProcessLinkOpenedInPanel\"\n (activeChange)=\"onActiveChangeEvent($event)\"\n (closeEvent)=\"onTaskDetailsClose()\"\n (formSubmit)=\"onFormSubmitEvent()\"\n (dueDateChanged)=\"onDueDateChanged()\"\n >\n </valtimo-case-detail-task-detail>\n }\n </div>\n }\n </as-split-area>\n </as-split>\n </div>\n </div>\n\n <valtimo-case-supporting-process-start-modal\n [isAdmin]=\"isAdmin$ | async\"\n (formSubmit)=\"onFormSubmitEvent()\"\n #supportingProcessStartModal\n ></valtimo-case-supporting-process-start-modal>\n</div>\n\n<ng-template\n #caseDetailHeader\n let-canHaveAssignee=\"canHaveAssignee\"\n let-document=\"document\"\n let-canAssign=\"canAssign\"\n>\n <ng-container\n *ngTemplateOutlet=\"\n caseDetailAssignee;\n context: {canHaveAssignee: canHaveAssignee, document: document, canAssign: canAssign}\n \"\n ></ng-container>\n</ng-template>\n\n<ng-template\n #caseDetailAssignee\n let-canHaveAssignee=\"canHaveAssignee\"\n let-document=\"document\"\n let-canAssign=\"canAssign\"\n>\n <div *ngIf=\"canHaveAssignee && document\">\n <valtimo-assignment\n *ngIf=\"canAssignLoaded$ | async\"\n mode=\"case\"\n [assigneeFullName]=\"document?.assigneeFullName\"\n [assigneeId]=\"document.assigneeId\"\n [assignedTeamKey]=\"document.assignedTeamKey\"\n [assignedTeamTitle]=\"document.assignedTeamTitle\"\n [hasPermission]=\"canAssign\"\n [candidateUsers$]=\"candidateUsers$\"\n [candidateTeams$]=\"candidateTeams$\"\n (assignmentChangedEvent)=\"onAssignmentChanged($event)\"\n (unassignedEvent)=\"onUnassigned()\"\n ></valtimo-assignment>\n </div>\n</ng-template>\n\n<ng-template #claimButton let-canClaim=\"canClaim\" let-canHaveAssignee=\"canHaveAssignee\">\n <v-overflow-menu-option\n *ngIf=\"canClaim && canHaveAssignee\"\n [disabled]=\"(isAssigning$ | async) || (isAssignedToCurrentUser$ | async)\"\n (selected)=\"claimAssignee()\"\n >\n {{ 'case.claimAssigneeCase' | translate }}\n </v-overflow-menu-option>\n</ng-template>\n\n<ng-template\n #unassignButton\n let-canAssign=\"canAssign\"\n let-canHaveAssignee=\"canHaveAssignee\"\n let-assigneeId=\"assigneeId\"\n>\n <v-overflow-menu-option\n *ngIf=\"canHaveAssignee && canAssign\"\n [disabled]=\"!assigneeId\"\n (selected)=\"unassignAssignee()\"\n >\n {{ 'assignDocument.remove' | translate }}\n </v-overflow-menu-option>\n</ng-template>\n\n<ng-template #deleteButton let-canDelete=\"canDelete\">\n <v-overflow-menu-option\n *ngIf=\"canDelete\"\n [disabled]=\"isDeleting$ | async\"\n (selected)=\"deleteDocument()\"\n type=\"danger\"\n >\n {{ 'case.delete.delete' | translate }}\n </v-overflow-menu-option>\n</ng-template>\n\n<ng-template #inspectButton let-canInspect=\"canInspect\">\n <v-overflow-menu-option *ngIf=\"canInspect\" (selected)=\"navigateToInspection()\">\n {{ 'case.inspection.openInspector' | translate }}\n </v-overflow-menu-option>\n</ng-template>\n\n<ng-template #customStartTrigger>\n <button\n [size]=\"(compactMode$ | async) ? 'sm' : 'lg'\"\n cdsButton=\"primary\"\n [disabled]=\"startableItems.length === 0\"\n [ngbTooltip]=\"startableItems.length === 0 ? 'No action' : null\"\n >\n {{ 'case.startSubProcess' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"chevron--down\" size=\"16\"></svg>\n </button>\n</ng-template>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"case.delete.confirm\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"case.delete.description\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"case.delete.delete\"\n (confirmEvent)=\"onConfirmDelete()\"\n></valtimo-confirmation-modal>\n\n<ng-container renderInPageHeader [fullWidth]=\"true\">\n <ng-template>\n <div\n class=\"case-actions\"\n [ngClass]=\"{\n 'case-actions--compact': compactMode$ | async,\n 'case-actions--small-title': smallTitle$ | async,\n }\"\n *ngIf=\"{\n assigneeId: assigneeId$ | async,\n canAssign: canAssign$ | async,\n canClaim: canClaim$ | async,\n canHaveAssignee: canHaveAssignee$ | async,\n canDelete: canDelete$ | async,\n canInspect: canInspect$ | async,\n document: document$ | async,\n caseStatus: caseStatus$ | async,\n } as obs\"\n >\n <div class=\"case-status-assign-custom-title\" [ngClass]=\"{'--compact': compactMode$ | async}\">\n @if (obs.caseStatus) {\n <cds-tag size=\"sm\" [type]=\"obs.caseStatus.tagType\" [title]=\"obs.caseStatus.title\">{{\n obs.caseStatus.title\n }}</cds-tag>\n }\n\n <div [ngClass]=\"{'--compact': compactMode$ | async}\">\n <ng-container\n *ngTemplateOutlet=\"\n caseDetailAssignee;\n context: {\n canHaveAssignee: obs.canHaveAssignee,\n document: obs.document,\n canAssign: obs.canAssign,\n }\n \"\n ></ng-container>\n </div>\n\n <ng-container *ngTemplateOutlet=\"caseDetailHeader\"></ng-container>\n </div>\n\n <div class=\"buttons-container\">\n <v-overflow-menu\n *ngIf=\"obs.canHaveAssignee || obs.canDelete || obs.canInspect\"\n placement=\"bottom-end\"\n class=\"overflow-button assign-overflow\"\n [ngClass]=\"{'--compact': compactMode$ | async}\"\n >\n <v-overflow-menu-trigger\n overflowTrigger\n [compact]=\"compactMode$ | async\"\n ></v-overflow-menu-trigger>\n\n <ng-container\n *ngTemplateOutlet=\"\n claimButton;\n context: {canClaim: obs.canClaim, canHaveAssignee: obs.canHaveAssignee}\n \"\n >\n </ng-container>\n\n <ng-container\n *ngTemplateOutlet=\"\n unassignButton;\n context: {\n canAssign: obs.canAssign,\n canHaveAssignee: obs.canHaveAssignee,\n assigneeId: obs.assigneeId,\n }\n \"\n >\n </ng-container>\n\n <ng-container *ngTemplateOutlet=\"inspectButton; context: {canInspect: obs.canInspect}\">\n </ng-container>\n\n <ng-container *ngTemplateOutlet=\"deleteButton; context: {canDelete: obs.canDelete}\">\n </ng-container>\n </v-overflow-menu>\n\n <v-overflow-menu\n [ngClass]=\"{'--compact': compactMode$ | async}\"\n [menuWidth]=\"dropdownWidth$ | async\"\n placement=\"bottom-end\"\n class=\"overflow-button case-detail-overflow\"\n >\n <ng-container overflowTrigger>\n <ng-container *ngTemplateOutlet=\"customStartTrigger\"></ng-container>\n </ng-container>\n <v-overflow-menu-option\n *ngFor=\"let startableItem of startableItems\"\n [attr.title]=\"startableItem.displayName\"\n (selected)=\"startItem(startableItem)\"\n >\n {{ startableItem.displayName }}\n </v-overflow-menu-option>\n </v-overflow-menu>\n </div>\n </div>\n </ng-template>\n</ng-container>\n", styles: [".main-content{overflow:hidden;padding-bottom:0}.main-content--no-horizontal-overflow{overflow-x:hidden}.tab-container{height:min-content;min-height:300px;overflow-y:auto;overflow-x:hidden}.tab-container:has(>.tab--no-margin){padding:0!important}.tab-container:has(>.tab--no-min-height){min-height:unset}.tab-container:has(>.tab--no-background){background:transparent!important}.tab-content-container{display:flex;gap:32px;overflow:auto;margin-bottom:16px}.loading-container{display:flex;justify-content:center;flex-direction:row}.case-detail-tabs{display:flex;margin-bottom:24px}.case-detail-tabs cds-tab{display:none!important}.buttons-container{display:flex;flex-direction:row;gap:8px;align-items:center}.case-actions{display:flex;width:100%;justify-content:space-between;align-items:flex-end;padding-bottom:4px}.case-actions--compact,.case-actions--small-title{padding-bottom:0;align-items:flex-start}.case-actions ::ng-deep .version-selection{width:160px}.case-actions ::ng-deep .version-selection .cds--list-box__selection{display:none}.case-status-assign-custom-title{display:flex;gap:16px;align-items:flex-end}.case-status-assign-custom-title .cds--tag{margin:0;overflow:hidden;text-overflow:ellipsis;line-height:24px;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;max-width:100%}.case-status-assign-custom-title.--compact{align-items:center}.task-panel{width:100%;transition:height .15s ease-in-out}.split-area__content{height:100%!important}.split-area__content .tab-container{height:min-content!important;overflow:hidden!important}:host ::ng-deep .container-fluid{height:100%!important;width:100%!important;margin:0!important;padding:0!important}::ng-deep .tab-content-container .as-split-gutter{background-color:transparent!important;--_as-gutter-icon-disabled: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1' height='1'/%3E\");--_as-gutter-icon-horizontal: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAABQJJREFUeF7dWll22zAMpNwzlM5xmpMlOVl6mzrKHexWm8UFy4xIp+/FP3mxQWAwWAiRGsJ3/gwhhJvt4CRCfgCtosYhDOHm4SlW7rZyq9t/R7GsZoYQDhCA89UIrzakKuQtpRTiHv03ycJB3t8KuU9AByNfw5dWJpj1h5YABmGRsvgufzsSG21NEwGWUrv5yiuZb31yMZoAAjBFPqBdor9G0vpwu2+PBgE6TK/q0pUxxiwZxnE0SefkE0sHWQUygGG3ll0c2tGNn+M0DiSfHDlHQBu2rffoWgBWPRHWIUreM654li5bMwDQBIhI9naHFgVQCSS2PHliWlLm0/YsMrcwK6ISp1QGANhzG7XFDj2gUFr8yzrkydOJ6CyACBB1lIWkbPyeQ2UQ2ZKxksCLft4EaWqB/AshHCdg0b/1gB7wJB1QBrQ0ml4E2MMyFgxJ6iABuEGdgCUeZVQm+fQ7fhfAsflzAKFLS1G2ptmMwUpDl1oyAGxo2fw2hHBzjpsm+XiO2TGQF1GWACJGfecAjHmgCTZum/lQfezQTZ3L7z+g3goc2xGtFT86A0qLh5pgjPF13aLmv9aHdYiVn8uMwFNixQlYqVuNvayK3sZxNElgHarlP6duo2bpOcbXWxheVhkTj7Tv4ATsTG/OL6CG8DZ+KCQMIcSf6HnAAo8hrAjGRpIblLxveDm8/q4YC6fT6flyufzWBhXGoTWd4QOUp6enX9fr9X2od6SFhJlTu4FBGZA5n+jbnddZjPG8nz8lo222ItHJEraRICAAMmG6rPGb2FTjedqHsET+4/Lbu+phHWLlJ/g+Cd4gpJDgp71HHzAHFCqOEFCSULjrNkaxw2rO/zidnv/MNY99WIcY+TKufibUmOcSEB5IxLTHXLal2FG4h83VPzET1h6wUxDP8fXfJW5V8xuQhqFwVtGNgDuQ6Yo367Pb9ixdjVckVE1QS/0ekZhybRw/zMZblkBpd1sMPIdJkAsClF2ghQQPYJYBQjp5BKCBEHD4JZDi6bED3AebRDFbAp58Ski3JrgphQcgozEwXZ2dBH3nZ2Bq5KcyahuEgO1wIWBnyIuoS5hA9pHIp01dnANSdlvKwXWocRC6Pw/U70MBozCQAWI5JKDF5wFrtk8uR6XKYQibnL9dr+/CjgA5v81AamMFByTTmOhQp56hPw5/vrrvx61euz2gZKfHgcj98bUkgjo/WJCxeMrJFyQgR8ocQcGnwqsJpgSK8pymTPeIThus4DKwBKWJFNsFklEcOT9ApyFADswAQJMiwkaUldeQ7ZTKDWf79tsSgIasDwGduro1CbY+hVqZgpJ1SA5L6bQHMJNjOy19MsCgBiNgV8DK+1GxSXoYAcMwhNttOedPIZTPAhm8bQ6Anx57ZMBGgfHuXs6yuEANBBtR/2bIjzkj8bAMSIYU+KLDaoKSU8KFCOP7LAsTcDTZ2jPAfrUWf3VGnwdo1pgF5xiz9yhazwOExwfv9suEm2XArJwNtSP/+AxgwlHL1iVwiAUdhEaAxhtLWGbZDEbPEiCyhHWIla93KO7AvMoAwre7bW5jxCAfwaHnoa4N3gVU5X2RthX0gdVNBPhDZnYgzMH7ImKbCOA8wnfsVO+jeUgIEHfYFUs7jHYNLN2YvJkBXwYaNuQIwnp2cgoCag3LN1Z2+EwfwCVPLPAOJ1n05oDt9x5oRR37Pb72s/e+kU81L/EXSRwjcUdkvjUAAAAASUVORK5CYII=)}::ng-deep .tab-content-container .as-split-gutter-icon{background-repeat:no-repeat;background-size:16px 16px}::ng-deep .tab-content-container--dark .as-split-gutter{--_as-gutter-icon-horizontal: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAABPlJREFUeF7tm1tW3DAMhu2+krCmdmWlKytrIuGV9HjixDddfjkOtOd0XmAGWZfPsiw7g3fVyzvntvpD9H01+JIuwCamX5YKf9VfmCVaDze2S2fXIDG+CGC8YsrqMCvDFDmHZYCeI5gE6LietD2LlNb6uQAQTLWfCDTLmLpOIfoRvxEZydZn+pH7+vdlAEJyoIwIwDIrFtk7C2TyA/Po9gxY1zVWrN2haZq85FqS3zEF+YET3qi6rFzjfAR0yGkBwQA0wyFU75zf5MaOBYDoR2YGDigqY+U7HOKHlAsFiQOXqax+JYCYBGJr32ZAB+lEpxwc3i1nDcDWtBUYPjN8p35VBxf/4/MQUI7lqAGPzwjYBQDv3PQ0+Ue/CjV/sODp8+UiyNE7XLHO6EM+Dg4/ntBdAI69zdIqBlgTlDldADLN9a7R551cDot0kDPNbn40AIh6LSS4DS0Be9jJg7sAXPHJfBZojbXriMscGgDvvhUYmRGEes6iocJiyVejWdelYDPNk5cquhnAxVSAlgDZQG/7bUqKjvZEDqgdYwaAzQsrVQHowFkPqd5bA4LlO1ytp+zoFM0Ml2V5CYPmeX78lF7v67rla8B6GpynKZxnxBfmD03MvASCMe/9z+DRtm2/SAiZLXRGqcapbYTaICB/BHwggN1wbuzQSUHI3UQBHPqo+wPO/7dlefkWJ0PyR0ofEIAjg49Z8GOe51fOCAYgIcPkd2vLsnz33v+ubadJ0TZw8Fqcmnkk+CBjCahHXodQ49mhHGjUDJCDf37Vjmn54Sa4MuxGaL/weWzDdggJigjgDL7KpG3bxLTPmY/PALqa90JgAahpf/ohb8jjAfAlrQdCCSDG0gRPxCiHzf81XwKUVA1M7gDwbojbspsM4GZea3jov5cFp6cGoHYRFCWE5FthQwKAGCnLS9vD6UXwXbnIRpGUcsH3D6JxI2sADwFHwEnqAI4HKW0AB07ci6QDXgLHELUIghPxbxRBBukICDuAZMCaAbu8XnLf1K4wzBjdGYpzSUGI66ntBQg/8QzYB+PyyW18++sAEHvu8wSY02IbosyONaBTPj7XO6/F+SxVzgPKRooWlN7l0A0g+i0tGXrmvdu2D/qYTrBgO0GKG3ocRlrhB/jm6a13zR2i8GAk+BOOw/lmy95RMIlgAlAvh4ex5/ll5CUndYMkJfGNFyL84sCuoHa3tSVQW9HkGxjeueUNv6Krx7dbTO5R/J1FARSQ9X3d8gyh13RSZAYA9iOcmHkJWO1ZA+LkRdbaRAlO3wogKL/+/YDZl5cuFQogC/P4k/j+mx0AYVDyYVQGWDMPlbcDQDVHOREA1DmGDAgv7emA0bEofgmAmn3euXUpT3d9Z4G+4PRR+6PR9oigRqarPiT6ng4nBzRguCe0ZJEBatyqQGvkfw249VtiHTNSzdGZAddVESmW1YBDv5bSpoxBnOZkst7h6jISx5sCEltnJFp7KKkG3KNfPQvULluB2UMuR1zaBiXjB08+IJr4FQA9c3gDgNINKSDK4SCff67VjEsZEI+Cl3Scg3vwA4cU6uu0bRL3d4k3ZEDm3mAoY2YqdX7BvVsA2OJW9qlhUe+KQvObX1DYANS+2iIdHArR0bArgXfUBoAMoewopH9ROd3oBmcZiMkOANA3sXUq9mm5Pqrvq7IYXLo3Vs713ao7WRAZ8NULfTACRd0fdjtUcYyr1cIAAAAASUVORK5CYII=)}.spacing-case-tags{margin-bottom:8px}\n/*!\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i6$1.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "component", type: i4$1.Loading, selector: "cds-loading, ibm-loading", inputs: ["title", "isActive", "size", "overlay"] }, { kind: "directive", type: i4$1.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "directive", type: i4$1.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: i2$1.ConfirmationModalComponent, selector: "valtimo-confirmation-modal", inputs: ["titleTranslationKey", "title", "content", "contentTranslationKey", "confirmButtonText", "confirmButtonTextTranslationKey", "confirmButtonType", "showOptionalButton", "optionalButtonText", "optionalButtonTextTranslationKey", "optionalButtonType", "cancelButtonText", "cancelButtonTextTranslationKey", "cancelButtonType", "showModalSubject$", "outputOnConfirm", "outputOnOptional", "spacerAfterCancelButton"], outputs: ["confirmEvent", "optionalEvent", "cancelEvent"] }, { kind: "component", type: i4$1.Tabs, selector: "cds-tabs, ibm-tabs", inputs: ["position", "cacheActive", "followFocus", "isNavigation", "ariaLabel", "ariaLabelledby", "type", "theme", "skeleton"] }, { kind: "component", type: i4$1.Tab, selector: "cds-tab, ibm-tab", inputs: ["heading", "title", "context", "active", "disabled", "tabIndex", "id", "cacheActive", "tabContent", "templateContext"], outputs: ["selected"] }, { kind: "component", type: i2$1.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "directive", type: i2$1.RenderInPageHeaderDirective, selector: "[renderInPageHeader]", inputs: ["fullWidth"] }, { kind: "component", type: i4$1.Tag, selector: "cds-tag, ibm-tag", inputs: ["type", "size", "class", "skeleton"] }, { kind: "component", type: i2$1.OverflowMenuComponent, selector: "v-overflow-menu", inputs: ["open", "placement", "menuWidth", "offsetX", "offsetY", "closeOnSelect", "useHostAsReference", "portalToBody"], outputs: ["openChange"] }, { kind: "component", type: i2$1.OverflowMenuOptionComponent, selector: "v-overflow-menu-option", inputs: ["disabled", "type", "testId", "optionId"], outputs: ["selected"] }, { kind: "component", type: i2$1.OverflowMenuTriggerComponent, selector: "v-overflow-menu-trigger", inputs: ["compact"] }, { kind: "component", type: CaseDetailTaskListComponent, selector: "valtimo-case-detail-task-list", inputs: ["openTaskAndProcessLinkInModal"], outputs: ["taskClickEvent", "formSubmitEvent"] }, { kind: "component", type: CaseDetailsTaskDetailComponent, selector: "valtimo-case-detail-task-detail", inputs: ["taskAndProcessLink"], outputs: ["closeEvent", "assignmentOfTaskChanged", "dueDateChanged", "activeChange", "formSubmit"] }, { kind: "component", type: i17.SplitComponent, selector: "as-split", inputs: ["gutterSize", "gutterStep", "disabled", "gutterClickDeltaPx", "direction", "dir", "unit", "gutterAriaLabel", "restrictMove", "useTransition", "gutterDblClickDuration"], outputs: ["gutterClick", "gutterDblClick", "dragStart", "dragEnd", "transitionEnd"], exportAs: ["asSplit"] }, { kind: "component", type: i17.SplitAreaComponent, selector: "as-split-area", inputs: ["size", "minSize", "maxSize", "lockSize", "visible"], exportAs: ["asSplitArea"] }, { kind: "component", type: CaseDetailHeaderWidgetComponent, selector: "valtimo-case-detail-header-widget" }, { kind: "directive", type: i2$1.ObserveSizeDirective, selector: "[observeSize]", outputs: ["widthChange", "heightChange"] }, { kind: "component", type: i2$1.AssignmentComponent, selector: "valtimo-assignment", inputs: ["mode", "hasPermission", "assigneeId", "assigneeFullName", "assignedTeamKey", "assignedTeamTitle", "candidateUsers$", "candidateTeams$"], outputs: ["assignmentChangedEvent", "unassignedEvent"] }, { kind: "component", type: CaseSupportingProcessStartModalComponent, selector: "valtimo-case-supporting-process-start-modal", inputs: ["isAdmin"], outputs: ["formSubmit"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "pipe", type: TabTranslatePipe, name: "tabTranslate" }] }); }
|
|
5286
5437
|
}
|
|
5287
5438
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseDetailComponent, decorators: [{
|
|
5288
5439
|
type: Component,
|
|
5289
|
-
args: [{ standalone: false, providers: [CaseTabService, CaseDetailLayoutService, ObserveSizeDirective], template: "<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<div\n class=\"main-content\"\n [ngClass]=\"{'main-content--no-horizontal-overflow': $tabHorizontalOverflowDisabled()}\"\n>\n <div class=\"container-fluid\">\n <div\n class=\"main-content__header\"\n observeSize\n (heightChange)=\"onMainContentHeaderHeightChange($event)\"\n >\n <valtimo-case-detail-header-widget></valtimo-case-detail-header-widget>\n\n <ng-container *ngIf=\"caseTags$ | async as caseTags\">\n @if ((caseTags || []).length > 0) {\n <div class=\"spacing-case-tags\">\n @for (tag of caseTags; track tag) {\n <cds-tag size=\"sm\" [type]=\"tag.tagType\">\n {{ tag.title }}\n </cds-tag>\n }\n </div>\n }\n </ng-container>\n\n <ng-container *ngTemplateOutlet=\"tabs\"></ng-container>\n\n <ng-template #tabs>\n <ng-container *ngIf=\"{activeTab: activeTab$ | async} as obs\">\n <cds-tabs *ngIf=\"tabLoader\" type=\"inline\" class=\"case-detail-tabs\">\n <cds-tab\n *ngFor=\"let tab of tabLoader.tabs\"\n [active]=\"tab.name === (activeTabName$ | async)\"\n heading=\"{{ tab | tabTranslate | async }}\"\n (selected)=\"onTabSelected(tab, obs.activeTab)\"\n ></cds-tab>\n </cds-tabs>\n </ng-container>\n </ng-template>\n </div>\n\n <div\n *ngIf=\"{\n noTabsConfigured: noTabsConfigured$ | async,\n showTaskList: showTaskList$ | async,\n showNoAccess: showNoAccess$ | async,\n caseDetailLayout: caseDetailLayout$ | async,\n openTaskAndProcessLinkInModal: openTaskAndProcessLinkInModal$ | async,\n taskAndProcessLinkOpenedInPanel: taskAndProcessLinkOpenedInPanel$ | async,\n isDarkMode: isDarkMode$ | async,\n compactMode: compactMode$ | async,\n tabContentContainerMaxHeight: tabContentContainerMaxHeight$ | async,\n } as tabContentObs\"\n #tabContentContainer\n class=\"tab-content-container\"\n [ngClass]=\"{\n 'tab-content-container--dark': tabContentObs.isDarkMode,\n 'tab-content-container--compact': tabContentObs.compactMode,\n }\"\n [style.max-height]=\"tabContentObs.tabContentContainerMaxHeight\"\n [style.height]=\"tabContentObs.tabContentContainerMaxHeight\"\n >\n <as-split\n direction=\"horizontal\"\n [disabled]=\"!tabContentObs.caseDetailLayout.widthAdjustable\"\n [gutterSize]=\"CASE_DETAIL_GUTTER_SIZE\"\n [unit]=\"tabContentObs.caseDetailLayout.unit\"\n class=\"split-area\"\n >\n <as-split-area\n [size]=\"tabContentObs.caseDetailLayout.leftPanelWidth\"\n [minSize]=\"tabContentObs.caseDetailLayout.leftPanelMinWidth\"\n [maxSize]=\"tabContentObs.caseDetailLayout.leftPanelMaxWidth\"\n class=\"split-area__content\"\n >\n <div\n class=\"card-body bg-white p-5 position-relative tab-container\"\n [class.tab-container--compact]=\"compactMode$ | async\"\n >\n <div *ngIf=\"loadingTabs$ | async\" class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n\n <valtimo-no-results\n *ngIf=\"tabContentObs.showNoAccess\"\n description=\"{{ 'case.noAccess.description' | translate }}\"\n title=\"{{ 'case.noAccess.title' | translate }}\"\n illustration=\"valtimo-layout/img/emptystate-not-authorised.svg\"\n >\n </valtimo-no-results>\n\n <valtimo-no-results\n *ngIf=\"tabContentObs.noTabsConfigured\"\n [description]=\"'case.tabs.noResultsDescription' | translate\"\n [title]=\"'case.tabs.noResults' | translate\"\n ></valtimo-no-results>\n\n <ng-template #tabContainer></ng-template>\n\n <div class=\"clearfix\"></div>\n </div>\n </as-split-area>\n\n <as-split-area\n *ngIf=\"tabContentObs.caseDetailLayout.showRightPanel\"\n [size]=\"tabContentObs.caseDetailLayout.rightPanelWidth\"\n [minSize]=\"tabContentObs.caseDetailLayout.rightPanelMinWidth\"\n [maxSize]=\"tabContentObs.caseDetailLayout.rightPanelMaxWidth\"\n >\n @if (tabContentObs.showTaskList) {\n <div class=\"task-panel\">\n @if (!tabContentObs.taskAndProcessLinkOpenedInPanel) {\n <valtimo-case-detail-task-list\n [openTaskAndProcessLinkInModal]=\"tabContentObs.openTaskAndProcessLinkInModal\"\n (taskClickEvent)=\"onTaskClickEvent($event)\"\n (formSubmitEvent)=\"onFormSubmitEvent()\"\n ></valtimo-case-detail-task-list>\n }\n\n @if (tabContentObs.taskAndProcessLinkOpenedInPanel) {\n <valtimo-case-detail-task-detail\n [taskAndProcessLink]=\"tabContentObs.taskAndProcessLinkOpenedInPanel\"\n (activeChange)=\"onActiveChangeEvent($event)\"\n (closeEvent)=\"onTaskDetailsClose()\"\n (formSubmit)=\"onFormSubmitEvent()\"\n (dueDateChanged)=\"onDueDateChanged()\"\n >\n </valtimo-case-detail-task-detail>\n }\n </div>\n }\n </as-split-area>\n </as-split>\n </div>\n </div>\n\n <valtimo-case-supporting-process-start-modal\n [isAdmin]=\"isAdmin$ | async\"\n (formSubmit)=\"onFormSubmitEvent()\"\n #supportingProcessStartModal\n ></valtimo-case-supporting-process-start-modal>\n</div>\n\n<ng-template\n #caseDetailHeader\n let-canHaveAssignee=\"canHaveAssignee\"\n let-document=\"document\"\n let-canAssign=\"canAssign\"\n>\n <ng-container\n *ngTemplateOutlet=\"\n caseDetailAssignee;\n context: {canHaveAssignee: canHaveAssignee, document: document, canAssign: canAssign}\n \"\n ></ng-container>\n</ng-template>\n\n<ng-template\n #caseDetailAssignee\n let-canHaveAssignee=\"canHaveAssignee\"\n let-document=\"document\"\n let-canAssign=\"canAssign\"\n>\n <div *ngIf=\"canHaveAssignee && document\">\n <valtimo-assignment\n *ngIf=\"canAssignLoaded$ | async\"\n mode=\"case\"\n [assigneeFullName]=\"document?.assigneeFullName\"\n [assigneeId]=\"document.assigneeId\"\n [assignedTeamKey]=\"document.assignedTeamKey\"\n [assignedTeamTitle]=\"document.assignedTeamTitle\"\n [hasPermission]=\"canAssign\"\n [candidateUsers$]=\"candidateUsers$\"\n [candidateTeams$]=\"candidateTeams$\"\n (assignmentChangedEvent)=\"onAssignmentChanged($event)\"\n (unassignedEvent)=\"onUnassigned()\"\n ></valtimo-assignment>\n </div>\n</ng-template>\n\n<ng-template #claimButton let-canClaim=\"canClaim\" let-canHaveAssignee=\"canHaveAssignee\">\n <v-overflow-menu-option\n *ngIf=\"canClaim && canHaveAssignee\"\n [disabled]=\"(isAssigning$ | async) || (isAssignedToCurrentUser$ | async)\"\n (selected)=\"claimAssignee()\"\n >\n {{ 'case.claimAssigneeCase' | translate }}\n </v-overflow-menu-option>\n</ng-template>\n\n<ng-template\n #unassignButton\n let-canAssign=\"canAssign\"\n let-canHaveAssignee=\"canHaveAssignee\"\n let-assigneeId=\"assigneeId\"\n>\n <v-overflow-menu-option\n *ngIf=\"canHaveAssignee && canAssign\"\n [disabled]=\"!assigneeId\"\n (selected)=\"unassignAssignee()\"\n >\n {{ 'assignDocument.remove' | translate }}\n </v-overflow-menu-option>\n</ng-template>\n\n<ng-template #deleteButton let-canDelete=\"canDelete\">\n <v-overflow-menu-option\n *ngIf=\"canDelete\"\n [disabled]=\"isDeleting$ | async\"\n (selected)=\"deleteDocument()\"\n type=\"danger\"\n >\n {{ 'case.delete.delete' | translate }}\n </v-overflow-menu-option>\n</ng-template>\n\n<ng-template #customStartTrigger>\n <button\n [size]=\"(compactMode$ | async) ? 'sm' : 'lg'\"\n cdsButton=\"primary\"\n [disabled]=\"startableItems.length === 0\"\n [ngbTooltip]=\"startableItems.length === 0 ? 'No action' : null\"\n >\n {{ 'case.startSubProcess' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"chevron--down\" size=\"16\"></svg>\n </button>\n</ng-template>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"case.delete.confirm\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"case.delete.description\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"case.delete.delete\"\n (confirmEvent)=\"onConfirmDelete()\"\n></valtimo-confirmation-modal>\n\n<ng-container renderInPageHeader [fullWidth]=\"true\">\n <ng-template>\n <div\n class=\"case-actions\"\n [ngClass]=\"{\n 'case-actions--compact': compactMode$ | async,\n 'case-actions--small-title': smallTitle$ | async,\n }\"\n *ngIf=\"{\n assigneeId: assigneeId$ | async,\n canAssign: canAssign$ | async,\n canClaim: canClaim$ | async,\n canHaveAssignee: canHaveAssignee$ | async,\n canDelete: canDelete$ | async,\n document: document$ | async,\n caseStatus: caseStatus$ | async,\n } as obs\"\n >\n <div class=\"case-status-assign-custom-title\" [ngClass]=\"{'--compact': compactMode$ | async}\">\n @if (obs.caseStatus) {\n <cds-tag size=\"sm\" [type]=\"obs.caseStatus.tagType\" [title]=\"obs.caseStatus.title\">{{\n obs.caseStatus.title\n }}</cds-tag>\n }\n\n <div [ngClass]=\"{'--compact': compactMode$ | async}\">\n <ng-container\n *ngTemplateOutlet=\"\n caseDetailAssignee;\n context: {\n canHaveAssignee: obs.canHaveAssignee,\n document: obs.document,\n canAssign: obs.canAssign,\n }\n \"\n ></ng-container>\n </div>\n\n <ng-container *ngTemplateOutlet=\"caseDetailHeader\"></ng-container>\n </div>\n\n <div class=\"buttons-container\">\n <v-overflow-menu\n *ngIf=\"obs.canHaveAssignee || obs.canDelete\"\n placement=\"bottom-end\"\n class=\"overflow-button assign-overflow\"\n [ngClass]=\"{'--compact': compactMode$ | async}\"\n >\n <v-overflow-menu-trigger\n overflowTrigger\n [compact]=\"compactMode$ | async\"\n ></v-overflow-menu-trigger>\n\n <ng-container\n *ngTemplateOutlet=\"\n claimButton;\n context: {canClaim: obs.canClaim, canHaveAssignee: obs.canHaveAssignee}\n \"\n >\n </ng-container>\n\n <ng-container\n *ngTemplateOutlet=\"\n unassignButton;\n context: {\n canAssign: obs.canAssign,\n canHaveAssignee: obs.canHaveAssignee,\n assigneeId: obs.assigneeId,\n }\n \"\n >\n </ng-container>\n\n <ng-container *ngTemplateOutlet=\"deleteButton; context: {canDelete: obs.canDelete}\">\n </ng-container>\n </v-overflow-menu>\n\n <v-overflow-menu\n [ngClass]=\"{'--compact': compactMode$ | async}\"\n [menuWidth]=\"dropdownWidth$ | async\"\n placement=\"bottom-end\"\n class=\"overflow-button case-detail-overflow\"\n >\n <ng-container overflowTrigger>\n <ng-container *ngTemplateOutlet=\"customStartTrigger\"></ng-container>\n </ng-container>\n <v-overflow-menu-option\n *ngFor=\"let startableItem of startableItems\"\n [attr.title]=\"startableItem.displayName\"\n (selected)=\"startItem(startableItem)\"\n >\n {{ startableItem.displayName }}\n </v-overflow-menu-option>\n </v-overflow-menu>\n </div>\n </div>\n </ng-template>\n</ng-container>\n", styles: [".main-content{overflow:hidden;padding-bottom:0}.main-content--no-horizontal-overflow{overflow-x:hidden}.tab-container{height:min-content;min-height:300px;overflow-y:auto;overflow-x:hidden}.tab-container:has(>.tab--no-margin){padding:0!important}.tab-container:has(>.tab--no-min-height){min-height:unset}.tab-container:has(>.tab--no-background){background:transparent!important}.tab-content-container{display:flex;gap:32px;overflow:auto;margin-bottom:16px}.loading-container{display:flex;justify-content:center;flex-direction:row}.case-detail-tabs{display:flex;margin-bottom:24px}.case-detail-tabs cds-tab{display:none!important}.buttons-container{display:flex;flex-direction:row;gap:8px;align-items:center}.case-actions{display:flex;width:100%;justify-content:space-between;align-items:flex-end;padding-bottom:4px}.case-actions--compact,.case-actions--small-title{padding-bottom:0;align-items:flex-start}.case-actions ::ng-deep .version-selection{width:160px}.case-actions ::ng-deep .version-selection .cds--list-box__selection{display:none}.case-status-assign-custom-title{display:flex;gap:16px;align-items:flex-end}.case-status-assign-custom-title .cds--tag{margin:0;overflow:hidden;text-overflow:ellipsis;line-height:24px;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;max-width:100%}.case-status-assign-custom-title.--compact{align-items:center}.task-panel{width:100%;transition:height .15s ease-in-out}.split-area__content{height:100%!important}.split-area__content .tab-container{height:min-content!important;overflow:hidden!important}:host ::ng-deep .container-fluid{height:100%!important;width:100%!important;margin:0!important;padding:0!important}::ng-deep .tab-content-container .as-split-gutter{background-color:transparent!important;--_as-gutter-icon-disabled: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1' height='1'/%3E\");--_as-gutter-icon-horizontal: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAABQJJREFUeF7dWll22zAMpNwzlM5xmpMlOVl6mzrKHexWm8UFy4xIp+/FP3mxQWAwWAiRGsJ3/gwhhJvt4CRCfgCtosYhDOHm4SlW7rZyq9t/R7GsZoYQDhCA89UIrzakKuQtpRTiHv03ycJB3t8KuU9AByNfw5dWJpj1h5YABmGRsvgufzsSG21NEwGWUrv5yiuZb31yMZoAAjBFPqBdor9G0vpwu2+PBgE6TK/q0pUxxiwZxnE0SefkE0sHWQUygGG3ll0c2tGNn+M0DiSfHDlHQBu2rffoWgBWPRHWIUreM654li5bMwDQBIhI9naHFgVQCSS2PHliWlLm0/YsMrcwK6ISp1QGANhzG7XFDj2gUFr8yzrkydOJ6CyACBB1lIWkbPyeQ2UQ2ZKxksCLft4EaWqB/AshHCdg0b/1gB7wJB1QBrQ0ml4E2MMyFgxJ6iABuEGdgCUeZVQm+fQ7fhfAsflzAKFLS1G2ptmMwUpDl1oyAGxo2fw2hHBzjpsm+XiO2TGQF1GWACJGfecAjHmgCTZum/lQfezQTZ3L7z+g3goc2xGtFT86A0qLh5pgjPF13aLmv9aHdYiVn8uMwFNixQlYqVuNvayK3sZxNElgHarlP6duo2bpOcbXWxheVhkTj7Tv4ATsTG/OL6CG8DZ+KCQMIcSf6HnAAo8hrAjGRpIblLxveDm8/q4YC6fT6flyufzWBhXGoTWd4QOUp6enX9fr9X2od6SFhJlTu4FBGZA5n+jbnddZjPG8nz8lo222ItHJEraRICAAMmG6rPGb2FTjedqHsET+4/Lbu+phHWLlJ/g+Cd4gpJDgp71HHzAHFCqOEFCSULjrNkaxw2rO/zidnv/MNY99WIcY+TKufibUmOcSEB5IxLTHXLal2FG4h83VPzET1h6wUxDP8fXfJW5V8xuQhqFwVtGNgDuQ6Yo367Pb9ixdjVckVE1QS/0ekZhybRw/zMZblkBpd1sMPIdJkAsClF2ghQQPYJYBQjp5BKCBEHD4JZDi6bED3AebRDFbAp58Ski3JrgphQcgozEwXZ2dBH3nZ2Bq5KcyahuEgO1wIWBnyIuoS5hA9pHIp01dnANSdlvKwXWocRC6Pw/U70MBozCQAWI5JKDF5wFrtk8uR6XKYQibnL9dr+/CjgA5v81AamMFByTTmOhQp56hPw5/vrrvx61euz2gZKfHgcj98bUkgjo/WJCxeMrJFyQgR8ocQcGnwqsJpgSK8pymTPeIThus4DKwBKWJFNsFklEcOT9ApyFADswAQJMiwkaUldeQ7ZTKDWf79tsSgIasDwGduro1CbY+hVqZgpJ1SA5L6bQHMJNjOy19MsCgBiNgV8DK+1GxSXoYAcMwhNttOedPIZTPAhm8bQ6Anx57ZMBGgfHuXs6yuEANBBtR/2bIjzkj8bAMSIYU+KLDaoKSU8KFCOP7LAsTcDTZ2jPAfrUWf3VGnwdo1pgF5xiz9yhazwOExwfv9suEm2XArJwNtSP/+AxgwlHL1iVwiAUdhEaAxhtLWGbZDEbPEiCyhHWIla93KO7AvMoAwre7bW5jxCAfwaHnoa4N3gVU5X2RthX0gdVNBPhDZnYgzMH7ImKbCOA8wnfsVO+jeUgIEHfYFUs7jHYNLN2YvJkBXwYaNuQIwnp2cgoCag3LN1Z2+EwfwCVPLPAOJ1n05oDt9x5oRR37Pb72s/e+kU81L/EXSRwjcUdkvjUAAAAASUVORK5CYII=)}::ng-deep .tab-content-container .as-split-gutter-icon{background-repeat:no-repeat;background-size:16px 16px}::ng-deep .tab-content-container--dark .as-split-gutter{--_as-gutter-icon-horizontal: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAABPlJREFUeF7tm1tW3DAMhu2+krCmdmWlKytrIuGV9HjixDddfjkOtOd0XmAGWZfPsiw7g3fVyzvntvpD9H01+JIuwCamX5YKf9VfmCVaDze2S2fXIDG+CGC8YsrqMCvDFDmHZYCeI5gE6LietD2LlNb6uQAQTLWfCDTLmLpOIfoRvxEZydZn+pH7+vdlAEJyoIwIwDIrFtk7C2TyA/Po9gxY1zVWrN2haZq85FqS3zEF+YET3qi6rFzjfAR0yGkBwQA0wyFU75zf5MaOBYDoR2YGDigqY+U7HOKHlAsFiQOXqax+JYCYBGJr32ZAB+lEpxwc3i1nDcDWtBUYPjN8p35VBxf/4/MQUI7lqAGPzwjYBQDv3PQ0+Ue/CjV/sODp8+UiyNE7XLHO6EM+Dg4/ntBdAI69zdIqBlgTlDldADLN9a7R551cDot0kDPNbn40AIh6LSS4DS0Be9jJg7sAXPHJfBZojbXriMscGgDvvhUYmRGEes6iocJiyVejWdelYDPNk5cquhnAxVSAlgDZQG/7bUqKjvZEDqgdYwaAzQsrVQHowFkPqd5bA4LlO1ytp+zoFM0Ml2V5CYPmeX78lF7v67rla8B6GpynKZxnxBfmD03MvASCMe/9z+DRtm2/SAiZLXRGqcapbYTaICB/BHwggN1wbuzQSUHI3UQBHPqo+wPO/7dlefkWJ0PyR0ofEIAjg49Z8GOe51fOCAYgIcPkd2vLsnz33v+ubadJ0TZw8Fqcmnkk+CBjCahHXodQ49mhHGjUDJCDf37Vjmn54Sa4MuxGaL/weWzDdggJigjgDL7KpG3bxLTPmY/PALqa90JgAahpf/ohb8jjAfAlrQdCCSDG0gRPxCiHzf81XwKUVA1M7gDwbojbspsM4GZea3jov5cFp6cGoHYRFCWE5FthQwKAGCnLS9vD6UXwXbnIRpGUcsH3D6JxI2sADwFHwEnqAI4HKW0AB07ci6QDXgLHELUIghPxbxRBBukICDuAZMCaAbu8XnLf1K4wzBjdGYpzSUGI66ntBQg/8QzYB+PyyW18++sAEHvu8wSY02IbosyONaBTPj7XO6/F+SxVzgPKRooWlN7l0A0g+i0tGXrmvdu2D/qYTrBgO0GKG3ocRlrhB/jm6a13zR2i8GAk+BOOw/lmy95RMIlgAlAvh4ex5/ll5CUndYMkJfGNFyL84sCuoHa3tSVQW9HkGxjeueUNv6Krx7dbTO5R/J1FARSQ9X3d8gyh13RSZAYA9iOcmHkJWO1ZA+LkRdbaRAlO3wogKL/+/YDZl5cuFQogC/P4k/j+mx0AYVDyYVQGWDMPlbcDQDVHOREA1DmGDAgv7emA0bEofgmAmn3euXUpT3d9Z4G+4PRR+6PR9oigRqarPiT6ng4nBzRguCe0ZJEBatyqQGvkfw249VtiHTNSzdGZAddVESmW1YBDv5bSpoxBnOZkst7h6jISx5sCEltnJFp7KKkG3KNfPQvULluB2UMuR1zaBiXjB08+IJr4FQA9c3gDgNINKSDK4SCff67VjEsZEI+Cl3Scg3vwA4cU6uu0bRL3d4k3ZEDm3mAoY2YqdX7BvVsA2OJW9qlhUe+KQvObX1DYANS+2iIdHArR0bArgXfUBoAMoewopH9ROd3oBmcZiMkOANA3sXUq9mm5Pqrvq7IYXLo3Vs713ao7WRAZ8NULfTACRd0fdjtUcYyr1cIAAAAASUVORK5CYII=)}.spacing-case-tags{margin-bottom:8px}\n/*!\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
5290
|
-
}], ctorParameters: () => [{ type: i2$1.BreadcrumbService }, { type: i2.CaseStatusService }, { type: i2$1.CdsThemeService }, { type: i0.ComponentFactoryResolver }, { type: i2.DocumentService }, { type: CaseDetailLayoutService }, { type: CaseService }, { type: CaseTabService }, { type:
|
|
5440
|
+
args: [{ standalone: false, providers: [CaseTabService, CaseDetailLayoutService, ObserveSizeDirective], template: "<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<div\n class=\"main-content\"\n [ngClass]=\"{'main-content--no-horizontal-overflow': $tabHorizontalOverflowDisabled()}\"\n>\n <div class=\"container-fluid\">\n <div\n class=\"main-content__header\"\n observeSize\n (heightChange)=\"onMainContentHeaderHeightChange($event)\"\n >\n <valtimo-case-detail-header-widget></valtimo-case-detail-header-widget>\n\n <ng-container *ngIf=\"caseTags$ | async as caseTags\">\n @if ((caseTags || []).length > 0) {\n <div class=\"spacing-case-tags\">\n @for (tag of caseTags; track tag) {\n <cds-tag size=\"sm\" [type]=\"tag.tagType\">\n {{ tag.title }}\n </cds-tag>\n }\n </div>\n }\n </ng-container>\n\n <ng-container *ngTemplateOutlet=\"tabs\"></ng-container>\n\n <ng-template #tabs>\n <ng-container *ngIf=\"{activeTab: activeTab$ | async} as obs\">\n <cds-tabs *ngIf=\"tabLoader\" type=\"inline\" class=\"case-detail-tabs\">\n <cds-tab\n *ngFor=\"let tab of tabLoader.tabs\"\n [active]=\"tab.name === (activeTabName$ | async)\"\n heading=\"{{ tab | tabTranslate | async }}\"\n (selected)=\"onTabSelected(tab, obs.activeTab)\"\n ></cds-tab>\n </cds-tabs>\n </ng-container>\n </ng-template>\n </div>\n\n <div\n *ngIf=\"{\n noTabsConfigured: noTabsConfigured$ | async,\n showTaskList: showTaskList$ | async,\n showNoAccess: showNoAccess$ | async,\n caseDetailLayout: caseDetailLayout$ | async,\n openTaskAndProcessLinkInModal: openTaskAndProcessLinkInModal$ | async,\n taskAndProcessLinkOpenedInPanel: taskAndProcessLinkOpenedInPanel$ | async,\n isDarkMode: isDarkMode$ | async,\n compactMode: compactMode$ | async,\n tabContentContainerMaxHeight: tabContentContainerMaxHeight$ | async,\n } as tabContentObs\"\n #tabContentContainer\n class=\"tab-content-container\"\n [ngClass]=\"{\n 'tab-content-container--dark': tabContentObs.isDarkMode,\n 'tab-content-container--compact': tabContentObs.compactMode,\n }\"\n [style.max-height]=\"tabContentObs.tabContentContainerMaxHeight\"\n [style.height]=\"tabContentObs.tabContentContainerMaxHeight\"\n >\n <as-split\n direction=\"horizontal\"\n [disabled]=\"!tabContentObs.caseDetailLayout.widthAdjustable\"\n [gutterSize]=\"CASE_DETAIL_GUTTER_SIZE\"\n [unit]=\"tabContentObs.caseDetailLayout.unit\"\n class=\"split-area\"\n >\n <as-split-area\n [size]=\"tabContentObs.caseDetailLayout.leftPanelWidth\"\n [minSize]=\"tabContentObs.caseDetailLayout.leftPanelMinWidth\"\n [maxSize]=\"tabContentObs.caseDetailLayout.leftPanelMaxWidth\"\n class=\"split-area__content\"\n >\n <div\n class=\"card-body bg-white p-5 position-relative tab-container\"\n [class.tab-container--compact]=\"compactMode$ | async\"\n >\n <div *ngIf=\"loadingTabs$ | async\" class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n\n <valtimo-no-results\n *ngIf=\"tabContentObs.showNoAccess\"\n description=\"{{ 'case.noAccess.description' | translate }}\"\n title=\"{{ 'case.noAccess.title' | translate }}\"\n illustration=\"valtimo-layout/img/emptystate-not-authorised.svg\"\n >\n </valtimo-no-results>\n\n <valtimo-no-results\n *ngIf=\"tabContentObs.noTabsConfigured\"\n [description]=\"'case.tabs.noResultsDescription' | translate\"\n [title]=\"'case.tabs.noResults' | translate\"\n ></valtimo-no-results>\n\n <ng-template #tabContainer></ng-template>\n\n <div class=\"clearfix\"></div>\n </div>\n </as-split-area>\n\n <as-split-area\n *ngIf=\"tabContentObs.caseDetailLayout.showRightPanel\"\n [size]=\"tabContentObs.caseDetailLayout.rightPanelWidth\"\n [minSize]=\"tabContentObs.caseDetailLayout.rightPanelMinWidth\"\n [maxSize]=\"tabContentObs.caseDetailLayout.rightPanelMaxWidth\"\n >\n @if (tabContentObs.showTaskList) {\n <div class=\"task-panel\">\n @if (!tabContentObs.taskAndProcessLinkOpenedInPanel) {\n <valtimo-case-detail-task-list\n [openTaskAndProcessLinkInModal]=\"tabContentObs.openTaskAndProcessLinkInModal\"\n (taskClickEvent)=\"onTaskClickEvent($event)\"\n (formSubmitEvent)=\"onFormSubmitEvent()\"\n ></valtimo-case-detail-task-list>\n }\n\n @if (tabContentObs.taskAndProcessLinkOpenedInPanel) {\n <valtimo-case-detail-task-detail\n [taskAndProcessLink]=\"tabContentObs.taskAndProcessLinkOpenedInPanel\"\n (activeChange)=\"onActiveChangeEvent($event)\"\n (closeEvent)=\"onTaskDetailsClose()\"\n (formSubmit)=\"onFormSubmitEvent()\"\n (dueDateChanged)=\"onDueDateChanged()\"\n >\n </valtimo-case-detail-task-detail>\n }\n </div>\n }\n </as-split-area>\n </as-split>\n </div>\n </div>\n\n <valtimo-case-supporting-process-start-modal\n [isAdmin]=\"isAdmin$ | async\"\n (formSubmit)=\"onFormSubmitEvent()\"\n #supportingProcessStartModal\n ></valtimo-case-supporting-process-start-modal>\n</div>\n\n<ng-template\n #caseDetailHeader\n let-canHaveAssignee=\"canHaveAssignee\"\n let-document=\"document\"\n let-canAssign=\"canAssign\"\n>\n <ng-container\n *ngTemplateOutlet=\"\n caseDetailAssignee;\n context: {canHaveAssignee: canHaveAssignee, document: document, canAssign: canAssign}\n \"\n ></ng-container>\n</ng-template>\n\n<ng-template\n #caseDetailAssignee\n let-canHaveAssignee=\"canHaveAssignee\"\n let-document=\"document\"\n let-canAssign=\"canAssign\"\n>\n <div *ngIf=\"canHaveAssignee && document\">\n <valtimo-assignment\n *ngIf=\"canAssignLoaded$ | async\"\n mode=\"case\"\n [assigneeFullName]=\"document?.assigneeFullName\"\n [assigneeId]=\"document.assigneeId\"\n [assignedTeamKey]=\"document.assignedTeamKey\"\n [assignedTeamTitle]=\"document.assignedTeamTitle\"\n [hasPermission]=\"canAssign\"\n [candidateUsers$]=\"candidateUsers$\"\n [candidateTeams$]=\"candidateTeams$\"\n (assignmentChangedEvent)=\"onAssignmentChanged($event)\"\n (unassignedEvent)=\"onUnassigned()\"\n ></valtimo-assignment>\n </div>\n</ng-template>\n\n<ng-template #claimButton let-canClaim=\"canClaim\" let-canHaveAssignee=\"canHaveAssignee\">\n <v-overflow-menu-option\n *ngIf=\"canClaim && canHaveAssignee\"\n [disabled]=\"(isAssigning$ | async) || (isAssignedToCurrentUser$ | async)\"\n (selected)=\"claimAssignee()\"\n >\n {{ 'case.claimAssigneeCase' | translate }}\n </v-overflow-menu-option>\n</ng-template>\n\n<ng-template\n #unassignButton\n let-canAssign=\"canAssign\"\n let-canHaveAssignee=\"canHaveAssignee\"\n let-assigneeId=\"assigneeId\"\n>\n <v-overflow-menu-option\n *ngIf=\"canHaveAssignee && canAssign\"\n [disabled]=\"!assigneeId\"\n (selected)=\"unassignAssignee()\"\n >\n {{ 'assignDocument.remove' | translate }}\n </v-overflow-menu-option>\n</ng-template>\n\n<ng-template #deleteButton let-canDelete=\"canDelete\">\n <v-overflow-menu-option\n *ngIf=\"canDelete\"\n [disabled]=\"isDeleting$ | async\"\n (selected)=\"deleteDocument()\"\n type=\"danger\"\n >\n {{ 'case.delete.delete' | translate }}\n </v-overflow-menu-option>\n</ng-template>\n\n<ng-template #inspectButton let-canInspect=\"canInspect\">\n <v-overflow-menu-option *ngIf=\"canInspect\" (selected)=\"navigateToInspection()\">\n {{ 'case.inspection.openInspector' | translate }}\n </v-overflow-menu-option>\n</ng-template>\n\n<ng-template #customStartTrigger>\n <button\n [size]=\"(compactMode$ | async) ? 'sm' : 'lg'\"\n cdsButton=\"primary\"\n [disabled]=\"startableItems.length === 0\"\n [ngbTooltip]=\"startableItems.length === 0 ? 'No action' : null\"\n >\n {{ 'case.startSubProcess' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"chevron--down\" size=\"16\"></svg>\n </button>\n</ng-template>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"case.delete.confirm\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"case.delete.description\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"case.delete.delete\"\n (confirmEvent)=\"onConfirmDelete()\"\n></valtimo-confirmation-modal>\n\n<ng-container renderInPageHeader [fullWidth]=\"true\">\n <ng-template>\n <div\n class=\"case-actions\"\n [ngClass]=\"{\n 'case-actions--compact': compactMode$ | async,\n 'case-actions--small-title': smallTitle$ | async,\n }\"\n *ngIf=\"{\n assigneeId: assigneeId$ | async,\n canAssign: canAssign$ | async,\n canClaim: canClaim$ | async,\n canHaveAssignee: canHaveAssignee$ | async,\n canDelete: canDelete$ | async,\n canInspect: canInspect$ | async,\n document: document$ | async,\n caseStatus: caseStatus$ | async,\n } as obs\"\n >\n <div class=\"case-status-assign-custom-title\" [ngClass]=\"{'--compact': compactMode$ | async}\">\n @if (obs.caseStatus) {\n <cds-tag size=\"sm\" [type]=\"obs.caseStatus.tagType\" [title]=\"obs.caseStatus.title\">{{\n obs.caseStatus.title\n }}</cds-tag>\n }\n\n <div [ngClass]=\"{'--compact': compactMode$ | async}\">\n <ng-container\n *ngTemplateOutlet=\"\n caseDetailAssignee;\n context: {\n canHaveAssignee: obs.canHaveAssignee,\n document: obs.document,\n canAssign: obs.canAssign,\n }\n \"\n ></ng-container>\n </div>\n\n <ng-container *ngTemplateOutlet=\"caseDetailHeader\"></ng-container>\n </div>\n\n <div class=\"buttons-container\">\n <v-overflow-menu\n *ngIf=\"obs.canHaveAssignee || obs.canDelete || obs.canInspect\"\n placement=\"bottom-end\"\n class=\"overflow-button assign-overflow\"\n [ngClass]=\"{'--compact': compactMode$ | async}\"\n >\n <v-overflow-menu-trigger\n overflowTrigger\n [compact]=\"compactMode$ | async\"\n ></v-overflow-menu-trigger>\n\n <ng-container\n *ngTemplateOutlet=\"\n claimButton;\n context: {canClaim: obs.canClaim, canHaveAssignee: obs.canHaveAssignee}\n \"\n >\n </ng-container>\n\n <ng-container\n *ngTemplateOutlet=\"\n unassignButton;\n context: {\n canAssign: obs.canAssign,\n canHaveAssignee: obs.canHaveAssignee,\n assigneeId: obs.assigneeId,\n }\n \"\n >\n </ng-container>\n\n <ng-container *ngTemplateOutlet=\"inspectButton; context: {canInspect: obs.canInspect}\">\n </ng-container>\n\n <ng-container *ngTemplateOutlet=\"deleteButton; context: {canDelete: obs.canDelete}\">\n </ng-container>\n </v-overflow-menu>\n\n <v-overflow-menu\n [ngClass]=\"{'--compact': compactMode$ | async}\"\n [menuWidth]=\"dropdownWidth$ | async\"\n placement=\"bottom-end\"\n class=\"overflow-button case-detail-overflow\"\n >\n <ng-container overflowTrigger>\n <ng-container *ngTemplateOutlet=\"customStartTrigger\"></ng-container>\n </ng-container>\n <v-overflow-menu-option\n *ngFor=\"let startableItem of startableItems\"\n [attr.title]=\"startableItem.displayName\"\n (selected)=\"startItem(startableItem)\"\n >\n {{ startableItem.displayName }}\n </v-overflow-menu-option>\n </v-overflow-menu>\n </div>\n </div>\n </ng-template>\n</ng-container>\n", styles: [".main-content{overflow:hidden;padding-bottom:0}.main-content--no-horizontal-overflow{overflow-x:hidden}.tab-container{height:min-content;min-height:300px;overflow-y:auto;overflow-x:hidden}.tab-container:has(>.tab--no-margin){padding:0!important}.tab-container:has(>.tab--no-min-height){min-height:unset}.tab-container:has(>.tab--no-background){background:transparent!important}.tab-content-container{display:flex;gap:32px;overflow:auto;margin-bottom:16px}.loading-container{display:flex;justify-content:center;flex-direction:row}.case-detail-tabs{display:flex;margin-bottom:24px}.case-detail-tabs cds-tab{display:none!important}.buttons-container{display:flex;flex-direction:row;gap:8px;align-items:center}.case-actions{display:flex;width:100%;justify-content:space-between;align-items:flex-end;padding-bottom:4px}.case-actions--compact,.case-actions--small-title{padding-bottom:0;align-items:flex-start}.case-actions ::ng-deep .version-selection{width:160px}.case-actions ::ng-deep .version-selection .cds--list-box__selection{display:none}.case-status-assign-custom-title{display:flex;gap:16px;align-items:flex-end}.case-status-assign-custom-title .cds--tag{margin:0;overflow:hidden;text-overflow:ellipsis;line-height:24px;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;max-width:100%}.case-status-assign-custom-title.--compact{align-items:center}.task-panel{width:100%;transition:height .15s ease-in-out}.split-area__content{height:100%!important}.split-area__content .tab-container{height:min-content!important;overflow:hidden!important}:host ::ng-deep .container-fluid{height:100%!important;width:100%!important;margin:0!important;padding:0!important}::ng-deep .tab-content-container .as-split-gutter{background-color:transparent!important;--_as-gutter-icon-disabled: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1' height='1'/%3E\");--_as-gutter-icon-horizontal: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAABQJJREFUeF7dWll22zAMpNwzlM5xmpMlOVl6mzrKHexWm8UFy4xIp+/FP3mxQWAwWAiRGsJ3/gwhhJvt4CRCfgCtosYhDOHm4SlW7rZyq9t/R7GsZoYQDhCA89UIrzakKuQtpRTiHv03ycJB3t8KuU9AByNfw5dWJpj1h5YABmGRsvgufzsSG21NEwGWUrv5yiuZb31yMZoAAjBFPqBdor9G0vpwu2+PBgE6TK/q0pUxxiwZxnE0SefkE0sHWQUygGG3ll0c2tGNn+M0DiSfHDlHQBu2rffoWgBWPRHWIUreM654li5bMwDQBIhI9naHFgVQCSS2PHliWlLm0/YsMrcwK6ISp1QGANhzG7XFDj2gUFr8yzrkydOJ6CyACBB1lIWkbPyeQ2UQ2ZKxksCLft4EaWqB/AshHCdg0b/1gB7wJB1QBrQ0ml4E2MMyFgxJ6iABuEGdgCUeZVQm+fQ7fhfAsflzAKFLS1G2ptmMwUpDl1oyAGxo2fw2hHBzjpsm+XiO2TGQF1GWACJGfecAjHmgCTZum/lQfezQTZ3L7z+g3goc2xGtFT86A0qLh5pgjPF13aLmv9aHdYiVn8uMwFNixQlYqVuNvayK3sZxNElgHarlP6duo2bpOcbXWxheVhkTj7Tv4ATsTG/OL6CG8DZ+KCQMIcSf6HnAAo8hrAjGRpIblLxveDm8/q4YC6fT6flyufzWBhXGoTWd4QOUp6enX9fr9X2od6SFhJlTu4FBGZA5n+jbnddZjPG8nz8lo222ItHJEraRICAAMmG6rPGb2FTjedqHsET+4/Lbu+phHWLlJ/g+Cd4gpJDgp71HHzAHFCqOEFCSULjrNkaxw2rO/zidnv/MNY99WIcY+TKufibUmOcSEB5IxLTHXLal2FG4h83VPzET1h6wUxDP8fXfJW5V8xuQhqFwVtGNgDuQ6Yo367Pb9ixdjVckVE1QS/0ekZhybRw/zMZblkBpd1sMPIdJkAsClF2ghQQPYJYBQjp5BKCBEHD4JZDi6bED3AebRDFbAp58Ski3JrgphQcgozEwXZ2dBH3nZ2Bq5KcyahuEgO1wIWBnyIuoS5hA9pHIp01dnANSdlvKwXWocRC6Pw/U70MBozCQAWI5JKDF5wFrtk8uR6XKYQibnL9dr+/CjgA5v81AamMFByTTmOhQp56hPw5/vrrvx61euz2gZKfHgcj98bUkgjo/WJCxeMrJFyQgR8ocQcGnwqsJpgSK8pymTPeIThus4DKwBKWJFNsFklEcOT9ApyFADswAQJMiwkaUldeQ7ZTKDWf79tsSgIasDwGduro1CbY+hVqZgpJ1SA5L6bQHMJNjOy19MsCgBiNgV8DK+1GxSXoYAcMwhNttOedPIZTPAhm8bQ6Anx57ZMBGgfHuXs6yuEANBBtR/2bIjzkj8bAMSIYU+KLDaoKSU8KFCOP7LAsTcDTZ2jPAfrUWf3VGnwdo1pgF5xiz9yhazwOExwfv9suEm2XArJwNtSP/+AxgwlHL1iVwiAUdhEaAxhtLWGbZDEbPEiCyhHWIla93KO7AvMoAwre7bW5jxCAfwaHnoa4N3gVU5X2RthX0gdVNBPhDZnYgzMH7ImKbCOA8wnfsVO+jeUgIEHfYFUs7jHYNLN2YvJkBXwYaNuQIwnp2cgoCag3LN1Z2+EwfwCVPLPAOJ1n05oDt9x5oRR37Pb72s/e+kU81L/EXSRwjcUdkvjUAAAAASUVORK5CYII=)}::ng-deep .tab-content-container .as-split-gutter-icon{background-repeat:no-repeat;background-size:16px 16px}::ng-deep .tab-content-container--dark .as-split-gutter{--_as-gutter-icon-horizontal: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAABPlJREFUeF7tm1tW3DAMhu2+krCmdmWlKytrIuGV9HjixDddfjkOtOd0XmAGWZfPsiw7g3fVyzvntvpD9H01+JIuwCamX5YKf9VfmCVaDze2S2fXIDG+CGC8YsrqMCvDFDmHZYCeI5gE6LietD2LlNb6uQAQTLWfCDTLmLpOIfoRvxEZydZn+pH7+vdlAEJyoIwIwDIrFtk7C2TyA/Po9gxY1zVWrN2haZq85FqS3zEF+YET3qi6rFzjfAR0yGkBwQA0wyFU75zf5MaOBYDoR2YGDigqY+U7HOKHlAsFiQOXqax+JYCYBGJr32ZAB+lEpxwc3i1nDcDWtBUYPjN8p35VBxf/4/MQUI7lqAGPzwjYBQDv3PQ0+Ue/CjV/sODp8+UiyNE7XLHO6EM+Dg4/ntBdAI69zdIqBlgTlDldADLN9a7R551cDot0kDPNbn40AIh6LSS4DS0Be9jJg7sAXPHJfBZojbXriMscGgDvvhUYmRGEes6iocJiyVejWdelYDPNk5cquhnAxVSAlgDZQG/7bUqKjvZEDqgdYwaAzQsrVQHowFkPqd5bA4LlO1ytp+zoFM0Ml2V5CYPmeX78lF7v67rla8B6GpynKZxnxBfmD03MvASCMe/9z+DRtm2/SAiZLXRGqcapbYTaICB/BHwggN1wbuzQSUHI3UQBHPqo+wPO/7dlefkWJ0PyR0ofEIAjg49Z8GOe51fOCAYgIcPkd2vLsnz33v+ubadJ0TZw8Fqcmnkk+CBjCahHXodQ49mhHGjUDJCDf37Vjmn54Sa4MuxGaL/weWzDdggJigjgDL7KpG3bxLTPmY/PALqa90JgAahpf/ohb8jjAfAlrQdCCSDG0gRPxCiHzf81XwKUVA1M7gDwbojbspsM4GZea3jov5cFp6cGoHYRFCWE5FthQwKAGCnLS9vD6UXwXbnIRpGUcsH3D6JxI2sADwFHwEnqAI4HKW0AB07ci6QDXgLHELUIghPxbxRBBukICDuAZMCaAbu8XnLf1K4wzBjdGYpzSUGI66ntBQg/8QzYB+PyyW18++sAEHvu8wSY02IbosyONaBTPj7XO6/F+SxVzgPKRooWlN7l0A0g+i0tGXrmvdu2D/qYTrBgO0GKG3ocRlrhB/jm6a13zR2i8GAk+BOOw/lmy95RMIlgAlAvh4ex5/ll5CUndYMkJfGNFyL84sCuoHa3tSVQW9HkGxjeueUNv6Krx7dbTO5R/J1FARSQ9X3d8gyh13RSZAYA9iOcmHkJWO1ZA+LkRdbaRAlO3wogKL/+/YDZl5cuFQogC/P4k/j+mx0AYVDyYVQGWDMPlbcDQDVHOREA1DmGDAgv7emA0bEofgmAmn3euXUpT3d9Z4G+4PRR+6PR9oigRqarPiT6ng4nBzRguCe0ZJEBatyqQGvkfw249VtiHTNSzdGZAddVESmW1YBDv5bSpoxBnOZkst7h6jISx5sCEltnJFp7KKkG3KNfPQvULluB2UMuR1zaBiXjB08+IJr4FQA9c3gDgNINKSDK4SCff67VjEsZEI+Cl3Scg3vwA4cU6uu0bRL3d4k3ZEDm3mAoY2YqdX7BvVsA2OJW9qlhUe+KQvObX1DYANS+2iIdHArR0bArgXfUBoAMoewopH9ROd3oBmcZiMkOANA3sXUq9mm5Pqrvq7IYXLo3Vs713ao7WRAZ8NULfTACRd0fdjtUcYyr1cIAAAAASUVORK5CYII=)}.spacing-case-tags{margin-bottom:8px}\n/*!\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
5441
|
+
}], ctorParameters: () => [{ type: i2$1.BreadcrumbService }, { type: i2.CaseStatusService }, { type: i2$1.CdsThemeService }, { type: i0.ComponentFactoryResolver }, { type: i2.DocumentService }, { type: CaseDetailLayoutService }, { type: CaseService }, { type: CaseTabService }, { type: i4$1.IconService }, { type: i5$4.KeycloakService }, { type: i1$3.NGXLogger }, { type: i1.GlobalNotificationService }, { type: i2$1.PageHeaderService }, { type: i2$1.PageTitleService }, { type: i2$3.PermissionService }, { type: i4.TranslateService }, { type: i0.Renderer2 }, { type: i1$2.ActivatedRoute }, { type: i1$2.Router }, { type: WidgetsService }, { type: i12.UserProviderService }, { type: Document, decorators: [{
|
|
5291
5442
|
type: Inject,
|
|
5292
5443
|
args: [DOCUMENT]
|
|
5293
5444
|
}] }], propDecorators: { supportingProcessStart: [{
|
|
@@ -5316,6 +5467,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
|
|
|
5316
5467
|
* See the License for the specific language governing permissions and
|
|
5317
5468
|
* limitations under the License.
|
|
5318
5469
|
*/
|
|
5470
|
+
const DEFAULT_START_MODAL_SIZE = 'sm';
|
|
5319
5471
|
class CaseProcessStartModalComponent {
|
|
5320
5472
|
get _useStartEventNameAsStartFormTitle() {
|
|
5321
5473
|
return !!this.configService.featureToggles?.useStartEventNameAsStartFormTitle;
|
|
@@ -5338,6 +5490,7 @@ class CaseProcessStartModalComponent {
|
|
|
5338
5490
|
this.formFlowComplete = new EventEmitter();
|
|
5339
5491
|
this.noProcessLinked = new EventEmitter();
|
|
5340
5492
|
this.modalOpen$ = new BehaviorSubject(false);
|
|
5493
|
+
this.modalSize$ = new BehaviorSubject(DEFAULT_START_MODAL_SIZE);
|
|
5341
5494
|
this._subscriptions = new Subscription();
|
|
5342
5495
|
this._formCustomComponentConfig$ = new BehaviorSubject({});
|
|
5343
5496
|
this.closeModalEvent = new EventEmitter();
|
|
@@ -5353,6 +5506,9 @@ class CaseProcessStartModalComponent {
|
|
|
5353
5506
|
this.processLinkId = null;
|
|
5354
5507
|
this.formDefinition = null;
|
|
5355
5508
|
this.formFlowInstanceId = null;
|
|
5509
|
+
this.modalSize$.next(DEFAULT_START_MODAL_SIZE);
|
|
5510
|
+
this.formViewModelDynamicContainer?.clear();
|
|
5511
|
+
this.formCustomComponentDynamicContainer?.clear();
|
|
5356
5512
|
if (this._useStartEventNameAsStartFormTitle) {
|
|
5357
5513
|
this.processService.getProcessDefinitionXml(this.processDefinitionId).subscribe(result => {
|
|
5358
5514
|
this._startEventName = this.startModalService.getStandardStartEventTitle(result.bpmn20Xml);
|
|
@@ -5369,6 +5525,7 @@ class CaseProcessStartModalComponent {
|
|
|
5369
5525
|
this.formDefinition = startProcessResult.properties.prefilledForm;
|
|
5370
5526
|
this.processLinkId = startProcessResult.processLinkId;
|
|
5371
5527
|
this.isFormViewModel = false;
|
|
5528
|
+
this.setModalSize(startProcessResult.properties.formSize);
|
|
5372
5529
|
this.openCdsModal();
|
|
5373
5530
|
break;
|
|
5374
5531
|
case 'form-flow':
|
|
@@ -5411,6 +5568,9 @@ class CaseProcessStartModalComponent {
|
|
|
5411
5568
|
}
|
|
5412
5569
|
});
|
|
5413
5570
|
}
|
|
5571
|
+
setModalSize(formSize) {
|
|
5572
|
+
this.modalSize$.next(formSize ? formSizeToCarbonModalSizeMap[formSize] : DEFAULT_START_MODAL_SIZE);
|
|
5573
|
+
}
|
|
5414
5574
|
gotoProcessLinkScreen() {
|
|
5415
5575
|
this.closeCdsModal();
|
|
5416
5576
|
this.router.navigate(['case-management']);
|
|
@@ -5515,6 +5675,7 @@ class CaseProcessStartModalComponent {
|
|
|
5515
5675
|
const renderedComponent = this.formCustomComponentDynamicContainer.createComponent(customComponent);
|
|
5516
5676
|
renderedComponent.instance.processDefinitionKey = this.processDefinitionKey;
|
|
5517
5677
|
renderedComponent.instance.documentDefinitionName = this.caseDefinitionKey;
|
|
5678
|
+
renderedComponent.instance.documentId = null;
|
|
5518
5679
|
renderedComponent.instance.submittedEvent.subscribe(() => {
|
|
5519
5680
|
this.closeCdsModal();
|
|
5520
5681
|
});
|
|
@@ -5532,8 +5693,8 @@ class CaseProcessStartModalComponent {
|
|
|
5532
5693
|
setTimeout(() => this.modalOpen$.next(false));
|
|
5533
5694
|
this.closeModalEvent.emit();
|
|
5534
5695
|
}
|
|
5535
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseProcessStartModalComponent, deps: [{ token: i1$2.Router }, { token: i2$
|
|
5536
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: CaseProcessStartModalComponent, isStandalone: true, selector: "valtimo-case-process-start-modal", inputs: { navigateAfterSubmit: "navigateAfterSubmit" }, outputs: { formFlowComplete: "formFlowComplete", noProcessLinked: "noProcessLinked" }, viewQueries: [{ propertyName: "form", first: true, predicate: ["form"], descendants: true }, { propertyName: "formViewModelDynamicContainer", first: true, predicate: ["formViewModelComponent"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: "formCustomComponentDynamicContainer", first: true, predicate: ["formCustomComponent"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<valtimo-render-in-body>\n <cds-modal
|
|
5696
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseProcessStartModalComponent, deps: [{ token: i1$2.Router }, { token: i2$2.ProcessService }, { token: i3$3.ProcessLinkService }, { token: i12.UserProviderService }, { token: i2$3.PermissionService }, { token: CaseListService }, { token: StartModalService }, { token: i1.ConfigService }, { token: FORM_VIEW_MODEL_TOKEN, optional: true }, { token: FORM_CUSTOM_COMPONENT_TOKEN, optional: true }, { token: i3$3.UrlResolverService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5697
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: CaseProcessStartModalComponent, isStandalone: true, selector: "valtimo-case-process-start-modal", inputs: { navigateAfterSubmit: "navigateAfterSubmit" }, outputs: { formFlowComplete: "formFlowComplete", noProcessLinked: "noProcessLinked" }, viewQueries: [{ propertyName: "form", first: true, predicate: ["form"], descendants: true }, { propertyName: "formViewModelDynamicContainer", first: true, predicate: ["formViewModelComponent"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: "formCustomComponentDynamicContainer", first: true, predicate: ["formCustomComponent"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<valtimo-render-in-body>\n <cds-modal\n [open]=\"modalOpen$ | async\"\n [size]=\"modalSize$ | async\"\n valtimoCdsModal\n [minContentHeight]=\"480\"\n >\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCloseSelect()\"\n ><h3 cdsModalHeaderHeading>\n {{ modalTitle }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent [cdsLayer]=\"1\" class=\"process-start-modal-content\">\n <ng-template #formViewModelComponent></ng-template>\n\n <ng-template #formCustomComponent></ng-template>\n\n @if (formDefinition && !isFormViewModel) {\n <valtimo-form-io\n #form\n [form]=\"formDefinition\"\n [options]=\"options\"\n (submit)=\"onSubmit($event)\"\n >\n </valtimo-form-io>\n }\n\n @if (formFlowInstanceId) {\n <valtimo-form-flow\n [formFlowInstanceId]=\"formFlowInstanceId\"\n (formFlowComplete)=\"formFlowSubmitted($event)\"\n ></valtimo-form-flow>\n }\n\n @if (!formFlowInstanceId && !formDefinition && isAdmin && !isUIComponent) {\n <div\n class=\"bg-warning text-black mb-0 p-3 text-center\"\n [translate]=\"'formManagement.noFormDefinitionFoundAdmin'\"\n ></div>\n <div class=\"mb-0 mt-4 p-3 text-center\">\n <button\n (click)=\"gotoProcessLinkScreen()\"\n class=\"btn btn-secondary btn-space\"\n id=\"process-link-button\"\n type=\"button\"\n >\n {{ 'formManagement.gotoProcessLinksButton' | translate }}\n </button>\n </div>\n }\n\n @if (!formFlowInstanceId && !formDefinition && !isAdmin && !isUIComponent) {\n <div\n class=\"bg-warning text-black mb-0 p-3 text-center\"\n [translate]=\"'formManagement.noFormDefinitionFoundUser'\"\n ></div>\n }\n </section>\n </cds-modal>\n</valtimo-render-in-body>\n", styles: [".process-start-modal-content{padding:16px}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "directive", type: i4.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "ngmodule", type: ProcessLinkModule }, { kind: "component", type: i3$3.FormFlowComponent, selector: "valtimo-form-flow", inputs: ["formIoFormData", "formFlowInstanceId"], outputs: ["formFlowComplete", "formFlowChange"] }, { kind: "ngmodule", type: FormIoModule }, { kind: "component", type: i2$1.FormioComponent, selector: "valtimo-form-io", inputs: ["options", "submission", "form", "readOnly", "formRefresh$"], outputs: ["submit", "change", "event"] }, { kind: "directive", type: ValtimoCdsModalDirective, selector: "[valtimoCdsModal]", inputs: ["minContentHeight"] }, { kind: "ngmodule", type: DialogModule }, { kind: "ngmodule", type: ModalModule }, { kind: "component", type: i4$1.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i4$1.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "directive", type: i4$1.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }, { kind: "directive", type: i4$1.ModalHeaderHeading, selector: "[cdsModalHeaderHeading], [ibmModalHeaderHeading]" }, { kind: "ngmodule", type: LayerModule }, { kind: "directive", type: i4$1.LayerDirective, selector: "[cdsLayer], [ibmLayer]", inputs: ["ibmLayer", "cdsLayer"], exportAs: ["layer"] }, { kind: "component", type: RenderInBodyComponent, selector: "valtimo-render-in-body" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
5537
5698
|
}
|
|
5538
5699
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseProcessStartModalComponent, decorators: [{
|
|
5539
5700
|
type: Component,
|
|
@@ -5547,8 +5708,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
|
|
|
5547
5708
|
ModalModule,
|
|
5548
5709
|
LayerModule,
|
|
5549
5710
|
RenderInBodyComponent,
|
|
5550
|
-
], template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<valtimo-render-in-body>\n <cds-modal
|
|
5551
|
-
}], ctorParameters: () => [{ type: i1$2.Router }, { type: i2$
|
|
5711
|
+
], template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<valtimo-render-in-body>\n <cds-modal\n [open]=\"modalOpen$ | async\"\n [size]=\"modalSize$ | async\"\n valtimoCdsModal\n [minContentHeight]=\"480\"\n >\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCloseSelect()\"\n ><h3 cdsModalHeaderHeading>\n {{ modalTitle }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent [cdsLayer]=\"1\" class=\"process-start-modal-content\">\n <ng-template #formViewModelComponent></ng-template>\n\n <ng-template #formCustomComponent></ng-template>\n\n @if (formDefinition && !isFormViewModel) {\n <valtimo-form-io\n #form\n [form]=\"formDefinition\"\n [options]=\"options\"\n (submit)=\"onSubmit($event)\"\n >\n </valtimo-form-io>\n }\n\n @if (formFlowInstanceId) {\n <valtimo-form-flow\n [formFlowInstanceId]=\"formFlowInstanceId\"\n (formFlowComplete)=\"formFlowSubmitted($event)\"\n ></valtimo-form-flow>\n }\n\n @if (!formFlowInstanceId && !formDefinition && isAdmin && !isUIComponent) {\n <div\n class=\"bg-warning text-black mb-0 p-3 text-center\"\n [translate]=\"'formManagement.noFormDefinitionFoundAdmin'\"\n ></div>\n <div class=\"mb-0 mt-4 p-3 text-center\">\n <button\n (click)=\"gotoProcessLinkScreen()\"\n class=\"btn btn-secondary btn-space\"\n id=\"process-link-button\"\n type=\"button\"\n >\n {{ 'formManagement.gotoProcessLinksButton' | translate }}\n </button>\n </div>\n }\n\n @if (!formFlowInstanceId && !formDefinition && !isAdmin && !isUIComponent) {\n <div\n class=\"bg-warning text-black mb-0 p-3 text-center\"\n [translate]=\"'formManagement.noFormDefinitionFoundUser'\"\n ></div>\n }\n </section>\n </cds-modal>\n</valtimo-render-in-body>\n", styles: [".process-start-modal-content{padding:16px}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
5712
|
+
}], ctorParameters: () => [{ type: i1$2.Router }, { type: i2$2.ProcessService }, { type: i3$3.ProcessLinkService }, { type: i12.UserProviderService }, { type: i2$3.PermissionService }, { type: CaseListService }, { type: StartModalService }, { type: i1.ConfigService }, { type: undefined, decorators: [{
|
|
5552
5713
|
type: Optional
|
|
5553
5714
|
}, {
|
|
5554
5715
|
type: Inject,
|
|
@@ -5687,7 +5848,7 @@ class CaseListActionsComponent {
|
|
|
5687
5848
|
}
|
|
5688
5849
|
}
|
|
5689
5850
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseListActionsComponent, deps: [{ token: i2.DocumentService }, { token: CaseListService }, { token: i1.GlobalNotificationService }, { token: i1$2.Router }, { token: i4.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5690
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: CaseListActionsComponent, isStandalone: true, selector: "valtimo-case-list-actions", inputs: { loading: "loading", navigateAfterSubmit: "navigateAfterSubmit" }, outputs: { formFlowComplete: "formFlowComplete", startButtonDisableEvent: "startButtonDisableEvent" }, viewQueries: [{ propertyName: "processStart", first: true, predicate: ["processStartModal"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<valtimo-render-in-body>\n <cds-modal\n valtimoCdsModal\n [open]=\"startSelectionModalOpen$ | async\"\n size=\"xs\"\n *ngIf=\"{\n associatedProcessDocumentDefinitions: associatedProcessDocumentDefinitions$ | async,\n caseSettings: caseSettings$ | async,\n } as obs\"\n >\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCloseSelect()\"\n ><h3 cdsModalHeaderHeading>\n {{ 'dashboard.startProcess.title' | translate }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent class=\"start-modal-content\" [cdsLayer]=\"1\">\n <cds-clickable-tile\n *ngIf=\"obs.caseSettings?.hasExternalStartForm\"\n (click)=\"openExternalCaseStartForm(true)\"\n >\n {{ obs?.caseSettings.externalStartFormDescription || '-' }}\n </cds-clickable-tile>\n\n <cds-clickable-tile\n *ngFor=\"let processDocumentDefinition of obs.associatedProcessDocumentDefinitions\"\n (click)=\"selectProcess(processDocumentDefinition)\"\n >\n {{ processDocumentDefinition.processDefinitionName }}\n </cds-clickable-tile>\n </section>\n </cds-modal>\n</valtimo-render-in-body>\n\n<valtimo-case-process-start-modal\n #processStartModal\n [navigateAfterSubmit]=\"navigateAfterSubmit\"\n (formFlowComplete)=\"onFormFlowComplete()\"\n (noProcessLinked)=\"onNoProcessLinked($event)\"\n></valtimo-case-process-start-modal>\n", styles: ["/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: DialogModule }, { kind: "ngmodule", type: ModalModule }, { kind: "component", type:
|
|
5851
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: CaseListActionsComponent, isStandalone: true, selector: "valtimo-case-list-actions", inputs: { loading: "loading", navigateAfterSubmit: "navigateAfterSubmit" }, outputs: { formFlowComplete: "formFlowComplete", startButtonDisableEvent: "startButtonDisableEvent" }, viewQueries: [{ propertyName: "processStart", first: true, predicate: ["processStartModal"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<valtimo-render-in-body>\n <cds-modal\n valtimoCdsModal\n [open]=\"startSelectionModalOpen$ | async\"\n size=\"xs\"\n *ngIf=\"{\n associatedProcessDocumentDefinitions: associatedProcessDocumentDefinitions$ | async,\n caseSettings: caseSettings$ | async,\n } as obs\"\n >\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCloseSelect()\"\n ><h3 cdsModalHeaderHeading>\n {{ 'dashboard.startProcess.title' | translate }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent class=\"start-modal-content\" [cdsLayer]=\"1\">\n <cds-clickable-tile\n *ngIf=\"obs.caseSettings?.hasExternalStartForm\"\n (click)=\"openExternalCaseStartForm(true)\"\n >\n {{ obs?.caseSettings.externalStartFormDescription || '-' }}\n </cds-clickable-tile>\n\n <cds-clickable-tile\n *ngFor=\"let processDocumentDefinition of obs.associatedProcessDocumentDefinitions\"\n (click)=\"selectProcess(processDocumentDefinition)\"\n >\n {{ processDocumentDefinition.processDefinitionName }}\n </cds-clickable-tile>\n </section>\n </cds-modal>\n</valtimo-render-in-body>\n\n<valtimo-case-process-start-modal\n #processStartModal\n [navigateAfterSubmit]=\"navigateAfterSubmit\"\n (formFlowComplete)=\"onFormFlowComplete()\"\n (noProcessLinked)=\"onNoProcessLinked($event)\"\n></valtimo-case-process-start-modal>\n", styles: ["/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: DialogModule }, { kind: "ngmodule", type: ModalModule }, { kind: "component", type: i4$1.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i4$1.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "directive", type: i4$1.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }, { kind: "directive", type: i4$1.ModalHeaderHeading, selector: "[cdsModalHeaderHeading], [ibmModalHeaderHeading]" }, { kind: "directive", type: ValtimoCdsModalDirective, selector: "[valtimoCdsModal]", inputs: ["minContentHeight"] }, { kind: "ngmodule", type: TilesModule }, { kind: "component", type: i4$1.ClickableTile, selector: "cds-clickable-tile, ibm-clickable-tile", inputs: ["theme", "href", "target", "rel", "disabled", "route", "routeExtras"], outputs: ["navigation"] }, { kind: "component", type: CaseProcessStartModalComponent, selector: "valtimo-case-process-start-modal", inputs: ["navigateAfterSubmit"], outputs: ["formFlowComplete", "noProcessLinked"] }, { kind: "component", type: RenderInBodyComponent, selector: "valtimo-render-in-body" }] }); }
|
|
5691
5852
|
}
|
|
5692
5853
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseListActionsComponent, decorators: [{
|
|
5693
5854
|
type: Component,
|
|
@@ -5777,7 +5938,7 @@ class CaseListTabsComponent {
|
|
|
5777
5938
|
this.tabChangeEvent.emit(tab);
|
|
5778
5939
|
}
|
|
5779
5940
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseListTabsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5780
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: CaseListTabsComponent, isStandalone: false, selector: "valtimo-case-list-tabs", inputs: { assigneeFilter: "assigneeFilter", selectedRowCount: "selectedRowCount", visibleTabs: "visibleTabs" }, outputs: { tabChangeEvent: "tabChangeEvent" }, viewQueries: [{ propertyName: "tabsComponent", first: true, predicate: Tabs, descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<ng-container *ngIf=\"!visibleTabs; else configuredTabs\">\n <cds-tabs type=\"contained\" class=\"case-list-tabs\">\n <cds-tab\n *ngFor=\"let tab of defaultTabs; trackBy: trackByIndex\"\n [active]=\"assigneeFilter === tab\"\n heading=\"{{ 'case.tabs.' + tab | translate }}\"\n [id]=\"tab\"\n (selected)=\"tabChange(tab)\"\n ></cds-tab>\n </cds-tabs>\n</ng-container>\n\n<ng-template #configuredTabs>\n <cds-tabs type=\"contained\" class=\"case-list-tabs\">\n <cds-tab\n *ngFor=\"let tab of visibleTabs; trackBy: trackByIndex\"\n [active]=\"assigneeFilter === tab\"\n heading=\"{{ 'case.tabs.' + tab | translate }}\"\n [id]=\"tab\"\n (selected)=\"tabChange(tab)\"\n ></cds-tab>\n </cds-tabs>\n</ng-template>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"case.changeTabModal.confirm\"\n contentTranslationKey=\"case.changeTabModal.content\"\n [outputOnConfirm]=\"tabChange$ | async\"\n [showModalSubject$]=\"showChangeTabModal$\"\n titleTranslationKey=\"case.changeTabModal.title\"\n (cancelEvent)=\"onChangeTabCancel()\"\n (confirmEvent)=\"onChangeTabConfirm($event)\"\n></valtimo-confirmation-modal>\n", styles: [".case-list-tabs cds-tab{display:none}\n/*!\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$1.ConfirmationModalComponent, selector: "valtimo-confirmation-modal", inputs: ["titleTranslationKey", "title", "content", "contentTranslationKey", "confirmButtonText", "confirmButtonTextTranslationKey", "confirmButtonType", "showOptionalButton", "optionalButtonText", "optionalButtonTextTranslationKey", "optionalButtonType", "cancelButtonText", "cancelButtonTextTranslationKey", "cancelButtonType", "showModalSubject$", "outputOnConfirm", "outputOnOptional", "spacerAfterCancelButton"], outputs: ["confirmEvent", "optionalEvent", "cancelEvent"] }, { kind: "component", type:
|
|
5941
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: CaseListTabsComponent, isStandalone: false, selector: "valtimo-case-list-tabs", inputs: { assigneeFilter: "assigneeFilter", selectedRowCount: "selectedRowCount", visibleTabs: "visibleTabs" }, outputs: { tabChangeEvent: "tabChangeEvent" }, viewQueries: [{ propertyName: "tabsComponent", first: true, predicate: Tabs, descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<ng-container *ngIf=\"!visibleTabs; else configuredTabs\">\n <cds-tabs type=\"contained\" class=\"case-list-tabs\">\n <cds-tab\n *ngFor=\"let tab of defaultTabs; trackBy: trackByIndex\"\n [active]=\"assigneeFilter === tab\"\n heading=\"{{ 'case.tabs.' + tab | translate }}\"\n [id]=\"tab\"\n (selected)=\"tabChange(tab)\"\n ></cds-tab>\n </cds-tabs>\n</ng-container>\n\n<ng-template #configuredTabs>\n <cds-tabs type=\"contained\" class=\"case-list-tabs\">\n <cds-tab\n *ngFor=\"let tab of visibleTabs; trackBy: trackByIndex\"\n [active]=\"assigneeFilter === tab\"\n heading=\"{{ 'case.tabs.' + tab | translate }}\"\n [id]=\"tab\"\n (selected)=\"tabChange(tab)\"\n ></cds-tab>\n </cds-tabs>\n</ng-template>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"case.changeTabModal.confirm\"\n contentTranslationKey=\"case.changeTabModal.content\"\n [outputOnConfirm]=\"tabChange$ | async\"\n [showModalSubject$]=\"showChangeTabModal$\"\n titleTranslationKey=\"case.changeTabModal.title\"\n (cancelEvent)=\"onChangeTabCancel()\"\n (confirmEvent)=\"onChangeTabConfirm($event)\"\n></valtimo-confirmation-modal>\n", styles: [".case-list-tabs cds-tab{display:none}\n/*!\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$1.ConfirmationModalComponent, selector: "valtimo-confirmation-modal", inputs: ["titleTranslationKey", "title", "content", "contentTranslationKey", "confirmButtonText", "confirmButtonTextTranslationKey", "confirmButtonType", "showOptionalButton", "optionalButtonText", "optionalButtonTextTranslationKey", "optionalButtonType", "cancelButtonText", "cancelButtonTextTranslationKey", "cancelButtonType", "showModalSubject$", "outputOnConfirm", "outputOnOptional", "spacerAfterCancelButton"], outputs: ["confirmEvent", "optionalEvent", "cancelEvent"] }, { kind: "component", type: i4$1.Tabs, selector: "cds-tabs, ibm-tabs", inputs: ["position", "cacheActive", "followFocus", "isNavigation", "ariaLabel", "ariaLabelledby", "type", "theme", "skeleton"] }, { kind: "component", type: i4$1.Tab, selector: "cds-tab, ibm-tab", inputs: ["heading", "title", "context", "active", "disabled", "tabIndex", "id", "cacheActive", "tabContent", "templateContext"], outputs: ["selected"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
5781
5942
|
}
|
|
5782
5943
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseListTabsComponent, decorators: [{
|
|
5783
5944
|
type: Component,
|
|
@@ -5825,7 +5986,7 @@ class CaseListToolbarComponent {
|
|
|
5825
5986
|
this.viewUpdateEvent = new EventEmitter();
|
|
5826
5987
|
}
|
|
5827
5988
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseListToolbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5828
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: CaseListToolbarComponent, isStandalone: false, selector: "valtimo-case-list-toolbar", inputs: { availableFields: "availableFields", canCreate: "canCreate", canExport: "canExport", disableExport: "disableExport", disableStart: "disableStart", hasApiColumnConfig: "hasApiColumnConfig", hiddenColumns: "hiddenColumns", loadingExport: "loadingExport" }, outputs: { exportEvent: "exportEvent", startCaseEvent: "startCaseEvent", viewUpdateEvent: "viewUpdateEvent" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<div class=\"case-list-toolbar\">\n <valtimo-list-column-view\n [availableFields]=\"availableFields\"\n [disabled]=\"!hasApiColumnConfig\"\n [hiddenColumns]=\"hiddenColumns\"\n (viewUpdateEvent)=\"viewUpdateEvent.emit($event)\"\n ></valtimo-list-column-view>\n\n <cds-tooltip *ngIf=\"canExport\" [description]=\"'case.exportButtonTooltip' | translate\">\n <cds-loading *ngIf=\"loadingExport\" size=\"sm\" class=\"loading-spinner\"></cds-loading>\n\n <button\n *ngIf=\"!loadingExport\"\n data-testid=\"case-list-export-button\"\n cdsButton=\"ghost\"\n iconOnly=\"true\"\n (click)=\"exportEvent.emit()\"\n [disabled]=\"disableExport\"\n >\n <svg cdsIcon=\"download\" size=\"16\"></svg>\n </button>\n </cds-tooltip>\n\n <button\n *ngIf=\"canCreate\"\n cdsButton=\"primary\"\n [disabled]=\"disableStart\"\n (click)=\"startCaseEvent.emit()\"\n >\n {{ 'Start Case' | translate }}\n\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n</div>\n", styles: [".case-list-toolbar{display:flex}.loading-spinner{margin:24px 24px 0 10px}\n/*!\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type:
|
|
5989
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: CaseListToolbarComponent, isStandalone: false, selector: "valtimo-case-list-toolbar", inputs: { availableFields: "availableFields", canCreate: "canCreate", canExport: "canExport", disableExport: "disableExport", disableStart: "disableStart", hasApiColumnConfig: "hasApiColumnConfig", hiddenColumns: "hiddenColumns", loadingExport: "loadingExport" }, outputs: { exportEvent: "exportEvent", startCaseEvent: "startCaseEvent", viewUpdateEvent: "viewUpdateEvent" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<div class=\"case-list-toolbar\">\n <valtimo-list-column-view\n [availableFields]=\"availableFields\"\n [disabled]=\"!hasApiColumnConfig\"\n [hiddenColumns]=\"hiddenColumns\"\n (viewUpdateEvent)=\"viewUpdateEvent.emit($event)\"\n ></valtimo-list-column-view>\n\n <cds-tooltip *ngIf=\"canExport\" [description]=\"'case.exportButtonTooltip' | translate\">\n <cds-loading *ngIf=\"loadingExport\" size=\"sm\" class=\"loading-spinner\"></cds-loading>\n\n <button\n *ngIf=\"!loadingExport\"\n data-testid=\"case-list-export-button\"\n cdsButton=\"ghost\"\n iconOnly=\"true\"\n (click)=\"exportEvent.emit()\"\n [disabled]=\"disableExport\"\n >\n <svg cdsIcon=\"download\" size=\"16\"></svg>\n </button>\n </cds-tooltip>\n\n <button\n *ngIf=\"canCreate\"\n cdsButton=\"primary\"\n [disabled]=\"disableStart\"\n (click)=\"startCaseEvent.emit()\"\n >\n {{ 'Start Case' | translate }}\n\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n</div>\n", styles: [".case-list-toolbar{display:flex}.loading-spinner{margin:24px 24px 0 10px}\n/*!\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4$1.Loading, selector: "cds-loading, ibm-loading", inputs: ["title", "isActive", "size", "overlay"] }, { kind: "directive", type: i4$1.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "directive", type: i4$1.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: i4$1.Tooltip, selector: "cds-tooltip, ibm-tooltip", inputs: ["id", "enterDelayMs", "leaveDelayMs", "disabled", "description", "templateContext"] }, { kind: "component", type: i2$1.ListColumnViewComponent, selector: "valtimo-list-column-view", inputs: ["availableFields", "hiddenColumns", "disabled"], outputs: ["viewUpdateEvent"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
5829
5990
|
}
|
|
5830
5991
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseListToolbarComponent, decorators: [{
|
|
5831
5992
|
type: Component,
|
|
@@ -6093,7 +6254,7 @@ class CaseListComponent {
|
|
|
6093
6254
|
provide: QUICK_SEARCH_SERVICE,
|
|
6094
6255
|
useClass: CaseListQuickSearchService,
|
|
6095
6256
|
},
|
|
6096
|
-
], viewQueries: [{ propertyName: "carbonList", first: true, predicate: CarbonListComponent, descendants: true }, { propertyName: "listActionsComponent", first: true, predicate: CaseListActionsComponent, descendants: true }, { propertyName: "tabsComponent", first: true, predicate: CaseListTabsComponent, descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<ng-container\n *ngIf=\"{\n availableFields: orchestration.availableFields$ | async,\n fields: orchestration.fields$ | async,\n documentItems: orchestration.documentItems$ | async,\n noResultsMessage: orchestration.noResultsMessage$ | async,\n hasApiColumnConfig: orchestration.hasApiColumnConfig$ | async,\n searchFields: orchestration.searchFields$ | async,\n schema: orchestration.schema$ | async,\n showAssignModal: showAssignModal$ | async,\n selectedCaseIds: selectedCaseIds$ | async,\n statuses: orchestration.statuses$ | async,\n caseTags: orchestration.caseTags$ | async,\n selectedStatusKeys: orchestration.selectedStatusKeys$ | async,\n selectedCaseTagKeys: orchestration.selectedCaseTagKeys$ | async,\n showStatusSelector: orchestration.showStatusSelector$ | async,\n showCaseTagsSelector: orchestration.showCaseTagsSelector$ | async,\n loaded: orchestration.loaded$ | async,\n canCreate: orchestration.canCreateCase$ | async,\n canExport: orchestration.canExportCase$ | async,\n disableExport: orchestration.disableExportButton$ | async,\n disableSaveSearch: orchestration.disableSaveSearch$ | async,\n assigneeFilter: orchestration.assigneeFilter$ | async,\n hiddenColumns: orchestration.hiddenColumns$ | async,\n disableStartButton: disableStartButton$ | async,\n } as obs\"\n>\n <valtimo-case-list-actions\n [loading]=\"!obs.loaded\"\n (formFlowComplete)=\"forceRefresh()\"\n (startButtonDisableEvent)=\"onStartButtonDisableEvent($event)\"\n ></valtimo-case-list-actions>\n\n <ng-container *ngTemplateOutlet=\"searchFields; context: {obs: obs}\"></ng-container>\n\n <valtimo-quick-search (quickSearchEvent)=\"onQuickSearchEvent($event)\"></valtimo-quick-search>\n\n <ng-container *ngIf=\"obs.loaded; else loading\">\n <ng-container *ngTemplateOutlet=\"list; context: {obs: obs}\"></ng-container>\n </ng-container>\n\n <ng-container *ngTemplateOutlet=\"bulkAssignModal; context: {obs: obs}\"></ng-container>\n\n <ng-container *ngTemplateOutlet=\"changePageModal\"></ng-container>\n</ng-container>\n\n<ng-template #searchFields let-obs=\"obs\">\n <valtimo-search-fields\n [disableSaveSearch]=\"obs.disableSaveSearch\"\n [canSaveSearch]=\"true\"\n [searchFields]=\"obs.searchFields\"\n [caseDefinitionKey]=\"orchestration.caseDefinitionKey$ | async\"\n [defaultValues]=\"orchestration.searchFieldValues$ | async\"\n [inputDisabled]=\"!obs.loaded\"\n [externalSearchField]=\"obs.showStatusSelector\"\n (clearEvent)=\"onClearEvent()\"\n (doSearch)=\"search($event)\"\n (saveSearchEvent)=\"onSaveSearchEvent($event)\"\n >\n <valtimo-status-selector\n *ngIf=\"obs.showStatusSelector\"\n [statuses]=\"obs.statuses\"\n [selectedStatusKeys]=\"obs.selectedStatusKeys\"\n [disabled]=\"!obs.loaded\"\n (selectedStatusesChangeEvent)=\"onSelectedStatusesChange($event)\"\n ></valtimo-status-selector>\n\n <valtimo-case-tags-selector\n *ngIf=\"obs.showCaseTagsSelector\"\n [caseTags]=\"obs.caseTags\"\n [selectedCaseTagKeys]=\"obs.selectedCaseTagKeys\"\n [disabled]=\"!obs.loaded\"\n (selectedCaseTagsChangeEvent)=\"onSelectedCaseTagsChange($event)\"\n ></valtimo-case-tags-selector>\n </valtimo-search-fields>\n</ng-template>\n\n<ng-template #list let-obs=\"obs\">\n <valtimo-carbon-list\n [fields]=\"obs.fields\"\n [header]=\"false\"\n [initialSortState]=\"pagination.sort\"\n [items]=\"obs.documentItems\"\n [pagination]=\"pagination\"\n\n lockedTooltipTranslationKey=\"case.rowLocked\"\n [showSelectionColumn]=\"canHaveAssignee\"\n [tableTranslations]=\"tableTranslations\"\n (paginationClicked)=\"pageChange($event)\"\n (paginationSet)=\"pageSizeChange($event)\"\n (rowClicked)=\"rowClick($event)\"\n (sortChanged)=\"sortChanged($event)\"\n >\n <ng-container carbonToolbarActions>\n <button cdsButton=\"primary\" (click)=\"showAssignModal()\">\n {{ 'case.bulkAssign.assign' | translate }}\n </button>\n </ng-container>\n\n <div carbonToolbarContent>\n <valtimo-case-list-toolbar\n [availableFields]=\"obs.availableFields\"\n [canCreate]=\"obs.canCreate\"\n [canExport]=\"obs.canExport\"\n [disableExport]=\"obs.disableExport\"\n [disableStart]=\"obs.disableStartButton\"\n [hasApiColumnConfig]=\"obs.hasApiColumnConfig\"\n [hiddenColumns]=\"obs.hiddenColumns\"\n [loadingExport]=\"loadingExport\"\n (exportEvent)=\"export()\"\n (startCaseEvent)=\"startCase()\"\n (viewUpdateEvent)=\"onViewUpdateEvent($event)\"\n ></valtimo-case-list-toolbar>\n </div>\n\n <valtimo-no-results\n [action]=\"obs.noResultsMessage.isSearchResult ? null : caseListActionsNoResult\"\n [description]=\"obs.noResultsMessage.description | translate\"\n [title]=\"obs.noResultsMessage.title | translate\"\n ></valtimo-no-results>\n\n <div tabs *ngIf=\"canHaveAssignee\">\n <valtimo-case-list-tabs\n [assigneeFilter]=\"obs.assigneeFilter\"\n [selectedRowCount]=\"carbonList?.model?.selectedRowsCount() ?? 0\"\n [visibleTabs]=\"visibleCaseTabs\"\n (tabChangeEvent)=\"onTabChange($event)\"\n ></valtimo-case-list-tabs>\n </div>\n </valtimo-carbon-list>\n</ng-template>\n\n<ng-template #loading>\n <valtimo-carbon-list [loading]=\"true\">\n <div tabs *ngIf=\"canHaveAssignee\">\n <valtimo-case-list-tabs\n [assigneeFilter]=\"orchestration.assigneeFilter$ | async\"\n [selectedRowCount]=\"0\"\n [visibleTabs]=\"visibleCaseTabs\"\n (tabChangeEvent)=\"onTabChange($event)\"\n ></valtimo-case-list-tabs>\n </div>\n </valtimo-carbon-list>\n</ng-template>\n\n<ng-template #bulkAssignModal let-obs=\"obs\">\n <valtimo-case-bulk-assign-modal\n [documentIds]=\"obs.selectedCaseIds\"\n [open]=\"obs.showAssignModal\"\n (closeEvent)=\"onCloseEvent($event)\"\n ></valtimo-case-bulk-assign-modal>\n</ng-template>\n\n<ng-template #changePageModal>\n <valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"case.changePageModal.confirm\"\n contentTranslationKey=\"case.changePageModal.content\"\n [outputOnConfirm]=\"paginationChange$ | async\"\n [showModalSubject$]=\"showChangePageModal$\"\n titleTranslationKey=\"case.changePageModal.title\"\n (confirmEvent)=\"onChangePageConfirm($event)\"\n ></valtimo-confirmation-modal>\n</ng-template>\n\n<ng-template #caseListActionsNoResult>\n <button\n *ngIf=\"orchestration.canCreateCase$ | async\"\n cdsButton=\"primary\"\n [disabled]=\"disableStartButton$ | async\"\n (click)=\"startCase()\"\n >\n {{ 'Start Case' | translate }}\n\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n</ng-template>\n", styles: [":host{display:flex;flex-direction:column;gap:16px}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2$1.SearchFieldsComponent, selector: "valtimo-search-fields", inputs: ["loading", "searchFields", "caseDefinitionKey", "setValuesSubject$", "clearValuesSubject$", "defaultValues", "disableSaveSearch", "inputDisabled", "externalSearchField", "canSaveSearch"], outputs: ["doSearch", "saveSearchEvent", "clearEvent"] }, { kind: "directive", type: i2$2.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "directive", type: i2$2.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: i2$1.ConfirmationModalComponent, selector: "valtimo-confirmation-modal", inputs: ["titleTranslationKey", "title", "content", "contentTranslationKey", "confirmButtonText", "confirmButtonTextTranslationKey", "confirmButtonType", "showOptionalButton", "optionalButtonText", "optionalButtonTextTranslationKey", "optionalButtonType", "cancelButtonText", "cancelButtonTextTranslationKey", "cancelButtonType", "showModalSubject$", "outputOnConfirm", "outputOnOptional", "spacerAfterCancelButton"], outputs: ["confirmEvent", "optionalEvent", "cancelEvent"] }, { kind: "component", type: i2$1.CarbonListComponent, selector: "valtimo-carbon-list", inputs: ["items", "fields", "tableTranslations", "paginatorConfig", "pagination", "loading", "skeletonRowCount", "actions", "actionItems", "showActionItems", "header", "hideColumnHeader", "initialSortState", "sortState", "isSearchable", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped", "hideToolbar", "lockedTooltipTranslationKey", "movingRowsEnabled", "dragAndDrop", "dragAndDropDisabled"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged", "moveRow", "itemsReordered"] }, { kind: "component", type: i2$1.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "component", type: i2$1.StatusSelectorComponent, selector: "valtimo-status-selector", inputs: ["statuses", "selectedStatusKeys", "carbonTheme", "disabled"], outputs: ["selectedStatusesChangeEvent"] }, { kind: "component", type: i2$1.CaseTagsSelectorComponent, selector: "valtimo-case-tags-selector", inputs: ["caseTags", "selectedCaseTagKeys", "carbonTheme", "disabled"], outputs: ["selectedCaseTagsChangeEvent"] }, { kind: "component", type: i2$1.QuickSearchComponent, selector: "valtimo-quick-search", outputs: ["quickSearchEvent"] }, { kind: "component", type: CaseListActionsComponent, selector: "valtimo-case-list-actions", inputs: ["loading", "navigateAfterSubmit"], outputs: ["formFlowComplete", "startButtonDisableEvent"] }, { kind: "component", type: CaseBulkAssignModalComponent, selector: "valtimo-case-bulk-assign-modal", inputs: ["documentIds", "open"], outputs: ["closeEvent"] }, { kind: "component", type: CaseListTabsComponent, selector: "valtimo-case-list-tabs", inputs: ["assigneeFilter", "selectedRowCount", "visibleTabs"], outputs: ["tabChangeEvent"] }, { kind: "component", type: CaseListToolbarComponent, selector: "valtimo-case-list-toolbar", inputs: ["availableFields", "canCreate", "canExport", "disableExport", "disableStart", "hasApiColumnConfig", "hiddenColumns", "loadingExport"], outputs: ["exportEvent", "startCaseEvent", "viewUpdateEvent"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
|
|
6257
|
+
], viewQueries: [{ propertyName: "carbonList", first: true, predicate: CarbonListComponent, descendants: true }, { propertyName: "listActionsComponent", first: true, predicate: CaseListActionsComponent, descendants: true }, { propertyName: "tabsComponent", first: true, predicate: CaseListTabsComponent, descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<ng-container\n *ngIf=\"{\n availableFields: orchestration.availableFields$ | async,\n fields: orchestration.fields$ | async,\n documentItems: orchestration.documentItems$ | async,\n noResultsMessage: orchestration.noResultsMessage$ | async,\n hasApiColumnConfig: orchestration.hasApiColumnConfig$ | async,\n searchFields: orchestration.searchFields$ | async,\n schema: orchestration.schema$ | async,\n showAssignModal: showAssignModal$ | async,\n selectedCaseIds: selectedCaseIds$ | async,\n statuses: orchestration.statuses$ | async,\n caseTags: orchestration.caseTags$ | async,\n selectedStatusKeys: orchestration.selectedStatusKeys$ | async,\n selectedCaseTagKeys: orchestration.selectedCaseTagKeys$ | async,\n showStatusSelector: orchestration.showStatusSelector$ | async,\n showCaseTagsSelector: orchestration.showCaseTagsSelector$ | async,\n loaded: orchestration.loaded$ | async,\n canCreate: orchestration.canCreateCase$ | async,\n canExport: orchestration.canExportCase$ | async,\n disableExport: orchestration.disableExportButton$ | async,\n disableSaveSearch: orchestration.disableSaveSearch$ | async,\n assigneeFilter: orchestration.assigneeFilter$ | async,\n hiddenColumns: orchestration.hiddenColumns$ | async,\n disableStartButton: disableStartButton$ | async,\n } as obs\"\n>\n <valtimo-case-list-actions\n [loading]=\"!obs.loaded\"\n (formFlowComplete)=\"forceRefresh()\"\n (startButtonDisableEvent)=\"onStartButtonDisableEvent($event)\"\n ></valtimo-case-list-actions>\n\n <ng-container *ngTemplateOutlet=\"searchFields; context: {obs: obs}\"></ng-container>\n\n <valtimo-quick-search (quickSearchEvent)=\"onQuickSearchEvent($event)\"></valtimo-quick-search>\n\n <ng-container *ngIf=\"obs.loaded; else loading\">\n <ng-container *ngTemplateOutlet=\"list; context: {obs: obs}\"></ng-container>\n </ng-container>\n\n <ng-container *ngTemplateOutlet=\"bulkAssignModal; context: {obs: obs}\"></ng-container>\n\n <ng-container *ngTemplateOutlet=\"changePageModal\"></ng-container>\n</ng-container>\n\n<ng-template #searchFields let-obs=\"obs\">\n <valtimo-search-fields\n [disableSaveSearch]=\"obs.disableSaveSearch\"\n [canSaveSearch]=\"true\"\n [searchFields]=\"obs.searchFields\"\n [caseDefinitionKey]=\"orchestration.caseDefinitionKey$ | async\"\n [defaultValues]=\"orchestration.searchFieldValues$ | async\"\n [inputDisabled]=\"!obs.loaded\"\n [externalSearchField]=\"obs.showStatusSelector\"\n (clearEvent)=\"onClearEvent()\"\n (doSearch)=\"search($event)\"\n (saveSearchEvent)=\"onSaveSearchEvent($event)\"\n >\n <valtimo-status-selector\n *ngIf=\"obs.showStatusSelector\"\n [statuses]=\"obs.statuses\"\n [selectedStatusKeys]=\"obs.selectedStatusKeys\"\n [disabled]=\"!obs.loaded\"\n (selectedStatusesChangeEvent)=\"onSelectedStatusesChange($event)\"\n ></valtimo-status-selector>\n\n <valtimo-case-tags-selector\n *ngIf=\"obs.showCaseTagsSelector\"\n [caseTags]=\"obs.caseTags\"\n [selectedCaseTagKeys]=\"obs.selectedCaseTagKeys\"\n [disabled]=\"!obs.loaded\"\n (selectedCaseTagsChangeEvent)=\"onSelectedCaseTagsChange($event)\"\n ></valtimo-case-tags-selector>\n </valtimo-search-fields>\n</ng-template>\n\n<ng-template #list let-obs=\"obs\">\n <valtimo-carbon-list\n [fields]=\"obs.fields\"\n [header]=\"false\"\n [initialSortState]=\"pagination.sort\"\n [items]=\"obs.documentItems\"\n [pagination]=\"pagination\"\n\n lockedTooltipTranslationKey=\"case.rowLocked\"\n [showSelectionColumn]=\"canHaveAssignee\"\n [tableTranslations]=\"tableTranslations\"\n (paginationClicked)=\"pageChange($event)\"\n (paginationSet)=\"pageSizeChange($event)\"\n (rowClicked)=\"rowClick($event)\"\n (sortChanged)=\"sortChanged($event)\"\n >\n <ng-container carbonToolbarActions>\n <button cdsButton=\"primary\" (click)=\"showAssignModal()\">\n {{ 'case.bulkAssign.assign' | translate }}\n </button>\n </ng-container>\n\n <div carbonToolbarContent>\n <valtimo-case-list-toolbar\n [availableFields]=\"obs.availableFields\"\n [canCreate]=\"obs.canCreate\"\n [canExport]=\"obs.canExport\"\n [disableExport]=\"obs.disableExport\"\n [disableStart]=\"obs.disableStartButton\"\n [hasApiColumnConfig]=\"obs.hasApiColumnConfig\"\n [hiddenColumns]=\"obs.hiddenColumns\"\n [loadingExport]=\"loadingExport\"\n (exportEvent)=\"export()\"\n (startCaseEvent)=\"startCase()\"\n (viewUpdateEvent)=\"onViewUpdateEvent($event)\"\n ></valtimo-case-list-toolbar>\n </div>\n\n <valtimo-no-results\n [action]=\"obs.noResultsMessage.isSearchResult ? null : caseListActionsNoResult\"\n [description]=\"obs.noResultsMessage.description | translate\"\n [title]=\"obs.noResultsMessage.title | translate\"\n ></valtimo-no-results>\n\n <div tabs *ngIf=\"canHaveAssignee\">\n <valtimo-case-list-tabs\n [assigneeFilter]=\"obs.assigneeFilter\"\n [selectedRowCount]=\"carbonList?.model?.selectedRowsCount() ?? 0\"\n [visibleTabs]=\"visibleCaseTabs\"\n (tabChangeEvent)=\"onTabChange($event)\"\n ></valtimo-case-list-tabs>\n </div>\n </valtimo-carbon-list>\n</ng-template>\n\n<ng-template #loading>\n <valtimo-carbon-list [loading]=\"true\">\n <div tabs *ngIf=\"canHaveAssignee\">\n <valtimo-case-list-tabs\n [assigneeFilter]=\"orchestration.assigneeFilter$ | async\"\n [selectedRowCount]=\"0\"\n [visibleTabs]=\"visibleCaseTabs\"\n (tabChangeEvent)=\"onTabChange($event)\"\n ></valtimo-case-list-tabs>\n </div>\n </valtimo-carbon-list>\n</ng-template>\n\n<ng-template #bulkAssignModal let-obs=\"obs\">\n <valtimo-case-bulk-assign-modal\n [documentIds]=\"obs.selectedCaseIds\"\n [open]=\"obs.showAssignModal\"\n (closeEvent)=\"onCloseEvent($event)\"\n ></valtimo-case-bulk-assign-modal>\n</ng-template>\n\n<ng-template #changePageModal>\n <valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"case.changePageModal.confirm\"\n contentTranslationKey=\"case.changePageModal.content\"\n [outputOnConfirm]=\"paginationChange$ | async\"\n [showModalSubject$]=\"showChangePageModal$\"\n titleTranslationKey=\"case.changePageModal.title\"\n (confirmEvent)=\"onChangePageConfirm($event)\"\n ></valtimo-confirmation-modal>\n</ng-template>\n\n<ng-template #caseListActionsNoResult>\n <button\n *ngIf=\"orchestration.canCreateCase$ | async\"\n cdsButton=\"primary\"\n [disabled]=\"disableStartButton$ | async\"\n (click)=\"startCase()\"\n >\n {{ 'Start Case' | translate }}\n\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n</ng-template>\n", styles: [":host{display:flex;flex-direction:column;gap:16px}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2$1.SearchFieldsComponent, selector: "valtimo-search-fields", inputs: ["loading", "searchFields", "caseDefinitionKey", "setValuesSubject$", "clearValuesSubject$", "defaultValues", "disableSaveSearch", "inputDisabled", "externalSearchField", "canSaveSearch"], outputs: ["doSearch", "saveSearchEvent", "clearEvent"] }, { kind: "directive", type: i4$1.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "directive", type: i4$1.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: i2$1.ConfirmationModalComponent, selector: "valtimo-confirmation-modal", inputs: ["titleTranslationKey", "title", "content", "contentTranslationKey", "confirmButtonText", "confirmButtonTextTranslationKey", "confirmButtonType", "showOptionalButton", "optionalButtonText", "optionalButtonTextTranslationKey", "optionalButtonType", "cancelButtonText", "cancelButtonTextTranslationKey", "cancelButtonType", "showModalSubject$", "outputOnConfirm", "outputOnOptional", "spacerAfterCancelButton"], outputs: ["confirmEvent", "optionalEvent", "cancelEvent"] }, { kind: "component", type: i2$1.CarbonListComponent, selector: "valtimo-carbon-list", inputs: ["items", "fields", "tableTranslations", "paginatorConfig", "pagination", "loading", "skeletonRowCount", "actions", "actionItems", "showActionItems", "header", "hideColumnHeader", "initialSortState", "sortState", "isSearchable", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped", "hideToolbar", "lockedTooltipTranslationKey", "movingRowsEnabled", "dragAndDrop", "dragAndDropDisabled"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged", "moveRow", "itemsReordered"] }, { kind: "component", type: i2$1.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "component", type: i2$1.StatusSelectorComponent, selector: "valtimo-status-selector", inputs: ["statuses", "selectedStatusKeys", "carbonTheme", "disabled"], outputs: ["selectedStatusesChangeEvent"] }, { kind: "component", type: i2$1.CaseTagsSelectorComponent, selector: "valtimo-case-tags-selector", inputs: ["caseTags", "selectedCaseTagKeys", "carbonTheme", "disabled"], outputs: ["selectedCaseTagsChangeEvent"] }, { kind: "component", type: i2$1.QuickSearchComponent, selector: "valtimo-quick-search", outputs: ["quickSearchEvent"] }, { kind: "component", type: CaseListActionsComponent, selector: "valtimo-case-list-actions", inputs: ["loading", "navigateAfterSubmit"], outputs: ["formFlowComplete", "startButtonDisableEvent"] }, { kind: "component", type: CaseBulkAssignModalComponent, selector: "valtimo-case-bulk-assign-modal", inputs: ["documentIds", "open"], outputs: ["closeEvent"] }, { kind: "component", type: CaseListTabsComponent, selector: "valtimo-case-list-tabs", inputs: ["assigneeFilter", "selectedRowCount", "visibleTabs"], outputs: ["tabChangeEvent"] }, { kind: "component", type: CaseListToolbarComponent, selector: "valtimo-case-list-toolbar", inputs: ["availableFields", "canCreate", "canExport", "disableExport", "disableStart", "hasApiColumnConfig", "hiddenColumns", "loadingExport"], outputs: ["exportEvent", "startCaseEvent", "viewUpdateEvent"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
|
|
6097
6258
|
}
|
|
6098
6259
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseListComponent, decorators: [{
|
|
6099
6260
|
type: Component,
|
|
@@ -6238,154 +6399,1486 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
|
|
|
6238
6399
|
* See the License for the specific language governing permissions and
|
|
6239
6400
|
* limitations under the License.
|
|
6240
6401
|
*/
|
|
6241
|
-
|
|
6242
|
-
|
|
6243
|
-
|
|
6244
|
-
this.
|
|
6245
|
-
this.
|
|
6246
|
-
this.bulkAssignService = bulkAssignService;
|
|
6247
|
-
this.caseExportService = caseExportService;
|
|
6248
|
-
this.caseListCaseTagService = caseListCaseTagService;
|
|
6249
|
-
this.listService = listService;
|
|
6250
|
-
this.pageTitleService = pageTitleService;
|
|
6251
|
-
this.paginationService = paginationService;
|
|
6252
|
-
this.parameterService = parameterService;
|
|
6253
|
-
this.quickSearchStateService = quickSearchStateService;
|
|
6254
|
-
this.router = router;
|
|
6255
|
-
this.searchService = searchService;
|
|
6256
|
-
this.statusService = statusService;
|
|
6257
|
-
this.caseListQuickSearchService = caseListQuickSearchService;
|
|
6258
|
-
this.configService = configService;
|
|
6259
|
-
this.teamsApiService = teamsApiService;
|
|
6260
|
-
this.documentService = documentService;
|
|
6402
|
+
class CaseInspectionBuildingBlockDetailComponent {
|
|
6403
|
+
constructor(caseInspectionService, permissionService, notificationService, translateService) {
|
|
6404
|
+
this.caseInspectionService = caseInspectionService;
|
|
6405
|
+
this.permissionService = permissionService;
|
|
6406
|
+
this.notificationService = notificationService;
|
|
6261
6407
|
this.translateService = translateService;
|
|
6262
|
-
this.
|
|
6263
|
-
this
|
|
6264
|
-
this
|
|
6265
|
-
this
|
|
6266
|
-
this
|
|
6267
|
-
this.
|
|
6268
|
-
|
|
6269
|
-
|
|
6270
|
-
|
|
6271
|
-
|
|
6272
|
-
|
|
6273
|
-
this.loadingCaseListItems$ = new BehaviorSubject(true);
|
|
6274
|
-
this._selectedCaseDefinitionId$ = new BehaviorSubject(ALL_CASES_ID);
|
|
6275
|
-
this.selectedCaseDefinitionId$ = this._selectedCaseDefinitionId$.asObservable();
|
|
6276
|
-
this.isAllCases$ = this._selectedCaseDefinitionId$.pipe(map(id => id === ALL_CASES_ID));
|
|
6277
|
-
this.caseListItems$ = combineLatest([
|
|
6278
|
-
this.documentService.getAllDefinitions(),
|
|
6279
|
-
this._selectedCaseDefinitionId$,
|
|
6280
|
-
this.translateService.stream('key'),
|
|
6281
|
-
]).pipe(map(([documentDefinitionRes, selectedId]) => [
|
|
6282
|
-
{
|
|
6283
|
-
content: this.translateService.instant('case.allCases'),
|
|
6284
|
-
id: ALL_CASES_ID,
|
|
6285
|
-
selected: selectedId === ALL_CASES_ID,
|
|
6286
|
-
},
|
|
6287
|
-
...documentDefinitionRes.content.map(documentDefinition => ({
|
|
6288
|
-
id: documentDefinition.id.name,
|
|
6289
|
-
content: documentDefinition?.schema?.title,
|
|
6290
|
-
selected: documentDefinition.id.name === selectedId,
|
|
6291
|
-
})),
|
|
6292
|
-
]), tap(() => this.loadingCaseListItems$.next(false)));
|
|
6293
|
-
// --- "All Cases" data pipeline ---
|
|
6294
|
-
this._allCasesPage$ = new BehaviorSubject(1);
|
|
6295
|
-
this._allCasesSize$ = new BehaviorSubject(10);
|
|
6296
|
-
this._allCasesSort$ = new BehaviorSubject(null);
|
|
6297
|
-
this._allCasesReload$ = new BehaviorSubject(false);
|
|
6298
|
-
this._allCasesAssigneeFilter$ = new BehaviorSubject('ALL');
|
|
6299
|
-
this.allCasesAssigneeFilter$ = this._allCasesAssigneeFilter$.asObservable();
|
|
6300
|
-
this.allCasesFields$ = this.translateService
|
|
6301
|
-
.stream('fieldLabels')
|
|
6302
|
-
.pipe(map(() => this.mapDefaultColumnsToListFields(this.configService.config?.defaultDefinitionTable || [])));
|
|
6303
|
-
this.allCasesLoading$ = new BehaviorSubject(true);
|
|
6304
|
-
this.allCasesData$ = combineLatest([
|
|
6305
|
-
this._allCasesPage$,
|
|
6306
|
-
this._allCasesSize$,
|
|
6307
|
-
this._allCasesSort$,
|
|
6308
|
-
this._allCasesReload$,
|
|
6309
|
-
this._allCasesAssigneeFilter$,
|
|
6310
|
-
]).pipe(tap(() => this.allCasesLoading$.next(true)), switchMap(([page, size, sort, _, assigneeFilter]) => {
|
|
6311
|
-
const request = new DocumentSearchRequestImpl('', page - 1, size, undefined, undefined, undefined, sort, undefined, assigneeFilter !== 'ALL' ? assigneeFilter : undefined);
|
|
6312
|
-
return this.documentService.getDocuments(request).pipe(map((documents) => ({
|
|
6313
|
-
items: documents.content.map(document => {
|
|
6314
|
-
const { content, ...others } = document;
|
|
6315
|
-
return { ...content, ...others };
|
|
6316
|
-
}),
|
|
6317
|
-
pagination: {
|
|
6318
|
-
collectionSize: documents.totalElements,
|
|
6319
|
-
page,
|
|
6320
|
-
size,
|
|
6321
|
-
sort,
|
|
6322
|
-
},
|
|
6323
|
-
})));
|
|
6324
|
-
}), tap(() => this.allCasesLoading$.next(false)), shareReplay(1));
|
|
6325
|
-
this._subscriptions = new Subscription();
|
|
6326
|
-
}
|
|
6327
|
-
ngOnInit() {
|
|
6328
|
-
this.pageTitleService.disableReset();
|
|
6329
|
-
this.pageTitleService.setCustomPageTitle(this.translateService.instant('Cases'), true);
|
|
6330
|
-
this.resolveVisibleCaseTabs();
|
|
6331
|
-
}
|
|
6332
|
-
ngOnDestroy() {
|
|
6333
|
-
this._subscriptions.unsubscribe();
|
|
6334
|
-
this._paginationSubscription?.unsubscribe();
|
|
6335
|
-
this._canHaveAssigneeSubscription?.unsubscribe();
|
|
6336
|
-
this._searchFieldsSubscription?.unsubscribe();
|
|
6337
|
-
this.pageTitleService.enableReset();
|
|
6338
|
-
}
|
|
6339
|
-
// --- Case definition switching ---
|
|
6340
|
-
setCaseDefinition(definition) {
|
|
6341
|
-
const newId = definition.item.id;
|
|
6342
|
-
if (newId === this._selectedCaseDefinitionId$.getValue())
|
|
6343
|
-
return;
|
|
6344
|
-
this._selectedCaseDefinitionId$.next(newId);
|
|
6345
|
-
if (newId !== ALL_CASES_ID) {
|
|
6346
|
-
this.parameterService.clearParameters();
|
|
6347
|
-
this.parameterService.clearSearchFieldValues();
|
|
6348
|
-
this.paginationService.clearPagination();
|
|
6349
|
-
this.assigneeService.resetAssigneeFilter();
|
|
6350
|
-
this.listService.setCaseDefinitionKey(newId);
|
|
6351
|
-
this.orchestration.setLoading();
|
|
6352
|
-
this.subscribeToPagination();
|
|
6353
|
-
this.subscribeToCanHaveAssignee();
|
|
6354
|
-
this.subscribeToSearchFields();
|
|
6408
|
+
this.viewProcessLogsEvent = new EventEmitter();
|
|
6409
|
+
this.$loading = signal(true);
|
|
6410
|
+
this.$errorMessage = signal(null);
|
|
6411
|
+
this.$canInspectModify = signal(false);
|
|
6412
|
+
this.$document = signal(null);
|
|
6413
|
+
this.model$ = new BehaviorSubject(null);
|
|
6414
|
+
}
|
|
6415
|
+
ngOnChanges(changes) {
|
|
6416
|
+
if (changes.instance && this.instance) {
|
|
6417
|
+
this.loadDocument(this.instance.documentId);
|
|
6418
|
+
this.loadPermission(this.instance.documentId);
|
|
6355
6419
|
}
|
|
6356
|
-
|
|
6357
|
-
|
|
6358
|
-
|
|
6420
|
+
}
|
|
6421
|
+
onViewProcessLogs() {
|
|
6422
|
+
if (this.instance.processInstanceId) {
|
|
6423
|
+
this.viewProcessLogsEvent.emit(this.instance.processInstanceId);
|
|
6359
6424
|
}
|
|
6360
6425
|
}
|
|
6361
|
-
|
|
6362
|
-
|
|
6363
|
-
this.
|
|
6426
|
+
onSaveEvent(content) {
|
|
6427
|
+
const documentId = this.instance.documentId;
|
|
6428
|
+
this.caseInspectionService
|
|
6429
|
+
.modifyDocumentForInspection(documentId, {
|
|
6430
|
+
documentId,
|
|
6431
|
+
content,
|
|
6432
|
+
})
|
|
6433
|
+
.subscribe({
|
|
6434
|
+
next: result => {
|
|
6435
|
+
if (result.errors?.length) {
|
|
6436
|
+
this.$errorMessage.set(result.errors.join('\n'));
|
|
6437
|
+
return;
|
|
6438
|
+
}
|
|
6439
|
+
this.$errorMessage.set(null);
|
|
6440
|
+
this.notificationService.showToast({
|
|
6441
|
+
type: 'success',
|
|
6442
|
+
title: this.translateService.instant('case.inspection.buildingBlocks.saved'),
|
|
6443
|
+
message: '',
|
|
6444
|
+
});
|
|
6445
|
+
this.loadDocument(documentId);
|
|
6446
|
+
},
|
|
6447
|
+
error: err => {
|
|
6448
|
+
this.$errorMessage.set(err?.error?.message ?? err?.message ?? 'Save failed');
|
|
6449
|
+
},
|
|
6450
|
+
});
|
|
6364
6451
|
}
|
|
6365
|
-
|
|
6366
|
-
this.
|
|
6367
|
-
|
|
6368
|
-
|
|
6369
|
-
|
|
6370
|
-
|
|
6452
|
+
loadDocument(documentId) {
|
|
6453
|
+
this.$loading.set(true);
|
|
6454
|
+
this.$errorMessage.set(null);
|
|
6455
|
+
this.$document.set(null);
|
|
6456
|
+
this.model$.next(null);
|
|
6457
|
+
this.caseInspectionService.getDocument(documentId).subscribe({
|
|
6458
|
+
next: document => {
|
|
6459
|
+
if (documentId !== this.instance.documentId) {
|
|
6460
|
+
return;
|
|
6371
6461
|
}
|
|
6372
|
-
|
|
6373
|
-
|
|
6462
|
+
this.$document.set(document);
|
|
6463
|
+
this.model$.next({
|
|
6464
|
+
value: JSON.stringify(document.content ?? {}, null, 2),
|
|
6465
|
+
language: 'json',
|
|
6466
|
+
});
|
|
6467
|
+
this.$loading.set(false);
|
|
6468
|
+
},
|
|
6469
|
+
error: err => {
|
|
6470
|
+
if (documentId !== this.instance.documentId) {
|
|
6471
|
+
return;
|
|
6374
6472
|
}
|
|
6375
|
-
|
|
6473
|
+
this.$errorMessage.set(err?.error?.message ?? err?.message ?? 'Failed to load building block');
|
|
6474
|
+
this.$loading.set(false);
|
|
6475
|
+
},
|
|
6376
6476
|
});
|
|
6377
6477
|
}
|
|
6378
|
-
|
|
6379
|
-
this.
|
|
6380
|
-
|
|
6381
|
-
|
|
6382
|
-
|
|
6478
|
+
loadPermission(documentId) {
|
|
6479
|
+
this.permissionService
|
|
6480
|
+
.requestPermission(CAN_INSPECT_MODIFY_CASE_PERMISSION, {
|
|
6481
|
+
resource: CASE_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,
|
|
6482
|
+
identifier: documentId,
|
|
6483
|
+
})
|
|
6484
|
+
.subscribe({
|
|
6485
|
+
next: (allowed) => {
|
|
6486
|
+
if (documentId !== this.instance.documentId) {
|
|
6487
|
+
return;
|
|
6488
|
+
}
|
|
6489
|
+
this.$canInspectModify.set(allowed);
|
|
6490
|
+
},
|
|
6491
|
+
error: () => {
|
|
6492
|
+
if (documentId !== this.instance.documentId) {
|
|
6493
|
+
return;
|
|
6494
|
+
}
|
|
6495
|
+
this.$canInspectModify.set(false);
|
|
6496
|
+
},
|
|
6497
|
+
});
|
|
6383
6498
|
}
|
|
6384
|
-
|
|
6385
|
-
|
|
6386
|
-
|
|
6387
|
-
|
|
6388
|
-
|
|
6499
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseInspectionBuildingBlockDetailComponent, deps: [{ token: CaseInspectionService }, { token: i2$3.PermissionService }, { token: i1.GlobalNotificationService }, { token: i4.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6500
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: CaseInspectionBuildingBlockDetailComponent, isStandalone: true, selector: "valtimo-case-inspection-building-block-detail", inputs: { instance: "instance" }, outputs: { viewProcessLogsEvent: "viewProcessLogsEvent" }, usesOnChanges: true, ngImport: i0, template: "<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<section class=\"case-inspection-bb-detail\">\n <header class=\"case-inspection-bb-detail__header\">\n <h3>\n {{ instance.definitionKey }}\n <small>{{ instance.definitionVersionTag }}</small>\n </h3>\n\n <cds-structured-list class=\"case-inspection-bb-detail__meta\" [condensed]=\"true\">\n <cds-list-row>\n <cds-list-column>{{\n 'case.inspection.buildingBlocks.detail.instanceId' | translate\n }}</cds-list-column>\n <cds-list-column\n ><code>{{ instance.id }}</code></cds-list-column\n >\n </cds-list-row>\n\n <cds-list-row>\n <cds-list-column>{{\n 'case.inspection.buildingBlocks.detail.documentId' | translate\n }}</cds-list-column>\n <cds-list-column\n ><code>{{ instance.documentId }}</code></cds-list-column\n >\n </cds-list-row>\n\n <cds-list-row>\n <cds-list-column>{{\n 'case.inspection.buildingBlocks.detail.processInstance' | translate\n }}</cds-list-column>\n <cds-list-column>\n <ng-container *ngIf=\"instance.processInstanceId; else noProcess\">\n <code>{{ instance.processInstanceId }}</code>\n <button\n class=\"case-inspection-bb-detail__view-logs\"\n type=\"button\"\n (click)=\"onViewProcessLogs()\"\n >\n {{ 'case.inspection.processes.viewLogs' | translate }}\n </button>\n </ng-container>\n\n <ng-template #noProcess>\u2014</ng-template>\n </cds-list-column>\n </cds-list-row>\n\n <cds-list-row>\n <cds-list-column>{{\n 'case.inspection.buildingBlocks.detail.parent' | translate\n }}</cds-list-column>\n <cds-list-column>\n <ng-container *ngIf=\"instance.parentBuildingBlockInstanceId; else noParent\">\n <code>{{ instance.parentBuildingBlockInstanceId }}</code>\n </ng-container>\n\n <ng-template #noParent>\u2014</ng-template>\n </cds-list-column>\n </cds-list-row>\n </cds-structured-list>\n </header>\n\n <ng-container *ngIf=\"$errorMessage() as message\">\n <p class=\"case-inspection-bb-detail__error\">{{ message }}</p>\n </ng-container>\n\n <ng-container *ngIf=\"$loading()\">\n <p>{{ 'case.inspection.buildingBlocks.detail.loading' | translate }}</p>\n </ng-container>\n\n <ng-container *ngIf=\"!$loading() && (model$ | async) as model\">\n <h4 class=\"case-inspection-bb-detail__subhead\">\n {{ 'case.inspection.buildingBlocks.detail.content' | translate }}\n </h4>\n\n <div class=\"json-editor-container\">\n <valtimo-json-editor\n cdsLayer=\"2\"\n [model]=\"model\"\n [heightPx]=\"400\"\n [showEditButton]=\"$canInspectModify()\"\n (saveEvent)=\"onSaveEvent($event)\"\n ></valtimo-json-editor>\n </div>\n </ng-container>\n</section>\n", styles: [".json-editor-container{border:1px solid var(--cds-border-subtle)}.case-inspection-bb-detail{padding-top:16px;padding-bottom:16px;padding-right:16px}.case-inspection-bb-detail__header{margin-bottom:var(--cds-spacing-05)}.case-inspection-bb-detail__header h3{margin:0 0 8px}.case-inspection-bb-detail__header h3 small{font-weight:400;color:var(--cds-text-helper);margin-left:var(--cds-spacing-03);font-size:var(--cds-body-compact-01-font-size)}.case-inspection-bb-detail__meta code{word-break:break-all}.case-inspection-bb-detail__subhead{margin:var(--cds-spacing-06) 0 var(--cds-spacing-03);font-size:var(--cds-body-compact-01-font-size);font-weight:600;color:var(--cds-text-secondary)}.case-inspection-bb-detail__error{color:var(--cds-text-error)}.case-inspection-bb-detail__view-logs{background:none;border:none;color:var(--cds-link-primary);cursor:pointer;font-size:var(--cds-helper-text-01-font-size);padding:0 0 0 var(--cds-spacing-03);text-decoration:underline}.case-inspection-bb-detail__view-logs:hover{color:var(--cds-link-primary-hover)}\n/*!\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: StructuredListModule }, { kind: "component", type: i4$1.StructuredList, selector: "cds-structured-list, ibm-structured-list", inputs: ["selection", "flushed", "condensed", "name", "skeleton"], outputs: ["selected"] }, { kind: "component", type: i4$1.ListRow, selector: "cds-list-row, ibm-list-row", inputs: ["selected", "label", "value"], outputs: ["change"] }, { kind: "component", type: i4$1.ListColumn, selector: "cds-list-column, ibm-list-column", inputs: ["skeleton", "nowrap"] }, { kind: "component", type: JsonEditorComponent, selector: "valtimo-json-editor", inputs: ["disabled", "model", "editorOptions", "fitPage", "fitPageSpaceAdjustment", "formatOnLoad", "heightPx", "heightStyle", "jsonSchema", "showEditButton", "widthPx"], outputs: ["changeEvent", "discardEvent", "keepEditingEvent", "saveEvent"] }, { kind: "ngmodule", type: LayerModule }, { kind: "directive", type: i4$1.LayerDirective, selector: "[cdsLayer], [ibmLayer]", inputs: ["ibmLayer", "cdsLayer"], exportAs: ["layer"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
6501
|
+
}
|
|
6502
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseInspectionBuildingBlockDetailComponent, decorators: [{
|
|
6503
|
+
type: Component,
|
|
6504
|
+
args: [{ standalone: true, selector: 'valtimo-case-inspection-building-block-detail', changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, TranslateModule, StructuredListModule, JsonEditorComponent, LayerModule], template: "<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<section class=\"case-inspection-bb-detail\">\n <header class=\"case-inspection-bb-detail__header\">\n <h3>\n {{ instance.definitionKey }}\n <small>{{ instance.definitionVersionTag }}</small>\n </h3>\n\n <cds-structured-list class=\"case-inspection-bb-detail__meta\" [condensed]=\"true\">\n <cds-list-row>\n <cds-list-column>{{\n 'case.inspection.buildingBlocks.detail.instanceId' | translate\n }}</cds-list-column>\n <cds-list-column\n ><code>{{ instance.id }}</code></cds-list-column\n >\n </cds-list-row>\n\n <cds-list-row>\n <cds-list-column>{{\n 'case.inspection.buildingBlocks.detail.documentId' | translate\n }}</cds-list-column>\n <cds-list-column\n ><code>{{ instance.documentId }}</code></cds-list-column\n >\n </cds-list-row>\n\n <cds-list-row>\n <cds-list-column>{{\n 'case.inspection.buildingBlocks.detail.processInstance' | translate\n }}</cds-list-column>\n <cds-list-column>\n <ng-container *ngIf=\"instance.processInstanceId; else noProcess\">\n <code>{{ instance.processInstanceId }}</code>\n <button\n class=\"case-inspection-bb-detail__view-logs\"\n type=\"button\"\n (click)=\"onViewProcessLogs()\"\n >\n {{ 'case.inspection.processes.viewLogs' | translate }}\n </button>\n </ng-container>\n\n <ng-template #noProcess>\u2014</ng-template>\n </cds-list-column>\n </cds-list-row>\n\n <cds-list-row>\n <cds-list-column>{{\n 'case.inspection.buildingBlocks.detail.parent' | translate\n }}</cds-list-column>\n <cds-list-column>\n <ng-container *ngIf=\"instance.parentBuildingBlockInstanceId; else noParent\">\n <code>{{ instance.parentBuildingBlockInstanceId }}</code>\n </ng-container>\n\n <ng-template #noParent>\u2014</ng-template>\n </cds-list-column>\n </cds-list-row>\n </cds-structured-list>\n </header>\n\n <ng-container *ngIf=\"$errorMessage() as message\">\n <p class=\"case-inspection-bb-detail__error\">{{ message }}</p>\n </ng-container>\n\n <ng-container *ngIf=\"$loading()\">\n <p>{{ 'case.inspection.buildingBlocks.detail.loading' | translate }}</p>\n </ng-container>\n\n <ng-container *ngIf=\"!$loading() && (model$ | async) as model\">\n <h4 class=\"case-inspection-bb-detail__subhead\">\n {{ 'case.inspection.buildingBlocks.detail.content' | translate }}\n </h4>\n\n <div class=\"json-editor-container\">\n <valtimo-json-editor\n cdsLayer=\"2\"\n [model]=\"model\"\n [heightPx]=\"400\"\n [showEditButton]=\"$canInspectModify()\"\n (saveEvent)=\"onSaveEvent($event)\"\n ></valtimo-json-editor>\n </div>\n </ng-container>\n</section>\n", styles: [".json-editor-container{border:1px solid var(--cds-border-subtle)}.case-inspection-bb-detail{padding-top:16px;padding-bottom:16px;padding-right:16px}.case-inspection-bb-detail__header{margin-bottom:var(--cds-spacing-05)}.case-inspection-bb-detail__header h3{margin:0 0 8px}.case-inspection-bb-detail__header h3 small{font-weight:400;color:var(--cds-text-helper);margin-left:var(--cds-spacing-03);font-size:var(--cds-body-compact-01-font-size)}.case-inspection-bb-detail__meta code{word-break:break-all}.case-inspection-bb-detail__subhead{margin:var(--cds-spacing-06) 0 var(--cds-spacing-03);font-size:var(--cds-body-compact-01-font-size);font-weight:600;color:var(--cds-text-secondary)}.case-inspection-bb-detail__error{color:var(--cds-text-error)}.case-inspection-bb-detail__view-logs{background:none;border:none;color:var(--cds-link-primary);cursor:pointer;font-size:var(--cds-helper-text-01-font-size);padding:0 0 0 var(--cds-spacing-03);text-decoration:underline}.case-inspection-bb-detail__view-logs:hover{color:var(--cds-link-primary-hover)}\n/*!\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
6505
|
+
}], ctorParameters: () => [{ type: CaseInspectionService }, { type: i2$3.PermissionService }, { type: i1.GlobalNotificationService }, { type: i4.TranslateService }], propDecorators: { instance: [{
|
|
6506
|
+
type: Input
|
|
6507
|
+
}], viewProcessLogsEvent: [{
|
|
6508
|
+
type: Output
|
|
6509
|
+
}] } });
|
|
6510
|
+
|
|
6511
|
+
/*
|
|
6512
|
+
* Copyright 2015-2026 Ritense BV, the Netherlands.
|
|
6513
|
+
*
|
|
6514
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
6515
|
+
* you may not use this file except in compliance with the License.
|
|
6516
|
+
* You may obtain a copy of the License at
|
|
6517
|
+
*
|
|
6518
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
6519
|
+
*
|
|
6520
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
6521
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
6522
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
6523
|
+
* See the License for the specific language governing permissions and
|
|
6524
|
+
* limitations under the License.
|
|
6525
|
+
*/
|
|
6526
|
+
class CaseInspectionBuildingBlocksTabComponent {
|
|
6527
|
+
constructor(caseInspectionService) {
|
|
6528
|
+
this.caseInspectionService = caseInspectionService;
|
|
6529
|
+
this.pendingInstanceId = null;
|
|
6530
|
+
this.viewProcessLogsEvent = new EventEmitter();
|
|
6531
|
+
this.$loading = signal(true);
|
|
6532
|
+
this.$instances = signal([]);
|
|
6533
|
+
this.$errorMessage = signal(null);
|
|
6534
|
+
this.$notSupported = signal(false);
|
|
6535
|
+
this.$selected = signal(null);
|
|
6536
|
+
}
|
|
6537
|
+
ngOnChanges(changes) {
|
|
6538
|
+
if (changes.documentId && this.documentId) {
|
|
6539
|
+
this.load();
|
|
6540
|
+
return;
|
|
6541
|
+
}
|
|
6542
|
+
if (changes.pendingInstanceId && this.pendingInstanceId) {
|
|
6543
|
+
this.applyPendingSelection();
|
|
6544
|
+
}
|
|
6545
|
+
}
|
|
6546
|
+
onSelect(instance) {
|
|
6547
|
+
this.$selected.set(instance);
|
|
6548
|
+
}
|
|
6549
|
+
isSelected(instance) {
|
|
6550
|
+
return this.$selected()?.id === instance.id;
|
|
6551
|
+
}
|
|
6552
|
+
load() {
|
|
6553
|
+
const requestedDocumentId = this.documentId;
|
|
6554
|
+
this.$loading.set(true);
|
|
6555
|
+
this.$errorMessage.set(null);
|
|
6556
|
+
this.$notSupported.set(false);
|
|
6557
|
+
this.$selected.set(null);
|
|
6558
|
+
this.$instances.set([]);
|
|
6559
|
+
this.caseInspectionService.getBuildingBlockInstances(requestedDocumentId).subscribe({
|
|
6560
|
+
next: instances => {
|
|
6561
|
+
if (requestedDocumentId !== this.documentId) {
|
|
6562
|
+
return;
|
|
6563
|
+
}
|
|
6564
|
+
this.$instances.set(instances);
|
|
6565
|
+
if (instances.length > 0) {
|
|
6566
|
+
this.$selected.set(this.findMatchingInstance(instances) ?? instances[0]);
|
|
6567
|
+
}
|
|
6568
|
+
this.$loading.set(false);
|
|
6569
|
+
},
|
|
6570
|
+
error: (err) => {
|
|
6571
|
+
if (requestedDocumentId !== this.documentId) {
|
|
6572
|
+
return;
|
|
6573
|
+
}
|
|
6574
|
+
if (err.status === 404) {
|
|
6575
|
+
this.$notSupported.set(true);
|
|
6576
|
+
}
|
|
6577
|
+
else {
|
|
6578
|
+
this.$errorMessage.set(err?.error?.message ?? err?.message ?? 'Failed to load building blocks');
|
|
6579
|
+
}
|
|
6580
|
+
this.$instances.set([]);
|
|
6581
|
+
this.$loading.set(false);
|
|
6582
|
+
},
|
|
6583
|
+
});
|
|
6584
|
+
}
|
|
6585
|
+
applyPendingSelection() {
|
|
6586
|
+
const instances = this.$instances();
|
|
6587
|
+
if (!instances.length) {
|
|
6588
|
+
return;
|
|
6589
|
+
}
|
|
6590
|
+
const match = this.findMatchingInstance(instances);
|
|
6591
|
+
if (match) {
|
|
6592
|
+
this.$selected.set(match);
|
|
6593
|
+
}
|
|
6594
|
+
}
|
|
6595
|
+
findMatchingInstance(instances) {
|
|
6596
|
+
if (!this.pendingInstanceId) {
|
|
6597
|
+
return undefined;
|
|
6598
|
+
}
|
|
6599
|
+
return instances.find(instance => instance.id === this.pendingInstanceId);
|
|
6600
|
+
}
|
|
6601
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseInspectionBuildingBlocksTabComponent, deps: [{ token: CaseInspectionService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6602
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: CaseInspectionBuildingBlocksTabComponent, isStandalone: true, selector: "valtimo-case-inspection-building-blocks", inputs: { documentId: "documentId", pendingInstanceId: "pendingInstanceId" }, outputs: { viewProcessLogsEvent: "viewProcessLogsEvent" }, usesOnChanges: true, ngImport: i0, template: "<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<section class=\"case-inspection-bb\">\n <ng-container *ngIf=\"$errorMessage() as message\">\n <p class=\"case-inspection-bb__error\">{{ message }}</p>\n </ng-container>\n\n <ng-container *ngIf=\"$notSupported()\">\n <p class=\"case-inspection-bb__notice\">\n {{ 'case.inspection.buildingBlocks.notEnabled' | translate }}\n </p>\n </ng-container>\n\n <div *ngIf=\"$loading()\" class=\"loading-container\">\n <cds-loading size=\"sm\"></cds-loading>\n </div>\n\n <ng-container *ngIf=\"!$loading() && !$notSupported() && $instances() as instances\">\n <valtimo-no-results\n *ngIf=\"instances.length === 0\"\n illustration=\"valtimo-layout/img/emptystate-empty.svg\"\n [description]=\"'case.inspection.buildingBlocks.empty' | translate\"\n [title]=\"'case.inspection.buildingBlocks.emptyTitle' | translate\"\n ></valtimo-no-results>\n\n <div *ngIf=\"instances.length > 0\" class=\"case-inspection-bb__layout\">\n <div\n class=\"case-inspection-bb__list\"\n role=\"listbox\"\n [attr.aria-label]=\"'case.inspection.buildingBlocks.listAriaLabel' | translate\"\n >\n <button\n *ngFor=\"let instance of instances\"\n type=\"button\"\n role=\"option\"\n class=\"case-inspection-bb__list-item\"\n [attr.aria-selected]=\"isSelected(instance)\"\n [class.case-inspection-bb__list-item--selected]=\"isSelected(instance)\"\n (click)=\"onSelect(instance)\"\n >\n <span class=\"case-inspection-bb__list-item-title\">{{ instance.definitionKey }}</span>\n <span class=\"case-inspection-bb__list-item-meta\">\n {{ instance.definitionVersionTag }}\n </span>\n </button>\n </div>\n\n <article class=\"case-inspection-bb__detail\">\n <valtimo-case-inspection-building-block-detail\n *ngIf=\"$selected() as selected\"\n [instance]=\"selected\"\n (viewProcessLogsEvent)=\"viewProcessLogsEvent.emit($event)\"\n ></valtimo-case-inspection-building-block-detail>\n </article>\n </div>\n </ng-container>\n</section>\n", styles: [".case-inspection-bb__error{color:var(--cds-text-error)}.case-inspection-bb__notice{padding:var(--cds-spacing-04) var(--cds-spacing-05);background-color:var(--cds-layer-accent);border-left:4px solid var(--cds-support-info)}.case-inspection-bb__layout{display:grid;grid-template-columns:minmax(220px,1fr) 3fr;gap:var(--cds-spacing-06);align-items:stretch}.case-inspection-bb__list{display:flex;flex-direction:column;border-right:1px solid var(--cds-border-subtle)}.case-inspection-bb__list-item{appearance:none;background:transparent;border:0;text-align:left;padding:var(--cds-spacing-04);cursor:pointer;display:flex;flex-direction:column;gap:var(--cds-spacing-01);color:inherit;font-family:inherit}.case-inspection-bb__list-item:hover{background-color:var(--cds-layer-hover)}.case-inspection-bb__list-item--selected{background-color:var(--cds-layer-selected);font-weight:600}.case-inspection-bb__list-item-title{font-size:var(--cds-body-compact-01-font-size)}.case-inspection-bb__list-item-meta{font-size:var(--cds-helper-text-01-font-size);color:var(--cds-text-helper)}.case-inspection-bb__detail{min-width:0}\n/*!\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CarbonListModule }, { kind: "component", type: i2$1.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "component", type: CaseInspectionBuildingBlockDetailComponent, selector: "valtimo-case-inspection-building-block-detail", inputs: ["instance"], outputs: ["viewProcessLogsEvent"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: LoadingModule }, { kind: "component", type: i4$1.Loading, selector: "cds-loading, ibm-loading", inputs: ["title", "isActive", "size", "overlay"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
6603
|
+
}
|
|
6604
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseInspectionBuildingBlocksTabComponent, decorators: [{
|
|
6605
|
+
type: Component,
|
|
6606
|
+
args: [{ standalone: true, selector: 'valtimo-case-inspection-building-blocks', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
6607
|
+
CarbonListModule,
|
|
6608
|
+
CaseInspectionBuildingBlockDetailComponent,
|
|
6609
|
+
CommonModule,
|
|
6610
|
+
TranslateModule,
|
|
6611
|
+
LoadingModule,
|
|
6612
|
+
], template: "<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<section class=\"case-inspection-bb\">\n <ng-container *ngIf=\"$errorMessage() as message\">\n <p class=\"case-inspection-bb__error\">{{ message }}</p>\n </ng-container>\n\n <ng-container *ngIf=\"$notSupported()\">\n <p class=\"case-inspection-bb__notice\">\n {{ 'case.inspection.buildingBlocks.notEnabled' | translate }}\n </p>\n </ng-container>\n\n <div *ngIf=\"$loading()\" class=\"loading-container\">\n <cds-loading size=\"sm\"></cds-loading>\n </div>\n\n <ng-container *ngIf=\"!$loading() && !$notSupported() && $instances() as instances\">\n <valtimo-no-results\n *ngIf=\"instances.length === 0\"\n illustration=\"valtimo-layout/img/emptystate-empty.svg\"\n [description]=\"'case.inspection.buildingBlocks.empty' | translate\"\n [title]=\"'case.inspection.buildingBlocks.emptyTitle' | translate\"\n ></valtimo-no-results>\n\n <div *ngIf=\"instances.length > 0\" class=\"case-inspection-bb__layout\">\n <div\n class=\"case-inspection-bb__list\"\n role=\"listbox\"\n [attr.aria-label]=\"'case.inspection.buildingBlocks.listAriaLabel' | translate\"\n >\n <button\n *ngFor=\"let instance of instances\"\n type=\"button\"\n role=\"option\"\n class=\"case-inspection-bb__list-item\"\n [attr.aria-selected]=\"isSelected(instance)\"\n [class.case-inspection-bb__list-item--selected]=\"isSelected(instance)\"\n (click)=\"onSelect(instance)\"\n >\n <span class=\"case-inspection-bb__list-item-title\">{{ instance.definitionKey }}</span>\n <span class=\"case-inspection-bb__list-item-meta\">\n {{ instance.definitionVersionTag }}\n </span>\n </button>\n </div>\n\n <article class=\"case-inspection-bb__detail\">\n <valtimo-case-inspection-building-block-detail\n *ngIf=\"$selected() as selected\"\n [instance]=\"selected\"\n (viewProcessLogsEvent)=\"viewProcessLogsEvent.emit($event)\"\n ></valtimo-case-inspection-building-block-detail>\n </article>\n </div>\n </ng-container>\n</section>\n", styles: [".case-inspection-bb__error{color:var(--cds-text-error)}.case-inspection-bb__notice{padding:var(--cds-spacing-04) var(--cds-spacing-05);background-color:var(--cds-layer-accent);border-left:4px solid var(--cds-support-info)}.case-inspection-bb__layout{display:grid;grid-template-columns:minmax(220px,1fr) 3fr;gap:var(--cds-spacing-06);align-items:stretch}.case-inspection-bb__list{display:flex;flex-direction:column;border-right:1px solid var(--cds-border-subtle)}.case-inspection-bb__list-item{appearance:none;background:transparent;border:0;text-align:left;padding:var(--cds-spacing-04);cursor:pointer;display:flex;flex-direction:column;gap:var(--cds-spacing-01);color:inherit;font-family:inherit}.case-inspection-bb__list-item:hover{background-color:var(--cds-layer-hover)}.case-inspection-bb__list-item--selected{background-color:var(--cds-layer-selected);font-weight:600}.case-inspection-bb__list-item-title{font-size:var(--cds-body-compact-01-font-size)}.case-inspection-bb__list-item-meta{font-size:var(--cds-helper-text-01-font-size);color:var(--cds-text-helper)}.case-inspection-bb__detail{min-width:0}\n/*!\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
6613
|
+
}], ctorParameters: () => [{ type: CaseInspectionService }], propDecorators: { documentId: [{
|
|
6614
|
+
type: Input
|
|
6615
|
+
}], pendingInstanceId: [{
|
|
6616
|
+
type: Input
|
|
6617
|
+
}], viewProcessLogsEvent: [{
|
|
6618
|
+
type: Output
|
|
6619
|
+
}] } });
|
|
6620
|
+
|
|
6621
|
+
/*
|
|
6622
|
+
* Copyright 2015-2026 Ritense BV, the Netherlands.
|
|
6623
|
+
*
|
|
6624
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
6625
|
+
* you may not use this file except in compliance with the License.
|
|
6626
|
+
* You may obtain a copy of the License at
|
|
6627
|
+
*
|
|
6628
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
6629
|
+
*
|
|
6630
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
6631
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
6632
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
6633
|
+
* See the License for the specific language governing permissions and
|
|
6634
|
+
* limitations under the License.
|
|
6635
|
+
*/
|
|
6636
|
+
class CaseInspectionDocumentTabComponent {
|
|
6637
|
+
constructor(caseInspectionService, permissionService, notificationService, translateService) {
|
|
6638
|
+
this.caseInspectionService = caseInspectionService;
|
|
6639
|
+
this.permissionService = permissionService;
|
|
6640
|
+
this.notificationService = notificationService;
|
|
6641
|
+
this.translateService = translateService;
|
|
6642
|
+
this.$loading = signal(true);
|
|
6643
|
+
this.$errorMessage = signal(null);
|
|
6644
|
+
this.$canInspectModify = signal(false);
|
|
6645
|
+
this.model$ = new BehaviorSubject(null);
|
|
6646
|
+
this._subscriptions = new Subscription();
|
|
6647
|
+
}
|
|
6648
|
+
ngOnChanges(changes) {
|
|
6649
|
+
if (changes.documentId && this.documentId) {
|
|
6650
|
+
this.loadDocument(this.documentId);
|
|
6651
|
+
this.loadPermission(this.documentId);
|
|
6652
|
+
}
|
|
6653
|
+
}
|
|
6654
|
+
ngOnDestroy() {
|
|
6655
|
+
this._subscriptions.unsubscribe();
|
|
6656
|
+
}
|
|
6657
|
+
onSaveEvent(content) {
|
|
6658
|
+
this.caseInspectionService
|
|
6659
|
+
.modifyDocumentForInspection(this.documentId, { documentId: this.documentId, content })
|
|
6660
|
+
.subscribe({
|
|
6661
|
+
next: result => {
|
|
6662
|
+
if (result.errors?.length) {
|
|
6663
|
+
this.$errorMessage.set(result.errors.join('\n'));
|
|
6664
|
+
return;
|
|
6665
|
+
}
|
|
6666
|
+
this.$errorMessage.set(null);
|
|
6667
|
+
this.notificationService.showToast({
|
|
6668
|
+
type: 'success',
|
|
6669
|
+
title: this.translateService.instant('case.inspection.document.saved'),
|
|
6670
|
+
message: '',
|
|
6671
|
+
});
|
|
6672
|
+
this.loadDocument(this.documentId);
|
|
6673
|
+
},
|
|
6674
|
+
error: err => {
|
|
6675
|
+
this.$errorMessage.set(err?.error?.message ?? err?.message ?? 'Save failed');
|
|
6676
|
+
},
|
|
6677
|
+
});
|
|
6678
|
+
}
|
|
6679
|
+
loadDocument(documentId) {
|
|
6680
|
+
this.$loading.set(true);
|
|
6681
|
+
this.$errorMessage.set(null);
|
|
6682
|
+
this.model$.next(null);
|
|
6683
|
+
this.caseInspectionService.getDocument(documentId).subscribe({
|
|
6684
|
+
next: (document) => {
|
|
6685
|
+
if (documentId !== this.documentId) {
|
|
6686
|
+
return;
|
|
6687
|
+
}
|
|
6688
|
+
this.model$.next({
|
|
6689
|
+
value: JSON.stringify(document.content ?? {}, null, 2),
|
|
6690
|
+
language: 'json',
|
|
6691
|
+
});
|
|
6692
|
+
this.$loading.set(false);
|
|
6693
|
+
},
|
|
6694
|
+
error: err => {
|
|
6695
|
+
if (documentId !== this.documentId) {
|
|
6696
|
+
return;
|
|
6697
|
+
}
|
|
6698
|
+
this.$errorMessage.set(err?.error?.message ?? err?.message ?? 'Failed to load document');
|
|
6699
|
+
this.$loading.set(false);
|
|
6700
|
+
},
|
|
6701
|
+
});
|
|
6702
|
+
}
|
|
6703
|
+
loadPermission(documentId) {
|
|
6704
|
+
this.permissionService
|
|
6705
|
+
.requestPermission(CAN_INSPECT_MODIFY_CASE_PERMISSION, {
|
|
6706
|
+
resource: CASE_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,
|
|
6707
|
+
identifier: documentId,
|
|
6708
|
+
})
|
|
6709
|
+
.subscribe({
|
|
6710
|
+
next: (allowed) => {
|
|
6711
|
+
if (documentId !== this.documentId) {
|
|
6712
|
+
return;
|
|
6713
|
+
}
|
|
6714
|
+
this.$canInspectModify.set(allowed);
|
|
6715
|
+
},
|
|
6716
|
+
error: () => {
|
|
6717
|
+
if (documentId !== this.documentId) {
|
|
6718
|
+
return;
|
|
6719
|
+
}
|
|
6720
|
+
this.$canInspectModify.set(false);
|
|
6721
|
+
},
|
|
6722
|
+
});
|
|
6723
|
+
}
|
|
6724
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseInspectionDocumentTabComponent, deps: [{ token: CaseInspectionService }, { token: i2$3.PermissionService }, { token: i1.GlobalNotificationService }, { token: i4.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6725
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: CaseInspectionDocumentTabComponent, isStandalone: true, selector: "valtimo-case-inspection-document", inputs: { documentId: "documentId" }, usesOnChanges: true, ngImport: i0, template: "<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<section class=\"case-inspection-document-tab\">\n <ng-container *ngIf=\"model$ | async as model\">\n <valtimo-json-editor\n [model]=\"model\"\n [showEditButton]=\"$canInspectModify()\"\n [fitPage]=\"true\"\n [fitPageSpaceAdjustment]=\"112\"\n disableOverflow\n (saveEvent)=\"onSaveEvent($event)\"\n ></valtimo-json-editor>\n </ng-container>\n\n <div *ngIf=\"$loading()\" class=\"loading-container\">\n <cds-loading size=\"sm\"></cds-loading>\n </div>\n\n <ng-container *ngIf=\"$errorMessage() as message\">\n <p class=\"case-inspection-document-tab__error\">{{ message }}</p>\n </ng-container>\n</section>\n", styles: [".case-inspection-document-tab__error{color:var(--cds-text-error);margin-top:var(--cds-spacing-03)}\n/*!\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "component", type: JsonEditorComponent, selector: "valtimo-json-editor", inputs: ["disabled", "model", "editorOptions", "fitPage", "fitPageSpaceAdjustment", "formatOnLoad", "heightPx", "heightStyle", "jsonSchema", "showEditButton", "widthPx"], outputs: ["changeEvent", "discardEvent", "keepEditingEvent", "saveEvent"] }, { kind: "ngmodule", type: LoadingModule }, { kind: "component", type: i4$1.Loading, selector: "cds-loading, ibm-loading", inputs: ["title", "isActive", "size", "overlay"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
6726
|
+
}
|
|
6727
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseInspectionDocumentTabComponent, decorators: [{
|
|
6728
|
+
type: Component,
|
|
6729
|
+
args: [{ standalone: true, selector: 'valtimo-case-inspection-document', changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, TranslateModule, JsonEditorComponent, LoadingModule], template: "<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<section class=\"case-inspection-document-tab\">\n <ng-container *ngIf=\"model$ | async as model\">\n <valtimo-json-editor\n [model]=\"model\"\n [showEditButton]=\"$canInspectModify()\"\n [fitPage]=\"true\"\n [fitPageSpaceAdjustment]=\"112\"\n disableOverflow\n (saveEvent)=\"onSaveEvent($event)\"\n ></valtimo-json-editor>\n </ng-container>\n\n <div *ngIf=\"$loading()\" class=\"loading-container\">\n <cds-loading size=\"sm\"></cds-loading>\n </div>\n\n <ng-container *ngIf=\"$errorMessage() as message\">\n <p class=\"case-inspection-document-tab__error\">{{ message }}</p>\n </ng-container>\n</section>\n", styles: [".case-inspection-document-tab__error{color:var(--cds-text-error);margin-top:var(--cds-spacing-03)}\n/*!\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
6730
|
+
}], ctorParameters: () => [{ type: CaseInspectionService }, { type: i2$3.PermissionService }, { type: i1.GlobalNotificationService }, { type: i4.TranslateService }], propDecorators: { documentId: [{
|
|
6731
|
+
type: Input
|
|
6732
|
+
}] } });
|
|
6733
|
+
|
|
6734
|
+
/*
|
|
6735
|
+
* Copyright 2015-2026 Ritense BV, the Netherlands.
|
|
6736
|
+
*
|
|
6737
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
6738
|
+
* you may not use this file except in compliance with the License.
|
|
6739
|
+
* You may obtain a copy of the License at
|
|
6740
|
+
*
|
|
6741
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
6742
|
+
*
|
|
6743
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
6744
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
6745
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
6746
|
+
* See the License for the specific language governing permissions and
|
|
6747
|
+
* limitations under the License.
|
|
6748
|
+
*/
|
|
6749
|
+
const PROCESS_INSTANCE_MDC_KEY = 'processInstanceId';
|
|
6750
|
+
class CaseInspectionLogsTabComponent {
|
|
6751
|
+
get pagination() {
|
|
6752
|
+
return {
|
|
6753
|
+
page: this.$page(),
|
|
6754
|
+
size: this.pageSize,
|
|
6755
|
+
collectionSize: this.$totalElements(),
|
|
6756
|
+
};
|
|
6757
|
+
}
|
|
6758
|
+
constructor(caseInspectionService, fb) {
|
|
6759
|
+
this.caseInspectionService = caseInspectionService;
|
|
6760
|
+
this.fb = fb;
|
|
6761
|
+
this.pendingProcessInstanceId = null;
|
|
6762
|
+
this.$loading = signal(true);
|
|
6763
|
+
this.$errorMessage = signal(null);
|
|
6764
|
+
this.$rows = signal([]);
|
|
6765
|
+
this.$selected = signal(null);
|
|
6766
|
+
this.$selectedIndex = signal(0);
|
|
6767
|
+
this.$page = signal(1);
|
|
6768
|
+
this.$totalElements = signal(0);
|
|
6769
|
+
this.$activeProcessInstanceFilter = signal(null);
|
|
6770
|
+
this.$hasActiveSearch = signal(false);
|
|
6771
|
+
this.pageSize = 10;
|
|
6772
|
+
this.LEVEL_TAG = CASE_INSPECTION_LOG_LEVEL_TAG;
|
|
6773
|
+
this.fields = [];
|
|
6774
|
+
this.logLevelItems = [
|
|
6775
|
+
{ content: CaseInspectionLogLevel.ERROR, selected: false },
|
|
6776
|
+
{ content: CaseInspectionLogLevel.WARN, selected: false },
|
|
6777
|
+
{ content: CaseInspectionLogLevel.INFO, selected: false },
|
|
6778
|
+
{ content: CaseInspectionLogLevel.DEBUG, selected: false },
|
|
6779
|
+
{ content: CaseInspectionLogLevel.TRACE, selected: false },
|
|
6780
|
+
];
|
|
6781
|
+
this.formGroup = this.fb.group({
|
|
6782
|
+
likeFormattedMessage: this.fb.control(''),
|
|
6783
|
+
level: this.fb.control(null),
|
|
6784
|
+
afterTimestamp: this.fb.control(''),
|
|
6785
|
+
beforeTimestamp: this.fb.control(''),
|
|
6786
|
+
});
|
|
6787
|
+
}
|
|
6788
|
+
ngOnInit() {
|
|
6789
|
+
this.applyPendingProcessInstanceFilter();
|
|
6790
|
+
this.load();
|
|
6791
|
+
}
|
|
6792
|
+
ngAfterViewInit() {
|
|
6793
|
+
this.fields = [
|
|
6794
|
+
{
|
|
6795
|
+
viewType: ViewType.TEMPLATE,
|
|
6796
|
+
key: 'timestamp',
|
|
6797
|
+
label: 'case.inspection.logs.columns.timestamp',
|
|
6798
|
+
template: this.timestampTemplate,
|
|
6799
|
+
},
|
|
6800
|
+
{
|
|
6801
|
+
viewType: ViewType.TEMPLATE,
|
|
6802
|
+
key: 'level',
|
|
6803
|
+
label: 'case.inspection.logs.columns.level',
|
|
6804
|
+
template: this.levelTemplate,
|
|
6805
|
+
},
|
|
6806
|
+
{
|
|
6807
|
+
viewType: ViewType.TEMPLATE,
|
|
6808
|
+
key: 'formattedMessage',
|
|
6809
|
+
label: 'case.inspection.logs.columns.message',
|
|
6810
|
+
template: this.messageTemplate,
|
|
6811
|
+
},
|
|
6812
|
+
];
|
|
6813
|
+
}
|
|
6814
|
+
ngOnChanges(changes) {
|
|
6815
|
+
if (changes.documentId && !changes.documentId.firstChange && this.documentId) {
|
|
6816
|
+
this.$page.set(1);
|
|
6817
|
+
this.applyPendingProcessInstanceFilter();
|
|
6818
|
+
this.load();
|
|
6819
|
+
return;
|
|
6820
|
+
}
|
|
6821
|
+
if (changes.pendingProcessInstanceId && !changes.pendingProcessInstanceId.firstChange) {
|
|
6822
|
+
this.$page.set(1);
|
|
6823
|
+
this.applyPendingProcessInstanceFilter();
|
|
6824
|
+
this.load();
|
|
6825
|
+
}
|
|
6826
|
+
}
|
|
6827
|
+
onAfterDateSelected(event) {
|
|
6828
|
+
const value = event[0] ? event[0].toISOString() : '';
|
|
6829
|
+
this.formGroup.get('afterTimestamp')?.setValue(value);
|
|
6830
|
+
}
|
|
6831
|
+
onBeforeDateSelected(event) {
|
|
6832
|
+
const value = event[0] ? event[0].toISOString() : '';
|
|
6833
|
+
this.formGroup.get('beforeTimestamp')?.setValue(value);
|
|
6834
|
+
}
|
|
6835
|
+
onApplyFilter() {
|
|
6836
|
+
this.$page.set(1);
|
|
6837
|
+
this.load();
|
|
6838
|
+
}
|
|
6839
|
+
onResetFilter() {
|
|
6840
|
+
this.formGroup.reset({
|
|
6841
|
+
likeFormattedMessage: '',
|
|
6842
|
+
level: null,
|
|
6843
|
+
afterTimestamp: '',
|
|
6844
|
+
beforeTimestamp: '',
|
|
6845
|
+
});
|
|
6846
|
+
this._afterDatePicker?.writeValue([]);
|
|
6847
|
+
this._beforeDatePicker?.writeValue([]);
|
|
6848
|
+
this.$page.set(1);
|
|
6849
|
+
this.load();
|
|
6850
|
+
}
|
|
6851
|
+
onClearProcessInstanceFilter() {
|
|
6852
|
+
this.$activeProcessInstanceFilter.set(null);
|
|
6853
|
+
this.$page.set(1);
|
|
6854
|
+
this.load();
|
|
6855
|
+
}
|
|
6856
|
+
onSelectRow(row) {
|
|
6857
|
+
this.$selected.set(row);
|
|
6858
|
+
const index = this.$rows().indexOf(row);
|
|
6859
|
+
this.$selectedIndex.set(index >= 0 ? index : 0);
|
|
6860
|
+
}
|
|
6861
|
+
isSelected(row) {
|
|
6862
|
+
return this.$selected() === row;
|
|
6863
|
+
}
|
|
6864
|
+
onPageSelected(page) {
|
|
6865
|
+
this.$page.set(page);
|
|
6866
|
+
this.load();
|
|
6867
|
+
}
|
|
6868
|
+
buildPaginationModel() {
|
|
6869
|
+
return {
|
|
6870
|
+
currentPage: this.$page(),
|
|
6871
|
+
totalDataLength: this.$totalElements(),
|
|
6872
|
+
pageLength: this.pageSize,
|
|
6873
|
+
};
|
|
6874
|
+
}
|
|
6875
|
+
applyPendingProcessInstanceFilter() {
|
|
6876
|
+
this.$activeProcessInstanceFilter.set(this.pendingProcessInstanceId ?? null);
|
|
6877
|
+
}
|
|
6878
|
+
buildSearchRequest() {
|
|
6879
|
+
const value = this.formGroup.getRawValue();
|
|
6880
|
+
const request = {};
|
|
6881
|
+
if (value.likeFormattedMessage) {
|
|
6882
|
+
request.likeFormattedMessage = value.likeFormattedMessage;
|
|
6883
|
+
}
|
|
6884
|
+
if (value.level?.content) {
|
|
6885
|
+
request.level = String(value.level.content);
|
|
6886
|
+
}
|
|
6887
|
+
if (value.afterTimestamp) {
|
|
6888
|
+
request.afterTimestamp = value.afterTimestamp;
|
|
6889
|
+
}
|
|
6890
|
+
if (value.beforeTimestamp) {
|
|
6891
|
+
request.beforeTimestamp = value.beforeTimestamp;
|
|
6892
|
+
}
|
|
6893
|
+
const processInstance = this.$activeProcessInstanceFilter();
|
|
6894
|
+
if (processInstance) {
|
|
6895
|
+
request.additionalProperties = [{ key: PROCESS_INSTANCE_MDC_KEY, value: processInstance }];
|
|
6896
|
+
}
|
|
6897
|
+
this.$hasActiveSearch.set(this.computeHasActiveSearch(request));
|
|
6898
|
+
return request;
|
|
6899
|
+
}
|
|
6900
|
+
computeHasActiveSearch(request) {
|
|
6901
|
+
return !!(request.likeFormattedMessage ||
|
|
6902
|
+
request.level ||
|
|
6903
|
+
request.afterTimestamp ||
|
|
6904
|
+
request.beforeTimestamp ||
|
|
6905
|
+
request.additionalProperties?.length);
|
|
6906
|
+
}
|
|
6907
|
+
load() {
|
|
6908
|
+
if (!this.documentId)
|
|
6909
|
+
return;
|
|
6910
|
+
this.$loading.set(true);
|
|
6911
|
+
this.$errorMessage.set(null);
|
|
6912
|
+
const request = this.buildSearchRequest();
|
|
6913
|
+
this.caseInspectionService
|
|
6914
|
+
.searchCaseLogs(this.documentId, request, this.$page() - 1, this.pageSize)
|
|
6915
|
+
.subscribe({
|
|
6916
|
+
next: (page) => {
|
|
6917
|
+
this.$rows.set(page.content);
|
|
6918
|
+
this.$totalElements.set(page.totalElements);
|
|
6919
|
+
this.$selected.set(page.content[0] ?? null);
|
|
6920
|
+
this.$selectedIndex.set(0);
|
|
6921
|
+
this.$loading.set(false);
|
|
6922
|
+
},
|
|
6923
|
+
error: err => {
|
|
6924
|
+
this.$errorMessage.set(err?.error?.message ?? err?.message ?? 'Failed to load logs');
|
|
6925
|
+
this.$rows.set([]);
|
|
6926
|
+
this.$totalElements.set(0);
|
|
6927
|
+
this.$loading.set(false);
|
|
6928
|
+
},
|
|
6929
|
+
});
|
|
6930
|
+
}
|
|
6931
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseInspectionLogsTabComponent, deps: [{ token: CaseInspectionService }, { token: i1$4.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6932
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: CaseInspectionLogsTabComponent, isStandalone: true, selector: "valtimo-case-inspection-logs", inputs: { documentId: "documentId", pendingProcessInstanceId: "pendingProcessInstanceId" }, viewQueries: [{ propertyName: "_afterDatePicker", first: true, predicate: ["afterPicker"], descendants: true }, { propertyName: "_beforeDatePicker", first: true, predicate: ["beforePicker"], descendants: true }, { propertyName: "timestampTemplate", first: true, predicate: ["timestampTemplate"], descendants: true }, { propertyName: "levelTemplate", first: true, predicate: ["levelTemplate"], descendants: true }, { propertyName: "messageTemplate", first: true, predicate: ["messageTemplate"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<section class=\"case-inspection-logs-tab\">\n <form\n class=\"case-inspection-logs-tab__filters\"\n [formGroup]=\"formGroup\"\n (ngSubmit)=\"onApplyFilter()\"\n >\n <cds-text-label\n class=\"case-inspection-logs-tab__filter case-inspection-logs-tab__filter--message\"\n >\n {{ 'case.inspection.logs.filters.message' | translate }}\n\n <input\n cdsText\n formControlName=\"likeFormattedMessage\"\n [placeholder]=\"'case.inspection.logs.filters.messagePlaceholder' | translate\"\n cdsLayer=\"1\"\n />\n </cds-text-label>\n\n <cds-dropdown\n class=\"case-inspection-logs-tab__filter case-inspection-logs-tab__filter--level\"\n formControlName=\"level\"\n [label]=\"'case.inspection.logs.filters.level' | translate\"\n [placeholder]=\"'case.inspection.logs.filters.levelPlaceholder' | translate\"\n [dropUp]=\"false\"\n cdsLayer=\"1\"\n >\n <cds-dropdown-list [items]=\"logLevelItems\"></cds-dropdown-list>\n </cds-dropdown>\n\n <cds-date-picker\n #afterPicker\n class=\"case-inspection-logs-tab__filter\"\n [label]=\"'case.inspection.logs.filters.after' | translate\"\n [dateFormat]=\"'d-m-Y H:i'\"\n [flatpickrOptions]=\"{enableTime: true, time_24hr: true}\"\n placeholder=\"DD-MM-YYYY HH:mm\"\n cdsLayer=\"1\"\n (valueChange)=\"onAfterDateSelected($event)\"\n ></cds-date-picker>\n\n <cds-date-picker\n #beforePicker\n class=\"case-inspection-logs-tab__filter\"\n [label]=\"'case.inspection.logs.filters.before' | translate\"\n [dateFormat]=\"'d-m-Y H:i'\"\n [flatpickrOptions]=\"{enableTime: true, time_24hr: true}\"\n placeholder=\"DD-MM-YYYY HH:mm\"\n cdsLayer=\"1\"\n (valueChange)=\"onBeforeDateSelected($event)\"\n ></cds-date-picker>\n\n <div class=\"case-inspection-logs-tab__filter-actions\">\n <button cdsButton=\"primary\" size=\"md\" type=\"submit\">\n {{ 'case.inspection.logs.filters.apply' | translate }}\n </button>\n\n <button cdsButton=\"tertiary\" size=\"md\" type=\"button\" (click)=\"onResetFilter()\">\n {{ 'case.inspection.logs.filters.reset' | translate }}\n </button>\n </div>\n </form>\n\n <ng-container *ngIf=\"$activeProcessInstanceFilter() as processInstanceId\">\n <div class=\"case-inspection-logs-tab__chip-row\">\n <cds-tag type=\"purple\" size=\"md\">\n {{ 'case.inspection.logs.filters.processInstanceChip' | translate }}:\n <code>{{ processInstanceId }}</code>\n </cds-tag>\n\n <button cdsButton=\"ghost\" size=\"sm\" type=\"button\" (click)=\"onClearProcessInstanceFilter()\">\n {{ 'case.inspection.logs.filters.clearProcessInstance' | translate }}\n </button>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"$errorMessage() as message\">\n <p class=\"case-inspection-logs-tab__error\">{{ message }}</p>\n </ng-container>\n\n <div *ngIf=\"$loading()\" class=\"loading-container\">\n <cds-loading size=\"sm\"></cds-loading>\n </div>\n\n <ng-container *ngIf=\"!$loading() && !$errorMessage()\">\n <p *ngIf=\"$rows().length === 0\" class=\"case-inspection-logs-tab__empty\">\n {{\n ($hasActiveSearch() ? 'case.inspection.logs.emptyFiltered' : 'case.inspection.logs.empty')\n | translate\n }}\n </p>\n\n <div *ngIf=\"$rows().length > 0\" class=\"case-inspection-logs-tab__layout\">\n <div\n class=\"case-inspection-logs-tab__list-panel\"\n [attr.data-selected-row]=\"$selectedIndex()\"\n >\n <valtimo-carbon-list\n [fields]=\"fields\"\n [header]=\"false\"\n [hideToolbar]=\"true\"\n [items]=\"$rows()\"\n [loading]=\"$loading()\"\n [pagination]=\"pagination\"\n [cdsLayer]=\"1\"\n (paginationClicked)=\"onPageSelected($event)\"\n (rowClicked)=\"onSelectRow($event)\"\n >\n <valtimo-no-results\n description=\"{{\n ($hasActiveSearch()\n ? 'case.inspection.logs.emptyFiltered'\n : 'case.inspection.logs.empty'\n ) | translate\n }}\"\n ></valtimo-no-results>\n </valtimo-carbon-list>\n </div>\n\n <aside class=\"case-inspection-logs-tab__detail\" *ngIf=\"$selected() as selected\">\n <header class=\"case-inspection-logs-tab__detail-header\">\n <cds-tag size=\"sm\" [type]=\"LEVEL_TAG[selected.level] || 'gray'\">{{\n selected.level\n }}</cds-tag>\n <span class=\"case-inspection-logs-tab__detail-timestamp\">\n {{ selected.timestamp | date: 'dd-MM-yyyy HH:mm:ss' }}\n </span>\n </header>\n\n <pre class=\"case-inspection-logs-tab__detail-message\">{{ selected.formattedMessage }}</pre>\n\n <h4>{{ 'case.inspection.logs.detail.properties' | translate }}</h4>\n <dl class=\"case-inspection-logs-tab__detail-properties\">\n <ng-container *ngFor=\"let prop of selected.properties\">\n <dt>\n <code>{{ prop.key }}</code>\n </dt>\n <dd>\n <code>{{ prop.value }}</code>\n </dd>\n </ng-container>\n </dl>\n\n <ng-container *ngIf=\"selected.stacktrace\">\n <h4>{{ 'case.inspection.logs.detail.stacktrace' | translate }}</h4>\n <pre class=\"case-inspection-logs-tab__detail-stacktrace\">{{ selected.stacktrace }}</pre>\n </ng-container>\n </aside>\n </div>\n </ng-container>\n</section>\n\n<ng-template #timestampTemplate let-data=\"data\">\n {{ data.item.timestamp | date: 'dd-MM HH:mm:ss' }}\n</ng-template>\n\n<ng-template #levelTemplate let-data=\"data\">\n <cds-tag size=\"sm\" [type]=\"LEVEL_TAG[data.item.level] || 'gray'\">\n {{ data.item.level }}\n </cds-tag>\n</ng-template>\n\n<ng-template #messageTemplate let-data=\"data\">\n <span class=\"case-inspection-logs-tab__message-cell\">{{ data.item.formattedMessage }}</span>\n</ng-template>\n", styles: [".case-inspection-logs-tab{display:flex;flex-direction:column;padding:16px;gap:var(--cds-spacing-05)}.case-inspection-logs-tab__filters{display:grid;grid-template-columns:minmax(200px,1fr) minmax(140px,200px) 220px 220px auto;gap:var(--cds-spacing-04);align-items:end}.case-inspection-logs-tab__filter{min-width:0}.case-inspection-logs-tab cds-date-picker{display:block;width:100%}.case-inspection-logs-tab cds-date-picker ::ng-deep .cds--date-picker,.case-inspection-logs-tab cds-date-picker ::ng-deep .cds--date-picker--single,.case-inspection-logs-tab cds-date-picker ::ng-deep .cds--date-picker-container,.case-inspection-logs-tab cds-date-picker ::ng-deep .cds--date-picker-input,.case-inspection-logs-tab cds-date-picker ::ng-deep input.cds--date-picker__input{width:100%;min-width:0}.case-inspection-logs-tab__filter-actions{display:flex;gap:var(--cds-spacing-03)}.case-inspection-logs-tab__chip-row{display:flex;align-items:center;gap:var(--cds-spacing-03)}.case-inspection-logs-tab__error{color:var(--cds-support-error)}.case-inspection-logs-tab__empty{color:var(--cds-text-secondary);font-style:italic}.case-inspection-logs-tab__layout{display:flex;gap:var(--cds-spacing-05)}.case-inspection-logs-tab__list-panel{flex:0 0 65%;min-width:0}.case-inspection-logs-tab__list-panel ::ng-deep .cds--data-table{width:100%}.case-inspection-logs-tab__list-panel ::ng-deep .cds--data-table tbody tr{cursor:pointer}.case-inspection-logs-tab__list-panel ::ng-deep .cds--data-table td:first-child{width:136px;min-width:136px;max-width:136px}.case-inspection-logs-tab__list-panel ::ng-deep .cds--data-table td:nth-child(2){width:96px;min-width:96px;max-width:96px}.case-inspection-logs-tab__list-panel ::ng-deep .cds--data-table td:nth-child(3){max-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.case-inspection-logs-tab__list-panel[data-selected-row=\"0\"] ::ng-deep .cds--data-table tbody tr:nth-child(1){background-color:var(--cds-layer-selected)}.case-inspection-logs-tab__list-panel[data-selected-row=\"1\"] ::ng-deep .cds--data-table tbody tr:nth-child(2){background-color:var(--cds-layer-selected)}.case-inspection-logs-tab__list-panel[data-selected-row=\"2\"] ::ng-deep .cds--data-table tbody tr:nth-child(3){background-color:var(--cds-layer-selected)}.case-inspection-logs-tab__list-panel[data-selected-row=\"3\"] ::ng-deep .cds--data-table tbody tr:nth-child(4){background-color:var(--cds-layer-selected)}.case-inspection-logs-tab__list-panel[data-selected-row=\"4\"] ::ng-deep .cds--data-table tbody tr:nth-child(5){background-color:var(--cds-layer-selected)}.case-inspection-logs-tab__list-panel[data-selected-row=\"5\"] ::ng-deep .cds--data-table tbody tr:nth-child(6){background-color:var(--cds-layer-selected)}.case-inspection-logs-tab__list-panel[data-selected-row=\"6\"] ::ng-deep .cds--data-table tbody tr:nth-child(7){background-color:var(--cds-layer-selected)}.case-inspection-logs-tab__list-panel[data-selected-row=\"7\"] ::ng-deep .cds--data-table tbody tr:nth-child(8){background-color:var(--cds-layer-selected)}.case-inspection-logs-tab__list-panel[data-selected-row=\"8\"] ::ng-deep .cds--data-table tbody tr:nth-child(9){background-color:var(--cds-layer-selected)}.case-inspection-logs-tab__list-panel[data-selected-row=\"9\"] ::ng-deep .cds--data-table tbody tr:nth-child(10){background-color:var(--cds-layer-selected)}.case-inspection-logs-tab__message-cell{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle}.case-inspection-logs-tab__pagination{margin-top:var(--cds-spacing-03)}.case-inspection-logs-tab__detail{flex:0 0 calc(35% - var(--cds-spacing-05));background-color:var(--cds-layer);border:1px solid var(--cds-border-subtle);padding:var(--cds-spacing-05);overflow:auto}.case-inspection-logs-tab__detail h4{margin-top:var(--cds-spacing-05);margin-bottom:var(--cds-spacing-03);font-size:var(--cds-body-compact-01-font-size);font-weight:600}.case-inspection-logs-tab__detail-header{display:flex;flex-direction:column;align-items:flex-start;gap:var(--cds-spacing-02)}.case-inspection-logs-tab__detail-timestamp{color:var(--cds-text-secondary);font-size:var(--cds-helper-text-01-font-size)}.case-inspection-logs-tab__detail-message{margin:var(--cds-spacing-04) 0;padding:var(--cds-spacing-03);background-color:var(--cds-background);border:1px solid var(--cds-border-subtle);white-space:pre-wrap;word-break:break-word;font-size:var(--cds-helper-text-01-font-size)}.case-inspection-logs-tab__detail-properties{display:flex;flex-direction:column;gap:var(--cds-spacing-03)}.case-inspection-logs-tab__detail-properties dt{margin-bottom:var(--cds-spacing-01)}.case-inspection-logs-tab__detail-properties dt code{color:var(--cds-text-secondary)}.case-inspection-logs-tab__detail-properties dd{margin:0 0 var(--cds-spacing-02) 0}.case-inspection-logs-tab__detail-properties dd code{color:var(var(--cds-status-purple))}.case-inspection-logs-tab__detail-properties dt,.case-inspection-logs-tab__detail-properties dd{font-size:var(--cds-helper-text-01-font-size);word-break:break-all}.case-inspection-logs-tab__detail-stacktrace{margin:0;padding:var(--cds-spacing-03);background-color:var(--cds-background);border:1px solid var(--cds-border-subtle);white-space:pre-wrap;word-break:break-word;font-family:var(--cds-code-01-font-family);font-size:var(--cds-helper-text-01-font-size);max-height:256px;overflow:auto}\n/*!\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i6.DatePipe, name: "date" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i4$1.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: CarbonListModule }, { kind: "component", type: i2$1.CarbonListComponent, selector: "valtimo-carbon-list", inputs: ["items", "fields", "tableTranslations", "paginatorConfig", "pagination", "loading", "skeletonRowCount", "actions", "actionItems", "showActionItems", "header", "hideColumnHeader", "initialSortState", "sortState", "isSearchable", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped", "hideToolbar", "lockedTooltipTranslationKey", "movingRowsEnabled", "dragAndDrop", "dragAndDropDisabled"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged", "moveRow", "itemsReordered"] }, { kind: "component", type: i2$1.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "ngmodule", type: DatePickerModule }, { kind: "component", type: i4$1.DatePicker, selector: "cds-date-picker, ibm-date-picker", inputs: ["range", "dateFormat", "language", "label", "helperText", "rangeHelperText", "rangeLabel", "placeholder", "ariaLabel", "inputPattern", "id", "value", "theme", "disabled", "readonly", "invalid", "invalidText", "warn", "warnText", "size", "rangeInvalid", "rangeInvalidText", "rangeWarn", "rangeWarnText", "skeleton", "plugins", "flatpickrOptions"], outputs: ["valueChange", "onClose"] }, { kind: "ngmodule", type: DropdownModule }, { kind: "component", type: i4$1.Dropdown, selector: "cds-dropdown, ibm-dropdown", inputs: ["id", "label", "hideLabel", "helperText", "placeholder", "displayValue", "clearText", "size", "type", "theme", "disabled", "readonly", "skeleton", "inline", "disableArrowKeys", "invalid", "invalidText", "warn", "warnText", "appendInline", "scrollableContainer", "itemValueKey", "selectionFeedback", "menuButtonLabel", "selectedLabel", "dropUp", "fluid"], outputs: ["selected", "onClose", "close"] }, { kind: "component", type: i4$1.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "ngmodule", type: IconModule }, { kind: "ngmodule", type: InputModule }, { kind: "component", type: i4$1.TextInputLabelComponent, selector: "cds-text-label, ibm-text-label", inputs: ["labelInputID", "disabled", "skeleton", "labelTemplate", "textInputTemplate", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel", "fluid"] }, { kind: "directive", type: i4$1.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "ngmodule", type: TagModule }, { kind: "component", type: i4$1.Tag, selector: "cds-tag, ibm-tag", inputs: ["type", "size", "class", "skeleton"] }, { kind: "ngmodule", type: LoadingModule }, { kind: "component", type: i4$1.Loading, selector: "cds-loading, ibm-loading", inputs: ["title", "isActive", "size", "overlay"] }, { kind: "ngmodule", type: LayerModule }, { kind: "directive", type: i4$1.LayerDirective, selector: "[cdsLayer], [ibmLayer]", inputs: ["ibmLayer", "cdsLayer"], exportAs: ["layer"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
6933
|
+
}
|
|
6934
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseInspectionLogsTabComponent, decorators: [{
|
|
6935
|
+
type: Component,
|
|
6936
|
+
args: [{ standalone: true, selector: 'valtimo-case-inspection-logs', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
6937
|
+
CommonModule,
|
|
6938
|
+
TranslateModule,
|
|
6939
|
+
ReactiveFormsModule,
|
|
6940
|
+
FormsModule,
|
|
6941
|
+
ButtonModule,
|
|
6942
|
+
CarbonListModule,
|
|
6943
|
+
DatePickerModule,
|
|
6944
|
+
DropdownModule,
|
|
6945
|
+
IconModule,
|
|
6946
|
+
InputModule,
|
|
6947
|
+
TagModule,
|
|
6948
|
+
LoadingModule,
|
|
6949
|
+
LayerModule,
|
|
6950
|
+
], template: "<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<section class=\"case-inspection-logs-tab\">\n <form\n class=\"case-inspection-logs-tab__filters\"\n [formGroup]=\"formGroup\"\n (ngSubmit)=\"onApplyFilter()\"\n >\n <cds-text-label\n class=\"case-inspection-logs-tab__filter case-inspection-logs-tab__filter--message\"\n >\n {{ 'case.inspection.logs.filters.message' | translate }}\n\n <input\n cdsText\n formControlName=\"likeFormattedMessage\"\n [placeholder]=\"'case.inspection.logs.filters.messagePlaceholder' | translate\"\n cdsLayer=\"1\"\n />\n </cds-text-label>\n\n <cds-dropdown\n class=\"case-inspection-logs-tab__filter case-inspection-logs-tab__filter--level\"\n formControlName=\"level\"\n [label]=\"'case.inspection.logs.filters.level' | translate\"\n [placeholder]=\"'case.inspection.logs.filters.levelPlaceholder' | translate\"\n [dropUp]=\"false\"\n cdsLayer=\"1\"\n >\n <cds-dropdown-list [items]=\"logLevelItems\"></cds-dropdown-list>\n </cds-dropdown>\n\n <cds-date-picker\n #afterPicker\n class=\"case-inspection-logs-tab__filter\"\n [label]=\"'case.inspection.logs.filters.after' | translate\"\n [dateFormat]=\"'d-m-Y H:i'\"\n [flatpickrOptions]=\"{enableTime: true, time_24hr: true}\"\n placeholder=\"DD-MM-YYYY HH:mm\"\n cdsLayer=\"1\"\n (valueChange)=\"onAfterDateSelected($event)\"\n ></cds-date-picker>\n\n <cds-date-picker\n #beforePicker\n class=\"case-inspection-logs-tab__filter\"\n [label]=\"'case.inspection.logs.filters.before' | translate\"\n [dateFormat]=\"'d-m-Y H:i'\"\n [flatpickrOptions]=\"{enableTime: true, time_24hr: true}\"\n placeholder=\"DD-MM-YYYY HH:mm\"\n cdsLayer=\"1\"\n (valueChange)=\"onBeforeDateSelected($event)\"\n ></cds-date-picker>\n\n <div class=\"case-inspection-logs-tab__filter-actions\">\n <button cdsButton=\"primary\" size=\"md\" type=\"submit\">\n {{ 'case.inspection.logs.filters.apply' | translate }}\n </button>\n\n <button cdsButton=\"tertiary\" size=\"md\" type=\"button\" (click)=\"onResetFilter()\">\n {{ 'case.inspection.logs.filters.reset' | translate }}\n </button>\n </div>\n </form>\n\n <ng-container *ngIf=\"$activeProcessInstanceFilter() as processInstanceId\">\n <div class=\"case-inspection-logs-tab__chip-row\">\n <cds-tag type=\"purple\" size=\"md\">\n {{ 'case.inspection.logs.filters.processInstanceChip' | translate }}:\n <code>{{ processInstanceId }}</code>\n </cds-tag>\n\n <button cdsButton=\"ghost\" size=\"sm\" type=\"button\" (click)=\"onClearProcessInstanceFilter()\">\n {{ 'case.inspection.logs.filters.clearProcessInstance' | translate }}\n </button>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"$errorMessage() as message\">\n <p class=\"case-inspection-logs-tab__error\">{{ message }}</p>\n </ng-container>\n\n <div *ngIf=\"$loading()\" class=\"loading-container\">\n <cds-loading size=\"sm\"></cds-loading>\n </div>\n\n <ng-container *ngIf=\"!$loading() && !$errorMessage()\">\n <p *ngIf=\"$rows().length === 0\" class=\"case-inspection-logs-tab__empty\">\n {{\n ($hasActiveSearch() ? 'case.inspection.logs.emptyFiltered' : 'case.inspection.logs.empty')\n | translate\n }}\n </p>\n\n <div *ngIf=\"$rows().length > 0\" class=\"case-inspection-logs-tab__layout\">\n <div\n class=\"case-inspection-logs-tab__list-panel\"\n [attr.data-selected-row]=\"$selectedIndex()\"\n >\n <valtimo-carbon-list\n [fields]=\"fields\"\n [header]=\"false\"\n [hideToolbar]=\"true\"\n [items]=\"$rows()\"\n [loading]=\"$loading()\"\n [pagination]=\"pagination\"\n [cdsLayer]=\"1\"\n (paginationClicked)=\"onPageSelected($event)\"\n (rowClicked)=\"onSelectRow($event)\"\n >\n <valtimo-no-results\n description=\"{{\n ($hasActiveSearch()\n ? 'case.inspection.logs.emptyFiltered'\n : 'case.inspection.logs.empty'\n ) | translate\n }}\"\n ></valtimo-no-results>\n </valtimo-carbon-list>\n </div>\n\n <aside class=\"case-inspection-logs-tab__detail\" *ngIf=\"$selected() as selected\">\n <header class=\"case-inspection-logs-tab__detail-header\">\n <cds-tag size=\"sm\" [type]=\"LEVEL_TAG[selected.level] || 'gray'\">{{\n selected.level\n }}</cds-tag>\n <span class=\"case-inspection-logs-tab__detail-timestamp\">\n {{ selected.timestamp | date: 'dd-MM-yyyy HH:mm:ss' }}\n </span>\n </header>\n\n <pre class=\"case-inspection-logs-tab__detail-message\">{{ selected.formattedMessage }}</pre>\n\n <h4>{{ 'case.inspection.logs.detail.properties' | translate }}</h4>\n <dl class=\"case-inspection-logs-tab__detail-properties\">\n <ng-container *ngFor=\"let prop of selected.properties\">\n <dt>\n <code>{{ prop.key }}</code>\n </dt>\n <dd>\n <code>{{ prop.value }}</code>\n </dd>\n </ng-container>\n </dl>\n\n <ng-container *ngIf=\"selected.stacktrace\">\n <h4>{{ 'case.inspection.logs.detail.stacktrace' | translate }}</h4>\n <pre class=\"case-inspection-logs-tab__detail-stacktrace\">{{ selected.stacktrace }}</pre>\n </ng-container>\n </aside>\n </div>\n </ng-container>\n</section>\n\n<ng-template #timestampTemplate let-data=\"data\">\n {{ data.item.timestamp | date: 'dd-MM HH:mm:ss' }}\n</ng-template>\n\n<ng-template #levelTemplate let-data=\"data\">\n <cds-tag size=\"sm\" [type]=\"LEVEL_TAG[data.item.level] || 'gray'\">\n {{ data.item.level }}\n </cds-tag>\n</ng-template>\n\n<ng-template #messageTemplate let-data=\"data\">\n <span class=\"case-inspection-logs-tab__message-cell\">{{ data.item.formattedMessage }}</span>\n</ng-template>\n", styles: [".case-inspection-logs-tab{display:flex;flex-direction:column;padding:16px;gap:var(--cds-spacing-05)}.case-inspection-logs-tab__filters{display:grid;grid-template-columns:minmax(200px,1fr) minmax(140px,200px) 220px 220px auto;gap:var(--cds-spacing-04);align-items:end}.case-inspection-logs-tab__filter{min-width:0}.case-inspection-logs-tab cds-date-picker{display:block;width:100%}.case-inspection-logs-tab cds-date-picker ::ng-deep .cds--date-picker,.case-inspection-logs-tab cds-date-picker ::ng-deep .cds--date-picker--single,.case-inspection-logs-tab cds-date-picker ::ng-deep .cds--date-picker-container,.case-inspection-logs-tab cds-date-picker ::ng-deep .cds--date-picker-input,.case-inspection-logs-tab cds-date-picker ::ng-deep input.cds--date-picker__input{width:100%;min-width:0}.case-inspection-logs-tab__filter-actions{display:flex;gap:var(--cds-spacing-03)}.case-inspection-logs-tab__chip-row{display:flex;align-items:center;gap:var(--cds-spacing-03)}.case-inspection-logs-tab__error{color:var(--cds-support-error)}.case-inspection-logs-tab__empty{color:var(--cds-text-secondary);font-style:italic}.case-inspection-logs-tab__layout{display:flex;gap:var(--cds-spacing-05)}.case-inspection-logs-tab__list-panel{flex:0 0 65%;min-width:0}.case-inspection-logs-tab__list-panel ::ng-deep .cds--data-table{width:100%}.case-inspection-logs-tab__list-panel ::ng-deep .cds--data-table tbody tr{cursor:pointer}.case-inspection-logs-tab__list-panel ::ng-deep .cds--data-table td:first-child{width:136px;min-width:136px;max-width:136px}.case-inspection-logs-tab__list-panel ::ng-deep .cds--data-table td:nth-child(2){width:96px;min-width:96px;max-width:96px}.case-inspection-logs-tab__list-panel ::ng-deep .cds--data-table td:nth-child(3){max-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.case-inspection-logs-tab__list-panel[data-selected-row=\"0\"] ::ng-deep .cds--data-table tbody tr:nth-child(1){background-color:var(--cds-layer-selected)}.case-inspection-logs-tab__list-panel[data-selected-row=\"1\"] ::ng-deep .cds--data-table tbody tr:nth-child(2){background-color:var(--cds-layer-selected)}.case-inspection-logs-tab__list-panel[data-selected-row=\"2\"] ::ng-deep .cds--data-table tbody tr:nth-child(3){background-color:var(--cds-layer-selected)}.case-inspection-logs-tab__list-panel[data-selected-row=\"3\"] ::ng-deep .cds--data-table tbody tr:nth-child(4){background-color:var(--cds-layer-selected)}.case-inspection-logs-tab__list-panel[data-selected-row=\"4\"] ::ng-deep .cds--data-table tbody tr:nth-child(5){background-color:var(--cds-layer-selected)}.case-inspection-logs-tab__list-panel[data-selected-row=\"5\"] ::ng-deep .cds--data-table tbody tr:nth-child(6){background-color:var(--cds-layer-selected)}.case-inspection-logs-tab__list-panel[data-selected-row=\"6\"] ::ng-deep .cds--data-table tbody tr:nth-child(7){background-color:var(--cds-layer-selected)}.case-inspection-logs-tab__list-panel[data-selected-row=\"7\"] ::ng-deep .cds--data-table tbody tr:nth-child(8){background-color:var(--cds-layer-selected)}.case-inspection-logs-tab__list-panel[data-selected-row=\"8\"] ::ng-deep .cds--data-table tbody tr:nth-child(9){background-color:var(--cds-layer-selected)}.case-inspection-logs-tab__list-panel[data-selected-row=\"9\"] ::ng-deep .cds--data-table tbody tr:nth-child(10){background-color:var(--cds-layer-selected)}.case-inspection-logs-tab__message-cell{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle}.case-inspection-logs-tab__pagination{margin-top:var(--cds-spacing-03)}.case-inspection-logs-tab__detail{flex:0 0 calc(35% - var(--cds-spacing-05));background-color:var(--cds-layer);border:1px solid var(--cds-border-subtle);padding:var(--cds-spacing-05);overflow:auto}.case-inspection-logs-tab__detail h4{margin-top:var(--cds-spacing-05);margin-bottom:var(--cds-spacing-03);font-size:var(--cds-body-compact-01-font-size);font-weight:600}.case-inspection-logs-tab__detail-header{display:flex;flex-direction:column;align-items:flex-start;gap:var(--cds-spacing-02)}.case-inspection-logs-tab__detail-timestamp{color:var(--cds-text-secondary);font-size:var(--cds-helper-text-01-font-size)}.case-inspection-logs-tab__detail-message{margin:var(--cds-spacing-04) 0;padding:var(--cds-spacing-03);background-color:var(--cds-background);border:1px solid var(--cds-border-subtle);white-space:pre-wrap;word-break:break-word;font-size:var(--cds-helper-text-01-font-size)}.case-inspection-logs-tab__detail-properties{display:flex;flex-direction:column;gap:var(--cds-spacing-03)}.case-inspection-logs-tab__detail-properties dt{margin-bottom:var(--cds-spacing-01)}.case-inspection-logs-tab__detail-properties dt code{color:var(--cds-text-secondary)}.case-inspection-logs-tab__detail-properties dd{margin:0 0 var(--cds-spacing-02) 0}.case-inspection-logs-tab__detail-properties dd code{color:var(var(--cds-status-purple))}.case-inspection-logs-tab__detail-properties dt,.case-inspection-logs-tab__detail-properties dd{font-size:var(--cds-helper-text-01-font-size);word-break:break-all}.case-inspection-logs-tab__detail-stacktrace{margin:0;padding:var(--cds-spacing-03);background-color:var(--cds-background);border:1px solid var(--cds-border-subtle);white-space:pre-wrap;word-break:break-word;font-family:var(--cds-code-01-font-family);font-size:var(--cds-helper-text-01-font-size);max-height:256px;overflow:auto}\n/*!\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
6951
|
+
}], ctorParameters: () => [{ type: CaseInspectionService }, { type: i1$4.FormBuilder }], propDecorators: { _afterDatePicker: [{
|
|
6952
|
+
type: ViewChild,
|
|
6953
|
+
args: ['afterPicker']
|
|
6954
|
+
}], _beforeDatePicker: [{
|
|
6955
|
+
type: ViewChild,
|
|
6956
|
+
args: ['beforePicker']
|
|
6957
|
+
}], timestampTemplate: [{
|
|
6958
|
+
type: ViewChild,
|
|
6959
|
+
args: ['timestampTemplate']
|
|
6960
|
+
}], levelTemplate: [{
|
|
6961
|
+
type: ViewChild,
|
|
6962
|
+
args: ['levelTemplate']
|
|
6963
|
+
}], messageTemplate: [{
|
|
6964
|
+
type: ViewChild,
|
|
6965
|
+
args: ['messageTemplate']
|
|
6966
|
+
}], documentId: [{
|
|
6967
|
+
type: Input
|
|
6968
|
+
}], pendingProcessInstanceId: [{
|
|
6969
|
+
type: Input
|
|
6970
|
+
}] } });
|
|
6971
|
+
|
|
6972
|
+
/*
|
|
6973
|
+
* Copyright 2015-2026 Ritense BV, the Netherlands.
|
|
6974
|
+
*
|
|
6975
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
6976
|
+
* you may not use this file except in compliance with the License.
|
|
6977
|
+
* You may obtain a copy of the License at
|
|
6978
|
+
*
|
|
6979
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
6980
|
+
*
|
|
6981
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
6982
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
6983
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
6984
|
+
* See the License for the specific language governing permissions and
|
|
6985
|
+
* limitations under the License.
|
|
6986
|
+
*/
|
|
6987
|
+
class CaseInspectionMetadataTabComponent {
|
|
6988
|
+
constructor(caseInspectionService) {
|
|
6989
|
+
this.caseInspectionService = caseInspectionService;
|
|
6990
|
+
this.$loading = signal(true);
|
|
6991
|
+
this.$document = signal(null);
|
|
6992
|
+
this.$errorMessage = signal(null);
|
|
6993
|
+
}
|
|
6994
|
+
ngOnChanges(changes) {
|
|
6995
|
+
if (changes.documentId && this.documentId) {
|
|
6996
|
+
this.loadDocument(this.documentId);
|
|
6997
|
+
}
|
|
6998
|
+
}
|
|
6999
|
+
loadDocument(documentId) {
|
|
7000
|
+
this.$loading.set(true);
|
|
7001
|
+
this.$errorMessage.set(null);
|
|
7002
|
+
this.$document.set(null);
|
|
7003
|
+
this.caseInspectionService.getDocument(documentId).subscribe({
|
|
7004
|
+
next: document => {
|
|
7005
|
+
if (documentId !== this.documentId) {
|
|
7006
|
+
return;
|
|
7007
|
+
}
|
|
7008
|
+
this.$document.set(document);
|
|
7009
|
+
this.$loading.set(false);
|
|
7010
|
+
},
|
|
7011
|
+
error: err => {
|
|
7012
|
+
if (documentId !== this.documentId) {
|
|
7013
|
+
return;
|
|
7014
|
+
}
|
|
7015
|
+
this.$document.set(null);
|
|
7016
|
+
this.$errorMessage.set(err?.error?.message ?? err?.message ?? 'Failed to load metadata');
|
|
7017
|
+
this.$loading.set(false);
|
|
7018
|
+
},
|
|
7019
|
+
});
|
|
7020
|
+
}
|
|
7021
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseInspectionMetadataTabComponent, deps: [{ token: CaseInspectionService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7022
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: CaseInspectionMetadataTabComponent, isStandalone: true, selector: "valtimo-case-inspection-metadata", inputs: { documentId: "documentId" }, usesOnChanges: true, ngImport: i0, template: "<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<section class=\"case-inspection-metadata-tab\">\n <div *ngIf=\"$loading()\" class=\"loading-container\">\n <cds-loading size=\"sm\"></cds-loading>\n </div>\n\n @if ($errorMessage(); as message) {\n <p class=\"case-inspection-metadata-tab__error\">{{ message }}</p>\n }\n\n <ng-container *ngIf=\"$document() as document\">\n <cds-structured-list class=\"case-inspection-metadata-tab__list\" [condensed]=\"true\">\n <cds-list-row>\n <cds-list-column>{{ 'case.inspection.metadata.documentId' | translate }}</cds-list-column>\n <cds-list-column\n ><code>{{ document.id }}</code></cds-list-column\n >\n </cds-list-row>\n\n <cds-list-row>\n <cds-list-column>{{\n 'case.inspection.metadata.definitionName' | translate\n }}</cds-list-column>\n <cds-list-column>{{ document.definitionId?.name }}</cds-list-column>\n </cds-list-row>\n\n <cds-list-row>\n <cds-list-column>{{ 'case.inspection.metadata.sequence' | translate }}</cds-list-column>\n <cds-list-column>{{ document.sequence }}</cds-list-column>\n </cds-list-row>\n\n <cds-list-row>\n <cds-list-column>{{ 'case.inspection.metadata.version' | translate }}</cds-list-column>\n <cds-list-column>{{ document.version }}</cds-list-column>\n </cds-list-row>\n\n <cds-list-row>\n <cds-list-column>{{ 'case.inspection.metadata.createdBy' | translate }}</cds-list-column>\n <cds-list-column>{{ document.createdBy }}</cds-list-column>\n </cds-list-row>\n\n <cds-list-row>\n <cds-list-column>{{ 'case.inspection.metadata.createdOn' | translate }}</cds-list-column>\n <cds-list-column>{{ document.createdOn | date: 'medium' }}</cds-list-column>\n </cds-list-row>\n\n <cds-list-row>\n <cds-list-column>{{ 'case.inspection.metadata.modifiedOn' | translate }}</cds-list-column>\n <cds-list-column>{{ document.modifiedOn | date: 'medium' }}</cds-list-column>\n </cds-list-row>\n\n <cds-list-row>\n <cds-list-column>{{ 'case.inspection.metadata.assignee' | translate }}</cds-list-column>\n <cds-list-column>\n <ng-container *ngIf=\"document.assigneeFullName; else noAssignee\">\n {{ document.assigneeFullName }}\n </ng-container>\n\n <ng-template #noAssignee>\n <span class=\"case-inspection-metadata-tab__empty\">\n {{ 'case.inspection.metadata.unassigned' | translate }}\n </span>\n </ng-template>\n </cds-list-column>\n </cds-list-row>\n\n <cds-list-row>\n <cds-list-column>{{ 'case.inspection.metadata.assignedTeam' | translate }}</cds-list-column>\n <cds-list-column>\n <ng-container *ngIf=\"document.assignedTeamTitle; else noTeam\">\n {{ document.assignedTeamTitle }}\n </ng-container>\n\n <ng-template #noTeam>\n <span class=\"case-inspection-metadata-tab__empty\">\n {{ 'case.inspection.metadata.unassigned' | translate }}\n </span>\n </ng-template>\n </cds-list-column>\n </cds-list-row>\n\n <cds-list-row>\n <cds-list-column>{{\n 'case.inspection.metadata.internalStatus' | translate\n }}</cds-list-column>\n <cds-list-column>\n <ng-container *ngIf=\"document.internalStatus; else noStatus\">\n {{ document.internalStatus }}\n </ng-container>\n\n <ng-template #noStatus>\n <span class=\"case-inspection-metadata-tab__empty\">\n {{ 'case.inspection.metadata.noStatus' | translate }}\n </span>\n </ng-template>\n </cds-list-column>\n </cds-list-row>\n\n <cds-list-row>\n <cds-list-column>{{ 'case.inspection.metadata.tags' | translate }}</cds-list-column>\n <cds-list-column>\n <ng-container *ngIf=\"document.caseTags?.length; else noTags\">\n <cds-tag\n *ngFor=\"let tag of document.caseTags\"\n [title]=\"tag.title\"\n size=\"sm\"\n type=\"cool-gray\"\n >\n {{ tag.title }}\n </cds-tag>\n </ng-container>\n\n <ng-template #noTags>\n <span class=\"case-inspection-metadata-tab__empty\">\n {{ 'case.inspection.metadata.noTags' | translate }}\n </span>\n </ng-template>\n </cds-list-column>\n </cds-list-row>\n\n <cds-list-row>\n <cds-list-column>{{ 'case.inspection.metadata.relations' | translate }}</cds-list-column>\n <cds-list-column>\n <ng-container *ngIf=\"document.relations?.length; else noRelations\">\n <ul>\n <li *ngFor=\"let relation of document.relations\">{{ relation }}</li>\n </ul>\n </ng-container>\n\n <ng-template #noRelations>\n <span class=\"case-inspection-metadata-tab__empty\">\n {{ 'case.inspection.metadata.noRelations' | translate }}\n </span>\n </ng-template>\n </cds-list-column>\n </cds-list-row>\n\n <cds-list-row>\n <cds-list-column>{{ 'case.inspection.metadata.relatedFiles' | translate }}</cds-list-column>\n <cds-list-column>{{ document.relatedFiles?.length || 0 }}</cds-list-column>\n </cds-list-row>\n </cds-structured-list>\n </ng-container>\n</section>\n", styles: [".case-inspection-metadata-tab{border-left:1px solid var(--cds-border-subtle);border-right:1px solid var(--cds-border-subtle)}.case-inspection-metadata-tab__list ul{margin:0;padding-left:var(--cds-spacing-06)}.case-inspection-metadata-tab__error{color:var(--cds-text-error)}.case-inspection-metadata-tab__empty{color:var(--cds-text-helper)}\n/*!\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i6.DatePipe, name: "date" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: StructuredListModule }, { kind: "component", type: i4$1.StructuredList, selector: "cds-structured-list, ibm-structured-list", inputs: ["selection", "flushed", "condensed", "name", "skeleton"], outputs: ["selected"] }, { kind: "component", type: i4$1.ListRow, selector: "cds-list-row, ibm-list-row", inputs: ["selected", "label", "value"], outputs: ["change"] }, { kind: "component", type: i4$1.ListColumn, selector: "cds-list-column, ibm-list-column", inputs: ["skeleton", "nowrap"] }, { kind: "ngmodule", type: TagModule }, { kind: "component", type: i4$1.Tag, selector: "cds-tag, ibm-tag", inputs: ["type", "size", "class", "skeleton"] }, { kind: "ngmodule", type: LoadingModule }, { kind: "component", type: i4$1.Loading, selector: "cds-loading, ibm-loading", inputs: ["title", "isActive", "size", "overlay"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
7023
|
+
}
|
|
7024
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseInspectionMetadataTabComponent, decorators: [{
|
|
7025
|
+
type: Component,
|
|
7026
|
+
args: [{ standalone: true, selector: 'valtimo-case-inspection-metadata', changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, TranslateModule, StructuredListModule, TagModule, LoadingModule], template: "<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<section class=\"case-inspection-metadata-tab\">\n <div *ngIf=\"$loading()\" class=\"loading-container\">\n <cds-loading size=\"sm\"></cds-loading>\n </div>\n\n @if ($errorMessage(); as message) {\n <p class=\"case-inspection-metadata-tab__error\">{{ message }}</p>\n }\n\n <ng-container *ngIf=\"$document() as document\">\n <cds-structured-list class=\"case-inspection-metadata-tab__list\" [condensed]=\"true\">\n <cds-list-row>\n <cds-list-column>{{ 'case.inspection.metadata.documentId' | translate }}</cds-list-column>\n <cds-list-column\n ><code>{{ document.id }}</code></cds-list-column\n >\n </cds-list-row>\n\n <cds-list-row>\n <cds-list-column>{{\n 'case.inspection.metadata.definitionName' | translate\n }}</cds-list-column>\n <cds-list-column>{{ document.definitionId?.name }}</cds-list-column>\n </cds-list-row>\n\n <cds-list-row>\n <cds-list-column>{{ 'case.inspection.metadata.sequence' | translate }}</cds-list-column>\n <cds-list-column>{{ document.sequence }}</cds-list-column>\n </cds-list-row>\n\n <cds-list-row>\n <cds-list-column>{{ 'case.inspection.metadata.version' | translate }}</cds-list-column>\n <cds-list-column>{{ document.version }}</cds-list-column>\n </cds-list-row>\n\n <cds-list-row>\n <cds-list-column>{{ 'case.inspection.metadata.createdBy' | translate }}</cds-list-column>\n <cds-list-column>{{ document.createdBy }}</cds-list-column>\n </cds-list-row>\n\n <cds-list-row>\n <cds-list-column>{{ 'case.inspection.metadata.createdOn' | translate }}</cds-list-column>\n <cds-list-column>{{ document.createdOn | date: 'medium' }}</cds-list-column>\n </cds-list-row>\n\n <cds-list-row>\n <cds-list-column>{{ 'case.inspection.metadata.modifiedOn' | translate }}</cds-list-column>\n <cds-list-column>{{ document.modifiedOn | date: 'medium' }}</cds-list-column>\n </cds-list-row>\n\n <cds-list-row>\n <cds-list-column>{{ 'case.inspection.metadata.assignee' | translate }}</cds-list-column>\n <cds-list-column>\n <ng-container *ngIf=\"document.assigneeFullName; else noAssignee\">\n {{ document.assigneeFullName }}\n </ng-container>\n\n <ng-template #noAssignee>\n <span class=\"case-inspection-metadata-tab__empty\">\n {{ 'case.inspection.metadata.unassigned' | translate }}\n </span>\n </ng-template>\n </cds-list-column>\n </cds-list-row>\n\n <cds-list-row>\n <cds-list-column>{{ 'case.inspection.metadata.assignedTeam' | translate }}</cds-list-column>\n <cds-list-column>\n <ng-container *ngIf=\"document.assignedTeamTitle; else noTeam\">\n {{ document.assignedTeamTitle }}\n </ng-container>\n\n <ng-template #noTeam>\n <span class=\"case-inspection-metadata-tab__empty\">\n {{ 'case.inspection.metadata.unassigned' | translate }}\n </span>\n </ng-template>\n </cds-list-column>\n </cds-list-row>\n\n <cds-list-row>\n <cds-list-column>{{\n 'case.inspection.metadata.internalStatus' | translate\n }}</cds-list-column>\n <cds-list-column>\n <ng-container *ngIf=\"document.internalStatus; else noStatus\">\n {{ document.internalStatus }}\n </ng-container>\n\n <ng-template #noStatus>\n <span class=\"case-inspection-metadata-tab__empty\">\n {{ 'case.inspection.metadata.noStatus' | translate }}\n </span>\n </ng-template>\n </cds-list-column>\n </cds-list-row>\n\n <cds-list-row>\n <cds-list-column>{{ 'case.inspection.metadata.tags' | translate }}</cds-list-column>\n <cds-list-column>\n <ng-container *ngIf=\"document.caseTags?.length; else noTags\">\n <cds-tag\n *ngFor=\"let tag of document.caseTags\"\n [title]=\"tag.title\"\n size=\"sm\"\n type=\"cool-gray\"\n >\n {{ tag.title }}\n </cds-tag>\n </ng-container>\n\n <ng-template #noTags>\n <span class=\"case-inspection-metadata-tab__empty\">\n {{ 'case.inspection.metadata.noTags' | translate }}\n </span>\n </ng-template>\n </cds-list-column>\n </cds-list-row>\n\n <cds-list-row>\n <cds-list-column>{{ 'case.inspection.metadata.relations' | translate }}</cds-list-column>\n <cds-list-column>\n <ng-container *ngIf=\"document.relations?.length; else noRelations\">\n <ul>\n <li *ngFor=\"let relation of document.relations\">{{ relation }}</li>\n </ul>\n </ng-container>\n\n <ng-template #noRelations>\n <span class=\"case-inspection-metadata-tab__empty\">\n {{ 'case.inspection.metadata.noRelations' | translate }}\n </span>\n </ng-template>\n </cds-list-column>\n </cds-list-row>\n\n <cds-list-row>\n <cds-list-column>{{ 'case.inspection.metadata.relatedFiles' | translate }}</cds-list-column>\n <cds-list-column>{{ document.relatedFiles?.length || 0 }}</cds-list-column>\n </cds-list-row>\n </cds-structured-list>\n </ng-container>\n</section>\n", styles: [".case-inspection-metadata-tab{border-left:1px solid var(--cds-border-subtle);border-right:1px solid var(--cds-border-subtle)}.case-inspection-metadata-tab__list ul{margin:0;padding-left:var(--cds-spacing-06)}.case-inspection-metadata-tab__error{color:var(--cds-text-error)}.case-inspection-metadata-tab__empty{color:var(--cds-text-helper)}\n/*!\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
7027
|
+
}], ctorParameters: () => [{ type: CaseInspectionService }], propDecorators: { documentId: [{
|
|
7028
|
+
type: Input
|
|
7029
|
+
}] } });
|
|
7030
|
+
|
|
7031
|
+
/*
|
|
7032
|
+
* Copyright 2015-2026 Ritense BV, the Netherlands.
|
|
7033
|
+
*
|
|
7034
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
7035
|
+
* you may not use this file except in compliance with the License.
|
|
7036
|
+
* You may obtain a copy of the License at
|
|
7037
|
+
*
|
|
7038
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
7039
|
+
*
|
|
7040
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
7041
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
7042
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
7043
|
+
* See the License for the specific language governing permissions and
|
|
7044
|
+
* limitations under the License.
|
|
7045
|
+
*/
|
|
7046
|
+
class CaseInspectionProcessVariableModalComponent {
|
|
7047
|
+
get name() {
|
|
7048
|
+
return this.formGroup.get('name');
|
|
7049
|
+
}
|
|
7050
|
+
get type() {
|
|
7051
|
+
return this.formGroup.get('type');
|
|
7052
|
+
}
|
|
7053
|
+
constructor(fb) {
|
|
7054
|
+
this.fb = fb;
|
|
7055
|
+
this.open = false;
|
|
7056
|
+
this.mode = 'create';
|
|
7057
|
+
this.initialVariable = null;
|
|
7058
|
+
this.modalClosed = new EventEmitter();
|
|
7059
|
+
this.$invalidJson = signal(false);
|
|
7060
|
+
this._PROCESS_VARIABLE_TYPES = [
|
|
7061
|
+
'STRING',
|
|
7062
|
+
'INTEGER',
|
|
7063
|
+
'LONG',
|
|
7064
|
+
'DOUBLE',
|
|
7065
|
+
'BOOLEAN',
|
|
7066
|
+
'JSON',
|
|
7067
|
+
];
|
|
7068
|
+
this.typeSelectItems = this._PROCESS_VARIABLE_TYPES.map(type => ({
|
|
7069
|
+
id: type,
|
|
7070
|
+
translationKey: `case.inspection.processes.variableModal.types.${type}`,
|
|
7071
|
+
}));
|
|
7072
|
+
this.formGroup = this.fb.group({
|
|
7073
|
+
name: this.fb.control('', [Validators.required, Validators.pattern(/\S/)]),
|
|
7074
|
+
type: this.fb.control('STRING', Validators.required),
|
|
7075
|
+
valueText: this.fb.control(''),
|
|
7076
|
+
valueNumber: this.fb.control(null),
|
|
7077
|
+
valueBoolean: this.fb.control(false),
|
|
7078
|
+
valueJson: this.fb.control('', this.jsonValidator()),
|
|
7079
|
+
});
|
|
7080
|
+
this.type.valueChanges.subscribe(t => this.applyTypeValidators(t));
|
|
7081
|
+
}
|
|
7082
|
+
ngOnChanges(changes) {
|
|
7083
|
+
if (changes.open && this.open) {
|
|
7084
|
+
this.resetForm();
|
|
7085
|
+
if (this.mode === 'edit' && this.initialVariable) {
|
|
7086
|
+
this.applyInitialVariable(this.initialVariable);
|
|
7087
|
+
}
|
|
7088
|
+
this.applyNameDisabled();
|
|
7089
|
+
}
|
|
7090
|
+
}
|
|
7091
|
+
onCancel() {
|
|
7092
|
+
this.modalClosed.emit(null);
|
|
7093
|
+
}
|
|
7094
|
+
onConfirm() {
|
|
7095
|
+
if (this.formGroup.invalid) {
|
|
7096
|
+
this.formGroup.markAllAsTouched();
|
|
7097
|
+
return;
|
|
7098
|
+
}
|
|
7099
|
+
const raw = this.formGroup.getRawValue();
|
|
7100
|
+
const request = {
|
|
7101
|
+
name: (raw.name ?? '').trim(),
|
|
7102
|
+
type: raw.type,
|
|
7103
|
+
value: this.extractValue(raw.type),
|
|
7104
|
+
};
|
|
7105
|
+
this.modalClosed.emit(request);
|
|
7106
|
+
}
|
|
7107
|
+
extractValue(type) {
|
|
7108
|
+
const raw = this.formGroup.getRawValue();
|
|
7109
|
+
switch (type) {
|
|
7110
|
+
case 'STRING':
|
|
7111
|
+
return raw.valueText ?? '';
|
|
7112
|
+
case 'INTEGER':
|
|
7113
|
+
case 'LONG':
|
|
7114
|
+
case 'DOUBLE':
|
|
7115
|
+
return raw.valueNumber;
|
|
7116
|
+
case 'BOOLEAN':
|
|
7117
|
+
return !!raw.valueBoolean;
|
|
7118
|
+
case 'JSON':
|
|
7119
|
+
return raw.valueJson ? JSON.parse(raw.valueJson) : null;
|
|
7120
|
+
}
|
|
7121
|
+
}
|
|
7122
|
+
applyTypeValidators(type) {
|
|
7123
|
+
const text = this.formGroup.get('valueText');
|
|
7124
|
+
const num = this.formGroup.get('valueNumber');
|
|
7125
|
+
const bool = this.formGroup.get('valueBoolean');
|
|
7126
|
+
const json = this.formGroup.get('valueJson');
|
|
7127
|
+
text.clearValidators();
|
|
7128
|
+
num.clearValidators();
|
|
7129
|
+
bool.clearValidators();
|
|
7130
|
+
json.clearValidators();
|
|
7131
|
+
switch (type) {
|
|
7132
|
+
case 'INTEGER':
|
|
7133
|
+
case 'LONG':
|
|
7134
|
+
num.setValidators([Validators.required, Validators.pattern(/^-?\d+$/)]);
|
|
7135
|
+
break;
|
|
7136
|
+
case 'DOUBLE':
|
|
7137
|
+
num.setValidators([Validators.required, Validators.pattern(/^-?\d+(\.\d+)?$/)]);
|
|
7138
|
+
break;
|
|
7139
|
+
case 'JSON':
|
|
7140
|
+
json.setValidators(this.jsonValidator());
|
|
7141
|
+
break;
|
|
7142
|
+
default:
|
|
7143
|
+
break;
|
|
7144
|
+
}
|
|
7145
|
+
[text, num, bool, json].forEach(c => c.updateValueAndValidity({ emitEvent: false }));
|
|
7146
|
+
}
|
|
7147
|
+
applyInitialVariable(variable) {
|
|
7148
|
+
const inferredType = this.inferType(variable.type);
|
|
7149
|
+
this.name.setValue(variable.name);
|
|
7150
|
+
this.type.setValue(inferredType);
|
|
7151
|
+
switch (inferredType) {
|
|
7152
|
+
case 'STRING':
|
|
7153
|
+
this.formGroup
|
|
7154
|
+
.get('valueText')
|
|
7155
|
+
.setValue(variable.value == null ? '' : String(variable.value));
|
|
7156
|
+
break;
|
|
7157
|
+
case 'INTEGER':
|
|
7158
|
+
case 'LONG':
|
|
7159
|
+
case 'DOUBLE':
|
|
7160
|
+
this.formGroup
|
|
7161
|
+
.get('valueNumber')
|
|
7162
|
+
.setValue(typeof variable.value === 'number' ? variable.value : Number(variable.value ?? 0));
|
|
7163
|
+
break;
|
|
7164
|
+
case 'BOOLEAN':
|
|
7165
|
+
this.formGroup.get('valueBoolean').setValue(variable.value === true);
|
|
7166
|
+
break;
|
|
7167
|
+
case 'JSON':
|
|
7168
|
+
this.formGroup
|
|
7169
|
+
.get('valueJson')
|
|
7170
|
+
.setValue(variable.value == null ? '' : JSON.stringify(variable.value, null, 2));
|
|
7171
|
+
break;
|
|
7172
|
+
}
|
|
7173
|
+
}
|
|
7174
|
+
inferType(operatonType) {
|
|
7175
|
+
switch ((operatonType ?? '').toLowerCase()) {
|
|
7176
|
+
case 'string':
|
|
7177
|
+
return 'STRING';
|
|
7178
|
+
case 'integer':
|
|
7179
|
+
return 'INTEGER';
|
|
7180
|
+
case 'long':
|
|
7181
|
+
return 'LONG';
|
|
7182
|
+
case 'double':
|
|
7183
|
+
return 'DOUBLE';
|
|
7184
|
+
case 'boolean':
|
|
7185
|
+
return 'BOOLEAN';
|
|
7186
|
+
default:
|
|
7187
|
+
return 'JSON';
|
|
7188
|
+
}
|
|
7189
|
+
}
|
|
7190
|
+
applyNameDisabled() {
|
|
7191
|
+
if (this.mode === 'edit') {
|
|
7192
|
+
this.name.disable({ emitEvent: false });
|
|
7193
|
+
}
|
|
7194
|
+
else {
|
|
7195
|
+
this.name.enable({ emitEvent: false });
|
|
7196
|
+
}
|
|
7197
|
+
}
|
|
7198
|
+
resetForm() {
|
|
7199
|
+
this.formGroup.reset({
|
|
7200
|
+
name: '',
|
|
7201
|
+
type: 'STRING',
|
|
7202
|
+
valueText: '',
|
|
7203
|
+
valueNumber: null,
|
|
7204
|
+
valueBoolean: false,
|
|
7205
|
+
valueJson: '',
|
|
7206
|
+
});
|
|
7207
|
+
this.$invalidJson.set(false);
|
|
7208
|
+
this.applyTypeValidators('STRING');
|
|
7209
|
+
}
|
|
7210
|
+
jsonValidator() {
|
|
7211
|
+
return (control) => {
|
|
7212
|
+
const raw = control.value;
|
|
7213
|
+
if (raw == null || raw === '') {
|
|
7214
|
+
this.$invalidJson?.set(false);
|
|
7215
|
+
return null;
|
|
7216
|
+
}
|
|
7217
|
+
try {
|
|
7218
|
+
JSON.parse(raw);
|
|
7219
|
+
this.$invalidJson?.set(false);
|
|
7220
|
+
return null;
|
|
7221
|
+
}
|
|
7222
|
+
catch {
|
|
7223
|
+
this.$invalidJson?.set(true);
|
|
7224
|
+
return { invalidJson: true };
|
|
7225
|
+
}
|
|
7226
|
+
};
|
|
7227
|
+
}
|
|
7228
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseInspectionProcessVariableModalComponent, deps: [{ token: i1$4.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7229
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: CaseInspectionProcessVariableModalComponent, isStandalone: true, selector: "valtimo-case-inspection-process-variable-modal", inputs: { open: "open", mode: "mode", initialVariable: "initialVariable" }, outputs: { modalClosed: "modalClosed" }, usesOnChanges: true, ngImport: i0, template: "<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<cds-modal valtimoCdsModal [open]=\"open\" size=\"sm\" showFooter=\"true\" (close)=\"onCancel()\">\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCancel()\">\n <h3 cdsModalHeaderHeading>\n {{\n (mode === 'edit'\n ? 'case.inspection.processes.variableModal.editTitle'\n : 'case.inspection.processes.variableModal.addTitle'\n ) | translate\n }}\n </h3>\n </cds-modal-header>\n\n <form\n [cdsLayer]=\"1\"\n [formGroup]=\"formGroup\"\n cdsModalContent\n class=\"case-inspection-variable-modal__form\"\n >\n <cds-label>\n {{ 'case.inspection.processes.variableModal.name' | translate }}\n\n <input\n cdsText\n formControlName=\"name\"\n [invalid]=\"name.dirty && name.invalid\"\n />\n </cds-label>\n\n <v-select\n formControlName=\"type\"\n titleTranslationKey=\"case.inspection.processes.variableModal.type\"\n [appendInline]=\"false\"\n [items]=\"typeSelectItems\"\n ></v-select>\n\n <ng-container [ngSwitch]=\"type.value\">\n <cds-label *ngSwitchCase=\"'STRING'\">\n {{ 'case.inspection.processes.variableModal.value' | translate }}\n\n <input cdsText formControlName=\"valueText\" />\n </cds-label>\n\n <ng-container *ngSwitchCase=\"'INTEGER'\">\n <ng-container *ngTemplateOutlet=\"numberField\"></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'LONG'\">\n <ng-container *ngTemplateOutlet=\"numberField\"></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'DOUBLE'\">\n <ng-container *ngTemplateOutlet=\"numberField\"></ng-container>\n </ng-container>\n\n <cds-toggle\n *ngSwitchCase=\"'BOOLEAN'\"\n formControlName=\"valueBoolean\"\n [label]=\"'case.inspection.processes.variableModal.value' | translate\"\n ></cds-toggle>\n\n <cds-textarea-label\n *ngSwitchCase=\"'JSON'\"\n [invalid]=\"$invalidJson()\"\n [invalidText]=\"'case.inspection.processes.variableModal.invalidJson' | translate\"\n >\n {{ 'case.inspection.processes.variableModal.value' | translate }}\n\n <textarea\n cdsTextArea\n formControlName=\"valueJson\"\n rows=\"8\"\n [invalid]=\"$invalidJson()\"\n ></textarea>\n </cds-textarea-label>\n </ng-container>\n\n <ng-template #numberField>\n <cds-number\n formControlName=\"valueNumber\"\n [label]=\"'case.inspection.processes.variableModal.value' | translate\"\n [step]=\"type.value === 'DOUBLE' ? 0.1 : 1\"\n ></cds-number>\n </ng-template>\n </form>\n\n <cds-modal-footer>\n <button cdsButton=\"ghost\" (click)=\"onCancel()\">\n {{ 'case.inspection.processes.variableModal.cancel' | translate }}\n </button>\n\n <button\n cdsButton=\"primary\"\n [disabled]=\"formGroup.invalid\"\n (click)=\"onConfirm()\"\n >\n {{ 'case.inspection.processes.variableModal.save' | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n", styles: [".case-inspection-variable-modal__form{display:flex;flex-direction:column;gap:var(--cds-spacing-06)}\n/*!\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i6.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i6.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i4$1.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: InputModule }, { kind: "component", type: i4$1.Label, selector: "cds-label, ibm-label", inputs: ["labelInputID", "disabled", "skeleton", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel"] }, { kind: "component", type: i4$1.TextareaLabelComponent, selector: "cds-textarea-label, ibm-textarea-label", inputs: ["labelInputID", "disabled", "skeleton", "labelTemplate", "textAreaTemplate", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel", "fluid"] }, { kind: "directive", type: i4$1.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "directive", type: i4$1.TextArea, selector: "[cdsTextArea], [ibmTextArea]", inputs: ["theme", "invalid", "skeleton"] }, { kind: "ngmodule", type: LayerModule }, { kind: "directive", type: i4$1.LayerDirective, selector: "[cdsLayer], [ibmLayer]", inputs: ["ibmLayer", "cdsLayer"], exportAs: ["layer"] }, { kind: "ngmodule", type: ModalModule }, { kind: "component", type: i4$1.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i4$1.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "component", type: i4$1.ModalFooter, selector: "cds-modal-footer, ibm-modal-footer" }, { kind: "directive", type: i4$1.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }, { kind: "directive", type: i4$1.ModalHeaderHeading, selector: "[cdsModalHeaderHeading], [ibmModalHeaderHeading]" }, { kind: "ngmodule", type: NumberModule }, { kind: "component", type: i4$1.NumberComponent, selector: "cds-number, ibm-number", inputs: ["readonly", "theme", "disabled", "skeleton", "invalid", "id", "placeholder", "size", "required", "value", "min", "max", "label", "helperText", "invalidText", "step", "precision", "warn", "warnText", "ariaLabel", "decrementLabel", "incrementLabel", "fluid"], outputs: ["change"] }, { kind: "ngmodule", type: ToggleModule }, { kind: "component", type: i4$1.Toggle, selector: "cds-toggle, ibm-toggle", inputs: ["offText", "onText", "label", "size", "hideLabel", "ariaLabel", "skeleton"] }, { kind: "ngmodule", type: SelectModule }, { kind: "component", type: i2$1.SelectComponent, selector: "v-select", inputs: ["items", "defaultSelection", "defaultSelectionId", "defaultSelectionIds", "disabled", "dropUp", "invalid", "multiple", "margin", "widthInPx", "notFoundText", "clearAllText", "clearText", "clearable", "name", "title", "titleTranslationKey", "clearSelectionSubject$", "tooltip", "required", "loading", "loadingText", "placeholder", "smallMargin", "carbonTheme", "appendInline", "warn", "warnText", "dataTestId"], outputs: ["selectedChange"] }, { kind: "directive", type: ValtimoCdsModalDirective, selector: "[valtimoCdsModal]", inputs: ["minContentHeight"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
7230
|
+
}
|
|
7231
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseInspectionProcessVariableModalComponent, decorators: [{
|
|
7232
|
+
type: Component,
|
|
7233
|
+
args: [{ standalone: true, selector: 'valtimo-case-inspection-process-variable-modal', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
7234
|
+
CommonModule,
|
|
7235
|
+
TranslateModule,
|
|
7236
|
+
ReactiveFormsModule,
|
|
7237
|
+
ButtonModule,
|
|
7238
|
+
InputModule,
|
|
7239
|
+
LayerModule,
|
|
7240
|
+
ModalModule,
|
|
7241
|
+
NumberModule,
|
|
7242
|
+
ToggleModule,
|
|
7243
|
+
SelectModule,
|
|
7244
|
+
ValtimoCdsModalDirective,
|
|
7245
|
+
], template: "<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<cds-modal valtimoCdsModal [open]=\"open\" size=\"sm\" showFooter=\"true\" (close)=\"onCancel()\">\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCancel()\">\n <h3 cdsModalHeaderHeading>\n {{\n (mode === 'edit'\n ? 'case.inspection.processes.variableModal.editTitle'\n : 'case.inspection.processes.variableModal.addTitle'\n ) | translate\n }}\n </h3>\n </cds-modal-header>\n\n <form\n [cdsLayer]=\"1\"\n [formGroup]=\"formGroup\"\n cdsModalContent\n class=\"case-inspection-variable-modal__form\"\n >\n <cds-label>\n {{ 'case.inspection.processes.variableModal.name' | translate }}\n\n <input\n cdsText\n formControlName=\"name\"\n [invalid]=\"name.dirty && name.invalid\"\n />\n </cds-label>\n\n <v-select\n formControlName=\"type\"\n titleTranslationKey=\"case.inspection.processes.variableModal.type\"\n [appendInline]=\"false\"\n [items]=\"typeSelectItems\"\n ></v-select>\n\n <ng-container [ngSwitch]=\"type.value\">\n <cds-label *ngSwitchCase=\"'STRING'\">\n {{ 'case.inspection.processes.variableModal.value' | translate }}\n\n <input cdsText formControlName=\"valueText\" />\n </cds-label>\n\n <ng-container *ngSwitchCase=\"'INTEGER'\">\n <ng-container *ngTemplateOutlet=\"numberField\"></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'LONG'\">\n <ng-container *ngTemplateOutlet=\"numberField\"></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'DOUBLE'\">\n <ng-container *ngTemplateOutlet=\"numberField\"></ng-container>\n </ng-container>\n\n <cds-toggle\n *ngSwitchCase=\"'BOOLEAN'\"\n formControlName=\"valueBoolean\"\n [label]=\"'case.inspection.processes.variableModal.value' | translate\"\n ></cds-toggle>\n\n <cds-textarea-label\n *ngSwitchCase=\"'JSON'\"\n [invalid]=\"$invalidJson()\"\n [invalidText]=\"'case.inspection.processes.variableModal.invalidJson' | translate\"\n >\n {{ 'case.inspection.processes.variableModal.value' | translate }}\n\n <textarea\n cdsTextArea\n formControlName=\"valueJson\"\n rows=\"8\"\n [invalid]=\"$invalidJson()\"\n ></textarea>\n </cds-textarea-label>\n </ng-container>\n\n <ng-template #numberField>\n <cds-number\n formControlName=\"valueNumber\"\n [label]=\"'case.inspection.processes.variableModal.value' | translate\"\n [step]=\"type.value === 'DOUBLE' ? 0.1 : 1\"\n ></cds-number>\n </ng-template>\n </form>\n\n <cds-modal-footer>\n <button cdsButton=\"ghost\" (click)=\"onCancel()\">\n {{ 'case.inspection.processes.variableModal.cancel' | translate }}\n </button>\n\n <button\n cdsButton=\"primary\"\n [disabled]=\"formGroup.invalid\"\n (click)=\"onConfirm()\"\n >\n {{ 'case.inspection.processes.variableModal.save' | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n", styles: [".case-inspection-variable-modal__form{display:flex;flex-direction:column;gap:var(--cds-spacing-06)}\n/*!\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
7246
|
+
}], ctorParameters: () => [{ type: i1$4.FormBuilder }], propDecorators: { open: [{
|
|
7247
|
+
type: Input
|
|
7248
|
+
}], mode: [{
|
|
7249
|
+
type: Input
|
|
7250
|
+
}], initialVariable: [{
|
|
7251
|
+
type: Input
|
|
7252
|
+
}], modalClosed: [{
|
|
7253
|
+
type: Output
|
|
7254
|
+
}] } });
|
|
7255
|
+
|
|
7256
|
+
/*
|
|
7257
|
+
* Copyright 2015-2026 Ritense BV, the Netherlands.
|
|
7258
|
+
*
|
|
7259
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
7260
|
+
* you may not use this file except in compliance with the License.
|
|
7261
|
+
* You may obtain a copy of the License at
|
|
7262
|
+
*
|
|
7263
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
7264
|
+
*
|
|
7265
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
7266
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
7267
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
7268
|
+
* See the License for the specific language governing permissions and
|
|
7269
|
+
* limitations under the License.
|
|
7270
|
+
*/
|
|
7271
|
+
class CaseInspectionProcessDetailComponent {
|
|
7272
|
+
set row(value) {
|
|
7273
|
+
this._row = value;
|
|
7274
|
+
this.$row.set(value);
|
|
7275
|
+
}
|
|
7276
|
+
get row() {
|
|
7277
|
+
return this._row;
|
|
7278
|
+
}
|
|
7279
|
+
set canInspectModify(value) {
|
|
7280
|
+
this.$canInspectModify.set(value);
|
|
7281
|
+
}
|
|
7282
|
+
constructor(caseInspectionService, notificationService, translateService, iconService) {
|
|
7283
|
+
this.caseInspectionService = caseInspectionService;
|
|
7284
|
+
this.notificationService = notificationService;
|
|
7285
|
+
this.translateService = translateService;
|
|
7286
|
+
this.iconService = iconService;
|
|
7287
|
+
this.documentId = '';
|
|
7288
|
+
this.viewBuildingBlockEvent = new EventEmitter();
|
|
7289
|
+
this.variablesChangedEvent = new EventEmitter();
|
|
7290
|
+
this.viewProcessLogsEvent = new EventEmitter();
|
|
7291
|
+
this.$activeTab = signal(ProcessDetailTab.DETAILS);
|
|
7292
|
+
this.ProcessDetailTab = ProcessDetailTab;
|
|
7293
|
+
this.incidentColumns = [
|
|
7294
|
+
'case.inspection.processes.incidentType',
|
|
7295
|
+
'case.inspection.processes.activity',
|
|
7296
|
+
'case.inspection.processes.message',
|
|
7297
|
+
'case.inspection.processes.timestamp',
|
|
7298
|
+
];
|
|
7299
|
+
this.taskColumns = [
|
|
7300
|
+
'case.inspection.processes.taskName',
|
|
7301
|
+
'case.inspection.processes.taskAssignee',
|
|
7302
|
+
'case.inspection.processes.taskCreated',
|
|
7303
|
+
];
|
|
7304
|
+
this.variableColumns = [
|
|
7305
|
+
'case.inspection.processes.variableName',
|
|
7306
|
+
'case.inspection.processes.variableType',
|
|
7307
|
+
'case.inspection.processes.variableValue',
|
|
7308
|
+
];
|
|
7309
|
+
this.jobColumns = [
|
|
7310
|
+
'case.inspection.processes.jobType',
|
|
7311
|
+
'case.inspection.processes.jobActivity',
|
|
7312
|
+
'case.inspection.processes.jobRetries',
|
|
7313
|
+
'case.inspection.processes.jobDueDate',
|
|
7314
|
+
'case.inspection.processes.jobException',
|
|
7315
|
+
];
|
|
7316
|
+
this.$modalOpen = signal(false);
|
|
7317
|
+
this.$modalMode = signal('create');
|
|
7318
|
+
this.$modalInitial = signal(null);
|
|
7319
|
+
this.$row = signal(null);
|
|
7320
|
+
this.$canInspectModify = signal(false);
|
|
7321
|
+
this.$canMutate = computed(() => this.$canInspectModify() && !!this.$row()?.active);
|
|
7322
|
+
this.showConfirmDelete$ = new BehaviorSubject(false);
|
|
7323
|
+
this._pendingDelete$ = new BehaviorSubject(null);
|
|
7324
|
+
this.iconService.registerAll([Add16, Edit16, TrashCan16]);
|
|
7325
|
+
this.pendingDeleteName$ = new Observable(subscriber => {
|
|
7326
|
+
const sub = this._pendingDelete$.subscribe(v => subscriber.next(v?.name ?? null));
|
|
7327
|
+
return () => sub.unsubscribe();
|
|
7328
|
+
});
|
|
7329
|
+
}
|
|
7330
|
+
onSelectTab(tab) {
|
|
7331
|
+
this.$activeTab.set(tab);
|
|
7332
|
+
}
|
|
7333
|
+
onViewBuildingBlock(bb) {
|
|
7334
|
+
this.viewBuildingBlockEvent.emit(bb);
|
|
7335
|
+
}
|
|
7336
|
+
onViewProcessLogs() {
|
|
7337
|
+
this.viewProcessLogsEvent.emit(this.row.processInstanceId);
|
|
7338
|
+
}
|
|
7339
|
+
formatVariableValue(variable) {
|
|
7340
|
+
if (variable.value === null || variable.value === undefined) {
|
|
7341
|
+
return '—';
|
|
7342
|
+
}
|
|
7343
|
+
if (typeof variable.value === 'object') {
|
|
7344
|
+
try {
|
|
7345
|
+
return JSON.stringify(variable.value);
|
|
7346
|
+
}
|
|
7347
|
+
catch {
|
|
7348
|
+
return '[unserializable]';
|
|
7349
|
+
}
|
|
7350
|
+
}
|
|
7351
|
+
return String(variable.value);
|
|
7352
|
+
}
|
|
7353
|
+
onAddVariable() {
|
|
7354
|
+
this.$modalMode.set('create');
|
|
7355
|
+
this.$modalInitial.set(null);
|
|
7356
|
+
this.$modalOpen.set(true);
|
|
7357
|
+
}
|
|
7358
|
+
onEditVariable(variable) {
|
|
7359
|
+
this.$modalMode.set('edit');
|
|
7360
|
+
this.$modalInitial.set(variable);
|
|
7361
|
+
this.$modalOpen.set(true);
|
|
7362
|
+
}
|
|
7363
|
+
onRequestDelete(variable) {
|
|
7364
|
+
this._pendingDelete$.next(variable);
|
|
7365
|
+
this.showConfirmDelete$.next(true);
|
|
7366
|
+
}
|
|
7367
|
+
onConfirmDelete() {
|
|
7368
|
+
const variable = this._pendingDelete$.value;
|
|
7369
|
+
if (!variable)
|
|
7370
|
+
return;
|
|
7371
|
+
this.caseInspectionService
|
|
7372
|
+
.deleteProcessVariable(this.documentId, this.row.processInstanceId, variable.name)
|
|
7373
|
+
.subscribe({
|
|
7374
|
+
next: () => {
|
|
7375
|
+
this.notifySuccess('case.inspection.processes.variableActions.deletedToast', variable.name);
|
|
7376
|
+
this._pendingDelete$.next(null);
|
|
7377
|
+
this.variablesChangedEvent.emit();
|
|
7378
|
+
},
|
|
7379
|
+
error: () => {
|
|
7380
|
+
this._pendingDelete$.next(null);
|
|
7381
|
+
},
|
|
7382
|
+
});
|
|
7383
|
+
}
|
|
7384
|
+
onCancelDelete() {
|
|
7385
|
+
this._pendingDelete$.next(null);
|
|
7386
|
+
}
|
|
7387
|
+
onModalClosed(request) {
|
|
7388
|
+
this.$modalOpen.set(false);
|
|
7389
|
+
if (!request)
|
|
7390
|
+
return;
|
|
7391
|
+
const mode = this.$modalMode();
|
|
7392
|
+
if (mode === 'create') {
|
|
7393
|
+
this.caseInspectionService
|
|
7394
|
+
.createProcessVariable(this.documentId, this.row.processInstanceId, request)
|
|
7395
|
+
.subscribe({
|
|
7396
|
+
next: () => {
|
|
7397
|
+
this.notifySuccess('case.inspection.processes.variableActions.createdToast', request.name);
|
|
7398
|
+
this.variablesChangedEvent.emit();
|
|
7399
|
+
},
|
|
7400
|
+
});
|
|
7401
|
+
}
|
|
7402
|
+
else {
|
|
7403
|
+
const original = this.$modalInitial();
|
|
7404
|
+
const name = original?.name ?? request.name;
|
|
7405
|
+
this.caseInspectionService
|
|
7406
|
+
.updateProcessVariable(this.documentId, this.row.processInstanceId, name, request)
|
|
7407
|
+
.subscribe({
|
|
7408
|
+
next: () => {
|
|
7409
|
+
this.notifySuccess('case.inspection.processes.variableActions.updatedToast', name);
|
|
7410
|
+
this.variablesChangedEvent.emit();
|
|
7411
|
+
},
|
|
7412
|
+
});
|
|
7413
|
+
}
|
|
7414
|
+
}
|
|
7415
|
+
notifySuccess(translationKey, name) {
|
|
7416
|
+
this.notificationService.showToast({
|
|
7417
|
+
type: 'success',
|
|
7418
|
+
title: this.translateService.instant(translationKey, { name }),
|
|
7419
|
+
message: '',
|
|
7420
|
+
});
|
|
7421
|
+
}
|
|
7422
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseInspectionProcessDetailComponent, deps: [{ token: CaseInspectionService }, { token: i1.GlobalNotificationService }, { token: i4.TranslateService }, { token: i4$1.IconService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7423
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: CaseInspectionProcessDetailComponent, isStandalone: true, selector: "valtimo-case-inspection-process-detail", inputs: { row: "row", documentId: "documentId", canInspectModify: "canInspectModify" }, outputs: { viewBuildingBlockEvent: "viewBuildingBlockEvent", variablesChangedEvent: "variablesChangedEvent", viewProcessLogsEvent: "viewProcessLogsEvent" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<section class=\"case-inspection-process-detail\">\n <header class=\"case-inspection-process-detail__header\">\n <h3>\n {{ row.processName || row.processDefinitionKey }}\n <small>{{ 'case.inspection.processes.version' | translate }} {{ row.version }}</small>\n </h3>\n\n <div class=\"case-inspection-process-detail__tags\">\n <cds-tag\n size=\"sm\"\n [type]=\"row.active ? 'blue' : 'cool-gray'\"\n [title]=\"\n row.active\n ? ('case.inspection.processes.active' | translate)\n : ('case.inspection.processes.completed' | translate)\n \"\n >\n {{\n row.active\n ? ('case.inspection.processes.active' | translate)\n : ('case.inspection.processes.completed' | translate)\n }}\n </cds-tag>\n\n @if (row.buildingBlock; as bb) {\n <cds-tag\n size=\"sm\"\n type=\"green\"\n [title]=\"'case.inspection.processes.buildingBlockTagTooltip' | translate\"\n >\n {{ 'case.inspection.processes.buildingBlockTag' | translate }}: {{ bb.definitionKey }}\n {{ bb.definitionVersionTag }}\n </cds-tag>\n }\n\n <button cdsButton=\"ghost\" size=\"sm\" type=\"button\" (click)=\"onViewProcessLogs()\">\n {{ 'case.inspection.processes.viewLogs' | translate }}\n </button>\n </div>\n\n <cds-structured-list class=\"case-inspection-process-detail__meta\" [condensed]=\"true\">\n <cds-list-row>\n <cds-list-column>{{ 'case.inspection.processes.instanceId' | translate }}</cds-list-column>\n <cds-list-column\n ><code>{{ row.processInstanceId }}</code></cds-list-column\n >\n </cds-list-row>\n\n <cds-list-row>\n <cds-list-column>{{ 'case.inspection.processes.startedBy' | translate }}</cds-list-column>\n <cds-list-column>{{ row.startedBy || row.startedByUserId || '\u2014' }}</cds-list-column>\n </cds-list-row>\n\n <cds-list-row>\n <cds-list-column>{{ 'case.inspection.processes.startedOn' | translate }}</cds-list-column>\n <cds-list-column>{{ row.startedOn | date: 'medium' }}</cds-list-column>\n </cds-list-row>\n\n <cds-list-row *ngIf=\"row.buildingBlock as bb\">\n <cds-list-column>{{\n 'case.inspection.processes.buildingBlock' | translate\n }}</cds-list-column>\n <cds-list-column>\n <a\n cdsLink\n href=\"javascript:void(0)\"\n (click)=\"onViewBuildingBlock(bb); $event.preventDefault()\"\n >\n {{ bb.definitionKey }} {{ bb.definitionVersionTag }}\n <span aria-hidden=\"true\">\u2192</span>\n </a>\n </cds-list-column>\n </cds-list-row>\n </cds-structured-list>\n </header>\n\n <cds-tabs type=\"inline\">\n <cds-tab\n [active]=\"$activeTab() === ProcessDetailTab.DETAILS\"\n [heading]=\"'case.inspection.processes.detailsTab' | translate\"\n (selected)=\"onSelectTab(ProcessDetailTab.DETAILS)\"\n >\n <div class=\"case-inspection-process-detail__pane\">\n @if (row.incidents.length > 0) {\n <h4 class=\"case-inspection-process-detail__subhead\">\n {{ 'case.inspection.processes.incidentsHeader' | translate }}\n </h4>\n\n <cds-structured-list>\n <cds-list-header>\n @for (column of incidentColumns; track column) {\n <cds-list-column>{{ column | translate }}</cds-list-column>\n }\n </cds-list-header>\n\n @for (incident of row.incidents; track incident.id) {\n <cds-list-row>\n <cds-list-column>{{ incident.incidentType }}</cds-list-column>\n <cds-list-column>{{ incident.activityId || '\u2014' }}</cds-list-column>\n <cds-list-column>{{ incident.incidentMessage || '\u2014' }}</cds-list-column>\n <cds-list-column>{{ incident.incidentTimestamp | date: 'medium' }}</cds-list-column>\n </cds-list-row>\n }\n </cds-structured-list>\n }\n\n <h4\n class=\"case-inspection-process-detail__subhead case-inspection-process-detail__subhead--no-margin\"\n >\n {{ 'case.inspection.processes.tasksHeader' | translate }}\n </h4>\n\n @if (row.tasks.length > 0) {\n <cds-structured-list>\n <cds-list-header>\n @for (column of taskColumns; track column) {\n <cds-list-column>{{ column | translate }}</cds-list-column>\n }\n </cds-list-header>\n\n @for (task of row.tasks; track task.id) {\n <cds-list-row>\n <cds-list-column>{{ task.name }}</cds-list-column>\n <cds-list-column>{{ task.assignee || '\u2014' }}</cds-list-column>\n <cds-list-column>{{ task.created | date: 'medium' }}</cds-list-column>\n </cds-list-row>\n }\n </cds-structured-list>\n } @else {\n <p class=\"case-inspection-process-detail__empty\">\n {{ 'case.inspection.processes.noTasks' | translate }}\n </p>\n }\n\n <div class=\"case-inspection-process-detail__subhead-row\">\n <h4 class=\"case-inspection-process-detail__subhead\">\n {{ 'case.inspection.processes.variablesHeader' | translate }}\n </h4>\n <button\n *ngIf=\"$canMutate()\"\n cdsButton=\"ghost\"\n size=\"sm\"\n type=\"button\"\n (click)=\"onAddVariable()\"\n >\n {{ 'case.inspection.processes.variableActions.add' | translate }}\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n </div>\n\n @if (row.variables.length > 0) {\n <cds-structured-list>\n <cds-list-header>\n @for (column of variableColumns; track column) {\n <cds-list-column>{{ column | translate }}</cds-list-column>\n }\n @if ($canMutate()) {\n <cds-list-column></cds-list-column>\n }\n </cds-list-header>\n\n @for (variable of row.variables; track variable.name) {\n <cds-list-row>\n <cds-list-column>\n <code>{{ variable.name }}</code>\n </cds-list-column>\n <cds-list-column>{{ variable.type }}</cds-list-column>\n <cds-list-column>\n <code class=\"case-inspection-process-detail__variable-value\">{{\n formatVariableValue(variable)\n }}</code>\n </cds-list-column>\n @if ($canMutate()) {\n <cds-list-column>\n <div class=\"case-inspection-process-detail__variable-actions\">\n <button\n cdsButton=\"ghost\"\n size=\"sm\"\n type=\"button\"\n [iconOnly]=\"true\"\n [title]=\"'case.inspection.processes.variableActions.edit' | translate\"\n (click)=\"onEditVariable(variable)\"\n >\n <svg cdsIcon=\"edit\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n\n <button\n cdsButton=\"danger--ghost\"\n size=\"sm\"\n type=\"button\"\n [iconOnly]=\"true\"\n [title]=\"'case.inspection.processes.variableActions.delete' | translate\"\n (click)=\"onRequestDelete(variable)\"\n >\n <svg cdsIcon=\"trash-can\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n </div>\n </cds-list-column>\n }\n </cds-list-row>\n }\n </cds-structured-list>\n } @else {\n <p class=\"case-inspection-process-detail__empty\">\n {{ 'case.inspection.processes.noVariables' | translate }}\n </p>\n }\n\n <h4 class=\"case-inspection-process-detail__subhead\">\n {{ 'case.inspection.processes.jobsHeader' | translate }}\n </h4>\n\n @if (row.jobs.length > 0) {\n <cds-structured-list>\n <cds-list-header>\n @for (column of jobColumns; track column) {\n <cds-list-column>{{ column | translate }}</cds-list-column>\n }\n </cds-list-header>\n\n @for (job of row.jobs; track job.id) {\n <cds-list-row>\n <cds-list-column>\n {{ 'case.inspection.processes.jobTypeLabel.' + job.jobType | translate }}\n </cds-list-column>\n <cds-list-column>\n @if (job.activityId) {\n <code>{{ job.activityId }}</code>\n } @else {\n \u2014\n }\n </cds-list-column>\n <cds-list-column>{{ job.retries }}</cds-list-column>\n <cds-list-column>{{ job.dueDate | date: 'medium' }}</cds-list-column>\n <cds-list-column>{{ job.exceptionMessage || '\u2014' }}</cds-list-column>\n </cds-list-row>\n }\n </cds-structured-list>\n } @else {\n <p class=\"case-inspection-process-detail__empty\">\n {{ 'case.inspection.processes.noJobs' | translate }}\n </p>\n }\n </div>\n </cds-tab>\n\n <cds-tab\n [active]=\"$activeTab() === ProcessDetailTab.DIAGRAM\"\n [heading]=\"'case.inspection.processes.diagramTab' | translate\"\n (selected)=\"onSelectTab(ProcessDetailTab.DIAGRAM)\"\n >\n <div class=\"case-inspection-process-detail__pane case-inspection-process-detail__diagram\">\n @if ($activeTab() === ProcessDetailTab.DIAGRAM) {\n <valtimo-process-diagram\n [processInstanceId]=\"row.processInstanceId\"\n ></valtimo-process-diagram>\n }\n </div>\n </cds-tab>\n </cds-tabs>\n</section>\n\n<valtimo-case-inspection-process-variable-modal\n [open]=\"$modalOpen()\"\n [mode]=\"$modalMode()\"\n [initialVariable]=\"$modalInitial()\"\n (modalClosed)=\"onModalClosed($event)\"\n></valtimo-case-inspection-process-variable-modal>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"case.inspection.processes.variableActions.delete\"\n confirmButtonType=\"danger\"\n titleTranslationKey=\"case.inspection.processes.variableActions.deleteConfirmTitle\"\n [content]=\"\n 'case.inspection.processes.variableActions.deleteConfirmContent'\n | translate: {name: (pendingDeleteName$ | async) ?? ''}\n \"\n [showModalSubject$]=\"showConfirmDelete$\"\n (cancelEvent)=\"onCancelDelete()\"\n (confirmEvent)=\"onConfirmDelete()\"\n></valtimo-confirmation-modal>\n", styles: [".case-inspection-process-detail{padding-top:var(--cds-spacing-05);padding-bottom:var(--cds-spacing-05);padding-right:var(--cds-spacing-05)}.case-inspection-process-detail__header{margin-bottom:var(--cds-spacing-05)}.case-inspection-process-detail__header h3{margin:0}.case-inspection-process-detail__header h3 small{font-weight:400;color:var(--cds-text-helper);margin-left:var(--cds-spacing-03);font-size:var(--cds-body-compact-01-font-size)}.case-inspection-process-detail__tags{display:flex;gap:var(--cds-spacing-03);flex-wrap:wrap;margin-top:var(--cds-spacing-03);margin-bottom:var(--cds-spacing-03)}.case-inspection-process-detail__meta code{word-break:break-all}.case-inspection-process-detail__subhead{margin:var(--cds-spacing-06) 0 var(--cds-spacing-03);font-size:var(--cds-body-compact-01-font-size);font-weight:600;color:var(--cds-text-secondary)}.case-inspection-process-detail__subhead--no-margin{margin-top:0}.case-inspection-process-detail__variable-actions{display:flex;flex-shrink:0;gap:8px}.case-inspection-process-detail__empty{color:var(--cds-text-helper)}.case-inspection-process-detail__variable-value{overflow-wrap:anywhere;white-space:pre-wrap;max-height:96px;overflow:hidden;display:-webkit-box;-webkit-line-clamp:4;line-clamp:4;-webkit-box-orient:vertical}.case-inspection-process-detail__pane{padding-top:var(--cds-spacing-05)}.case-inspection-process-detail__diagram{margin-top:16px;height:480px;border:1px solid var(--cds-border-subtle);overflow:hidden}.case-inspection-process-detail__diagram ::ng-deep valtimo-process-diagram,.case-inspection-process-detail__diagram ::ng-deep .process-diagram-container{display:flex;flex-direction:column;height:100%}.case-inspection-process-detail__diagram ::ng-deep .diagram-container{flex:1 1 auto;min-height:0;height:auto!important}.case-inspection-process-detail__diagram ::ng-deep .legenda-holder{flex-shrink:0;padding:var(--cds-spacing-03) var(--cds-spacing-05)}\n/*!\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.DatePipe, name: "date" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i4$1.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: IconModule }, { kind: "directive", type: i4$1.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "ngmodule", type: LinkModule }, { kind: "directive", type: i4$1.Link, selector: "[cdsLink], [ibmLink]", inputs: ["inline", "disabled"] }, { kind: "ngmodule", type: StructuredListModule }, { kind: "component", type: i4$1.StructuredList, selector: "cds-structured-list, ibm-structured-list", inputs: ["selection", "flushed", "condensed", "name", "skeleton"], outputs: ["selected"] }, { kind: "component", type: i4$1.ListRow, selector: "cds-list-row, ibm-list-row", inputs: ["selected", "label", "value"], outputs: ["change"] }, { kind: "component", type: i4$1.ListHeader, selector: "cds-list-header, ibm-list-header", inputs: ["skeleton"] }, { kind: "component", type: i4$1.ListColumn, selector: "cds-list-column, ibm-list-column", inputs: ["skeleton", "nowrap"] }, { kind: "ngmodule", type: TabsModule }, { kind: "component", type: i4$1.Tabs, selector: "cds-tabs, ibm-tabs", inputs: ["position", "cacheActive", "followFocus", "isNavigation", "ariaLabel", "ariaLabelledby", "type", "theme", "skeleton"] }, { kind: "component", type: i4$1.Tab, selector: "cds-tab, ibm-tab", inputs: ["heading", "title", "context", "active", "disabled", "tabIndex", "id", "cacheActive", "tabContent", "templateContext"], outputs: ["selected"] }, { kind: "ngmodule", type: TagModule }, { kind: "component", type: i4$1.Tag, selector: "cds-tag, ibm-tag", inputs: ["type", "size", "class", "skeleton"] }, { kind: "component", type: ProcessDiagramComponent, selector: "valtimo-process-diagram", inputs: ["processDefinitionKey", "processInstanceId"], outputs: ["importDone"] }, { kind: "component", type: CaseInspectionProcessVariableModalComponent, selector: "valtimo-case-inspection-process-variable-modal", inputs: ["open", "mode", "initialVariable"], outputs: ["modalClosed"] }, { kind: "ngmodule", type: ConfirmationModalModule }, { kind: "component", type: i2$1.ConfirmationModalComponent, selector: "valtimo-confirmation-modal", inputs: ["titleTranslationKey", "title", "content", "contentTranslationKey", "confirmButtonText", "confirmButtonTextTranslationKey", "confirmButtonType", "showOptionalButton", "optionalButtonText", "optionalButtonTextTranslationKey", "optionalButtonType", "cancelButtonText", "cancelButtonTextTranslationKey", "cancelButtonType", "showModalSubject$", "outputOnConfirm", "outputOnOptional", "spacerAfterCancelButton"], outputs: ["confirmEvent", "optionalEvent", "cancelEvent"] }, { kind: "ngmodule", type: LayerModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
7424
|
+
}
|
|
7425
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseInspectionProcessDetailComponent, decorators: [{
|
|
7426
|
+
type: Component,
|
|
7427
|
+
args: [{ standalone: true, selector: 'valtimo-case-inspection-process-detail', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
7428
|
+
CommonModule,
|
|
7429
|
+
TranslateModule,
|
|
7430
|
+
ButtonModule,
|
|
7431
|
+
IconModule,
|
|
7432
|
+
LinkModule,
|
|
7433
|
+
StructuredListModule,
|
|
7434
|
+
TabsModule,
|
|
7435
|
+
TagModule,
|
|
7436
|
+
ProcessDiagramComponent,
|
|
7437
|
+
CaseInspectionProcessVariableModalComponent,
|
|
7438
|
+
ConfirmationModalModule,
|
|
7439
|
+
LayerModule,
|
|
7440
|
+
], template: "<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<section class=\"case-inspection-process-detail\">\n <header class=\"case-inspection-process-detail__header\">\n <h3>\n {{ row.processName || row.processDefinitionKey }}\n <small>{{ 'case.inspection.processes.version' | translate }} {{ row.version }}</small>\n </h3>\n\n <div class=\"case-inspection-process-detail__tags\">\n <cds-tag\n size=\"sm\"\n [type]=\"row.active ? 'blue' : 'cool-gray'\"\n [title]=\"\n row.active\n ? ('case.inspection.processes.active' | translate)\n : ('case.inspection.processes.completed' | translate)\n \"\n >\n {{\n row.active\n ? ('case.inspection.processes.active' | translate)\n : ('case.inspection.processes.completed' | translate)\n }}\n </cds-tag>\n\n @if (row.buildingBlock; as bb) {\n <cds-tag\n size=\"sm\"\n type=\"green\"\n [title]=\"'case.inspection.processes.buildingBlockTagTooltip' | translate\"\n >\n {{ 'case.inspection.processes.buildingBlockTag' | translate }}: {{ bb.definitionKey }}\n {{ bb.definitionVersionTag }}\n </cds-tag>\n }\n\n <button cdsButton=\"ghost\" size=\"sm\" type=\"button\" (click)=\"onViewProcessLogs()\">\n {{ 'case.inspection.processes.viewLogs' | translate }}\n </button>\n </div>\n\n <cds-structured-list class=\"case-inspection-process-detail__meta\" [condensed]=\"true\">\n <cds-list-row>\n <cds-list-column>{{ 'case.inspection.processes.instanceId' | translate }}</cds-list-column>\n <cds-list-column\n ><code>{{ row.processInstanceId }}</code></cds-list-column\n >\n </cds-list-row>\n\n <cds-list-row>\n <cds-list-column>{{ 'case.inspection.processes.startedBy' | translate }}</cds-list-column>\n <cds-list-column>{{ row.startedBy || row.startedByUserId || '\u2014' }}</cds-list-column>\n </cds-list-row>\n\n <cds-list-row>\n <cds-list-column>{{ 'case.inspection.processes.startedOn' | translate }}</cds-list-column>\n <cds-list-column>{{ row.startedOn | date: 'medium' }}</cds-list-column>\n </cds-list-row>\n\n <cds-list-row *ngIf=\"row.buildingBlock as bb\">\n <cds-list-column>{{\n 'case.inspection.processes.buildingBlock' | translate\n }}</cds-list-column>\n <cds-list-column>\n <a\n cdsLink\n href=\"javascript:void(0)\"\n (click)=\"onViewBuildingBlock(bb); $event.preventDefault()\"\n >\n {{ bb.definitionKey }} {{ bb.definitionVersionTag }}\n <span aria-hidden=\"true\">\u2192</span>\n </a>\n </cds-list-column>\n </cds-list-row>\n </cds-structured-list>\n </header>\n\n <cds-tabs type=\"inline\">\n <cds-tab\n [active]=\"$activeTab() === ProcessDetailTab.DETAILS\"\n [heading]=\"'case.inspection.processes.detailsTab' | translate\"\n (selected)=\"onSelectTab(ProcessDetailTab.DETAILS)\"\n >\n <div class=\"case-inspection-process-detail__pane\">\n @if (row.incidents.length > 0) {\n <h4 class=\"case-inspection-process-detail__subhead\">\n {{ 'case.inspection.processes.incidentsHeader' | translate }}\n </h4>\n\n <cds-structured-list>\n <cds-list-header>\n @for (column of incidentColumns; track column) {\n <cds-list-column>{{ column | translate }}</cds-list-column>\n }\n </cds-list-header>\n\n @for (incident of row.incidents; track incident.id) {\n <cds-list-row>\n <cds-list-column>{{ incident.incidentType }}</cds-list-column>\n <cds-list-column>{{ incident.activityId || '\u2014' }}</cds-list-column>\n <cds-list-column>{{ incident.incidentMessage || '\u2014' }}</cds-list-column>\n <cds-list-column>{{ incident.incidentTimestamp | date: 'medium' }}</cds-list-column>\n </cds-list-row>\n }\n </cds-structured-list>\n }\n\n <h4\n class=\"case-inspection-process-detail__subhead case-inspection-process-detail__subhead--no-margin\"\n >\n {{ 'case.inspection.processes.tasksHeader' | translate }}\n </h4>\n\n @if (row.tasks.length > 0) {\n <cds-structured-list>\n <cds-list-header>\n @for (column of taskColumns; track column) {\n <cds-list-column>{{ column | translate }}</cds-list-column>\n }\n </cds-list-header>\n\n @for (task of row.tasks; track task.id) {\n <cds-list-row>\n <cds-list-column>{{ task.name }}</cds-list-column>\n <cds-list-column>{{ task.assignee || '\u2014' }}</cds-list-column>\n <cds-list-column>{{ task.created | date: 'medium' }}</cds-list-column>\n </cds-list-row>\n }\n </cds-structured-list>\n } @else {\n <p class=\"case-inspection-process-detail__empty\">\n {{ 'case.inspection.processes.noTasks' | translate }}\n </p>\n }\n\n <div class=\"case-inspection-process-detail__subhead-row\">\n <h4 class=\"case-inspection-process-detail__subhead\">\n {{ 'case.inspection.processes.variablesHeader' | translate }}\n </h4>\n <button\n *ngIf=\"$canMutate()\"\n cdsButton=\"ghost\"\n size=\"sm\"\n type=\"button\"\n (click)=\"onAddVariable()\"\n >\n {{ 'case.inspection.processes.variableActions.add' | translate }}\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n </div>\n\n @if (row.variables.length > 0) {\n <cds-structured-list>\n <cds-list-header>\n @for (column of variableColumns; track column) {\n <cds-list-column>{{ column | translate }}</cds-list-column>\n }\n @if ($canMutate()) {\n <cds-list-column></cds-list-column>\n }\n </cds-list-header>\n\n @for (variable of row.variables; track variable.name) {\n <cds-list-row>\n <cds-list-column>\n <code>{{ variable.name }}</code>\n </cds-list-column>\n <cds-list-column>{{ variable.type }}</cds-list-column>\n <cds-list-column>\n <code class=\"case-inspection-process-detail__variable-value\">{{\n formatVariableValue(variable)\n }}</code>\n </cds-list-column>\n @if ($canMutate()) {\n <cds-list-column>\n <div class=\"case-inspection-process-detail__variable-actions\">\n <button\n cdsButton=\"ghost\"\n size=\"sm\"\n type=\"button\"\n [iconOnly]=\"true\"\n [title]=\"'case.inspection.processes.variableActions.edit' | translate\"\n (click)=\"onEditVariable(variable)\"\n >\n <svg cdsIcon=\"edit\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n\n <button\n cdsButton=\"danger--ghost\"\n size=\"sm\"\n type=\"button\"\n [iconOnly]=\"true\"\n [title]=\"'case.inspection.processes.variableActions.delete' | translate\"\n (click)=\"onRequestDelete(variable)\"\n >\n <svg cdsIcon=\"trash-can\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n </div>\n </cds-list-column>\n }\n </cds-list-row>\n }\n </cds-structured-list>\n } @else {\n <p class=\"case-inspection-process-detail__empty\">\n {{ 'case.inspection.processes.noVariables' | translate }}\n </p>\n }\n\n <h4 class=\"case-inspection-process-detail__subhead\">\n {{ 'case.inspection.processes.jobsHeader' | translate }}\n </h4>\n\n @if (row.jobs.length > 0) {\n <cds-structured-list>\n <cds-list-header>\n @for (column of jobColumns; track column) {\n <cds-list-column>{{ column | translate }}</cds-list-column>\n }\n </cds-list-header>\n\n @for (job of row.jobs; track job.id) {\n <cds-list-row>\n <cds-list-column>\n {{ 'case.inspection.processes.jobTypeLabel.' + job.jobType | translate }}\n </cds-list-column>\n <cds-list-column>\n @if (job.activityId) {\n <code>{{ job.activityId }}</code>\n } @else {\n \u2014\n }\n </cds-list-column>\n <cds-list-column>{{ job.retries }}</cds-list-column>\n <cds-list-column>{{ job.dueDate | date: 'medium' }}</cds-list-column>\n <cds-list-column>{{ job.exceptionMessage || '\u2014' }}</cds-list-column>\n </cds-list-row>\n }\n </cds-structured-list>\n } @else {\n <p class=\"case-inspection-process-detail__empty\">\n {{ 'case.inspection.processes.noJobs' | translate }}\n </p>\n }\n </div>\n </cds-tab>\n\n <cds-tab\n [active]=\"$activeTab() === ProcessDetailTab.DIAGRAM\"\n [heading]=\"'case.inspection.processes.diagramTab' | translate\"\n (selected)=\"onSelectTab(ProcessDetailTab.DIAGRAM)\"\n >\n <div class=\"case-inspection-process-detail__pane case-inspection-process-detail__diagram\">\n @if ($activeTab() === ProcessDetailTab.DIAGRAM) {\n <valtimo-process-diagram\n [processInstanceId]=\"row.processInstanceId\"\n ></valtimo-process-diagram>\n }\n </div>\n </cds-tab>\n </cds-tabs>\n</section>\n\n<valtimo-case-inspection-process-variable-modal\n [open]=\"$modalOpen()\"\n [mode]=\"$modalMode()\"\n [initialVariable]=\"$modalInitial()\"\n (modalClosed)=\"onModalClosed($event)\"\n></valtimo-case-inspection-process-variable-modal>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"case.inspection.processes.variableActions.delete\"\n confirmButtonType=\"danger\"\n titleTranslationKey=\"case.inspection.processes.variableActions.deleteConfirmTitle\"\n [content]=\"\n 'case.inspection.processes.variableActions.deleteConfirmContent'\n | translate: {name: (pendingDeleteName$ | async) ?? ''}\n \"\n [showModalSubject$]=\"showConfirmDelete$\"\n (cancelEvent)=\"onCancelDelete()\"\n (confirmEvent)=\"onConfirmDelete()\"\n></valtimo-confirmation-modal>\n", styles: [".case-inspection-process-detail{padding-top:var(--cds-spacing-05);padding-bottom:var(--cds-spacing-05);padding-right:var(--cds-spacing-05)}.case-inspection-process-detail__header{margin-bottom:var(--cds-spacing-05)}.case-inspection-process-detail__header h3{margin:0}.case-inspection-process-detail__header h3 small{font-weight:400;color:var(--cds-text-helper);margin-left:var(--cds-spacing-03);font-size:var(--cds-body-compact-01-font-size)}.case-inspection-process-detail__tags{display:flex;gap:var(--cds-spacing-03);flex-wrap:wrap;margin-top:var(--cds-spacing-03);margin-bottom:var(--cds-spacing-03)}.case-inspection-process-detail__meta code{word-break:break-all}.case-inspection-process-detail__subhead{margin:var(--cds-spacing-06) 0 var(--cds-spacing-03);font-size:var(--cds-body-compact-01-font-size);font-weight:600;color:var(--cds-text-secondary)}.case-inspection-process-detail__subhead--no-margin{margin-top:0}.case-inspection-process-detail__variable-actions{display:flex;flex-shrink:0;gap:8px}.case-inspection-process-detail__empty{color:var(--cds-text-helper)}.case-inspection-process-detail__variable-value{overflow-wrap:anywhere;white-space:pre-wrap;max-height:96px;overflow:hidden;display:-webkit-box;-webkit-line-clamp:4;line-clamp:4;-webkit-box-orient:vertical}.case-inspection-process-detail__pane{padding-top:var(--cds-spacing-05)}.case-inspection-process-detail__diagram{margin-top:16px;height:480px;border:1px solid var(--cds-border-subtle);overflow:hidden}.case-inspection-process-detail__diagram ::ng-deep valtimo-process-diagram,.case-inspection-process-detail__diagram ::ng-deep .process-diagram-container{display:flex;flex-direction:column;height:100%}.case-inspection-process-detail__diagram ::ng-deep .diagram-container{flex:1 1 auto;min-height:0;height:auto!important}.case-inspection-process-detail__diagram ::ng-deep .legenda-holder{flex-shrink:0;padding:var(--cds-spacing-03) var(--cds-spacing-05)}\n/*!\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
7441
|
+
}], ctorParameters: () => [{ type: CaseInspectionService }, { type: i1.GlobalNotificationService }, { type: i4.TranslateService }, { type: i4$1.IconService }], propDecorators: { row: [{
|
|
7442
|
+
type: Input
|
|
7443
|
+
}], documentId: [{
|
|
7444
|
+
type: Input
|
|
7445
|
+
}], canInspectModify: [{
|
|
7446
|
+
type: Input
|
|
7447
|
+
}], viewBuildingBlockEvent: [{
|
|
7448
|
+
type: Output
|
|
7449
|
+
}], variablesChangedEvent: [{
|
|
7450
|
+
type: Output
|
|
7451
|
+
}], viewProcessLogsEvent: [{
|
|
7452
|
+
type: Output
|
|
7453
|
+
}] } });
|
|
7454
|
+
|
|
7455
|
+
/*
|
|
7456
|
+
* Copyright 2015-2026 Ritense BV, the Netherlands.
|
|
7457
|
+
*
|
|
7458
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
7459
|
+
* you may not use this file except in compliance with the License.
|
|
7460
|
+
* You may obtain a copy of the License at
|
|
7461
|
+
*
|
|
7462
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
7463
|
+
*
|
|
7464
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
7465
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
7466
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
7467
|
+
* See the License for the specific language governing permissions and
|
|
7468
|
+
* limitations under the License.
|
|
7469
|
+
*/
|
|
7470
|
+
class CaseInspectionProcessesTabComponent {
|
|
7471
|
+
constructor(caseInspectionService, permissionService, iconService) {
|
|
7472
|
+
this.caseInspectionService = caseInspectionService;
|
|
7473
|
+
this.permissionService = permissionService;
|
|
7474
|
+
this.iconService = iconService;
|
|
7475
|
+
this.viewBuildingBlockEvent = new EventEmitter();
|
|
7476
|
+
this.viewProcessLogsEvent = new EventEmitter();
|
|
7477
|
+
this.$loading = signal(true);
|
|
7478
|
+
this.$rows = signal([]);
|
|
7479
|
+
this.$errorMessage = signal(null);
|
|
7480
|
+
this.$selected = signal(null);
|
|
7481
|
+
this.$canInspectModify = signal(false);
|
|
7482
|
+
this.iconService.registerAll([WarningAltFilled16, CheckmarkFilled16, CheckmarkOutline16]);
|
|
7483
|
+
}
|
|
7484
|
+
ngOnChanges(changes) {
|
|
7485
|
+
if (changes.documentId && this.documentId) {
|
|
7486
|
+
this.load();
|
|
7487
|
+
this.loadPermission();
|
|
7488
|
+
}
|
|
7489
|
+
}
|
|
7490
|
+
onSelect(row) {
|
|
7491
|
+
this.$selected.set(row);
|
|
7492
|
+
}
|
|
7493
|
+
isSelected(row) {
|
|
7494
|
+
return this.$selected()?.processInstanceId === row.processInstanceId;
|
|
7495
|
+
}
|
|
7496
|
+
reloadSelected() {
|
|
7497
|
+
const selectedId = this.$selected()?.processInstanceId;
|
|
7498
|
+
this.caseInspectionService.getProcessInspection(this.documentId).subscribe({
|
|
7499
|
+
next: rows => {
|
|
7500
|
+
this.$rows.set(rows);
|
|
7501
|
+
const next = rows.find(r => r.processInstanceId === selectedId) ?? rows[0] ?? null;
|
|
7502
|
+
this.$selected.set(next);
|
|
7503
|
+
},
|
|
7504
|
+
error: err => {
|
|
7505
|
+
this.$errorMessage.set(err?.error?.message ?? err?.message ?? 'Failed to reload processes');
|
|
7506
|
+
},
|
|
7507
|
+
});
|
|
7508
|
+
}
|
|
7509
|
+
load() {
|
|
7510
|
+
const requestedDocumentId = this.documentId;
|
|
7511
|
+
this.$loading.set(true);
|
|
7512
|
+
this.$errorMessage.set(null);
|
|
7513
|
+
this.$selected.set(null);
|
|
7514
|
+
this.$rows.set([]);
|
|
7515
|
+
this.caseInspectionService.getProcessInspection(requestedDocumentId).subscribe({
|
|
7516
|
+
next: rows => {
|
|
7517
|
+
if (requestedDocumentId !== this.documentId) {
|
|
7518
|
+
return;
|
|
7519
|
+
}
|
|
7520
|
+
this.$rows.set(rows);
|
|
7521
|
+
if (rows.length > 0) {
|
|
7522
|
+
this.$selected.set(rows[0]);
|
|
7523
|
+
}
|
|
7524
|
+
this.$loading.set(false);
|
|
7525
|
+
},
|
|
7526
|
+
error: err => {
|
|
7527
|
+
if (requestedDocumentId !== this.documentId) {
|
|
7528
|
+
return;
|
|
7529
|
+
}
|
|
7530
|
+
this.$errorMessage.set(err?.error?.message ?? err?.message ?? 'Failed to load processes');
|
|
7531
|
+
this.$loading.set(false);
|
|
7532
|
+
},
|
|
7533
|
+
});
|
|
7534
|
+
}
|
|
7535
|
+
loadPermission() {
|
|
7536
|
+
this.$canInspectModify.set(false);
|
|
7537
|
+
this.permissionService
|
|
7538
|
+
.requestPermission(CAN_INSPECT_MODIFY_CASE_PERMISSION, {
|
|
7539
|
+
resource: CASE_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,
|
|
7540
|
+
identifier: this.documentId,
|
|
7541
|
+
})
|
|
7542
|
+
.subscribe({
|
|
7543
|
+
next: allowed => this.$canInspectModify.set(allowed),
|
|
7544
|
+
error: () => this.$canInspectModify.set(false),
|
|
7545
|
+
});
|
|
7546
|
+
}
|
|
7547
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseInspectionProcessesTabComponent, deps: [{ token: CaseInspectionService }, { token: i2$3.PermissionService }, { token: i4$1.IconService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7548
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: CaseInspectionProcessesTabComponent, isStandalone: true, selector: "valtimo-case-inspection-processes", inputs: { documentId: "documentId" }, outputs: { viewBuildingBlockEvent: "viewBuildingBlockEvent", viewProcessLogsEvent: "viewProcessLogsEvent" }, usesOnChanges: true, ngImport: i0, template: "<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<section class=\"case-inspection-processes-tab\">\n <div *ngIf=\"$loading()\" class=\"loading-container\">\n <cds-loading size=\"sm\"></cds-loading>\n </div>\n\n <ng-container *ngIf=\"$errorMessage() as message\">\n <p class=\"case-inspection-processes-tab__error\">{{ message }}</p>\n </ng-container>\n\n <ng-container *ngIf=\"!$loading() && $rows() as rows\">\n <p *ngIf=\"rows.length === 0\" class=\"case-inspection-processes-tab__empty\">\n {{ 'case.inspection.processes.empty' | translate }}\n </p>\n\n <div *ngIf=\"rows.length > 0\" class=\"case-inspection-processes-tab__layout\">\n <div\n class=\"case-inspection-processes-tab__list\"\n role=\"listbox\"\n [attr.aria-label]=\"'case.inspection.processes.listAriaLabel' | translate\"\n >\n <button\n *ngFor=\"let row of rows\"\n type=\"button\"\n role=\"option\"\n class=\"case-inspection-processes-tab__list-item\"\n [attr.aria-selected]=\"isSelected(row)\"\n [class.case-inspection-processes-tab__list-item--selected]=\"isSelected(row)\"\n (click)=\"onSelect(row)\"\n >\n <span class=\"case-inspection-processes-tab__list-item-title\">\n {{ row.processName || row.processDefinitionKey }}\n\n <cds-tag\n *ngIf=\"row.buildingBlock as bb\"\n size=\"sm\"\n type=\"green\"\n [title]=\"\n ('case.inspection.processes.buildingBlockTagTooltip' | translate) +\n ': ' +\n bb.definitionKey +\n ' ' +\n bb.definitionVersionTag\n \"\n >\n {{ 'case.inspection.processes.buildingBlockTag' | translate }}\n </cds-tag>\n </span>\n <span class=\"case-inspection-processes-tab__list-item-meta\">\n <code>{{ row.processInstanceId }}</code>\n </span>\n\n <span class=\"case-inspection-processes-tab__list-item-indicators\">\n <ng-container *ngIf=\"row.incidents.length > 0; else noIncidents\">\n <span\n class=\"case-inspection-processes-tab__row-incident\"\n [attr.title]=\"'case.inspection.processes.incidentTooltip' | translate\"\n >\n <svg cdsIcon=\"warning--alt--filled\" size=\"16\"></svg>\n {{ row.incidents.length }}\n </span>\n </ng-container>\n\n <ng-template #noIncidents>\n <span\n *ngIf=\"row.active\"\n class=\"case-inspection-processes-tab__row-healthy\"\n [attr.title]=\"'case.inspection.processes.active' | translate\"\n >\n <svg cdsIcon=\"checkmark--filled\" size=\"16\"></svg>\n </span>\n\n <span\n *ngIf=\"!row.active\"\n class=\"case-inspection-processes-tab__row-completed\"\n [attr.title]=\"'case.inspection.processes.completed' | translate\"\n >\n <svg cdsIcon=\"checkmark--outline\" size=\"16\"></svg>\n </span>\n </ng-template>\n </span>\n </button>\n </div>\n\n <article class=\"case-inspection-processes-tab__detail\">\n <valtimo-case-inspection-process-detail\n *ngIf=\"$selected() as selected\"\n [canInspectModify]=\"$canInspectModify()\"\n [documentId]=\"documentId\"\n [row]=\"selected\"\n (variablesChangedEvent)=\"reloadSelected()\"\n (viewBuildingBlockEvent)=\"viewBuildingBlockEvent.emit($event)\"\n (viewProcessLogsEvent)=\"viewProcessLogsEvent.emit($event)\"\n ></valtimo-case-inspection-process-detail>\n </article>\n </div>\n </ng-container>\n</section>\n", styles: [".case-inspection-processes-tab__error{color:var(--cds-text-error)}.case-inspection-processes-tab__empty{color:var(--cds-text-helper)}.case-inspection-processes-tab__layout{display:grid;grid-template-columns:minmax(260px,1fr) 3fr;gap:var(--cds-spacing-06);align-items:stretch}.case-inspection-processes-tab__list{display:flex;flex-direction:column;border-right:1px solid var(--cds-border-subtle)}.case-inspection-processes-tab__list-item{appearance:none;background:transparent;border:0;text-align:left;padding:var(--cds-spacing-04);cursor:pointer;display:grid;grid-template-columns:1fr auto;grid-template-rows:auto auto;gap:var(--cds-spacing-01) var(--cds-spacing-03);color:inherit;font-family:inherit}.case-inspection-processes-tab__list-item:hover{background-color:var(--cds-layer-hover)}.case-inspection-processes-tab__list-item--selected{background-color:var(--cds-layer-selected);font-weight:600}.case-inspection-processes-tab__list-item-title{font-size:var(--cds-body-compact-01-font-size);grid-column:1;grid-row:1;display:inline-flex;align-items:center;gap:var(--cds-spacing-03)}.case-inspection-processes-tab__list-item-meta{font-size:var(--cds-helper-text-01-font-size);color:var(--cds-text-helper);grid-column:1;grid-row:2;font-weight:400}.case-inspection-processes-tab__list-item-meta code{word-break:break-all}.case-inspection-processes-tab__list-item-indicators{grid-column:2;grid-row:1/span 2;display:flex;align-items:center}.case-inspection-processes-tab__row-incident{display:inline-flex;align-items:center;gap:var(--cds-spacing-02);color:var(--cds-text-error);font-weight:600}.case-inspection-processes-tab__row-healthy{display:inline-flex;align-items:center;color:var(--cds-support-success)}.case-inspection-processes-tab__row-completed{display:inline-flex;align-items:center;color:var(--cds-text-helper)}.case-inspection-processes-tab__detail{min-width:0}\n/*!\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: IconModule }, { kind: "directive", type: i4$1.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "ngmodule", type: TagModule }, { kind: "component", type: i4$1.Tag, selector: "cds-tag, ibm-tag", inputs: ["type", "size", "class", "skeleton"] }, { kind: "component", type: CaseInspectionProcessDetailComponent, selector: "valtimo-case-inspection-process-detail", inputs: ["row", "documentId", "canInspectModify"], outputs: ["viewBuildingBlockEvent", "variablesChangedEvent", "viewProcessLogsEvent"] }, { kind: "ngmodule", type: LoadingModule }, { kind: "component", type: i4$1.Loading, selector: "cds-loading, ibm-loading", inputs: ["title", "isActive", "size", "overlay"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
7549
|
+
}
|
|
7550
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseInspectionProcessesTabComponent, decorators: [{
|
|
7551
|
+
type: Component,
|
|
7552
|
+
args: [{ standalone: true, selector: 'valtimo-case-inspection-processes', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
7553
|
+
CommonModule,
|
|
7554
|
+
TranslateModule,
|
|
7555
|
+
IconModule,
|
|
7556
|
+
TagModule,
|
|
7557
|
+
CaseInspectionProcessDetailComponent,
|
|
7558
|
+
LoadingModule,
|
|
7559
|
+
], template: "<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<section class=\"case-inspection-processes-tab\">\n <div *ngIf=\"$loading()\" class=\"loading-container\">\n <cds-loading size=\"sm\"></cds-loading>\n </div>\n\n <ng-container *ngIf=\"$errorMessage() as message\">\n <p class=\"case-inspection-processes-tab__error\">{{ message }}</p>\n </ng-container>\n\n <ng-container *ngIf=\"!$loading() && $rows() as rows\">\n <p *ngIf=\"rows.length === 0\" class=\"case-inspection-processes-tab__empty\">\n {{ 'case.inspection.processes.empty' | translate }}\n </p>\n\n <div *ngIf=\"rows.length > 0\" class=\"case-inspection-processes-tab__layout\">\n <div\n class=\"case-inspection-processes-tab__list\"\n role=\"listbox\"\n [attr.aria-label]=\"'case.inspection.processes.listAriaLabel' | translate\"\n >\n <button\n *ngFor=\"let row of rows\"\n type=\"button\"\n role=\"option\"\n class=\"case-inspection-processes-tab__list-item\"\n [attr.aria-selected]=\"isSelected(row)\"\n [class.case-inspection-processes-tab__list-item--selected]=\"isSelected(row)\"\n (click)=\"onSelect(row)\"\n >\n <span class=\"case-inspection-processes-tab__list-item-title\">\n {{ row.processName || row.processDefinitionKey }}\n\n <cds-tag\n *ngIf=\"row.buildingBlock as bb\"\n size=\"sm\"\n type=\"green\"\n [title]=\"\n ('case.inspection.processes.buildingBlockTagTooltip' | translate) +\n ': ' +\n bb.definitionKey +\n ' ' +\n bb.definitionVersionTag\n \"\n >\n {{ 'case.inspection.processes.buildingBlockTag' | translate }}\n </cds-tag>\n </span>\n <span class=\"case-inspection-processes-tab__list-item-meta\">\n <code>{{ row.processInstanceId }}</code>\n </span>\n\n <span class=\"case-inspection-processes-tab__list-item-indicators\">\n <ng-container *ngIf=\"row.incidents.length > 0; else noIncidents\">\n <span\n class=\"case-inspection-processes-tab__row-incident\"\n [attr.title]=\"'case.inspection.processes.incidentTooltip' | translate\"\n >\n <svg cdsIcon=\"warning--alt--filled\" size=\"16\"></svg>\n {{ row.incidents.length }}\n </span>\n </ng-container>\n\n <ng-template #noIncidents>\n <span\n *ngIf=\"row.active\"\n class=\"case-inspection-processes-tab__row-healthy\"\n [attr.title]=\"'case.inspection.processes.active' | translate\"\n >\n <svg cdsIcon=\"checkmark--filled\" size=\"16\"></svg>\n </span>\n\n <span\n *ngIf=\"!row.active\"\n class=\"case-inspection-processes-tab__row-completed\"\n [attr.title]=\"'case.inspection.processes.completed' | translate\"\n >\n <svg cdsIcon=\"checkmark--outline\" size=\"16\"></svg>\n </span>\n </ng-template>\n </span>\n </button>\n </div>\n\n <article class=\"case-inspection-processes-tab__detail\">\n <valtimo-case-inspection-process-detail\n *ngIf=\"$selected() as selected\"\n [canInspectModify]=\"$canInspectModify()\"\n [documentId]=\"documentId\"\n [row]=\"selected\"\n (variablesChangedEvent)=\"reloadSelected()\"\n (viewBuildingBlockEvent)=\"viewBuildingBlockEvent.emit($event)\"\n (viewProcessLogsEvent)=\"viewProcessLogsEvent.emit($event)\"\n ></valtimo-case-inspection-process-detail>\n </article>\n </div>\n </ng-container>\n</section>\n", styles: [".case-inspection-processes-tab__error{color:var(--cds-text-error)}.case-inspection-processes-tab__empty{color:var(--cds-text-helper)}.case-inspection-processes-tab__layout{display:grid;grid-template-columns:minmax(260px,1fr) 3fr;gap:var(--cds-spacing-06);align-items:stretch}.case-inspection-processes-tab__list{display:flex;flex-direction:column;border-right:1px solid var(--cds-border-subtle)}.case-inspection-processes-tab__list-item{appearance:none;background:transparent;border:0;text-align:left;padding:var(--cds-spacing-04);cursor:pointer;display:grid;grid-template-columns:1fr auto;grid-template-rows:auto auto;gap:var(--cds-spacing-01) var(--cds-spacing-03);color:inherit;font-family:inherit}.case-inspection-processes-tab__list-item:hover{background-color:var(--cds-layer-hover)}.case-inspection-processes-tab__list-item--selected{background-color:var(--cds-layer-selected);font-weight:600}.case-inspection-processes-tab__list-item-title{font-size:var(--cds-body-compact-01-font-size);grid-column:1;grid-row:1;display:inline-flex;align-items:center;gap:var(--cds-spacing-03)}.case-inspection-processes-tab__list-item-meta{font-size:var(--cds-helper-text-01-font-size);color:var(--cds-text-helper);grid-column:1;grid-row:2;font-weight:400}.case-inspection-processes-tab__list-item-meta code{word-break:break-all}.case-inspection-processes-tab__list-item-indicators{grid-column:2;grid-row:1/span 2;display:flex;align-items:center}.case-inspection-processes-tab__row-incident{display:inline-flex;align-items:center;gap:var(--cds-spacing-02);color:var(--cds-text-error);font-weight:600}.case-inspection-processes-tab__row-healthy{display:inline-flex;align-items:center;color:var(--cds-support-success)}.case-inspection-processes-tab__row-completed{display:inline-flex;align-items:center;color:var(--cds-text-helper)}.case-inspection-processes-tab__detail{min-width:0}\n/*!\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
7560
|
+
}], ctorParameters: () => [{ type: CaseInspectionService }, { type: i2$3.PermissionService }, { type: i4$1.IconService }], propDecorators: { documentId: [{
|
|
7561
|
+
type: Input
|
|
7562
|
+
}], viewBuildingBlockEvent: [{
|
|
7563
|
+
type: Output
|
|
7564
|
+
}], viewProcessLogsEvent: [{
|
|
7565
|
+
type: Output
|
|
7566
|
+
}] } });
|
|
7567
|
+
|
|
7568
|
+
/*
|
|
7569
|
+
* Copyright 2015-2026 Ritense BV, the Netherlands.
|
|
7570
|
+
*
|
|
7571
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
7572
|
+
* you may not use this file except in compliance with the License.
|
|
7573
|
+
* You may obtain a copy of the License at
|
|
7574
|
+
*
|
|
7575
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
7576
|
+
*
|
|
7577
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
7578
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
7579
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
7580
|
+
* See the License for the specific language governing permissions and
|
|
7581
|
+
* limitations under the License.
|
|
7582
|
+
*/
|
|
7583
|
+
class CaseInspectionComponent {
|
|
7584
|
+
get _validTabs() {
|
|
7585
|
+
return this.zgwTabComponent
|
|
7586
|
+
? Object.values(CaseInspectionTab)
|
|
7587
|
+
: Object.values(CaseInspectionTab).filter(tab => tab !== CaseInspectionTab.ZGW);
|
|
7588
|
+
}
|
|
7589
|
+
constructor(route, router, permissionService, pageTitleService, translateService, breadcrumbService, documentService, zgwTabComponent) {
|
|
7590
|
+
this.route = route;
|
|
7591
|
+
this.router = router;
|
|
7592
|
+
this.permissionService = permissionService;
|
|
7593
|
+
this.pageTitleService = pageTitleService;
|
|
7594
|
+
this.translateService = translateService;
|
|
7595
|
+
this.breadcrumbService = breadcrumbService;
|
|
7596
|
+
this.documentService = documentService;
|
|
7597
|
+
this.zgwTabComponent = zgwTabComponent;
|
|
7598
|
+
this.$documentId = signal('');
|
|
7599
|
+
this.$caseDefinitionKey = signal('');
|
|
7600
|
+
this.$activeTab = signal(CaseInspectionTab.DOCUMENT);
|
|
7601
|
+
this.$loading = signal(true);
|
|
7602
|
+
this.$accessDenied = signal(false);
|
|
7603
|
+
this.$pendingBuildingBlockInstanceId = signal(null);
|
|
7604
|
+
this.$pendingProcessInstanceLogFilter = signal(null);
|
|
7605
|
+
this.CaseInspectionTab = CaseInspectionTab;
|
|
7606
|
+
this._subscriptions = new Subscription();
|
|
7607
|
+
}
|
|
7608
|
+
ngOnInit() {
|
|
7609
|
+
this.pageTitleService.disableReset();
|
|
7610
|
+
this._subscriptions.add(this.translateService
|
|
7611
|
+
.stream('case.inspection.pageTitle')
|
|
7612
|
+
.subscribe(title => this.pageTitleService.setCustomPageTitle(title, true)));
|
|
7613
|
+
this.restoreTabFromQueryParam();
|
|
7614
|
+
this._subscriptions.add(this.route.paramMap.pipe(take(1)).subscribe((params) => {
|
|
7615
|
+
const documentId = params.get('documentId') ?? '';
|
|
7616
|
+
const caseDefinitionKey = params.get('caseDefinitionKey') ?? '';
|
|
7617
|
+
this.$documentId.set(documentId);
|
|
7618
|
+
this.$caseDefinitionKey.set(caseDefinitionKey);
|
|
7619
|
+
this.permissionService
|
|
7620
|
+
.requestPermission(CAN_INSPECT_CASE_PERMISSION, {
|
|
7621
|
+
resource: CASE_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,
|
|
7622
|
+
identifier: documentId,
|
|
7623
|
+
})
|
|
7624
|
+
.pipe(take(1))
|
|
7625
|
+
.subscribe({
|
|
7626
|
+
next: allowed => {
|
|
7627
|
+
if (!allowed) {
|
|
7628
|
+
this.$accessDenied.set(true);
|
|
7629
|
+
this.$loading.set(false);
|
|
7630
|
+
this.router.navigate(['/cases']);
|
|
7631
|
+
return;
|
|
7632
|
+
}
|
|
7633
|
+
this.$loading.set(false);
|
|
7634
|
+
this.loadBreadcrumbs(caseDefinitionKey);
|
|
7635
|
+
},
|
|
7636
|
+
error: () => {
|
|
7637
|
+
this.$accessDenied.set(true);
|
|
7638
|
+
this.$loading.set(false);
|
|
7639
|
+
this.router.navigate(['/cases']);
|
|
7640
|
+
},
|
|
7641
|
+
});
|
|
7642
|
+
}));
|
|
7643
|
+
}
|
|
7644
|
+
ngOnDestroy() {
|
|
7645
|
+
this.pageTitleService.enableReset();
|
|
7646
|
+
this.breadcrumbService.clearSecondBreadcrumb();
|
|
7647
|
+
this.breadcrumbService.clearThirdBreadcrumb();
|
|
7648
|
+
this._subscriptions.unsubscribe();
|
|
7649
|
+
}
|
|
7650
|
+
onTabSelected(tab) {
|
|
7651
|
+
this.$activeTab.set(tab);
|
|
7652
|
+
this.router.navigate([], {
|
|
7653
|
+
relativeTo: this.route,
|
|
7654
|
+
queryParams: { tab },
|
|
7655
|
+
queryParamsHandling: 'merge',
|
|
7656
|
+
replaceUrl: true,
|
|
7657
|
+
});
|
|
7658
|
+
}
|
|
7659
|
+
onViewBuildingBlock(bb) {
|
|
7660
|
+
this.$pendingBuildingBlockInstanceId.set(bb.instanceId);
|
|
7661
|
+
this.onTabSelected(CaseInspectionTab.BUILDING_BLOCKS);
|
|
7662
|
+
}
|
|
7663
|
+
onViewProcessLogs(processInstanceId) {
|
|
7664
|
+
this.$pendingProcessInstanceLogFilter.set(processInstanceId);
|
|
7665
|
+
this.onTabSelected(CaseInspectionTab.LOGS);
|
|
7666
|
+
}
|
|
7667
|
+
loadBreadcrumbs(caseDefinitionKey) {
|
|
7668
|
+
this.documentService
|
|
7669
|
+
.getDocumentDefinition(caseDefinitionKey)
|
|
7670
|
+
.pipe(take(1), catchError$1(() => of(null)))
|
|
7671
|
+
.subscribe(definition => {
|
|
7672
|
+
const title = definition?.schema?.title ?? caseDefinitionKey;
|
|
7673
|
+
this.initBreadcrumbs(title);
|
|
7674
|
+
});
|
|
7675
|
+
}
|
|
7676
|
+
initBreadcrumbs(caseDefinitionTitle) {
|
|
7677
|
+
const documentId = this.$documentId();
|
|
7678
|
+
const caseDefinitionKey = this.$caseDefinitionKey();
|
|
7679
|
+
this.breadcrumbService.setSecondBreadcrumb({
|
|
7680
|
+
route: [`/cases/${caseDefinitionKey}`],
|
|
7681
|
+
content: caseDefinitionTitle,
|
|
7682
|
+
href: `/cases/${caseDefinitionKey}`,
|
|
7683
|
+
});
|
|
7684
|
+
this.breadcrumbService.setThirdBreadcrumb({
|
|
7685
|
+
route: [`/cases/${caseDefinitionKey}/document/${documentId}`],
|
|
7686
|
+
content: this.translateService.instant('Case details'),
|
|
7687
|
+
href: `/cases/${caseDefinitionKey}/document/${documentId}`,
|
|
7688
|
+
});
|
|
7689
|
+
}
|
|
7690
|
+
restoreTabFromQueryParam() {
|
|
7691
|
+
const requested = this.route.snapshot.queryParamMap.get('tab');
|
|
7692
|
+
if (requested && this._validTabs.includes(requested)) {
|
|
7693
|
+
this.$activeTab.set(requested);
|
|
7694
|
+
}
|
|
7695
|
+
}
|
|
7696
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseInspectionComponent, deps: [{ token: i1$2.ActivatedRoute }, { token: i1$2.Router }, { token: i2$3.PermissionService }, { token: i2$1.PageTitleService }, { token: i4.TranslateService }, { token: i2$1.BreadcrumbService }, { token: i2.DocumentService }, { token: ZGW_CASE_INSPECTION_TAB_TOKEN, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7697
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: CaseInspectionComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<ng-container *ngIf=\"!$loading() && !$accessDenied()\">\n <cds-tabs type=\"inline\" class=\"case-inspection-tabs\">\n <cds-tab\n [active]=\"$activeTab() === CaseInspectionTab.DOCUMENT\"\n [heading]=\"'case.inspection.tabs.document' | translate\"\n (selected)=\"onTabSelected(CaseInspectionTab.DOCUMENT)\"\n >\n <div cdsLayer>\n <valtimo-case-inspection-document\n *ngIf=\"$activeTab() === CaseInspectionTab.DOCUMENT\"\n [documentId]=\"$documentId()\"\n ></valtimo-case-inspection-document>\n </div>\n </cds-tab>\n\n <cds-tab\n [active]=\"$activeTab() === CaseInspectionTab.PROCESSES\"\n [heading]=\"'case.inspection.tabs.processes' | translate\"\n (selected)=\"onTabSelected(CaseInspectionTab.PROCESSES)\"\n >\n <div cdsLayer>\n <valtimo-case-inspection-processes\n *ngIf=\"$activeTab() === CaseInspectionTab.PROCESSES\"\n [documentId]=\"$documentId()\"\n (viewBuildingBlockEvent)=\"onViewBuildingBlock($event)\"\n (viewProcessLogsEvent)=\"onViewProcessLogs($event)\"\n ></valtimo-case-inspection-processes>\n </div>\n </cds-tab>\n\n <cds-tab\n [active]=\"$activeTab() === CaseInspectionTab.BUILDING_BLOCKS\"\n [heading]=\"'case.inspection.tabs.buildingBlocks' | translate\"\n (selected)=\"onTabSelected(CaseInspectionTab.BUILDING_BLOCKS)\"\n >\n <div cdsLayer>\n <valtimo-case-inspection-building-blocks\n *ngIf=\"$activeTab() === CaseInspectionTab.BUILDING_BLOCKS\"\n [documentId]=\"$documentId()\"\n [pendingInstanceId]=\"$pendingBuildingBlockInstanceId()\"\n (viewProcessLogsEvent)=\"onViewProcessLogs($event)\"\n ></valtimo-case-inspection-building-blocks>\n </div>\n </cds-tab>\n\n <cds-tab\n [active]=\"$activeTab() === CaseInspectionTab.LOGS\"\n [heading]=\"'case.inspection.tabs.logs' | translate\"\n (selected)=\"onTabSelected(CaseInspectionTab.LOGS)\"\n >\n <div cdsLayer>\n <valtimo-case-inspection-logs\n *ngIf=\"$activeTab() === CaseInspectionTab.LOGS\"\n [documentId]=\"$documentId()\"\n [pendingProcessInstanceId]=\"$pendingProcessInstanceLogFilter()\"\n ></valtimo-case-inspection-logs>\n </div>\n </cds-tab>\n\n <cds-tab\n *ngIf=\"zgwTabComponent\"\n [active]=\"$activeTab() === CaseInspectionTab.ZGW\"\n [heading]=\"'case.inspection.tabs.zgw' | translate\"\n (selected)=\"onTabSelected(CaseInspectionTab.ZGW)\"\n >\n <div cdsLayer>\n <ng-container\n *ngIf=\"$activeTab() === CaseInspectionTab.ZGW\"\n [ngComponentOutlet]=\"zgwTabComponent\"\n [ngComponentOutletInputs]=\"{documentId: $documentId()}\"\n ></ng-container>\n </div>\n </cds-tab>\n\n <cds-tab\n [active]=\"$activeTab() === CaseInspectionTab.METADATA\"\n [heading]=\"'case.inspection.tabs.metadata' | translate\"\n (selected)=\"onTabSelected(CaseInspectionTab.METADATA)\"\n >\n <div cdsLayer>\n <valtimo-case-inspection-metadata\n *ngIf=\"$activeTab() === CaseInspectionTab.METADATA\"\n [documentId]=\"$documentId()\"\n ></valtimo-case-inspection-metadata>\n </div>\n </cds-tab>\n </cds-tabs>\n</ng-container>\n", styles: [":host ::ng-deep .loading-container{display:flex;justify-content:center;width:100%;padding-bottom:var(--cds-spacing-05);padding-top:var(--cds-spacing-05)}:host ::ng-deep .case-inspection-tabs>cds-tab-headers{margin-bottom:24px}:host ::ng-deep cds-tab .cds--tab-content{background-color:var(--cds-layer);padding:0}:host ::ng-deep cds-tab .cds--tab-content:focus{outline:none}:host ::ng-deep code{font-family:var(--cds-code-01-font-family);font-size:var(--cds-code-01-font-size);color:var(--cds-status-purple);background-color:transparent}.case-inspection-tab-placeholder{padding:var(--cds-spacing-05)}\n/*!\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"], exportAs: ["ngComponentOutlet"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: TabsModule }, { kind: "component", type: i4$1.Tabs, selector: "cds-tabs, ibm-tabs", inputs: ["position", "cacheActive", "followFocus", "isNavigation", "ariaLabel", "ariaLabelledby", "type", "theme", "skeleton"] }, { kind: "component", type: i4$1.Tab, selector: "cds-tab, ibm-tab", inputs: ["heading", "title", "context", "active", "disabled", "tabIndex", "id", "cacheActive", "tabContent", "templateContext"], outputs: ["selected"] }, { kind: "component", type: CaseInspectionDocumentTabComponent, selector: "valtimo-case-inspection-document", inputs: ["documentId"] }, { kind: "component", type: CaseInspectionProcessesTabComponent, selector: "valtimo-case-inspection-processes", inputs: ["documentId"], outputs: ["viewBuildingBlockEvent", "viewProcessLogsEvent"] }, { kind: "component", type: CaseInspectionBuildingBlocksTabComponent, selector: "valtimo-case-inspection-building-blocks", inputs: ["documentId", "pendingInstanceId"], outputs: ["viewProcessLogsEvent"] }, { kind: "component", type: CaseInspectionLogsTabComponent, selector: "valtimo-case-inspection-logs", inputs: ["documentId", "pendingProcessInstanceId"] }, { kind: "component", type: CaseInspectionMetadataTabComponent, selector: "valtimo-case-inspection-metadata", inputs: ["documentId"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
7698
|
+
}
|
|
7699
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseInspectionComponent, decorators: [{
|
|
7700
|
+
type: Component,
|
|
7701
|
+
args: [{ standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
7702
|
+
CommonModule,
|
|
7703
|
+
NgComponentOutlet,
|
|
7704
|
+
TranslateModule,
|
|
7705
|
+
TabsModule,
|
|
7706
|
+
CaseInspectionDocumentTabComponent,
|
|
7707
|
+
CaseInspectionProcessesTabComponent,
|
|
7708
|
+
CaseInspectionBuildingBlocksTabComponent,
|
|
7709
|
+
CaseInspectionLogsTabComponent,
|
|
7710
|
+
CaseInspectionMetadataTabComponent,
|
|
7711
|
+
], template: "<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<ng-container *ngIf=\"!$loading() && !$accessDenied()\">\n <cds-tabs type=\"inline\" class=\"case-inspection-tabs\">\n <cds-tab\n [active]=\"$activeTab() === CaseInspectionTab.DOCUMENT\"\n [heading]=\"'case.inspection.tabs.document' | translate\"\n (selected)=\"onTabSelected(CaseInspectionTab.DOCUMENT)\"\n >\n <div cdsLayer>\n <valtimo-case-inspection-document\n *ngIf=\"$activeTab() === CaseInspectionTab.DOCUMENT\"\n [documentId]=\"$documentId()\"\n ></valtimo-case-inspection-document>\n </div>\n </cds-tab>\n\n <cds-tab\n [active]=\"$activeTab() === CaseInspectionTab.PROCESSES\"\n [heading]=\"'case.inspection.tabs.processes' | translate\"\n (selected)=\"onTabSelected(CaseInspectionTab.PROCESSES)\"\n >\n <div cdsLayer>\n <valtimo-case-inspection-processes\n *ngIf=\"$activeTab() === CaseInspectionTab.PROCESSES\"\n [documentId]=\"$documentId()\"\n (viewBuildingBlockEvent)=\"onViewBuildingBlock($event)\"\n (viewProcessLogsEvent)=\"onViewProcessLogs($event)\"\n ></valtimo-case-inspection-processes>\n </div>\n </cds-tab>\n\n <cds-tab\n [active]=\"$activeTab() === CaseInspectionTab.BUILDING_BLOCKS\"\n [heading]=\"'case.inspection.tabs.buildingBlocks' | translate\"\n (selected)=\"onTabSelected(CaseInspectionTab.BUILDING_BLOCKS)\"\n >\n <div cdsLayer>\n <valtimo-case-inspection-building-blocks\n *ngIf=\"$activeTab() === CaseInspectionTab.BUILDING_BLOCKS\"\n [documentId]=\"$documentId()\"\n [pendingInstanceId]=\"$pendingBuildingBlockInstanceId()\"\n (viewProcessLogsEvent)=\"onViewProcessLogs($event)\"\n ></valtimo-case-inspection-building-blocks>\n </div>\n </cds-tab>\n\n <cds-tab\n [active]=\"$activeTab() === CaseInspectionTab.LOGS\"\n [heading]=\"'case.inspection.tabs.logs' | translate\"\n (selected)=\"onTabSelected(CaseInspectionTab.LOGS)\"\n >\n <div cdsLayer>\n <valtimo-case-inspection-logs\n *ngIf=\"$activeTab() === CaseInspectionTab.LOGS\"\n [documentId]=\"$documentId()\"\n [pendingProcessInstanceId]=\"$pendingProcessInstanceLogFilter()\"\n ></valtimo-case-inspection-logs>\n </div>\n </cds-tab>\n\n <cds-tab\n *ngIf=\"zgwTabComponent\"\n [active]=\"$activeTab() === CaseInspectionTab.ZGW\"\n [heading]=\"'case.inspection.tabs.zgw' | translate\"\n (selected)=\"onTabSelected(CaseInspectionTab.ZGW)\"\n >\n <div cdsLayer>\n <ng-container\n *ngIf=\"$activeTab() === CaseInspectionTab.ZGW\"\n [ngComponentOutlet]=\"zgwTabComponent\"\n [ngComponentOutletInputs]=\"{documentId: $documentId()}\"\n ></ng-container>\n </div>\n </cds-tab>\n\n <cds-tab\n [active]=\"$activeTab() === CaseInspectionTab.METADATA\"\n [heading]=\"'case.inspection.tabs.metadata' | translate\"\n (selected)=\"onTabSelected(CaseInspectionTab.METADATA)\"\n >\n <div cdsLayer>\n <valtimo-case-inspection-metadata\n *ngIf=\"$activeTab() === CaseInspectionTab.METADATA\"\n [documentId]=\"$documentId()\"\n ></valtimo-case-inspection-metadata>\n </div>\n </cds-tab>\n </cds-tabs>\n</ng-container>\n", styles: [":host ::ng-deep .loading-container{display:flex;justify-content:center;width:100%;padding-bottom:var(--cds-spacing-05);padding-top:var(--cds-spacing-05)}:host ::ng-deep .case-inspection-tabs>cds-tab-headers{margin-bottom:24px}:host ::ng-deep cds-tab .cds--tab-content{background-color:var(--cds-layer);padding:0}:host ::ng-deep cds-tab .cds--tab-content:focus{outline:none}:host ::ng-deep code{font-family:var(--cds-code-01-font-family);font-size:var(--cds-code-01-font-size);color:var(--cds-status-purple);background-color:transparent}.case-inspection-tab-placeholder{padding:var(--cds-spacing-05)}\n/*!\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
7712
|
+
}], ctorParameters: () => [{ type: i1$2.ActivatedRoute }, { type: i1$2.Router }, { type: i2$3.PermissionService }, { type: i2$1.PageTitleService }, { type: i4.TranslateService }, { type: i2$1.BreadcrumbService }, { type: i2.DocumentService }, { type: i0.Type, decorators: [{
|
|
7713
|
+
type: Optional
|
|
7714
|
+
}, {
|
|
7715
|
+
type: Inject,
|
|
7716
|
+
args: [ZGW_CASE_INSPECTION_TAB_TOKEN]
|
|
7717
|
+
}] }] });
|
|
7718
|
+
|
|
7719
|
+
/*
|
|
7720
|
+
* Copyright 2015-2026 Ritense BV, the Netherlands.
|
|
7721
|
+
*
|
|
7722
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
7723
|
+
* you may not use this file except in compliance with the License.
|
|
7724
|
+
* You may obtain a copy of the License at
|
|
7725
|
+
*
|
|
7726
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
7727
|
+
*
|
|
7728
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
7729
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
7730
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
7731
|
+
* See the License for the specific language governing permissions and
|
|
7732
|
+
* limitations under the License.
|
|
7733
|
+
*/
|
|
7734
|
+
const ALL_CASES_ID = 'ALL_CASES';
|
|
7735
|
+
class GenericCaseListComponent {
|
|
7736
|
+
constructor(assigneeService, breadcrumbService, bulkAssignService, caseExportService, caseListCaseTagService, listService, pageTitleService, paginationService, parameterService, quickSearchStateService, router, searchService, statusService, caseListQuickSearchService, configService, teamsApiService, documentService, translateService) {
|
|
7737
|
+
this.assigneeService = assigneeService;
|
|
7738
|
+
this.breadcrumbService = breadcrumbService;
|
|
7739
|
+
this.bulkAssignService = bulkAssignService;
|
|
7740
|
+
this.caseExportService = caseExportService;
|
|
7741
|
+
this.caseListCaseTagService = caseListCaseTagService;
|
|
7742
|
+
this.listService = listService;
|
|
7743
|
+
this.pageTitleService = pageTitleService;
|
|
7744
|
+
this.paginationService = paginationService;
|
|
7745
|
+
this.parameterService = parameterService;
|
|
7746
|
+
this.quickSearchStateService = quickSearchStateService;
|
|
7747
|
+
this.router = router;
|
|
7748
|
+
this.searchService = searchService;
|
|
7749
|
+
this.statusService = statusService;
|
|
7750
|
+
this.caseListQuickSearchService = caseListQuickSearchService;
|
|
7751
|
+
this.configService = configService;
|
|
7752
|
+
this.teamsApiService = teamsApiService;
|
|
7753
|
+
this.documentService = documentService;
|
|
7754
|
+
this.translateService = translateService;
|
|
7755
|
+
this.ALL_CASES_ID = ALL_CASES_ID;
|
|
7756
|
+
this.tableTranslations = CASE_LIST_TABLE_TRANSLATIONS;
|
|
7757
|
+
this.loadingExport = false;
|
|
7758
|
+
this.visibleCaseTabs = null;
|
|
7759
|
+
this.orchestration = inject(CaseListOrchestrationService);
|
|
7760
|
+
this.showAssignModal$ = new BehaviorSubject(false);
|
|
7761
|
+
this.showChangePageModal$ = new BehaviorSubject(false);
|
|
7762
|
+
this.disableStartButton$ = new BehaviorSubject(false);
|
|
7763
|
+
this.selectedCaseIds$ = new BehaviorSubject([]);
|
|
7764
|
+
this.paginationChange$ = new BehaviorSubject(null);
|
|
7765
|
+
// --- Case definition dropdown ---
|
|
7766
|
+
this.loadingCaseListItems$ = new BehaviorSubject(true);
|
|
7767
|
+
this._selectedCaseDefinitionId$ = new BehaviorSubject(ALL_CASES_ID);
|
|
7768
|
+
this.selectedCaseDefinitionId$ = this._selectedCaseDefinitionId$.asObservable();
|
|
7769
|
+
this.isAllCases$ = this._selectedCaseDefinitionId$.pipe(map(id => id === ALL_CASES_ID));
|
|
7770
|
+
this.caseListItems$ = combineLatest([
|
|
7771
|
+
this.documentService.getAllDefinitions(),
|
|
7772
|
+
this._selectedCaseDefinitionId$,
|
|
7773
|
+
this.translateService.stream('key'),
|
|
7774
|
+
]).pipe(map(([documentDefinitionRes, selectedId]) => [
|
|
7775
|
+
{
|
|
7776
|
+
content: this.translateService.instant('case.allCases'),
|
|
7777
|
+
id: ALL_CASES_ID,
|
|
7778
|
+
selected: selectedId === ALL_CASES_ID,
|
|
7779
|
+
},
|
|
7780
|
+
...documentDefinitionRes.content.map(documentDefinition => ({
|
|
7781
|
+
id: documentDefinition.id.name,
|
|
7782
|
+
content: documentDefinition?.schema?.title,
|
|
7783
|
+
selected: documentDefinition.id.name === selectedId,
|
|
7784
|
+
})),
|
|
7785
|
+
]), tap(() => this.loadingCaseListItems$.next(false)));
|
|
7786
|
+
// --- "All Cases" data pipeline ---
|
|
7787
|
+
this._allCasesPage$ = new BehaviorSubject(1);
|
|
7788
|
+
this._allCasesSize$ = new BehaviorSubject(10);
|
|
7789
|
+
this._allCasesSort$ = new BehaviorSubject(null);
|
|
7790
|
+
this._allCasesReload$ = new BehaviorSubject(false);
|
|
7791
|
+
this._allCasesAssigneeFilter$ = new BehaviorSubject('ALL');
|
|
7792
|
+
this.allCasesAssigneeFilter$ = this._allCasesAssigneeFilter$.asObservable();
|
|
7793
|
+
this.allCasesFields$ = this.translateService
|
|
7794
|
+
.stream('fieldLabels')
|
|
7795
|
+
.pipe(map(() => this.mapDefaultColumnsToListFields(this.configService.config?.defaultDefinitionTable || [])));
|
|
7796
|
+
this.allCasesLoading$ = new BehaviorSubject(true);
|
|
7797
|
+
this.allCasesData$ = combineLatest([
|
|
7798
|
+
this._allCasesPage$,
|
|
7799
|
+
this._allCasesSize$,
|
|
7800
|
+
this._allCasesSort$,
|
|
7801
|
+
this._allCasesReload$,
|
|
7802
|
+
this._allCasesAssigneeFilter$,
|
|
7803
|
+
]).pipe(tap(() => this.allCasesLoading$.next(true)), switchMap(([page, size, sort, _, assigneeFilter]) => {
|
|
7804
|
+
const request = new DocumentSearchRequestImpl('', page - 1, size, undefined, undefined, undefined, sort, undefined, assigneeFilter !== 'ALL' ? assigneeFilter : undefined);
|
|
7805
|
+
return this.documentService.getDocuments(request).pipe(map((documents) => ({
|
|
7806
|
+
items: documents.content.map(document => {
|
|
7807
|
+
const { content, ...others } = document;
|
|
7808
|
+
return { ...content, ...others };
|
|
7809
|
+
}),
|
|
7810
|
+
pagination: {
|
|
7811
|
+
collectionSize: documents.totalElements,
|
|
7812
|
+
page,
|
|
7813
|
+
size,
|
|
7814
|
+
sort,
|
|
7815
|
+
},
|
|
7816
|
+
})));
|
|
7817
|
+
}), tap(() => this.allCasesLoading$.next(false)), shareReplay(1));
|
|
7818
|
+
this._subscriptions = new Subscription();
|
|
7819
|
+
}
|
|
7820
|
+
ngOnInit() {
|
|
7821
|
+
this.pageTitleService.disableReset();
|
|
7822
|
+
this.pageTitleService.setCustomPageTitle(this.translateService.instant('Cases'), true);
|
|
7823
|
+
this.resolveVisibleCaseTabs();
|
|
7824
|
+
}
|
|
7825
|
+
ngOnDestroy() {
|
|
7826
|
+
this._subscriptions.unsubscribe();
|
|
7827
|
+
this._paginationSubscription?.unsubscribe();
|
|
7828
|
+
this._canHaveAssigneeSubscription?.unsubscribe();
|
|
7829
|
+
this._searchFieldsSubscription?.unsubscribe();
|
|
7830
|
+
this.pageTitleService.enableReset();
|
|
7831
|
+
}
|
|
7832
|
+
// --- Case definition switching ---
|
|
7833
|
+
setCaseDefinition(definition) {
|
|
7834
|
+
const newId = definition.item.id;
|
|
7835
|
+
if (newId === this._selectedCaseDefinitionId$.getValue())
|
|
7836
|
+
return;
|
|
7837
|
+
this._selectedCaseDefinitionId$.next(newId);
|
|
7838
|
+
if (newId !== ALL_CASES_ID) {
|
|
7839
|
+
this.parameterService.clearParameters();
|
|
7840
|
+
this.parameterService.clearSearchFieldValues();
|
|
7841
|
+
this.paginationService.clearPagination();
|
|
7842
|
+
this.assigneeService.resetAssigneeFilter();
|
|
7843
|
+
this.listService.setCaseDefinitionKey(newId);
|
|
7844
|
+
this.orchestration.setLoading();
|
|
7845
|
+
this.subscribeToPagination();
|
|
7846
|
+
this.subscribeToCanHaveAssignee();
|
|
7847
|
+
this.subscribeToSearchFields();
|
|
7848
|
+
}
|
|
7849
|
+
else {
|
|
7850
|
+
this._allCasesPage$.next(1);
|
|
7851
|
+
this._allCasesReload$.next(!this._allCasesReload$.getValue());
|
|
7852
|
+
}
|
|
7853
|
+
}
|
|
7854
|
+
// --- Delegated to existing case list services when a specific definition is selected ---
|
|
7855
|
+
search(searchFieldValues) {
|
|
7856
|
+
this.searchService.search(searchFieldValues);
|
|
7857
|
+
}
|
|
7858
|
+
rowClick(item) {
|
|
7859
|
+
this._selectedCaseDefinitionId$.pipe(take(1)).subscribe(selectedId => {
|
|
7860
|
+
const caseDefinitionKey = selectedId !== ALL_CASES_ID ? selectedId : item.definitionName || item.definitionId?.name;
|
|
7861
|
+
if (caseDefinitionKey) {
|
|
7862
|
+
if (item.ctrlClick) {
|
|
7863
|
+
window.open(`/cases/${caseDefinitionKey}/document/${item.id}`, '_blank');
|
|
7864
|
+
}
|
|
7865
|
+
else {
|
|
7866
|
+
this.router.navigate([`/cases/${caseDefinitionKey}/document/${item.id}`]);
|
|
7867
|
+
}
|
|
7868
|
+
}
|
|
7869
|
+
});
|
|
7870
|
+
}
|
|
7871
|
+
onTabChange(tab) {
|
|
7872
|
+
this.orchestration.setLoadingAssigneeFilter(true);
|
|
7873
|
+
this.orchestration.updateNoResultsMessage(false, tab);
|
|
7874
|
+
this.paginationService.setPage(1);
|
|
7875
|
+
this.assigneeService.setAssigneeFilter(tab);
|
|
7876
|
+
}
|
|
7877
|
+
pageChange(page) {
|
|
7878
|
+
if (this.carbonList?.model.selectedRowsCount()) {
|
|
7879
|
+
this.showChangePageModal$.next(true);
|
|
7880
|
+
this.paginationChange$.next({ page, size: this.pagination.size });
|
|
7881
|
+
return;
|
|
6389
7882
|
}
|
|
6390
7883
|
this.paginationService.pageChange(page);
|
|
6391
7884
|
}
|
|
@@ -6549,7 +8042,7 @@ class GenericCaseListComponent {
|
|
|
6549
8042
|
provide: QUICK_SEARCH_SERVICE,
|
|
6550
8043
|
useClass: CaseListQuickSearchService,
|
|
6551
8044
|
},
|
|
6552
|
-
], viewQueries: [{ propertyName: "carbonList", first: true, predicate: ["specificCaseList"], descendants: true }, { propertyName: "listActionsComponent", first: true, predicate: CaseListActionsComponent, descendants: true }, { propertyName: "tabsComponent", first: true, predicate: CaseListTabsComponent, descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<ng-container *ngIf=\"{isAllCases: isAllCases$ | async} as mode\">\n <!-- All Cases mode -->\n <ng-container *ngIf=\"mode.isAllCases\">\n <valtimo-carbon-list\n [fields]=\"allCasesFields$ | async\"\n [header]=\"false\"\n [items]=\"(allCasesData$ | async)?.items\"\n [loading]=\"allCasesLoading$ | async\"\n [pagination]=\"(allCasesData$ | async)?.pagination\"\n paginationIdentifier=\"genericCaseList\"\n [tableTranslations]=\"tableTranslations\"\n (paginationClicked)=\"allCasesPageChange($event)\"\n (paginationSet)=\"allCasesPageSizeChange($event)\"\n (rowClicked)=\"rowClick($event)\"\n (sortChanged)=\"allCasesSortChanged($event)\"\n >\n <valtimo-no-results\n [description]=\"'case.noResults.ALL.description' | translate\"\n [title]=\"'case.noResults.ALL.title' | translate\"\n ></valtimo-no-results>\n\n <div tabs *ngIf=\"visibleCaseTabs\">\n <valtimo-case-list-tabs\n [assigneeFilter]=\"allCasesAssigneeFilter$ | async\"\n [selectedRowCount]=\"0\"\n [visibleTabs]=\"visibleCaseTabs\"\n (tabChangeEvent)=\"allCasesTabChange($event)\"\n ></valtimo-case-list-tabs>\n </div>\n </valtimo-carbon-list>\n </ng-container>\n\n <!-- Specific case definition mode -->\n <ng-container *ngIf=\"!mode.isAllCases\">\n <ng-container\n *ngIf=\"{\n availableFields: orchestration.availableFields$ | async,\n fields: orchestration.fields$ | async,\n documentItems: orchestration.documentItems$ | async,\n noResultsMessage: orchestration.noResultsMessage$ | async,\n hasApiColumnConfig: orchestration.hasApiColumnConfig$ | async,\n searchFields: orchestration.searchFields$ | async,\n showAssignModal: showAssignModal$ | async,\n selectedCaseIds: selectedCaseIds$ | async,\n statuses: orchestration.statuses$ | async,\n caseTags: orchestration.caseTags$ | async,\n selectedStatusKeys: orchestration.selectedStatusKeys$ | async,\n selectedCaseTagKeys: orchestration.selectedCaseTagKeys$ | async,\n showStatusSelector: orchestration.showStatusSelector$ | async,\n showCaseTagsSelector: orchestration.showCaseTagsSelector$ | async,\n loaded: orchestration.loaded$ | async,\n canCreate: orchestration.canCreateCase$ | async,\n canExport: orchestration.canExportCase$ | async,\n disableExport: orchestration.disableExportButton$ | async,\n disableSaveSearch: orchestration.disableSaveSearch$ | async,\n assigneeFilter: orchestration.assigneeFilter$ | async,\n hiddenColumns: orchestration.hiddenColumns$ | async,\n disableStartButton: disableStartButton$ | async,\n } as obs\"\n >\n <valtimo-case-list-actions\n [loading]=\"!obs.loaded\"\n (formFlowComplete)=\"forceRefresh()\"\n (startButtonDisableEvent)=\"onStartButtonDisableEvent($event)\"\n ></valtimo-case-list-actions>\n\n <ng-container *ngTemplateOutlet=\"searchFields; context: {obs: obs}\"></ng-container>\n\n <valtimo-quick-search\n (quickSearchEvent)=\"onQuickSearchEvent($event)\"\n ></valtimo-quick-search>\n\n <ng-container *ngIf=\"obs.loaded; else specificLoading\">\n <valtimo-carbon-list\n #specificCaseList\n [fields]=\"obs.fields\"\n [header]=\"false\"\n [initialSortState]=\"pagination?.sort\"\n [items]=\"obs.documentItems\"\n [pagination]=\"pagination\"\n paginationIdentifier=\"genericCaseListSpecific\"\n lockedTooltipTranslationKey=\"case.rowLocked\"\n [showSelectionColumn]=\"canHaveAssignee\"\n [tableTranslations]=\"tableTranslations\"\n (paginationClicked)=\"pageChange($event)\"\n (paginationSet)=\"pageSizeChange($event)\"\n (rowClicked)=\"rowClick($event)\"\n (sortChanged)=\"sortChanged($event)\"\n >\n <ng-container carbonToolbarActions>\n <button cdsButton=\"primary\" (click)=\"showAssignModal()\">\n {{ 'case.bulkAssign.assign' | translate }}\n </button>\n </ng-container>\n\n <div carbonToolbarContent>\n <valtimo-case-list-toolbar\n [availableFields]=\"obs.availableFields\"\n [canCreate]=\"obs.canCreate\"\n [canExport]=\"obs.canExport\"\n [disableExport]=\"obs.disableExport\"\n [disableStart]=\"obs.disableStartButton\"\n [hasApiColumnConfig]=\"obs.hasApiColumnConfig\"\n [hiddenColumns]=\"obs.hiddenColumns\"\n [loadingExport]=\"loadingExport\"\n (exportEvent)=\"export()\"\n (startCaseEvent)=\"startCase()\"\n (viewUpdateEvent)=\"onViewUpdateEvent($event)\"\n ></valtimo-case-list-toolbar>\n </div>\n\n <valtimo-no-results\n [action]=\"obs.noResultsMessage?.isSearchResult ? null : caseListActionsNoResult\"\n [description]=\"obs.noResultsMessage?.description | translate\"\n [title]=\"obs.noResultsMessage?.title | translate\"\n ></valtimo-no-results>\n\n <div tabs *ngIf=\"canHaveAssignee\">\n <valtimo-case-list-tabs\n [assigneeFilter]=\"obs.assigneeFilter\"\n [selectedRowCount]=\"carbonList?.model?.selectedRowsCount() ?? 0\"\n [visibleTabs]=\"visibleCaseTabs\"\n (tabChangeEvent)=\"onTabChange($event)\"\n ></valtimo-case-list-tabs>\n </div>\n </valtimo-carbon-list>\n </ng-container>\n\n <ng-template #specificLoading>\n <valtimo-carbon-list [loading]=\"true\">\n <div tabs *ngIf=\"canHaveAssignee\">\n <valtimo-case-list-tabs\n [assigneeFilter]=\"orchestration.assigneeFilter$ | async\"\n [selectedRowCount]=\"0\"\n [visibleTabs]=\"visibleCaseTabs\"\n (tabChangeEvent)=\"onTabChange($event)\"\n ></valtimo-case-list-tabs>\n </div>\n </valtimo-carbon-list>\n </ng-template>\n\n <valtimo-case-bulk-assign-modal\n [documentIds]=\"obs.selectedCaseIds\"\n [open]=\"obs.showAssignModal\"\n (closeEvent)=\"onCloseEvent($event)\"\n ></valtimo-case-bulk-assign-modal>\n\n <valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"case.changePageModal.confirm\"\n contentTranslationKey=\"case.changePageModal.content\"\n [outputOnConfirm]=\"paginationChange$ | async\"\n [showModalSubject$]=\"showChangePageModal$\"\n titleTranslationKey=\"case.changePageModal.title\"\n (confirmEvent)=\"onChangePageConfirm($event)\"\n ></valtimo-confirmation-modal>\n </ng-container>\n </ng-container>\n</ng-container>\n\n<ng-template #searchFields let-obs=\"obs\">\n <valtimo-search-fields\n [disableSaveSearch]=\"obs.disableSaveSearch\"\n [canSaveSearch]=\"true\"\n [searchFields]=\"obs.searchFields\"\n [caseDefinitionKey]=\"orchestration.caseDefinitionKey$ | async\"\n [defaultValues]=\"orchestration.searchFieldValues$ | async\"\n [inputDisabled]=\"!obs.loaded\"\n [externalSearchField]=\"obs.showStatusSelector\"\n (clearEvent)=\"onClearEvent()\"\n (doSearch)=\"search($event)\"\n (saveSearchEvent)=\"onSaveSearchEvent($event)\"\n >\n <valtimo-status-selector\n *ngIf=\"obs.showStatusSelector\"\n [statuses]=\"obs.statuses\"\n [selectedStatusKeys]=\"obs.selectedStatusKeys\"\n [disabled]=\"!obs.loaded\"\n (selectedStatusesChangeEvent)=\"onSelectedStatusesChange($event)\"\n ></valtimo-status-selector>\n\n <valtimo-case-tags-selector\n *ngIf=\"obs.showCaseTagsSelector\"\n [caseTags]=\"obs.caseTags\"\n [selectedCaseTagKeys]=\"obs.selectedCaseTagKeys\"\n [disabled]=\"!obs.loaded\"\n (selectedCaseTagsChangeEvent)=\"onSelectedCaseTagsChange($event)\"\n ></valtimo-case-tags-selector>\n </valtimo-search-fields>\n</ng-template>\n\n<ng-template #caseListActionsNoResult>\n <button\n *ngIf=\"orchestration.canCreateCase$ | async\"\n cdsButton=\"primary\"\n [disabled]=\"disableStartButton$ | async\"\n (click)=\"startCase()\"\n >\n {{ 'Start Case' | translate }}\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n</ng-template>\n\n<ng-container renderInPageHeader [fullWidth]=\"true\">\n <ng-template>\n <cds-dropdown\n class=\"case-definition-selection\"\n *ngIf=\"{\n loadingCaseListItems: loadingCaseListItems$ | async,\n caseListItems: caseListItems$ | async,\n } as dropdownObs\"\n [attr.data-testid]=\"'generic-case-list-dropdown'\"\n [disabled]=\"dropdownObs.loadingCaseListItems || (dropdownObs.caseListItems || []).length === 1\"\n [skeleton]=\"dropdownObs.loadingCaseListItems\"\n (selected)=\"setCaseDefinition($event)\"\n >\n <cds-dropdown-list [items]=\"dropdownObs.caseListItems || []\"></cds-dropdown-list>\n </cds-dropdown>\n </ng-template>\n</ng-container>\n", styles: [":host{display:flex;flex-direction:column;gap:16px}.case-definition-selection{display:flex;width:250px}\n/*!\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2$1.SearchFieldsComponent, selector: "valtimo-search-fields", inputs: ["loading", "searchFields", "caseDefinitionKey", "setValuesSubject$", "clearValuesSubject$", "defaultValues", "disableSaveSearch", "inputDisabled", "externalSearchField", "canSaveSearch"], outputs: ["doSearch", "saveSearchEvent", "clearEvent"] }, { kind: "directive", type: i2$2.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "directive", type: i2$2.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: i2$1.ConfirmationModalComponent, selector: "valtimo-confirmation-modal", inputs: ["titleTranslationKey", "title", "content", "contentTranslationKey", "confirmButtonText", "confirmButtonTextTranslationKey", "confirmButtonType", "showOptionalButton", "optionalButtonText", "optionalButtonTextTranslationKey", "optionalButtonType", "cancelButtonText", "cancelButtonTextTranslationKey", "cancelButtonType", "showModalSubject$", "outputOnConfirm", "outputOnOptional", "spacerAfterCancelButton"], outputs: ["confirmEvent", "optionalEvent", "cancelEvent"] }, { kind: "component", type: i2$2.Dropdown, selector: "cds-dropdown, ibm-dropdown", inputs: ["id", "label", "hideLabel", "helperText", "placeholder", "displayValue", "clearText", "size", "type", "theme", "disabled", "readonly", "skeleton", "inline", "disableArrowKeys", "invalid", "invalidText", "warn", "warnText", "appendInline", "scrollableContainer", "itemValueKey", "selectionFeedback", "menuButtonLabel", "selectedLabel", "dropUp", "fluid"], outputs: ["selected", "onClose", "close"] }, { kind: "component", type: i2$2.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "component", type: i2$1.CarbonListComponent, selector: "valtimo-carbon-list", inputs: ["items", "fields", "tableTranslations", "paginatorConfig", "pagination", "loading", "skeletonRowCount", "actions", "actionItems", "showActionItems", "header", "hideColumnHeader", "initialSortState", "sortState", "isSearchable", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped", "hideToolbar", "lockedTooltipTranslationKey", "movingRowsEnabled", "dragAndDrop", "dragAndDropDisabled"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged", "moveRow", "itemsReordered"] }, { kind: "component", type: i2$1.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "component", type: i2$1.StatusSelectorComponent, selector: "valtimo-status-selector", inputs: ["statuses", "selectedStatusKeys", "carbonTheme", "disabled"], outputs: ["selectedStatusesChangeEvent"] }, { kind: "directive", type: i2$1.RenderInPageHeaderDirective, selector: "[renderInPageHeader]", inputs: ["fullWidth"] }, { kind: "component", type: i2$1.CaseTagsSelectorComponent, selector: "valtimo-case-tags-selector", inputs: ["caseTags", "selectedCaseTagKeys", "carbonTheme", "disabled"], outputs: ["selectedCaseTagsChangeEvent"] }, { kind: "component", type: i2$1.QuickSearchComponent, selector: "valtimo-quick-search", outputs: ["quickSearchEvent"] }, { kind: "component", type: CaseListActionsComponent, selector: "valtimo-case-list-actions", inputs: ["loading", "navigateAfterSubmit"], outputs: ["formFlowComplete", "startButtonDisableEvent"] }, { kind: "component", type: CaseBulkAssignModalComponent, selector: "valtimo-case-bulk-assign-modal", inputs: ["documentIds", "open"], outputs: ["closeEvent"] }, { kind: "component", type: CaseListTabsComponent, selector: "valtimo-case-list-tabs", inputs: ["assigneeFilter", "selectedRowCount", "visibleTabs"], outputs: ["tabChangeEvent"] }, { kind: "component", type: CaseListToolbarComponent, selector: "valtimo-case-list-toolbar", inputs: ["availableFields", "canCreate", "canExport", "disableExport", "disableStart", "hasApiColumnConfig", "hiddenColumns", "loadingExport"], outputs: ["exportEvent", "startCaseEvent", "viewUpdateEvent"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
|
|
8045
|
+
], viewQueries: [{ propertyName: "carbonList", first: true, predicate: ["specificCaseList"], descendants: true }, { propertyName: "listActionsComponent", first: true, predicate: CaseListActionsComponent, descendants: true }, { propertyName: "tabsComponent", first: true, predicate: CaseListTabsComponent, descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<ng-container *ngIf=\"{isAllCases: isAllCases$ | async} as mode\">\n <!-- All Cases mode -->\n <ng-container *ngIf=\"mode.isAllCases\">\n <valtimo-carbon-list\n [fields]=\"allCasesFields$ | async\"\n [header]=\"false\"\n [items]=\"(allCasesData$ | async)?.items\"\n [loading]=\"allCasesLoading$ | async\"\n [pagination]=\"(allCasesData$ | async)?.pagination\"\n paginationIdentifier=\"genericCaseList\"\n [tableTranslations]=\"tableTranslations\"\n (paginationClicked)=\"allCasesPageChange($event)\"\n (paginationSet)=\"allCasesPageSizeChange($event)\"\n (rowClicked)=\"rowClick($event)\"\n (sortChanged)=\"allCasesSortChanged($event)\"\n >\n <valtimo-no-results\n [description]=\"'case.noResults.ALL.description' | translate\"\n [title]=\"'case.noResults.ALL.title' | translate\"\n ></valtimo-no-results>\n\n <div tabs *ngIf=\"visibleCaseTabs\">\n <valtimo-case-list-tabs\n [assigneeFilter]=\"allCasesAssigneeFilter$ | async\"\n [selectedRowCount]=\"0\"\n [visibleTabs]=\"visibleCaseTabs\"\n (tabChangeEvent)=\"allCasesTabChange($event)\"\n ></valtimo-case-list-tabs>\n </div>\n </valtimo-carbon-list>\n </ng-container>\n\n <!-- Specific case definition mode -->\n <ng-container *ngIf=\"!mode.isAllCases\">\n <ng-container\n *ngIf=\"{\n availableFields: orchestration.availableFields$ | async,\n fields: orchestration.fields$ | async,\n documentItems: orchestration.documentItems$ | async,\n noResultsMessage: orchestration.noResultsMessage$ | async,\n hasApiColumnConfig: orchestration.hasApiColumnConfig$ | async,\n searchFields: orchestration.searchFields$ | async,\n showAssignModal: showAssignModal$ | async,\n selectedCaseIds: selectedCaseIds$ | async,\n statuses: orchestration.statuses$ | async,\n caseTags: orchestration.caseTags$ | async,\n selectedStatusKeys: orchestration.selectedStatusKeys$ | async,\n selectedCaseTagKeys: orchestration.selectedCaseTagKeys$ | async,\n showStatusSelector: orchestration.showStatusSelector$ | async,\n showCaseTagsSelector: orchestration.showCaseTagsSelector$ | async,\n loaded: orchestration.loaded$ | async,\n canCreate: orchestration.canCreateCase$ | async,\n canExport: orchestration.canExportCase$ | async,\n disableExport: orchestration.disableExportButton$ | async,\n disableSaveSearch: orchestration.disableSaveSearch$ | async,\n assigneeFilter: orchestration.assigneeFilter$ | async,\n hiddenColumns: orchestration.hiddenColumns$ | async,\n disableStartButton: disableStartButton$ | async,\n } as obs\"\n >\n <valtimo-case-list-actions\n [loading]=\"!obs.loaded\"\n (formFlowComplete)=\"forceRefresh()\"\n (startButtonDisableEvent)=\"onStartButtonDisableEvent($event)\"\n ></valtimo-case-list-actions>\n\n <ng-container *ngTemplateOutlet=\"searchFields; context: {obs: obs}\"></ng-container>\n\n <valtimo-quick-search\n (quickSearchEvent)=\"onQuickSearchEvent($event)\"\n ></valtimo-quick-search>\n\n <ng-container *ngIf=\"obs.loaded; else specificLoading\">\n <valtimo-carbon-list\n #specificCaseList\n [fields]=\"obs.fields\"\n [header]=\"false\"\n [initialSortState]=\"pagination?.sort\"\n [items]=\"obs.documentItems\"\n [pagination]=\"pagination\"\n paginationIdentifier=\"genericCaseListSpecific\"\n lockedTooltipTranslationKey=\"case.rowLocked\"\n [showSelectionColumn]=\"canHaveAssignee\"\n [tableTranslations]=\"tableTranslations\"\n (paginationClicked)=\"pageChange($event)\"\n (paginationSet)=\"pageSizeChange($event)\"\n (rowClicked)=\"rowClick($event)\"\n (sortChanged)=\"sortChanged($event)\"\n >\n <ng-container carbonToolbarActions>\n <button cdsButton=\"primary\" (click)=\"showAssignModal()\">\n {{ 'case.bulkAssign.assign' | translate }}\n </button>\n </ng-container>\n\n <div carbonToolbarContent>\n <valtimo-case-list-toolbar\n [availableFields]=\"obs.availableFields\"\n [canCreate]=\"obs.canCreate\"\n [canExport]=\"obs.canExport\"\n [disableExport]=\"obs.disableExport\"\n [disableStart]=\"obs.disableStartButton\"\n [hasApiColumnConfig]=\"obs.hasApiColumnConfig\"\n [hiddenColumns]=\"obs.hiddenColumns\"\n [loadingExport]=\"loadingExport\"\n (exportEvent)=\"export()\"\n (startCaseEvent)=\"startCase()\"\n (viewUpdateEvent)=\"onViewUpdateEvent($event)\"\n ></valtimo-case-list-toolbar>\n </div>\n\n <valtimo-no-results\n [action]=\"obs.noResultsMessage?.isSearchResult ? null : caseListActionsNoResult\"\n [description]=\"obs.noResultsMessage?.description | translate\"\n [title]=\"obs.noResultsMessage?.title | translate\"\n ></valtimo-no-results>\n\n <div tabs *ngIf=\"canHaveAssignee\">\n <valtimo-case-list-tabs\n [assigneeFilter]=\"obs.assigneeFilter\"\n [selectedRowCount]=\"carbonList?.model?.selectedRowsCount() ?? 0\"\n [visibleTabs]=\"visibleCaseTabs\"\n (tabChangeEvent)=\"onTabChange($event)\"\n ></valtimo-case-list-tabs>\n </div>\n </valtimo-carbon-list>\n </ng-container>\n\n <ng-template #specificLoading>\n <valtimo-carbon-list [loading]=\"true\">\n <div tabs *ngIf=\"canHaveAssignee\">\n <valtimo-case-list-tabs\n [assigneeFilter]=\"orchestration.assigneeFilter$ | async\"\n [selectedRowCount]=\"0\"\n [visibleTabs]=\"visibleCaseTabs\"\n (tabChangeEvent)=\"onTabChange($event)\"\n ></valtimo-case-list-tabs>\n </div>\n </valtimo-carbon-list>\n </ng-template>\n\n <valtimo-case-bulk-assign-modal\n [documentIds]=\"obs.selectedCaseIds\"\n [open]=\"obs.showAssignModal\"\n (closeEvent)=\"onCloseEvent($event)\"\n ></valtimo-case-bulk-assign-modal>\n\n <valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"case.changePageModal.confirm\"\n contentTranslationKey=\"case.changePageModal.content\"\n [outputOnConfirm]=\"paginationChange$ | async\"\n [showModalSubject$]=\"showChangePageModal$\"\n titleTranslationKey=\"case.changePageModal.title\"\n (confirmEvent)=\"onChangePageConfirm($event)\"\n ></valtimo-confirmation-modal>\n </ng-container>\n </ng-container>\n</ng-container>\n\n<ng-template #searchFields let-obs=\"obs\">\n <valtimo-search-fields\n [disableSaveSearch]=\"obs.disableSaveSearch\"\n [canSaveSearch]=\"true\"\n [searchFields]=\"obs.searchFields\"\n [caseDefinitionKey]=\"orchestration.caseDefinitionKey$ | async\"\n [defaultValues]=\"orchestration.searchFieldValues$ | async\"\n [inputDisabled]=\"!obs.loaded\"\n [externalSearchField]=\"obs.showStatusSelector\"\n (clearEvent)=\"onClearEvent()\"\n (doSearch)=\"search($event)\"\n (saveSearchEvent)=\"onSaveSearchEvent($event)\"\n >\n <valtimo-status-selector\n *ngIf=\"obs.showStatusSelector\"\n [statuses]=\"obs.statuses\"\n [selectedStatusKeys]=\"obs.selectedStatusKeys\"\n [disabled]=\"!obs.loaded\"\n (selectedStatusesChangeEvent)=\"onSelectedStatusesChange($event)\"\n ></valtimo-status-selector>\n\n <valtimo-case-tags-selector\n *ngIf=\"obs.showCaseTagsSelector\"\n [caseTags]=\"obs.caseTags\"\n [selectedCaseTagKeys]=\"obs.selectedCaseTagKeys\"\n [disabled]=\"!obs.loaded\"\n (selectedCaseTagsChangeEvent)=\"onSelectedCaseTagsChange($event)\"\n ></valtimo-case-tags-selector>\n </valtimo-search-fields>\n</ng-template>\n\n<ng-template #caseListActionsNoResult>\n <button\n *ngIf=\"orchestration.canCreateCase$ | async\"\n cdsButton=\"primary\"\n [disabled]=\"disableStartButton$ | async\"\n (click)=\"startCase()\"\n >\n {{ 'Start Case' | translate }}\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n</ng-template>\n\n<ng-container renderInPageHeader [fullWidth]=\"true\">\n <ng-template>\n <cds-dropdown\n class=\"case-definition-selection\"\n *ngIf=\"{\n loadingCaseListItems: loadingCaseListItems$ | async,\n caseListItems: caseListItems$ | async,\n } as dropdownObs\"\n [attr.data-testid]=\"'generic-case-list-dropdown'\"\n [disabled]=\"dropdownObs.loadingCaseListItems || (dropdownObs.caseListItems || []).length === 1\"\n [skeleton]=\"dropdownObs.loadingCaseListItems\"\n (selected)=\"setCaseDefinition($event)\"\n >\n <cds-dropdown-list [items]=\"dropdownObs.caseListItems || []\"></cds-dropdown-list>\n </cds-dropdown>\n </ng-template>\n</ng-container>\n", styles: [":host{display:flex;flex-direction:column;gap:16px}.case-definition-selection{display:flex;width:250px}\n/*!\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2$1.SearchFieldsComponent, selector: "valtimo-search-fields", inputs: ["loading", "searchFields", "caseDefinitionKey", "setValuesSubject$", "clearValuesSubject$", "defaultValues", "disableSaveSearch", "inputDisabled", "externalSearchField", "canSaveSearch"], outputs: ["doSearch", "saveSearchEvent", "clearEvent"] }, { kind: "directive", type: i4$1.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "directive", type: i4$1.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: i2$1.ConfirmationModalComponent, selector: "valtimo-confirmation-modal", inputs: ["titleTranslationKey", "title", "content", "contentTranslationKey", "confirmButtonText", "confirmButtonTextTranslationKey", "confirmButtonType", "showOptionalButton", "optionalButtonText", "optionalButtonTextTranslationKey", "optionalButtonType", "cancelButtonText", "cancelButtonTextTranslationKey", "cancelButtonType", "showModalSubject$", "outputOnConfirm", "outputOnOptional", "spacerAfterCancelButton"], outputs: ["confirmEvent", "optionalEvent", "cancelEvent"] }, { kind: "component", type: i4$1.Dropdown, selector: "cds-dropdown, ibm-dropdown", inputs: ["id", "label", "hideLabel", "helperText", "placeholder", "displayValue", "clearText", "size", "type", "theme", "disabled", "readonly", "skeleton", "inline", "disableArrowKeys", "invalid", "invalidText", "warn", "warnText", "appendInline", "scrollableContainer", "itemValueKey", "selectionFeedback", "menuButtonLabel", "selectedLabel", "dropUp", "fluid"], outputs: ["selected", "onClose", "close"] }, { kind: "component", type: i4$1.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "component", type: i2$1.CarbonListComponent, selector: "valtimo-carbon-list", inputs: ["items", "fields", "tableTranslations", "paginatorConfig", "pagination", "loading", "skeletonRowCount", "actions", "actionItems", "showActionItems", "header", "hideColumnHeader", "initialSortState", "sortState", "isSearchable", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped", "hideToolbar", "lockedTooltipTranslationKey", "movingRowsEnabled", "dragAndDrop", "dragAndDropDisabled"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged", "moveRow", "itemsReordered"] }, { kind: "component", type: i2$1.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "component", type: i2$1.StatusSelectorComponent, selector: "valtimo-status-selector", inputs: ["statuses", "selectedStatusKeys", "carbonTheme", "disabled"], outputs: ["selectedStatusesChangeEvent"] }, { kind: "directive", type: i2$1.RenderInPageHeaderDirective, selector: "[renderInPageHeader]", inputs: ["fullWidth"] }, { kind: "component", type: i2$1.CaseTagsSelectorComponent, selector: "valtimo-case-tags-selector", inputs: ["caseTags", "selectedCaseTagKeys", "carbonTheme", "disabled"], outputs: ["selectedCaseTagsChangeEvent"] }, { kind: "component", type: i2$1.QuickSearchComponent, selector: "valtimo-quick-search", outputs: ["quickSearchEvent"] }, { kind: "component", type: CaseListActionsComponent, selector: "valtimo-case-list-actions", inputs: ["loading", "navigateAfterSubmit"], outputs: ["formFlowComplete", "startButtonDisableEvent"] }, { kind: "component", type: CaseBulkAssignModalComponent, selector: "valtimo-case-bulk-assign-modal", inputs: ["documentIds", "open"], outputs: ["closeEvent"] }, { kind: "component", type: CaseListTabsComponent, selector: "valtimo-case-list-tabs", inputs: ["assigneeFilter", "selectedRowCount", "visibleTabs"], outputs: ["tabChangeEvent"] }, { kind: "component", type: CaseListToolbarComponent, selector: "valtimo-case-list-toolbar", inputs: ["availableFields", "canCreate", "canExport", "disableExport", "disableStart", "hasApiColumnConfig", "hiddenColumns", "loadingExport"], outputs: ["exportEvent", "startCaseEvent", "viewUpdateEvent"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
|
|
6553
8046
|
}
|
|
6554
8047
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: GenericCaseListComponent, decorators: [{
|
|
6555
8048
|
type: Component,
|
|
@@ -6584,7 +8077,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
|
|
|
6584
8077
|
}] } });
|
|
6585
8078
|
|
|
6586
8079
|
/*
|
|
6587
|
-
* Copyright 2015-
|
|
8080
|
+
* Copyright 2015-2026 Ritense BV, the Netherlands.
|
|
6588
8081
|
*
|
|
6589
8082
|
* Licensed under EUPL, Version 1.2 (the "License");
|
|
6590
8083
|
* you may not use this file except in compliance with the License.
|
|
@@ -6612,6 +8105,27 @@ const routes = [
|
|
|
6612
8105
|
canActivate: [AuthGuardService],
|
|
6613
8106
|
data: { title: 'Cases', roles: [ROLE_USER], customPageTitle: true },
|
|
6614
8107
|
},
|
|
8108
|
+
{
|
|
8109
|
+
path: 'cases/:caseDefinitionKey/document/:documentId/case-inspection',
|
|
8110
|
+
component: CaseInspectionComponent,
|
|
8111
|
+
canActivate: [AuthGuardService],
|
|
8112
|
+
data: {
|
|
8113
|
+
title: 'Case inspection',
|
|
8114
|
+
parentPath: 'cases/:caseDefinitionKey/document/:documentId',
|
|
8115
|
+
roles: [ROLE_USER],
|
|
8116
|
+
customPageTitle: true,
|
|
8117
|
+
},
|
|
8118
|
+
},
|
|
8119
|
+
{
|
|
8120
|
+
path: 'cases/:caseDefinitionKey/document/:documentId/:tab/tasks/:taskId',
|
|
8121
|
+
component: CaseUpdateComponent,
|
|
8122
|
+
canActivate: [AuthGuardService],
|
|
8123
|
+
data: {
|
|
8124
|
+
title: 'Task details',
|
|
8125
|
+
parentPath: 'cases/:caseDefinitionKey/document/:documentId/:tab',
|
|
8126
|
+
roles: [ROLE_USER],
|
|
8127
|
+
},
|
|
8128
|
+
},
|
|
6615
8129
|
{
|
|
6616
8130
|
path: 'cases/:caseDefinitionKey/document/:documentId/:tab',
|
|
6617
8131
|
component: CaseDetailComponent,
|
|
@@ -6634,16 +8148,6 @@ const routes = [
|
|
|
6634
8148
|
roles: [ROLE_USER],
|
|
6635
8149
|
},
|
|
6636
8150
|
},
|
|
6637
|
-
{
|
|
6638
|
-
path: 'cases/:caseDefinitionKey/document/:documentId/:tab/tasks/:taskId',
|
|
6639
|
-
component: CaseUpdateComponent,
|
|
6640
|
-
canActivate: [AuthGuardService],
|
|
6641
|
-
data: {
|
|
6642
|
-
title: 'Task details',
|
|
6643
|
-
parentPath: 'cases/:caseDefinitionKey/document/:documentId/:tab',
|
|
6644
|
-
roles: [ROLE_USER],
|
|
6645
|
-
},
|
|
6646
|
-
},
|
|
6647
8151
|
];
|
|
6648
8152
|
class CaseRoutingModule {
|
|
6649
8153
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseRoutingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
@@ -7015,7 +8519,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
|
|
|
7015
8519
|
}], ctorParameters: () => [{ type: CaseMenuService }, { type: i2$1.MenuService }] });
|
|
7016
8520
|
|
|
7017
8521
|
/*
|
|
7018
|
-
* Copyright 2015-
|
|
8522
|
+
* Copyright 2015-2026 Ritense BV, the Netherlands.
|
|
7019
8523
|
*
|
|
7020
8524
|
* Licensed under EUPL, Version 1.2 (the "License");
|
|
7021
8525
|
* you may not use this file except in compliance with the License.
|
|
@@ -7037,5 +8541,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
|
|
|
7037
8541
|
* Generated bundle index. Do not edit.
|
|
7038
8542
|
*/
|
|
7039
8543
|
|
|
7040
|
-
export { ApiTabType, CASE_DETAIL_DEFAULT_DISPLAY_SIZE, CASE_DETAIL_DEFAULT_DISPLAY_TYPE, CASE_DETAIL_GUTTER_SIZE, CASE_DETAIL_LEFT_PANEL_MIN_WIDTH, CASE_DETAIL_RIGHT_PANEL_MIN_WIDTHS, CASE_DETAIL_START_PROCESS_DROPDOWN_WIDTH, CASE_DETAIL_TASK_LIST_WIDTH, CASE_LIST_NO_RESULTS_MESSAGE, CASE_LIST_TABLE_TRANSLATIONS, CASE_TAB_TOKEN, CASE_WITHOUT_STATUS_STATUS, CaseBulkAssignModalComponent, CaseBulkAssignService, CaseColumnService, CaseDetailComponent, CaseDetailLayoutService, CaseDetailTabAuditComponent, CaseDetailTabDocumentsComponent, CaseDetailTabNotesComponent, CaseDetailTabProgressComponent, CaseDetailTabSummaryComponent, CaseExportService, CaseHeaderWidgetApiService, CaseListActionsComponent, CaseListAssigneeService, CaseListCaseTagService, CaseListComponent, CaseListHiddenColumnsService, CaseListOrchestrationService, CaseListPaginationService, CaseListQuickSearchService, CaseListSearchService, CaseListService, CaseListStatusService, CaseMenuService, CaseModule, CaseParameterService, CaseProcessStartModalComponent, CaseService, CaseSupportingProcessStartModalComponent, CaseTabApiService, CaseTabService, CaseWidgetsApiService, DEFAULT_CASE_LIST_TABS, DEFAULT_TABS, DEFAULT_TAB_COMPONENTS, DefaultTabs, StartModalService, TAB_MAP, TabImpl, TabLoaderImpl, WIDGET_HEIGHT_1X, WIDGET_WIDTH_1X };
|
|
8544
|
+
export { ApiTabType, CASE_DETAIL_DEFAULT_DISPLAY_SIZE, CASE_DETAIL_DEFAULT_DISPLAY_TYPE, CASE_DETAIL_GUTTER_SIZE, CASE_DETAIL_LEFT_PANEL_MIN_WIDTH, CASE_DETAIL_RIGHT_PANEL_MIN_WIDTHS, CASE_DETAIL_START_PROCESS_DROPDOWN_WIDTH, CASE_DETAIL_TASK_LIST_WIDTH, CASE_INSPECTION_LOG_LEVEL_TAG, CASE_LIST_NO_RESULTS_MESSAGE, CASE_LIST_TABLE_TRANSLATIONS, CASE_TAB_TOKEN, CASE_WITHOUT_STATUS_STATUS, CaseBulkAssignModalComponent, CaseBulkAssignService, CaseColumnService, CaseDetailComponent, CaseDetailLayoutService, CaseDetailTabAuditComponent, CaseDetailTabDocumentsComponent, CaseDetailTabNotesComponent, CaseDetailTabProgressComponent, CaseDetailTabSummaryComponent, CaseExportService, CaseHeaderWidgetApiService, CaseInspectionLogLevel, CaseInspectionService, CaseInspectionTab, CaseListActionsComponent, CaseListAssigneeService, CaseListCaseTagService, CaseListComponent, CaseListHiddenColumnsService, CaseListOrchestrationService, CaseListPaginationService, CaseListQuickSearchService, CaseListSearchService, CaseListService, CaseListStatusService, CaseMenuService, CaseModule, CaseParameterService, CaseProcessStartModalComponent, CaseService, CaseSupportingProcessStartModalComponent, CaseTabApiService, CaseTabService, CaseWidgetsApiService, DEFAULT_CASE_LIST_TABS, DEFAULT_TABS, DEFAULT_TAB_COMPONENTS, DefaultTabs, ProcessDetailTab, StartModalService, TAB_MAP, TabImpl, TabLoaderImpl, WIDGET_HEIGHT_1X, WIDGET_WIDTH_1X, ZGW_CASE_INSPECTION_TAB_TOKEN };
|
|
7041
8545
|
//# sourceMappingURL=valtimo-case.mjs.map
|