@valtimo/case 13.39.0 → 13.41.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 +243 -32
- package/fesm2022/valtimo-case.mjs.map +1 -1
- package/lib/components/case-detail/case-detail.component.d.ts.map +1 -1
- package/lib/components/case-detail/tab/progress/progress.component.d.ts +33 -3
- 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-supporting-process-start-modal/case-supporting-process-start-modal.component.d.ts +2 -1
- package/lib/components/case-supporting-process-start-modal/case-supporting-process-start-modal.component.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/lib/utils/index.d.ts +2 -0
- package/lib/utils/index.d.ts.map +1 -0
- package/lib/utils/startable-item-title.util.d.ts +10 -0
- package/lib/utils/startable-item-title.util.d.ts.map +1 -0
- 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';
|
|
@@ -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,124 @@ 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 }));
|
|
1313
|
-
|
|
1314
|
-
|
|
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);
|
|
1347
|
+
}
|
|
1348
|
+
loadProcessInstance(selection) {
|
|
1349
|
+
const item = Array.isArray(selection) ? selection[0] : selection;
|
|
1350
|
+
const processInstanceId = item?.processInstanceId;
|
|
1315
1351
|
if (!!processInstanceId) {
|
|
1316
1352
|
this.selectedProcessInstanceId$.next(processInstanceId);
|
|
1317
1353
|
}
|
|
1318
1354
|
}
|
|
1319
|
-
|
|
1320
|
-
|
|
1355
|
+
/**
|
|
1356
|
+
* The case and process instance the timer belongs to are captured here, so confirming skips the
|
|
1357
|
+
* timer in the context it was requested from, even when the selection or the route changed in the
|
|
1358
|
+
* meantime.
|
|
1359
|
+
*/
|
|
1360
|
+
onRequestSkipTimer(timer) {
|
|
1361
|
+
const processInstanceId = this.selectedProcessInstanceId$.value;
|
|
1362
|
+
this._documentId$.pipe(take(1), takeUntilDestroyed(this.destroyRef)).subscribe(documentId => {
|
|
1363
|
+
if (!documentId || !processInstanceId) {
|
|
1364
|
+
return;
|
|
1365
|
+
}
|
|
1366
|
+
this._pendingSkip$.next({ timer, documentId, processInstanceId });
|
|
1367
|
+
this.showSkipConfirm$.next(true);
|
|
1368
|
+
});
|
|
1369
|
+
}
|
|
1370
|
+
onConfirmSkipTimer() {
|
|
1371
|
+
this.showSkipConfirm$.next(false);
|
|
1372
|
+
const pendingSkip = this._pendingSkip$.value;
|
|
1373
|
+
if (!pendingSkip) {
|
|
1374
|
+
return;
|
|
1375
|
+
}
|
|
1376
|
+
/*
|
|
1377
|
+
The pending skip is cleared before the request is sent, so a repeated confirm cannot submit the
|
|
1378
|
+
same timer twice and a completing request cannot clear a newer pending skip.
|
|
1379
|
+
*/
|
|
1380
|
+
this._pendingSkip$.next(null);
|
|
1381
|
+
this.caseProcessTimerService
|
|
1382
|
+
.skipTimer(pendingSkip.documentId, pendingSkip.processInstanceId, pendingSkip.timer.jobId)
|
|
1383
|
+
// HTTP failures are surfaced globally by HttpErrorInterceptor, so only success is handled here.
|
|
1384
|
+
.subscribe(() => {
|
|
1385
|
+
this.notificationService.showToast({
|
|
1386
|
+
type: 'success',
|
|
1387
|
+
title: this.translateService.instant('progress.skipTimer.successToast'),
|
|
1388
|
+
message: '',
|
|
1389
|
+
});
|
|
1390
|
+
// Skipping a timer can complete the process, so the process instance data is stale too.
|
|
1391
|
+
this._reloadProcessInstances$.next();
|
|
1392
|
+
this._reloadTimers$.next();
|
|
1393
|
+
this.diagramReloadToken$.next(this.diagramReloadToken$.value + 1);
|
|
1394
|
+
});
|
|
1395
|
+
}
|
|
1396
|
+
onCancelSkipTimer() {
|
|
1397
|
+
this.showSkipConfirm$.next(false);
|
|
1398
|
+
this._pendingSkip$.next(null);
|
|
1399
|
+
}
|
|
1400
|
+
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 }); }
|
|
1401
|
+
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-combo-box\n [dropUp]=\"false\"\n [appendInline]=\"true\"\n [disabled]=\"obs.processInstanceItems.isLoading\"\n [label]=\"'progress.process' | translate\"\n [placeholder]=\"'progress.process' | translate\"\n [items]=\"obs.processInstanceItems.value || []\"\n (selected)=\"loadProcessInstance($event)\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\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.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "component", type: i4$1.ComboBox, selector: "cds-combo-box, ibm-combo-box", inputs: ["placeholder", "openMenuAria", "closeMenuAria", "clearSelectionsTitle", "clearSelectionsAria", "clearSelectionTitle", "clearSelectionAria", "id", "labelId", "items", "type", "size", "itemValueKey", "label", "hideLabel", "helperText", "appendInline", "invalid", "invalidText", "warn", "warnText", "maxLength", "theme", "selectionFeedback", "autocomplete", "dropUp", "disabled", "readonly", "fluid"], outputs: ["selected", "submit", "close", "search", "clear"] }, { kind: "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
1402
|
}
|
|
1322
1403
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: CaseDetailTabProgressComponent, decorators: [{
|
|
1323
1404
|
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-
|
|
1325
|
-
}], ctorParameters: () => [{ type: i1$3.ActivatedRoute }, { type: i1$2.DocumentService }] });
|
|
1405
|
+
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-combo-box\n [dropUp]=\"false\"\n [appendInline]=\"true\"\n [disabled]=\"obs.processInstanceItems.isLoading\"\n [label]=\"'progress.process' | translate\"\n [placeholder]=\"'progress.process' | translate\"\n [items]=\"obs.processInstanceItems.value || []\"\n (selected)=\"loadProcessInstance($event)\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\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"] }]
|
|
1406
|
+
}], ctorParameters: () => [{ type: i1$3.ActivatedRoute }, { type: i1$2.DocumentService }, { type: CaseProcessTimerService }, { type: i1.GlobalNotificationService }, { type: i4.TranslateService }, { type: i0.DestroyRef }] });
|
|
1326
1407
|
|
|
1327
1408
|
/*
|
|
1328
1409
|
* Copyright 2015-2026 Ritense BV, the Netherlands.
|
|
@@ -3082,6 +3163,68 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
3082
3163
|
type: Input
|
|
3083
3164
|
}] } });
|
|
3084
3165
|
|
|
3166
|
+
/*
|
|
3167
|
+
* Copyright 2015-2026 Ritense BV, the Netherlands.
|
|
3168
|
+
*
|
|
3169
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
3170
|
+
* you may not use this file except in compliance with the License.
|
|
3171
|
+
* You may obtain a copy of the License at
|
|
3172
|
+
*
|
|
3173
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
3174
|
+
*
|
|
3175
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
3176
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
3177
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
3178
|
+
* See the License for the specific language governing permissions and
|
|
3179
|
+
* limitations under the License.
|
|
3180
|
+
*/
|
|
3181
|
+
class CaseWidgetTextComponent extends WidgetProcess {
|
|
3182
|
+
set documentId(value) {
|
|
3183
|
+
this.baseDocumentId = value;
|
|
3184
|
+
}
|
|
3185
|
+
set widgetConfiguration(value) {
|
|
3186
|
+
if (!value)
|
|
3187
|
+
return;
|
|
3188
|
+
this.widgetConfiguration$.next(value);
|
|
3189
|
+
this.baseWidgetConfiguration = value;
|
|
3190
|
+
}
|
|
3191
|
+
constructor(documentService, permissionService, widgetsService, widgetLayoutService) {
|
|
3192
|
+
super(documentService, permissionService);
|
|
3193
|
+
this.documentService = documentService;
|
|
3194
|
+
this.permissionService = permissionService;
|
|
3195
|
+
this.widgetsService = widgetsService;
|
|
3196
|
+
this.widgetLayoutService = widgetLayoutService;
|
|
3197
|
+
this.widgetConfiguration$ = new BehaviorSubject(null);
|
|
3198
|
+
}
|
|
3199
|
+
/**
|
|
3200
|
+
* The content of a text widget is part of its configuration, so there is no data to fetch.
|
|
3201
|
+
* The layout still has to be told the widget is ready, because it only considers itself loaded
|
|
3202
|
+
* once at least one widget has reported in — a tab containing only text widgets would otherwise
|
|
3203
|
+
* keep showing its loading state.
|
|
3204
|
+
*/
|
|
3205
|
+
ngOnInit() {
|
|
3206
|
+
this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid);
|
|
3207
|
+
}
|
|
3208
|
+
onProcessStartClick(process) {
|
|
3209
|
+
if (!process.processDefinitionKey)
|
|
3210
|
+
return;
|
|
3211
|
+
this.widgetsService.startProcess(process.processDefinitionKey);
|
|
3212
|
+
}
|
|
3213
|
+
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 }); }
|
|
3214
|
+
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 }); }
|
|
3215
|
+
}
|
|
3216
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: CaseWidgetTextComponent, decorators: [{
|
|
3217
|
+
type: Component,
|
|
3218
|
+
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" }]
|
|
3219
|
+
}], ctorParameters: () => [{ type: i1$2.DocumentService }, { type: i2$2.PermissionService }, { type: WidgetsService }, { type: i5$1.WidgetLayoutService }], propDecorators: { documentId: [{
|
|
3220
|
+
type: Input,
|
|
3221
|
+
args: [{ required: true }]
|
|
3222
|
+
}], widgetConfiguration: [{
|
|
3223
|
+
type: Input
|
|
3224
|
+
}], widgetUuid: [{
|
|
3225
|
+
type: Input
|
|
3226
|
+
}] } });
|
|
3227
|
+
|
|
3085
3228
|
/*
|
|
3086
3229
|
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
3087
3230
|
*
|
|
@@ -3135,6 +3278,7 @@ class CaseDetailWidgetsComponent {
|
|
|
3135
3278
|
[WidgetType.METROLINE]: CaseWidgetMetrolineComponent,
|
|
3136
3279
|
[WidgetType.HIGHLIGHT]: CaseWidgetHighlightComponent,
|
|
3137
3280
|
[WidgetType.IMAGE]: CaseWidgetImageComponent,
|
|
3281
|
+
[WidgetType.TEXT]: CaseWidgetTextComponent,
|
|
3138
3282
|
};
|
|
3139
3283
|
}
|
|
3140
3284
|
ngOnInit() {
|
|
@@ -3182,7 +3326,7 @@ class CaseDetailWidgetsComponent {
|
|
|
3182
3326
|
}), filter((configuration) => configuration !== null));
|
|
3183
3327
|
}
|
|
3184
3328
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: CaseDetailWidgetsComponent, deps: [{ token: i1$3.ActivatedRoute }, { token: CaseTabService }, { token: CaseWidgetsApiService }, { token: i5.SseService }, { token: WidgetsService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3185
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", type: CaseDetailWidgetsComponent, isStandalone: true, selector: "ng-component", host: { properties: { "class.tab--no-margin": "this._noMargin", "class.tab--no-background": "this._noBackground", "class.tab--no-min-height": "this._noMinHeight" } }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n@for (widgetGroup of widgetGroups$ | async; track $index) {\n <div *ngIf=\"widgetGroup.divider\" class=\"divider\" [ngClass]=\"{'divider--first': $first}\">\n {{ widgetGroup.divider.title
|
|
3329
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", type: CaseDetailWidgetsComponent, isStandalone: true, selector: "ng-component", host: { properties: { "class.tab--no-margin": "this._noMargin", "class.tab--no-background": "this._noBackground", "class.tab--no-min-height": "this._noMinHeight" } }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n@for (widgetGroup of widgetGroups$ | async; track $index) {\n <div *ngIf=\"widgetGroup.divider\" class=\"divider\" [ngClass]=\"{'divider--first': $first}\">\n {{ widgetGroup.divider.title }}\n </div>\n\n <valtimo-widget-container\n [widgets]=\"widgetGroup.widgets\"\n [widgetComponentMap]=\"widgetComponentMap\"\n [widgetLayout]=\"widgetLayout$ | async\"\n ></valtimo-widget-container>\n}\n", styles: [".loading-container{display:flex;justify-content:center;padding:16px 0}.divider{width:100%;font-weight:700;font-size:20px;padding:32px 0 16px 8px}.divider--first{padding-top:0}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "ngmodule", type: LoadingModule }, { kind: "component", type: WidgetContainerComponent, selector: "valtimo-widget-container", inputs: ["widgets", "widgetLayout", "widgetComponentMap", "widgetParams"] }, { kind: "ngmodule", type: CarbonListModule }, { kind: "ngmodule", type: TranslateModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
3186
3330
|
}
|
|
3187
3331
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: CaseDetailWidgetsComponent, decorators: [{
|
|
3188
3332
|
type: Component,
|
|
@@ -3192,7 +3336,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
3192
3336
|
WidgetContainerComponent,
|
|
3193
3337
|
CarbonListModule,
|
|
3194
3338
|
TranslateModule,
|
|
3195
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n@for (widgetGroup of widgetGroups$ | async; track $index) {\n <div *ngIf=\"widgetGroup.divider\" class=\"divider\" [ngClass]=\"{'divider--first': $first}\">\n {{ widgetGroup.divider.title
|
|
3339
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n@for (widgetGroup of widgetGroups$ | async; track $index) {\n <div *ngIf=\"widgetGroup.divider\" class=\"divider\" [ngClass]=\"{'divider--first': $first}\">\n {{ widgetGroup.divider.title }}\n </div>\n\n <valtimo-widget-container\n [widgets]=\"widgetGroup.widgets\"\n [widgetComponentMap]=\"widgetComponentMap\"\n [widgetLayout]=\"widgetLayout$ | async\"\n ></valtimo-widget-container>\n}\n", styles: [".loading-container{display:flex;justify-content:center;padding:16px 0}.divider{width:100%;font-weight:700;font-size:20px;padding:32px 0 16px 8px}.divider--first{padding-top:0}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
3196
3340
|
}], ctorParameters: () => [{ type: i1$3.ActivatedRoute }, { type: CaseTabService }, { type: CaseWidgetsApiService }, { type: i5.SseService }, { type: WidgetsService }], propDecorators: { _noMargin: [{
|
|
3197
3341
|
type: HostBinding,
|
|
3198
3342
|
args: ['class.tab--no-margin']
|
|
@@ -4371,6 +4515,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
4371
4515
|
args: [{ providedIn: 'root' }]
|
|
4372
4516
|
}], ctorParameters: () => [{ type: i1$1.HttpClient }, { type: i1.ConfigService }] });
|
|
4373
4517
|
|
|
4518
|
+
class CaseProcessTimerService {
|
|
4519
|
+
constructor(http, configService) {
|
|
4520
|
+
this.http = http;
|
|
4521
|
+
this.configService = configService;
|
|
4522
|
+
this._baseUrl = this.configService.config.valtimoApi.endpointUri;
|
|
4523
|
+
}
|
|
4524
|
+
getSkippableTimers(caseId, processInstanceId) {
|
|
4525
|
+
return this.http.get(`${this._baseUrl}v1/process-document/case/${caseId}/process-instance/${processInstanceId}/timers`);
|
|
4526
|
+
}
|
|
4527
|
+
skipTimer(caseId, processInstanceId, jobId) {
|
|
4528
|
+
return this.http.post(`${this._baseUrl}v1/process-document/case/${caseId}/process-instance/${processInstanceId}/timer/${jobId}/skip`, {});
|
|
4529
|
+
}
|
|
4530
|
+
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 }); }
|
|
4531
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: CaseProcessTimerService, providedIn: 'root' }); }
|
|
4532
|
+
}
|
|
4533
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: CaseProcessTimerService, decorators: [{
|
|
4534
|
+
type: Injectable,
|
|
4535
|
+
args: [{ providedIn: 'root' }]
|
|
4536
|
+
}], ctorParameters: () => [{ type: i1$1.HttpClient }, { type: i1.ConfigService }] });
|
|
4537
|
+
|
|
4374
4538
|
/*
|
|
4375
4539
|
* Copyright 2015-2026 Ritense BV, the Netherlands.
|
|
4376
4540
|
*
|
|
@@ -4510,6 +4674,51 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
4510
4674
|
type: Output
|
|
4511
4675
|
}] } });
|
|
4512
4676
|
|
|
4677
|
+
/*
|
|
4678
|
+
* Copyright 2015-2026 Ritense BV, the Netherlands.
|
|
4679
|
+
*
|
|
4680
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
4681
|
+
* you may not use this file except in compliance with the License.
|
|
4682
|
+
* You may obtain a copy of the License at
|
|
4683
|
+
*
|
|
4684
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
4685
|
+
*
|
|
4686
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
4687
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
4688
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
4689
|
+
* See the License for the specific language governing permissions and
|
|
4690
|
+
* limitations under the License.
|
|
4691
|
+
*/
|
|
4692
|
+
/**
|
|
4693
|
+
* Resolves the display title of a startable item (process or building block): a translation keyed on
|
|
4694
|
+
* the item key when one exists, otherwise the item name.
|
|
4695
|
+
*
|
|
4696
|
+
* The key is guarded because it is not always available (for example while a title is derived from
|
|
4697
|
+
* observables that have not emitted yet); `TranslateService.instant` throws on an empty key.
|
|
4698
|
+
*/
|
|
4699
|
+
function resolveStartableItemTitle(translateService, key, name) {
|
|
4700
|
+
if (!key)
|
|
4701
|
+
return name ?? '';
|
|
4702
|
+
const translated = translateService.instant(key);
|
|
4703
|
+
return translated !== key ? translated : name || key;
|
|
4704
|
+
}
|
|
4705
|
+
|
|
4706
|
+
/*
|
|
4707
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
4708
|
+
*
|
|
4709
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
4710
|
+
* you may not use this file except in compliance with the License.
|
|
4711
|
+
* You may obtain a copy of the License at
|
|
4712
|
+
*
|
|
4713
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
4714
|
+
*
|
|
4715
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
4716
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
4717
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
4718
|
+
* See the License for the specific language governing permissions and
|
|
4719
|
+
* limitations under the License.
|
|
4720
|
+
*/
|
|
4721
|
+
|
|
4513
4722
|
/*
|
|
4514
4723
|
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
4515
4724
|
*
|
|
@@ -4942,19 +5151,20 @@ class CaseSupportingProcessStartModalComponent {
|
|
|
4942
5151
|
this.isLoading$ = new BehaviorSubject(true);
|
|
4943
5152
|
this.formErrors$ = new BehaviorSubject([]);
|
|
4944
5153
|
this._formCustomComponentConfig$ = new BehaviorSubject({});
|
|
5154
|
+
// Key of the startable item that is being started, used to resolve its display title. Unlike
|
|
5155
|
+
// processDefinitionKey$ this is also set for building blocks, which have no process definition key.
|
|
5156
|
+
this._startableItemKey$ = new BehaviorSubject('');
|
|
4945
5157
|
this._buildingBlockDefinitionKey = null;
|
|
4946
5158
|
this._buildingBlockDefinitionVersionTag = null;
|
|
4947
5159
|
this.closeModalEvent = new EventEmitter();
|
|
4948
5160
|
this.showDraftConfirmation$ = new BehaviorSubject(false);
|
|
4949
5161
|
this._pendingStartableItem = null;
|
|
4950
5162
|
this.modalTitle$ = combineLatest([
|
|
4951
|
-
this.
|
|
5163
|
+
this._startableItemKey$,
|
|
4952
5164
|
this.processName$,
|
|
5165
|
+
// Re-emit once translations are (re)loaded, so the title picks up a translation override.
|
|
4953
5166
|
this.translateService.stream('key'),
|
|
4954
|
-
]).pipe(map$1(([
|
|
4955
|
-
const translated = this.translateService.instant(processDefinitionKey);
|
|
4956
|
-
return translated !== processDefinitionKey ? translated : processName;
|
|
4957
|
-
}));
|
|
5167
|
+
]).pipe(map$1(([startableItemKey, processName]) => resolveStartableItemTitle(this.translateService, startableItemKey, processName)));
|
|
4958
5168
|
// Whether the active tab exposes a panel and the start form may render in it.
|
|
4959
5169
|
this._panelAvailable = false;
|
|
4960
5170
|
// Whether the current start form is being rendered in the panel instead of the modal.
|
|
@@ -5008,11 +5218,10 @@ class CaseSupportingProcessStartModalComponent {
|
|
|
5008
5218
|
openStartForm(displayType, formSize) {
|
|
5009
5219
|
if (this._panelAvailable && displayType === 'panel') {
|
|
5010
5220
|
this._displayInPanel = true;
|
|
5011
|
-
combineLatest([this.
|
|
5221
|
+
combineLatest([this._startableItemKey$, this.processName$])
|
|
5012
5222
|
.pipe(take$1(1))
|
|
5013
|
-
.subscribe(([
|
|
5014
|
-
const
|
|
5015
|
-
const title = translated !== processDefinitionKey ? translated : processName;
|
|
5223
|
+
.subscribe(([startableItemKey, processName]) => {
|
|
5224
|
+
const title = resolveStartableItemTitle(this.translateService, startableItemKey, processName);
|
|
5016
5225
|
this.caseDetailLayoutService.openStartFormPanel({ template: this.startFormTemplate, title }, formSize);
|
|
5017
5226
|
});
|
|
5018
5227
|
}
|
|
@@ -5063,9 +5272,13 @@ class CaseSupportingProcessStartModalComponent {
|
|
|
5063
5272
|
this._caseDefinitionVersionTag = caseDefinitionVersionTag;
|
|
5064
5273
|
this.processDefinitionId$.next(item.processDefinitionId);
|
|
5065
5274
|
this.processName$.next(item.name || item.key);
|
|
5275
|
+
this._startableItemKey$.next(item.key);
|
|
5066
5276
|
if (item.type === 'BUILDING_BLOCK') {
|
|
5067
5277
|
this._buildingBlockDefinitionKey = item.key;
|
|
5068
5278
|
this._buildingBlockDefinitionVersionTag = item.versionTag;
|
|
5279
|
+
// A building block has no process definition key: clear it so a previously started process
|
|
5280
|
+
// cannot leak its key into the start form that is about to be rendered.
|
|
5281
|
+
this.processDefinitionKey$.next('');
|
|
5069
5282
|
}
|
|
5070
5283
|
else {
|
|
5071
5284
|
this._buildingBlockDefinitionKey = null;
|
|
@@ -5721,9 +5934,7 @@ class CaseDetailComponent {
|
|
|
5721
5934
|
mapStartableItems(items) {
|
|
5722
5935
|
return items.map(item => ({
|
|
5723
5936
|
...item,
|
|
5724
|
-
displayName: this.translateService
|
|
5725
|
-
? this.translateService.instant(item.key)
|
|
5726
|
-
: item.name || item.key,
|
|
5937
|
+
displayName: resolveStartableItemTitle(this.translateService, item.key, item.name),
|
|
5727
5938
|
}));
|
|
5728
5939
|
}
|
|
5729
5940
|
setProcessDropdownWidth() {
|
|
@@ -7763,7 +7974,7 @@ class CaseInspectionProcessDetailComponent {
|
|
|
7763
7974
|
});
|
|
7764
7975
|
}
|
|
7765
7976
|
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 }); }
|
|
7766
|
-
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 }); }
|
|
7977
|
+
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 }); }
|
|
7767
7978
|
}
|
|
7768
7979
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: CaseInspectionProcessDetailComponent, decorators: [{
|
|
7769
7980
|
type: Component,
|
|
@@ -8898,5 +9109,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
8898
9109
|
* Generated bundle index. Do not edit.
|
|
8899
9110
|
*/
|
|
8900
9111
|
|
|
8901
|
-
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 };
|
|
9112
|
+
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 };
|
|
8902
9113
|
//# sourceMappingURL=valtimo-case.mjs.map
|