@valtimo/case 13.38.0 → 13.40.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 +224 -31
- package/fesm2022/valtimo-case.mjs.map +1 -1
- package/lib/components/case-detail/case-detail.component.d.ts +7 -0
- package/lib/components/case-detail/case-detail.component.d.ts.map +1 -1
- package/lib/components/case-detail/tab/progress/progress.component.d.ts +32 -2
- package/lib/components/case-detail/tab/progress/progress.component.d.ts.map +1 -1
- package/lib/components/case-detail/tab/widgets/components/text/case-widget-text.component.d.ts +30 -0
- package/lib/components/case-detail/tab/widgets/components/text/case-widget-text.component.d.ts.map +1 -0
- package/lib/components/case-detail/tab/widgets/widgets.component.d.ts.map +1 -1
- package/lib/components/case-detail-task-detail/case-detail-task-detail.component.d.ts +2 -0
- package/lib/components/case-detail-task-detail/case-detail-task-detail.component.d.ts.map +1 -1
- package/lib/models/case-sse-event.model.d.ts +10 -1
- package/lib/models/case-sse-event.model.d.ts.map +1 -1
- package/lib/models/pending-skip.model.d.ts +8 -0
- package/lib/models/pending-skip.model.d.ts.map +1 -0
- package/lib/services/case-process-timer.service.d.ts +16 -0
- package/lib/services/case-process-timer.service.d.ts.map +1 -0
- package/lib/services/index.d.ts +1 -0
- package/lib/services/index.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
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,
|
|
3
|
+
import { combineLatest, map, distinctUntilChanged, BehaviorSubject, take, Subject, switchMap, of, tap, filter, Subscription, startWith, forkJoin, shareReplay, catchError as catchError$1, first, fromEvent, from, debounceTime, defaultIfEmpty, EMPTY, merge, 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';
|
|
@@ -24,6 +24,7 @@ import * as i6 from '@angular/common';
|
|
|
24
24
|
import { CommonModule, DOCUMENT, NgComponentOutlet } from '@angular/common';
|
|
25
25
|
import * as i4$1 from 'carbon-components-angular';
|
|
26
26
|
import { InputModule, ButtonModule, PaginationModule, TilesModule, LoadingModule, LayerModule, TagModule, IconModule, DialogModule, ModalModule, NotificationModule, Tabs, StructuredListModule, DatePickerModule, DropdownModule, NumberModule, ToggleModule, LinkModule, TabsModule, SelectModule as SelectModule$1, ComboBoxModule, SkeletonModule, ToggletipModule, TooltipModule } from 'carbon-components-angular';
|
|
27
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
27
28
|
import * as i2$1 from '@valtimo/process';
|
|
28
29
|
import { ProcessDiagramComponent, ProcessModule } from '@valtimo/process';
|
|
29
30
|
import * as i3$1 from 'ngx-spinner';
|
|
@@ -34,8 +35,7 @@ import * as i2$2 from '@valtimo/access-control';
|
|
|
34
35
|
import * as i1$5 from '@angular/forms';
|
|
35
36
|
import { Validators, ReactiveFormsModule, FormsModule } from '@angular/forms';
|
|
36
37
|
import * as i5$1 from '@valtimo/layout';
|
|
37
|
-
import { WidgetFieldComponent, WidgetCustomComponent, WidgetFormioComponent, WidgetTableComponent, WidgetCollectionComponent, WidgetMapComponent, WidgetPersonCardComponent, WidgetMetrolineComponent, WidgetHighlightComponent, WidgetImageComponent, WidgetType, WidgetContainerComponent } from '@valtimo/layout';
|
|
38
|
-
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
38
|
+
import { WidgetFieldComponent, WidgetCustomComponent, WidgetFormioComponent, WidgetTableComponent, WidgetCollectionComponent, WidgetMapComponent, WidgetPersonCardComponent, WidgetMetrolineComponent, WidgetHighlightComponent, WidgetImageComponent, WidgetTextComponent, WidgetType, WidgetContainerComponent } from '@valtimo/layout';
|
|
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';
|
|
@@ -633,7 +633,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
633
633
|
}], ctorParameters: () => [{ type: i1.ConfigService }, { type: CaseListService }, { type: i1$2.DocumentService }, { type: i4.TranslateService }, { type: CaseParameterService }] });
|
|
634
634
|
|
|
635
635
|
/*
|
|
636
|
-
* Copyright 2015-
|
|
636
|
+
* Copyright 2015-2026 Ritense BV, the Netherlands.
|
|
637
637
|
*
|
|
638
638
|
* Licensed under EUPL, Version 1.2 (the "License");
|
|
639
639
|
* you may not use this file except in compliance with the License.
|
|
@@ -659,7 +659,7 @@ class CaseService {
|
|
|
659
659
|
getInitialSortState(columns) {
|
|
660
660
|
const defaultColumn = columns.find(column => column.default);
|
|
661
661
|
const isSorting = defaultColumn?.default === 'ASC' || defaultColumn?.default === 'DESC';
|
|
662
|
-
const direction =
|
|
662
|
+
const direction = !defaultColumn || typeof defaultColumn.default === 'boolean'
|
|
663
663
|
? 'DESC'
|
|
664
664
|
: defaultColumn.default;
|
|
665
665
|
return {
|
|
@@ -1113,7 +1113,7 @@ class TabImpl {
|
|
|
1113
1113
|
*/
|
|
1114
1114
|
|
|
1115
1115
|
/*
|
|
1116
|
-
* Copyright 2015-
|
|
1116
|
+
* Copyright 2015-2026 Ritense BV, the Netherlands.
|
|
1117
1117
|
*
|
|
1118
1118
|
* Licensed under EUPL, Version 1.2 (the "License");
|
|
1119
1119
|
* you may not use this file except in compliance with the License.
|
|
@@ -1271,7 +1271,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
1271
1271
|
}], ctorParameters: () => [{ type: i1$2.DocumentService }, { type: i1$3.ActivatedRoute }, { type: i3.FormService }, { type: i4.TranslateService }, { type: i5.SseService }] });
|
|
1272
1272
|
|
|
1273
1273
|
/*
|
|
1274
|
-
* Copyright 2015-
|
|
1274
|
+
* Copyright 2015-2026 Ritense BV, the Netherlands.
|
|
1275
1275
|
*
|
|
1276
1276
|
* Licensed under EUPL, Version 1.2 (the "License");
|
|
1277
1277
|
* you may not use this file except in compliance with the License.
|
|
@@ -1286,43 +1286,122 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
1286
1286
|
* limitations under the License.
|
|
1287
1287
|
*/
|
|
1288
1288
|
class CaseDetailTabProgressComponent {
|
|
1289
|
-
constructor(route, documentService) {
|
|
1289
|
+
constructor(route, documentService, caseProcessTimerService, notificationService, translateService, destroyRef) {
|
|
1290
1290
|
this.route = route;
|
|
1291
1291
|
this.documentService = documentService;
|
|
1292
|
-
this.
|
|
1292
|
+
this.caseProcessTimerService = caseProcessTimerService;
|
|
1293
|
+
this.notificationService = notificationService;
|
|
1294
|
+
this.translateService = translateService;
|
|
1295
|
+
this.destroyRef = destroyRef;
|
|
1296
|
+
this._documentId$ = this.route.paramMap.pipe(map((params) => params.get('documentId')), shareReplay({ bufferSize: 1, refCount: true }));
|
|
1297
|
+
this._reloadProcessInstances$ = new BehaviorSubject(undefined);
|
|
1298
|
+
this.selectedProcessInstanceId$ = new BehaviorSubject(null);
|
|
1299
|
+
this.processDocumentInstances$ = combineLatest([this.route.paramMap, this._reloadProcessInstances$]).pipe(switchMap(([params]) => this.documentService.findProcessDocumentInstances(params.get('documentId'))), map(processDocumentInstances => processDocumentInstances.map(processDocumentInstance => ({
|
|
1293
1300
|
...processDocumentInstance,
|
|
1294
1301
|
startedOn: new Date(processDocumentInstance.startedOn),
|
|
1295
1302
|
}))), map(processDocumentInstances => processDocumentInstances.sort((a, b) => a.active === b.active ? b.startedOn.getTime() - a.startedOn.getTime() : a.active ? -1 : 1)), tap(processDocumentInstances => {
|
|
1296
|
-
if (processDocumentInstances.length
|
|
1303
|
+
if (processDocumentInstances.length === 0) {
|
|
1304
|
+
return;
|
|
1305
|
+
}
|
|
1306
|
+
// Reloading keeps the selected process instance, as long as it is still part of the case.
|
|
1307
|
+
const stillPresent = processDocumentInstances.some(processDocumentInstance => processDocumentInstance.id.processInstanceId === this.selectedProcessInstanceId$.value);
|
|
1308
|
+
if (!stillPresent) {
|
|
1297
1309
|
this.selectedProcessInstanceId$.next(processDocumentInstances[0].id.processInstanceId);
|
|
1298
1310
|
}
|
|
1299
1311
|
}));
|
|
1300
|
-
this.processInstanceItems$ =
|
|
1312
|
+
this.processInstanceItems$ = combineLatest([
|
|
1313
|
+
this.processDocumentInstances$,
|
|
1314
|
+
this.selectedProcessInstanceId$,
|
|
1315
|
+
]).pipe(map(([processDocumentInstances, selectedProcessInstanceId]) => processDocumentInstances.map(processDocumentInstance => ({
|
|
1301
1316
|
processInstanceId: processDocumentInstance.id.processInstanceId,
|
|
1302
1317
|
content: processDocumentInstance.processName || '-',
|
|
1303
|
-
selected:
|
|
1318
|
+
selected: processDocumentInstance.id.processInstanceId === selectedProcessInstanceId,
|
|
1304
1319
|
}))), map(processInstanceItems => ({
|
|
1305
1320
|
value: processInstanceItems,
|
|
1306
1321
|
isLoading: false,
|
|
1307
1322
|
})), startWith({ isLoading: true }));
|
|
1308
|
-
this.selectedProcessInstanceId$ = new BehaviorSubject(null);
|
|
1309
1323
|
this.selectedProcessInstance$ = combineLatest([this.processDocumentInstances$, this.selectedProcessInstanceId$]).pipe(map(([processDocumentInstances, selectedProcessInstanceId]) => processDocumentInstances.find(instance => instance.id.processInstanceId === selectedProcessInstanceId)), map(processInstanceItems => ({
|
|
1310
1324
|
value: processInstanceItems,
|
|
1311
1325
|
isLoading: false,
|
|
1312
1326
|
})), startWith({ isLoading: true }));
|
|
1327
|
+
this.diagramReloadToken$ = new BehaviorSubject(0);
|
|
1328
|
+
this.showSkipConfirm$ = new BehaviorSubject(false);
|
|
1329
|
+
this._reloadTimers$ = new BehaviorSubject(undefined);
|
|
1330
|
+
/**
|
|
1331
|
+
* The endpoint only returns the timers the user is allowed to complete, so no separate permission
|
|
1332
|
+
* check is needed here. Checking the `complete` permission on `OperatonTimer` up front would not
|
|
1333
|
+
* work for permissions that are conditional on the timer or the case it belongs to.
|
|
1334
|
+
*/
|
|
1335
|
+
this.skippableTimers$ = combineLatest([
|
|
1336
|
+
this._documentId$,
|
|
1337
|
+
this.selectedProcessInstanceId$,
|
|
1338
|
+
this._reloadTimers$,
|
|
1339
|
+
]).pipe(switchMap(([documentId, processInstanceId]) => {
|
|
1340
|
+
if (!documentId || !processInstanceId) {
|
|
1341
|
+
return of([]);
|
|
1342
|
+
}
|
|
1343
|
+
return this.caseProcessTimerService.getSkippableTimers(documentId, processInstanceId).pipe(map(jobs => jobs.map(job => ({ jobId: job.id, activityId: job.activityId }))), catchError$1(() => of([])));
|
|
1344
|
+
}), startWith([]), shareReplay({ bufferSize: 1, refCount: true }));
|
|
1345
|
+
this.canSkipTimer$ = this.skippableTimers$.pipe(map(timers => timers.length > 0));
|
|
1346
|
+
this._pendingSkip$ = new BehaviorSubject(null);
|
|
1313
1347
|
}
|
|
1314
1348
|
loadProcessInstance(processInstanceId) {
|
|
1315
1349
|
if (!!processInstanceId) {
|
|
1316
1350
|
this.selectedProcessInstanceId$.next(processInstanceId);
|
|
1317
1351
|
}
|
|
1318
1352
|
}
|
|
1319
|
-
|
|
1320
|
-
|
|
1353
|
+
/**
|
|
1354
|
+
* The case and process instance the timer belongs to are captured here, so confirming skips the
|
|
1355
|
+
* timer in the context it was requested from, even when the selection or the route changed in the
|
|
1356
|
+
* meantime.
|
|
1357
|
+
*/
|
|
1358
|
+
onRequestSkipTimer(timer) {
|
|
1359
|
+
const processInstanceId = this.selectedProcessInstanceId$.value;
|
|
1360
|
+
this._documentId$.pipe(take(1), takeUntilDestroyed(this.destroyRef)).subscribe(documentId => {
|
|
1361
|
+
if (!documentId || !processInstanceId) {
|
|
1362
|
+
return;
|
|
1363
|
+
}
|
|
1364
|
+
this._pendingSkip$.next({ timer, documentId, processInstanceId });
|
|
1365
|
+
this.showSkipConfirm$.next(true);
|
|
1366
|
+
});
|
|
1367
|
+
}
|
|
1368
|
+
onConfirmSkipTimer() {
|
|
1369
|
+
this.showSkipConfirm$.next(false);
|
|
1370
|
+
const pendingSkip = this._pendingSkip$.value;
|
|
1371
|
+
if (!pendingSkip) {
|
|
1372
|
+
return;
|
|
1373
|
+
}
|
|
1374
|
+
/*
|
|
1375
|
+
The pending skip is cleared before the request is sent, so a repeated confirm cannot submit the
|
|
1376
|
+
same timer twice and a completing request cannot clear a newer pending skip.
|
|
1377
|
+
*/
|
|
1378
|
+
this._pendingSkip$.next(null);
|
|
1379
|
+
this.caseProcessTimerService
|
|
1380
|
+
.skipTimer(pendingSkip.documentId, pendingSkip.processInstanceId, pendingSkip.timer.jobId)
|
|
1381
|
+
// HTTP failures are surfaced globally by HttpErrorInterceptor, so only success is handled here.
|
|
1382
|
+
.subscribe(() => {
|
|
1383
|
+
this.notificationService.showToast({
|
|
1384
|
+
type: 'success',
|
|
1385
|
+
title: this.translateService.instant('progress.skipTimer.successToast'),
|
|
1386
|
+
message: '',
|
|
1387
|
+
});
|
|
1388
|
+
// Skipping a timer can complete the process, so the process instance data is stale too.
|
|
1389
|
+
this._reloadProcessInstances$.next();
|
|
1390
|
+
this._reloadTimers$.next();
|
|
1391
|
+
this.diagramReloadToken$.next(this.diagramReloadToken$.value + 1);
|
|
1392
|
+
});
|
|
1393
|
+
}
|
|
1394
|
+
onCancelSkipTimer() {
|
|
1395
|
+
this.showSkipConfirm$.next(false);
|
|
1396
|
+
this._pendingSkip$.next(null);
|
|
1397
|
+
}
|
|
1398
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: CaseDetailTabProgressComponent, deps: [{ token: i1$3.ActivatedRoute }, { token: i1$2.DocumentService }, { token: CaseProcessTimerService }, { token: i1.GlobalNotificationService }, { token: i4.TranslateService }, { token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1399
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", 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 canSkipTimer: canSkipTimer$ | async,\n skippableTimers: skippableTimers$ | async,\n diagramReloadToken: diagramReloadToken$ | 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 [canSkipTimer]=\"obs.canSkipTimer || false\"\n [processInstanceId]=\"obs.selectedProcessInstance.value.id.processInstanceId\"\n [reloadToken]=\"obs.diagramReloadToken || 0\"\n [skipTimerLabel]=\"'progress.skipTimer.action' | translate\"\n [skippableTimers]=\"obs.skippableTimers || []\"\n (skipTimerEvent)=\"onRequestSkipTimer($event)\"\n ></valtimo-process-diagram>\n </div>\n\n <valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"progress.skipTimer.confirmButton\"\n titleTranslationKey=\"progress.skipTimer.confirmTitle\"\n [content]=\"'progress.skipTimer.confirmContent' | translate\"\n [showModalSubject$]=\"showSkipConfirm$\"\n (cancelEvent)=\"onCancelSkipTimer()\"\n (confirmEvent)=\"onConfirmSkipTimer()\"\n ></valtimo-confirmation-modal>\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$1.ProcessDiagramComponent, selector: "valtimo-process-diagram", inputs: ["processDefinitionKey", "processInstanceId", "skippableTimers", "canSkipTimer", "skipTimerLabel", "reloadToken"], outputs: ["importDone", "skipTimerEvent"] }, { kind: "component", type: i2.InputLabelComponent, selector: "v-input-label", inputs: ["name", "tooltip", "tooltipTranslationKey", "largeMargin", "small", "noMargin", "title", "titleTranslationKey", "required", "disabled", "carbonTheme"] }, { kind: "component", type: i2.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: 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" }] }); }
|
|
1321
1400
|
}
|
|
1322
1401
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: CaseDetailTabProgressComponent, decorators: [{
|
|
1323
1402
|
type: Component,
|
|
1324
|
-
args: [{ standalone: false, selector: 'valtimo-case-detail-tab-progress', 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"] }]
|
|
1325
|
-
}], ctorParameters: () => [{ type: i1$3.ActivatedRoute }, { type: i1$2.DocumentService }] });
|
|
1403
|
+
args: [{ standalone: false, selector: 'valtimo-case-detail-tab-progress', 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 canSkipTimer: canSkipTimer$ | async,\n skippableTimers: skippableTimers$ | async,\n diagramReloadToken: diagramReloadToken$ | 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 [canSkipTimer]=\"obs.canSkipTimer || false\"\n [processInstanceId]=\"obs.selectedProcessInstance.value.id.processInstanceId\"\n [reloadToken]=\"obs.diagramReloadToken || 0\"\n [skipTimerLabel]=\"'progress.skipTimer.action' | translate\"\n [skippableTimers]=\"obs.skippableTimers || []\"\n (skipTimerEvent)=\"onRequestSkipTimer($event)\"\n ></valtimo-process-diagram>\n </div>\n\n <valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"progress.skipTimer.confirmButton\"\n titleTranslationKey=\"progress.skipTimer.confirmTitle\"\n [content]=\"'progress.skipTimer.confirmContent' | translate\"\n [showModalSubject$]=\"showSkipConfirm$\"\n (cancelEvent)=\"onCancelSkipTimer()\"\n (confirmEvent)=\"onConfirmSkipTimer()\"\n ></valtimo-confirmation-modal>\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"] }]
|
|
1404
|
+
}], ctorParameters: () => [{ type: i1$3.ActivatedRoute }, { type: i1$2.DocumentService }, { type: CaseProcessTimerService }, { type: i1.GlobalNotificationService }, { type: i4.TranslateService }, { type: i0.DestroyRef }] });
|
|
1326
1405
|
|
|
1327
1406
|
/*
|
|
1328
1407
|
* Copyright 2015-2026 Ritense BV, the Netherlands.
|
|
@@ -1547,7 +1626,7 @@ class CaseDetailTabS3DocumentsComponent {
|
|
|
1547
1626
|
this.refetch$.next(null);
|
|
1548
1627
|
}
|
|
1549
1628
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: CaseDetailTabS3DocumentsComponent, deps: [{ token: i1.ConfigService }, { token: i1$2.DocumentService }, { token: i3$2.DownloadService }, { token: i1$2.FileSortService }, { token: i1.GlobalNotificationService }, { token: i2.PromptService }, { token: i1$3.ActivatedRoute }, { token: i4.TranslateService }, { token: i3$2.UploadProviderService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1550
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: CaseDetailTabS3DocumentsComponent, isStandalone: false, selector: "valtimo-case-detail-tab-s3-documents", 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-dropzone\n (fileSelected)=\"fileSelected($event)\"\n [acceptedFiles]=\"acceptedFiles\"\n [hideFilePreview]=\"true\"\n [hideTitle]=\"true\"\n [maxFileSize]=\"maxFileSize\"\n [showMaxFileSize]=\"true\"\n [camera]=\"false\"\n [uploading]=\"uploading$ | async\"\n></valtimo-dropzone>\n\n<valtimo-widget>\n <valtimo-carbon-list\n [fields]=\"fields\"\n [items]=\"relatedFiles$ | async\"\n [header]=\"true\"\n [isSearchable]=\"true\"\n [actions]=\"actions\"\n >\n <div header>\n <h3 class=\"list-header-title\">{{ 'Related documents' | translate }}</h3>\n\n <h5 class=\"list-header-description\">\n {{ 'Overview of all documents in this case' | translate }}\n </h5>\n </div>\n </valtimo-carbon-list>\n</valtimo-widget>\n", dependencies: [{ kind: "component", type: i2.WidgetComponent, selector: "valtimo-widget", inputs: ["type", "name", "icon", "contrast", "divider", "title", "subtitle", "collapseAble", "collapse", "additionalClasses"] }, { kind: "component", type: i2.DropzoneComponent, selector: "valtimo-dropzone", inputs: ["title", "hideTitle", "subtitle", "externalError$", "showMaxFileSize", "showAcceptedFiles", "clear$", "disabled", "hideFilePreview", "uploading", "camera", "maxFiles", "maxFileSize", "acceptedFiles"], outputs: ["fileSelected"] }, { kind: "component", type: i2.CarbonListComponent, selector: "valtimo-carbon-list", inputs: ["items", "fields", "tableTranslations", "paginatorConfig", "pagination", "loading", "skeletonRowCount", "actions", "actionItems", "showActionItems", "header", "hideColumnHeader", "initialSortState", "sortState", "isSearchable", "initialSearchValue", "searchDebounceMs", "invalidSearchFields", "searchFields", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped", "hideToolbar", "lockedTooltipTranslationKey", "movingRowsEnabled", "dragAndDrop", "dragAndDropDisabled", "expandedRowTemplate", "expandedRowKey"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged", "moveRow", "itemsReordered"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
|
|
1629
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: CaseDetailTabS3DocumentsComponent, isStandalone: false, selector: "valtimo-case-detail-tab-s3-documents", 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-dropzone\n (fileSelected)=\"fileSelected($event)\"\n [acceptedFiles]=\"acceptedFiles\"\n [hideFilePreview]=\"true\"\n [hideTitle]=\"true\"\n [maxFileSize]=\"maxFileSize\"\n [showMaxFileSize]=\"true\"\n [camera]=\"false\"\n [uploading]=\"uploading$ | async\"\n></valtimo-dropzone>\n\n<valtimo-widget>\n <valtimo-carbon-list\n [fields]=\"fields\"\n [items]=\"relatedFiles$ | async\"\n [header]=\"true\"\n [isSearchable]=\"true\"\n [actions]=\"actions\"\n >\n <div header>\n <h3 class=\"list-header-title\">{{ 'Related documents' | translate }}</h3>\n\n <h5 class=\"list-header-description\">\n {{ 'Overview of all documents in this case' | translate }}\n </h5>\n </div>\n </valtimo-carbon-list>\n</valtimo-widget>\n", dependencies: [{ kind: "component", type: i2.WidgetComponent, selector: "valtimo-widget", inputs: ["type", "name", "icon", "contrast", "divider", "title", "subtitle", "collapseAble", "collapse", "additionalClasses"] }, { kind: "component", type: i2.DropzoneComponent, selector: "valtimo-dropzone", inputs: ["title", "hideTitle", "subtitle", "externalError$", "showMaxFileSize", "showAcceptedFiles", "clear$", "disabled", "hideFilePreview", "uploading", "camera", "maxFiles", "maxFileSize", "acceptedFiles"], outputs: ["fileSelected"] }, { kind: "component", type: i2.CarbonListComponent, selector: "valtimo-carbon-list", inputs: ["items", "fields", "tableTranslations", "paginatorConfig", "pagination", "loading", "skeletonRowCount", "actions", "actionItems", "showActionItems", "header", "hideColumnHeader", "initialSortState", "sortState", "isSearchable", "initialSearchValue", "searchDebounceMs", "invalidSearchFields", "searchFields", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped", "hideToolbar", "lockedTooltipTranslationKey", "movingRowsEnabled", "dragAndDrop", "dragAndDropDisabled", "expandedRowTemplate", "expandedRowKey", "trackByKey"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged", "moveRow", "itemsReordered"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
|
|
1551
1630
|
}
|
|
1552
1631
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: CaseDetailTabS3DocumentsComponent, decorators: [{
|
|
1553
1632
|
type: Component,
|
|
@@ -3082,6 +3161,68 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
3082
3161
|
type: Input
|
|
3083
3162
|
}] } });
|
|
3084
3163
|
|
|
3164
|
+
/*
|
|
3165
|
+
* Copyright 2015-2026 Ritense BV, the Netherlands.
|
|
3166
|
+
*
|
|
3167
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
3168
|
+
* you may not use this file except in compliance with the License.
|
|
3169
|
+
* You may obtain a copy of the License at
|
|
3170
|
+
*
|
|
3171
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
3172
|
+
*
|
|
3173
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
3174
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
3175
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
3176
|
+
* See the License for the specific language governing permissions and
|
|
3177
|
+
* limitations under the License.
|
|
3178
|
+
*/
|
|
3179
|
+
class CaseWidgetTextComponent extends WidgetProcess {
|
|
3180
|
+
set documentId(value) {
|
|
3181
|
+
this.baseDocumentId = value;
|
|
3182
|
+
}
|
|
3183
|
+
set widgetConfiguration(value) {
|
|
3184
|
+
if (!value)
|
|
3185
|
+
return;
|
|
3186
|
+
this.widgetConfiguration$.next(value);
|
|
3187
|
+
this.baseWidgetConfiguration = value;
|
|
3188
|
+
}
|
|
3189
|
+
constructor(documentService, permissionService, widgetsService, widgetLayoutService) {
|
|
3190
|
+
super(documentService, permissionService);
|
|
3191
|
+
this.documentService = documentService;
|
|
3192
|
+
this.permissionService = permissionService;
|
|
3193
|
+
this.widgetsService = widgetsService;
|
|
3194
|
+
this.widgetLayoutService = widgetLayoutService;
|
|
3195
|
+
this.widgetConfiguration$ = new BehaviorSubject(null);
|
|
3196
|
+
}
|
|
3197
|
+
/**
|
|
3198
|
+
* The content of a text widget is part of its configuration, so there is no data to fetch.
|
|
3199
|
+
* The layout still has to be told the widget is ready, because it only considers itself loaded
|
|
3200
|
+
* once at least one widget has reported in — a tab containing only text widgets would otherwise
|
|
3201
|
+
* keep showing its loading state.
|
|
3202
|
+
*/
|
|
3203
|
+
ngOnInit() {
|
|
3204
|
+
this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid);
|
|
3205
|
+
}
|
|
3206
|
+
onProcessStartClick(process) {
|
|
3207
|
+
if (!process.processDefinitionKey)
|
|
3208
|
+
return;
|
|
3209
|
+
this.widgetsService.startProcess(process.processDefinitionKey);
|
|
3210
|
+
}
|
|
3211
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: CaseWidgetTextComponent, deps: [{ token: i1$2.DocumentService }, { token: i2$2.PermissionService }, { token: WidgetsService }, { token: i5$1.WidgetLayoutService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3212
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", type: CaseWidgetTextComponent, isStandalone: true, selector: "valtimo-case-widget-text", 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-text\n *ngIf=\"{widgetConfiguration: widgetConfiguration$ | async} as obs\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\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-text>\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: 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: WidgetTextComponent, selector: "valtimo-widget-text", inputs: ["widgetConfiguration"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
3213
|
+
}
|
|
3214
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: CaseWidgetTextComponent, decorators: [{
|
|
3215
|
+
type: Component,
|
|
3216
|
+
args: [{ selector: 'valtimo-case-widget-text', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [ButtonModule, CommonModule, TranslateModule, WidgetTextComponent], 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-text\n *ngIf=\"{widgetConfiguration: widgetConfiguration$ | async} as obs\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\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-text>\n" }]
|
|
3217
|
+
}], ctorParameters: () => [{ type: i1$2.DocumentService }, { type: i2$2.PermissionService }, { type: WidgetsService }, { type: i5$1.WidgetLayoutService }], propDecorators: { documentId: [{
|
|
3218
|
+
type: Input,
|
|
3219
|
+
args: [{ required: true }]
|
|
3220
|
+
}], widgetConfiguration: [{
|
|
3221
|
+
type: Input
|
|
3222
|
+
}], widgetUuid: [{
|
|
3223
|
+
type: Input
|
|
3224
|
+
}] } });
|
|
3225
|
+
|
|
3085
3226
|
/*
|
|
3086
3227
|
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
3087
3228
|
*
|
|
@@ -3135,6 +3276,7 @@ class CaseDetailWidgetsComponent {
|
|
|
3135
3276
|
[WidgetType.METROLINE]: CaseWidgetMetrolineComponent,
|
|
3136
3277
|
[WidgetType.HIGHLIGHT]: CaseWidgetHighlightComponent,
|
|
3137
3278
|
[WidgetType.IMAGE]: CaseWidgetImageComponent,
|
|
3279
|
+
[WidgetType.TEXT]: CaseWidgetTextComponent,
|
|
3138
3280
|
};
|
|
3139
3281
|
}
|
|
3140
3282
|
ngOnInit() {
|
|
@@ -4371,6 +4513,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
4371
4513
|
args: [{ providedIn: 'root' }]
|
|
4372
4514
|
}], ctorParameters: () => [{ type: i1$1.HttpClient }, { type: i1.ConfigService }] });
|
|
4373
4515
|
|
|
4516
|
+
class CaseProcessTimerService {
|
|
4517
|
+
constructor(http, configService) {
|
|
4518
|
+
this.http = http;
|
|
4519
|
+
this.configService = configService;
|
|
4520
|
+
this._baseUrl = this.configService.config.valtimoApi.endpointUri;
|
|
4521
|
+
}
|
|
4522
|
+
getSkippableTimers(caseId, processInstanceId) {
|
|
4523
|
+
return this.http.get(`${this._baseUrl}v1/process-document/case/${caseId}/process-instance/${processInstanceId}/timers`);
|
|
4524
|
+
}
|
|
4525
|
+
skipTimer(caseId, processInstanceId, jobId) {
|
|
4526
|
+
return this.http.post(`${this._baseUrl}v1/process-document/case/${caseId}/process-instance/${processInstanceId}/timer/${jobId}/skip`, {});
|
|
4527
|
+
}
|
|
4528
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: CaseProcessTimerService, deps: [{ token: i1$1.HttpClient }, { token: i1.ConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
4529
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: CaseProcessTimerService, providedIn: 'root' }); }
|
|
4530
|
+
}
|
|
4531
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: CaseProcessTimerService, decorators: [{
|
|
4532
|
+
type: Injectable,
|
|
4533
|
+
args: [{ providedIn: 'root' }]
|
|
4534
|
+
}], ctorParameters: () => [{ type: i1$1.HttpClient }, { type: i1.ConfigService }] });
|
|
4535
|
+
|
|
4374
4536
|
/*
|
|
4375
4537
|
* Copyright 2015-2026 Ritense BV, the Netherlands.
|
|
4376
4538
|
*
|
|
@@ -4716,11 +4878,15 @@ class CaseDetailsTaskDetailComponent {
|
|
|
4716
4878
|
this.candidateUsers$ = combineLatest([
|
|
4717
4879
|
this.task$.pipe(filter(task => !!task)),
|
|
4718
4880
|
this.canAssignUserToTask$,
|
|
4719
|
-
]).pipe(switchMap(([task, canAssign]) =>
|
|
4881
|
+
]).pipe(switchMap(([task, canAssign]) => canAssign
|
|
4882
|
+
? this.taskService.getCandidateUsers(task.id).pipe(catchError$1(() => of([])))
|
|
4883
|
+
: of([])), shareReplay(1));
|
|
4720
4884
|
this.candidateTeams$ = combineLatest([
|
|
4721
4885
|
this.task$.pipe(filter(task => !!task)),
|
|
4722
4886
|
this.canAssignUserToTask$,
|
|
4723
|
-
]).pipe(switchMap(([task, canAssign]) => canAssign
|
|
4887
|
+
]).pipe(switchMap(([task, canAssign]) => canAssign
|
|
4888
|
+
? this.taskService.getCandidateTeams(task.id).pipe(map(page => page.content), catchError$1(() => of([])))
|
|
4889
|
+
: of([])), shareReplay(1));
|
|
4724
4890
|
this.enableIntermediateSave$ = this.configService.getFeatureToggleObservable('enableIntermediateSave');
|
|
4725
4891
|
}
|
|
4726
4892
|
ngOnDestroy() {
|
|
@@ -4748,10 +4914,9 @@ class CaseDetailsTaskDetailComponent {
|
|
|
4748
4914
|
assignRequest.assignedTeamKey = event.teamKey ?? '';
|
|
4749
4915
|
this.taskService
|
|
4750
4916
|
.assignTask(task.id, assignRequest)
|
|
4751
|
-
.pipe(switchMap(() => this.
|
|
4917
|
+
.pipe(switchMap(() => this.refreshTaskAfterAssignmentChange(task.id)), take(1))
|
|
4752
4918
|
.subscribe(response => {
|
|
4753
|
-
this.
|
|
4754
|
-
this.assignmentOfTaskChanged.emit();
|
|
4919
|
+
this.handleAssignmentChangeResponse(response);
|
|
4755
4920
|
});
|
|
4756
4921
|
});
|
|
4757
4922
|
}
|
|
@@ -4761,13 +4926,29 @@ class CaseDetailsTaskDetailComponent {
|
|
|
4761
4926
|
return;
|
|
4762
4927
|
this.taskService
|
|
4763
4928
|
.unassignTask(task.id)
|
|
4764
|
-
.pipe(switchMap(() => this.
|
|
4929
|
+
.pipe(switchMap(() => this.refreshTaskAfterAssignmentChange(task.id)), take(1))
|
|
4765
4930
|
.subscribe(response => {
|
|
4766
|
-
this.
|
|
4767
|
-
this.assignmentOfTaskChanged.emit();
|
|
4931
|
+
this.handleAssignmentChangeResponse(response);
|
|
4768
4932
|
});
|
|
4769
4933
|
});
|
|
4770
4934
|
}
|
|
4935
|
+
refreshTaskAfterAssignmentChange(taskId) {
|
|
4936
|
+
// The new assignment can change the outcome of permission checks for this task,
|
|
4937
|
+
// so drop cached permissions before the task is re-fetched and re-checked
|
|
4938
|
+
this.permissionService.invalidateResource(TASK_DETAIL_PERMISSION_RESOURCE.task, taskId);
|
|
4939
|
+
// a 403 or 404 means the user can no longer view the task; these are expected
|
|
4940
|
+
// outcomes here, so they are skipped to avoid a global error toast
|
|
4941
|
+
return this.taskService.getTask(taskId, ['403', '404']).pipe(catchError$1(error => (error?.status === 403 || error?.status === 404 ? of(null) : EMPTY)));
|
|
4942
|
+
}
|
|
4943
|
+
handleAssignmentChangeResponse(response) {
|
|
4944
|
+
if (response) {
|
|
4945
|
+
this.refreshTask(response);
|
|
4946
|
+
}
|
|
4947
|
+
else {
|
|
4948
|
+
this.onClose();
|
|
4949
|
+
}
|
|
4950
|
+
this.assignmentOfTaskChanged.emit();
|
|
4951
|
+
}
|
|
4771
4952
|
refreshTask(response) {
|
|
4772
4953
|
const currentTask = this.task$.getValue();
|
|
4773
4954
|
if (!currentTask)
|
|
@@ -5399,6 +5580,7 @@ class CaseDetailComponent {
|
|
|
5399
5580
|
this.openWidgetProcessSubscription();
|
|
5400
5581
|
this.openSmallTitleSubscription();
|
|
5401
5582
|
this.openStartableItemsSseSubscription();
|
|
5583
|
+
this.openCaseStateSseSubscription();
|
|
5402
5584
|
}
|
|
5403
5585
|
ngOnDestroy() {
|
|
5404
5586
|
this.breadcrumbService.clearSecondBreadcrumb();
|
|
@@ -5433,6 +5615,17 @@ class CaseDetailComponent {
|
|
|
5433
5615
|
.pipe(filter(event => event?.documentId === this.documentId), debounceTime(300))
|
|
5434
5616
|
.subscribe(() => this.reloadStartableItems()));
|
|
5435
5617
|
}
|
|
5618
|
+
/**
|
|
5619
|
+
* Keeps the internal status tag and the assignee widget in sync with the current case state.
|
|
5620
|
+
* The status can change without user interaction (e.g. a task completes or a timer expires) and
|
|
5621
|
+
* the assignee can be (un)set from elsewhere. Refresh the document whenever an SSE event signals
|
|
5622
|
+
* such a change for this case, so both re-derive from `document$` without a page reload.
|
|
5623
|
+
*/
|
|
5624
|
+
openCaseStateSseSubscription() {
|
|
5625
|
+
this._subscriptions.add(merge(this.sseService.getSseEventObservable('CASE_ASSIGNED'), this.sseService.getSseEventObservable('CASE_UNASSIGNED'), this.sseService.getSseEventObservable('CASE_STATUS_UPDATED'))
|
|
5626
|
+
.pipe(filter(event => event?.documentId === this.documentId), debounceTime(300))
|
|
5627
|
+
.subscribe(() => this.caseService.refresh()));
|
|
5628
|
+
}
|
|
5436
5629
|
reloadStartableItems() {
|
|
5437
5630
|
this._subscriptions.add(this.documentService
|
|
5438
5631
|
.getStartableItems({ caseDocumentId: this.documentId })
|
|
@@ -6566,7 +6759,7 @@ class CaseListComponent {
|
|
|
6566
6759
|
provide: QUICK_SEARCH_SERVICE,
|
|
6567
6760
|
useClass: CaseListQuickSearchService,
|
|
6568
6761
|
},
|
|
6569
|
-
], 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 invalidSearchFields: orchestration.invalidSearchFields$ | 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 [invalidSearchFields]=\"obs.invalidSearchFields || []\"\n [isSearchable]=\"true\"\n [searchDebounceMs]=\"2000\"\n [searchFields]=\"obs.searchFields || []\"\n [items]=\"obs.documentItems\"\n [pagination]=\"pagination\"\n lockedTooltipTranslationKey=\"case.rowLocked\"\n [showSelectionColumn]=\"canHaveAssignee\"\n [tableTranslations]=\"tableTranslations\"\n (paginationClicked)=\"pageChange($event)\"\n (paginationSet)=\"pageSizeChange($event)\"\n (rowClicked)=\"rowClick($event)\"\n (search)=\"onGlobalSearchFilterChange($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.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.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.CarbonListComponent, selector: "valtimo-carbon-list", inputs: ["items", "fields", "tableTranslations", "paginatorConfig", "pagination", "loading", "skeletonRowCount", "actions", "actionItems", "showActionItems", "header", "hideColumnHeader", "initialSortState", "sortState", "isSearchable", "initialSearchValue", "searchDebounceMs", "invalidSearchFields", "searchFields", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped", "hideToolbar", "lockedTooltipTranslationKey", "movingRowsEnabled", "dragAndDrop", "dragAndDropDisabled", "expandedRowTemplate", "expandedRowKey"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged", "moveRow", "itemsReordered"] }, { kind: "component", type: i2.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "component", type: i2.StatusSelectorComponent, selector: "valtimo-status-selector", inputs: ["statuses", "selectedStatusKeys", "carbonTheme", "disabled"], outputs: ["selectedStatusesChangeEvent"] }, { kind: "component", type: i2.CaseTagsSelectorComponent, selector: "valtimo-case-tags-selector", inputs: ["caseTags", "selectedCaseTagKeys", "carbonTheme", "disabled"], outputs: ["selectedCaseTagsChangeEvent"] }, { kind: "component", type: i2.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" }] }); }
|
|
6762
|
+
], 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 invalidSearchFields: orchestration.invalidSearchFields$ | 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 [invalidSearchFields]=\"obs.invalidSearchFields || []\"\n [isSearchable]=\"true\"\n [searchDebounceMs]=\"2000\"\n [searchFields]=\"obs.searchFields || []\"\n [items]=\"obs.documentItems\"\n [pagination]=\"pagination\"\n lockedTooltipTranslationKey=\"case.rowLocked\"\n [showSelectionColumn]=\"canHaveAssignee\"\n [tableTranslations]=\"tableTranslations\"\n (paginationClicked)=\"pageChange($event)\"\n (paginationSet)=\"pageSizeChange($event)\"\n (rowClicked)=\"rowClick($event)\"\n (search)=\"onGlobalSearchFilterChange($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.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.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.CarbonListComponent, selector: "valtimo-carbon-list", inputs: ["items", "fields", "tableTranslations", "paginatorConfig", "pagination", "loading", "skeletonRowCount", "actions", "actionItems", "showActionItems", "header", "hideColumnHeader", "initialSortState", "sortState", "isSearchable", "initialSearchValue", "searchDebounceMs", "invalidSearchFields", "searchFields", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped", "hideToolbar", "lockedTooltipTranslationKey", "movingRowsEnabled", "dragAndDrop", "dragAndDropDisabled", "expandedRowTemplate", "expandedRowKey", "trackByKey"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged", "moveRow", "itemsReordered"] }, { kind: "component", type: i2.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "component", type: i2.StatusSelectorComponent, selector: "valtimo-status-selector", inputs: ["statuses", "selectedStatusKeys", "carbonTheme", "disabled"], outputs: ["selectedStatusesChangeEvent"] }, { kind: "component", type: i2.CaseTagsSelectorComponent, selector: "valtimo-case-tags-selector", inputs: ["caseTags", "selectedCaseTagKeys", "carbonTheme", "disabled"], outputs: ["selectedCaseTagsChangeEvent"] }, { kind: "component", type: i2.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" }] }); }
|
|
6570
6763
|
}
|
|
6571
6764
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: CaseListComponent, decorators: [{
|
|
6572
6765
|
type: Component,
|
|
@@ -7241,7 +7434,7 @@ class CaseInspectionLogsTabComponent {
|
|
|
7241
7434
|
});
|
|
7242
7435
|
}
|
|
7243
7436
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: CaseInspectionLogsTabComponent, deps: [{ token: CaseInspectionService }, { token: i1$5.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7244
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", 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$5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$5.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$5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$5.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.CarbonListComponent, selector: "valtimo-carbon-list", inputs: ["items", "fields", "tableTranslations", "paginatorConfig", "pagination", "loading", "skeletonRowCount", "actions", "actionItems", "showActionItems", "header", "hideColumnHeader", "initialSortState", "sortState", "isSearchable", "initialSearchValue", "searchDebounceMs", "invalidSearchFields", "searchFields", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped", "hideToolbar", "lockedTooltipTranslationKey", "movingRowsEnabled", "dragAndDrop", "dragAndDropDisabled", "expandedRowTemplate", "expandedRowKey"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged", "moveRow", "itemsReordered"] }, { kind: "component", type: i2.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 }); }
|
|
7437
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", 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$5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$5.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$5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$5.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.CarbonListComponent, selector: "valtimo-carbon-list", inputs: ["items", "fields", "tableTranslations", "paginatorConfig", "pagination", "loading", "skeletonRowCount", "actions", "actionItems", "showActionItems", "header", "hideColumnHeader", "initialSortState", "sortState", "isSearchable", "initialSearchValue", "searchDebounceMs", "invalidSearchFields", "searchFields", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped", "hideToolbar", "lockedTooltipTranslationKey", "movingRowsEnabled", "dragAndDrop", "dragAndDropDisabled", "expandedRowTemplate", "expandedRowKey", "trackByKey"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged", "moveRow", "itemsReordered"] }, { kind: "component", type: i2.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 }); }
|
|
7245
7438
|
}
|
|
7246
7439
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: CaseInspectionLogsTabComponent, decorators: [{
|
|
7247
7440
|
type: Component,
|
|
@@ -7732,7 +7925,7 @@ class CaseInspectionProcessDetailComponent {
|
|
|
7732
7925
|
});
|
|
7733
7926
|
}
|
|
7734
7927
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: CaseInspectionProcessDetailComponent, deps: [{ token: CaseInspectionService }, { token: i1.GlobalNotificationService }, { token: i4.TranslateService }, { token: i4$1.IconService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7735
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", 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.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 }); }
|
|
7928
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", 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", "skippableTimers", "canSkipTimer", "skipTimerLabel", "reloadToken"], outputs: ["importDone", "skipTimerEvent"] }, { 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.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 }); }
|
|
7736
7929
|
}
|
|
7737
7930
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: CaseInspectionProcessDetailComponent, decorators: [{
|
|
7738
7931
|
type: Component,
|
|
@@ -8368,7 +8561,7 @@ class GenericCaseListComponent {
|
|
|
8368
8561
|
provide: QUICK_SEARCH_SERVICE,
|
|
8369
8562
|
useClass: CaseListQuickSearchService,
|
|
8370
8563
|
},
|
|
8371
|
-
], 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 ~ /*\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\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 [initialSearchValue]=\"allCasesGlobalSearch$ | async\"\n [invalidSearchFields]=\"allCasesInvalidSearchFields$ | async\"\n [isSearchable]=\"true\"\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 (search)=\"allCasesSearch($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 invalidSearchFields: orchestration.invalidSearchFields$ | 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 [initialSearchValue]=\"searchService.globalSearchFilter$ | async\"\n [initialSortState]=\"pagination?.sort\"\n [isSearchable]=\"true\"\n [items]=\"obs.documentItems\"\n [pagination]=\"pagination\"\n paginationIdentifier=\"genericCaseListSpecific\"\n lockedTooltipTranslationKey=\"case.rowLocked\"\n [searchFields]=\"obs.searchFields || []\"\n [invalidSearchFields]=\"obs.invalidSearchFields || []\"\n [showSelectionColumn]=\"canHaveAssignee\"\n [tableTranslations]=\"tableTranslations\"\n (paginationClicked)=\"pageChange($event)\"\n (paginationSet)=\"pageSizeChange($event)\"\n (rowClicked)=\"rowClick($event)\"\n (search)=\"onGlobalSearchFilterChange($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.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.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.CarbonListComponent, selector: "valtimo-carbon-list", inputs: ["items", "fields", "tableTranslations", "paginatorConfig", "pagination", "loading", "skeletonRowCount", "actions", "actionItems", "showActionItems", "header", "hideColumnHeader", "initialSortState", "sortState", "isSearchable", "initialSearchValue", "searchDebounceMs", "invalidSearchFields", "searchFields", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped", "hideToolbar", "lockedTooltipTranslationKey", "movingRowsEnabled", "dragAndDrop", "dragAndDropDisabled", "expandedRowTemplate", "expandedRowKey"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged", "moveRow", "itemsReordered"] }, { kind: "component", type: i2.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "component", type: i2.StatusSelectorComponent, selector: "valtimo-status-selector", inputs: ["statuses", "selectedStatusKeys", "carbonTheme", "disabled"], outputs: ["selectedStatusesChangeEvent"] }, { kind: "directive", type: i2.RenderInPageHeaderDirective, selector: "[renderInPageHeader]", inputs: ["fullWidth"] }, { kind: "component", type: i2.CaseTagsSelectorComponent, selector: "valtimo-case-tags-selector", inputs: ["caseTags", "selectedCaseTagKeys", "carbonTheme", "disabled"], outputs: ["selectedCaseTagsChangeEvent"] }, { kind: "component", type: i2.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" }] }); }
|
|
8564
|
+
], 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 ~ /*\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\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 [initialSearchValue]=\"allCasesGlobalSearch$ | async\"\n [invalidSearchFields]=\"allCasesInvalidSearchFields$ | async\"\n [isSearchable]=\"true\"\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 (search)=\"allCasesSearch($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 invalidSearchFields: orchestration.invalidSearchFields$ | 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 [initialSearchValue]=\"searchService.globalSearchFilter$ | async\"\n [initialSortState]=\"pagination?.sort\"\n [isSearchable]=\"true\"\n [items]=\"obs.documentItems\"\n [pagination]=\"pagination\"\n paginationIdentifier=\"genericCaseListSpecific\"\n lockedTooltipTranslationKey=\"case.rowLocked\"\n [searchFields]=\"obs.searchFields || []\"\n [invalidSearchFields]=\"obs.invalidSearchFields || []\"\n [showSelectionColumn]=\"canHaveAssignee\"\n [tableTranslations]=\"tableTranslations\"\n (paginationClicked)=\"pageChange($event)\"\n (paginationSet)=\"pageSizeChange($event)\"\n (rowClicked)=\"rowClick($event)\"\n (search)=\"onGlobalSearchFilterChange($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.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.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.CarbonListComponent, selector: "valtimo-carbon-list", inputs: ["items", "fields", "tableTranslations", "paginatorConfig", "pagination", "loading", "skeletonRowCount", "actions", "actionItems", "showActionItems", "header", "hideColumnHeader", "initialSortState", "sortState", "isSearchable", "initialSearchValue", "searchDebounceMs", "invalidSearchFields", "searchFields", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped", "hideToolbar", "lockedTooltipTranslationKey", "movingRowsEnabled", "dragAndDrop", "dragAndDropDisabled", "expandedRowTemplate", "expandedRowKey", "trackByKey"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged", "moveRow", "itemsReordered"] }, { kind: "component", type: i2.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "component", type: i2.StatusSelectorComponent, selector: "valtimo-status-selector", inputs: ["statuses", "selectedStatusKeys", "carbonTheme", "disabled"], outputs: ["selectedStatusesChangeEvent"] }, { kind: "directive", type: i2.RenderInPageHeaderDirective, selector: "[renderInPageHeader]", inputs: ["fullWidth"] }, { kind: "component", type: i2.CaseTagsSelectorComponent, selector: "valtimo-case-tags-selector", inputs: ["caseTags", "selectedCaseTagKeys", "carbonTheme", "disabled"], outputs: ["selectedCaseTagsChangeEvent"] }, { kind: "component", type: i2.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" }] }); }
|
|
8372
8565
|
}
|
|
8373
8566
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: GenericCaseListComponent, decorators: [{
|
|
8374
8567
|
type: Component,
|
|
@@ -8867,5 +9060,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
8867
9060
|
* Generated bundle index. Do not edit.
|
|
8868
9061
|
*/
|
|
8869
9062
|
|
|
8870
|
-
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 };
|
|
9063
|
+
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, CaseProcessTimerService, 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 };
|
|
8871
9064
|
//# sourceMappingURL=valtimo-case.mjs.map
|