@valtimo/case 13.40.0 → 13.42.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 +66 -17
- 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 +1 -1
- package/lib/components/case-detail/tab/progress/progress.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/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
|
@@ -1345,7 +1345,9 @@ class CaseDetailTabProgressComponent {
|
|
|
1345
1345
|
this.canSkipTimer$ = this.skippableTimers$.pipe(map(timers => timers.length > 0));
|
|
1346
1346
|
this._pendingSkip$ = new BehaviorSubject(null);
|
|
1347
1347
|
}
|
|
1348
|
-
loadProcessInstance(
|
|
1348
|
+
loadProcessInstance(selection) {
|
|
1349
|
+
const item = Array.isArray(selection) ? selection[0] : selection;
|
|
1350
|
+
const processInstanceId = item?.processInstanceId;
|
|
1349
1351
|
if (!!processInstanceId) {
|
|
1350
1352
|
this.selectedProcessInstanceId$.next(processInstanceId);
|
|
1351
1353
|
}
|
|
@@ -1396,11 +1398,11 @@ class CaseDetailTabProgressComponent {
|
|
|
1396
1398
|
this._pendingSkip$.next(null);
|
|
1397
1399
|
}
|
|
1398
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 }); }
|
|
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-
|
|
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" }] }); }
|
|
1400
1402
|
}
|
|
1401
1403
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: CaseDetailTabProgressComponent, decorators: [{
|
|
1402
1404
|
type: Component,
|
|
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-
|
|
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"] }]
|
|
1404
1406
|
}], ctorParameters: () => [{ type: i1$3.ActivatedRoute }, { type: i1$2.DocumentService }, { type: CaseProcessTimerService }, { type: i1.GlobalNotificationService }, { type: i4.TranslateService }, { type: i0.DestroyRef }] });
|
|
1405
1407
|
|
|
1406
1408
|
/*
|
|
@@ -3324,7 +3326,7 @@ class CaseDetailWidgetsComponent {
|
|
|
3324
3326
|
}), filter((configuration) => configuration !== null));
|
|
3325
3327
|
}
|
|
3326
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 }); }
|
|
3327
|
-
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 }); }
|
|
3328
3330
|
}
|
|
3329
3331
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: CaseDetailWidgetsComponent, decorators: [{
|
|
3330
3332
|
type: Component,
|
|
@@ -3334,7 +3336,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
3334
3336
|
WidgetContainerComponent,
|
|
3335
3337
|
CarbonListModule,
|
|
3336
3338
|
TranslateModule,
|
|
3337
|
-
], 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"] }]
|
|
3338
3340
|
}], ctorParameters: () => [{ type: i1$3.ActivatedRoute }, { type: CaseTabService }, { type: CaseWidgetsApiService }, { type: i5.SseService }, { type: WidgetsService }], propDecorators: { _noMargin: [{
|
|
3339
3341
|
type: HostBinding,
|
|
3340
3342
|
args: ['class.tab--no-margin']
|
|
@@ -4672,6 +4674,51 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
4672
4674
|
type: Output
|
|
4673
4675
|
}] } });
|
|
4674
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
|
+
|
|
4675
4722
|
/*
|
|
4676
4723
|
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
4677
4724
|
*
|
|
@@ -5104,19 +5151,20 @@ class CaseSupportingProcessStartModalComponent {
|
|
|
5104
5151
|
this.isLoading$ = new BehaviorSubject(true);
|
|
5105
5152
|
this.formErrors$ = new BehaviorSubject([]);
|
|
5106
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('');
|
|
5107
5157
|
this._buildingBlockDefinitionKey = null;
|
|
5108
5158
|
this._buildingBlockDefinitionVersionTag = null;
|
|
5109
5159
|
this.closeModalEvent = new EventEmitter();
|
|
5110
5160
|
this.showDraftConfirmation$ = new BehaviorSubject(false);
|
|
5111
5161
|
this._pendingStartableItem = null;
|
|
5112
5162
|
this.modalTitle$ = combineLatest([
|
|
5113
|
-
this.
|
|
5163
|
+
this._startableItemKey$,
|
|
5114
5164
|
this.processName$,
|
|
5165
|
+
// Re-emit once translations are (re)loaded, so the title picks up a translation override.
|
|
5115
5166
|
this.translateService.stream('key'),
|
|
5116
|
-
]).pipe(map$1(([
|
|
5117
|
-
const translated = this.translateService.instant(processDefinitionKey);
|
|
5118
|
-
return translated !== processDefinitionKey ? translated : processName;
|
|
5119
|
-
}));
|
|
5167
|
+
]).pipe(map$1(([startableItemKey, processName]) => resolveStartableItemTitle(this.translateService, startableItemKey, processName)));
|
|
5120
5168
|
// Whether the active tab exposes a panel and the start form may render in it.
|
|
5121
5169
|
this._panelAvailable = false;
|
|
5122
5170
|
// Whether the current start form is being rendered in the panel instead of the modal.
|
|
@@ -5170,11 +5218,10 @@ class CaseSupportingProcessStartModalComponent {
|
|
|
5170
5218
|
openStartForm(displayType, formSize) {
|
|
5171
5219
|
if (this._panelAvailable && displayType === 'panel') {
|
|
5172
5220
|
this._displayInPanel = true;
|
|
5173
|
-
combineLatest([this.
|
|
5221
|
+
combineLatest([this._startableItemKey$, this.processName$])
|
|
5174
5222
|
.pipe(take$1(1))
|
|
5175
|
-
.subscribe(([
|
|
5176
|
-
const
|
|
5177
|
-
const title = translated !== processDefinitionKey ? translated : processName;
|
|
5223
|
+
.subscribe(([startableItemKey, processName]) => {
|
|
5224
|
+
const title = resolveStartableItemTitle(this.translateService, startableItemKey, processName);
|
|
5178
5225
|
this.caseDetailLayoutService.openStartFormPanel({ template: this.startFormTemplate, title }, formSize);
|
|
5179
5226
|
});
|
|
5180
5227
|
}
|
|
@@ -5225,9 +5272,13 @@ class CaseSupportingProcessStartModalComponent {
|
|
|
5225
5272
|
this._caseDefinitionVersionTag = caseDefinitionVersionTag;
|
|
5226
5273
|
this.processDefinitionId$.next(item.processDefinitionId);
|
|
5227
5274
|
this.processName$.next(item.name || item.key);
|
|
5275
|
+
this._startableItemKey$.next(item.key);
|
|
5228
5276
|
if (item.type === 'BUILDING_BLOCK') {
|
|
5229
5277
|
this._buildingBlockDefinitionKey = item.key;
|
|
5230
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('');
|
|
5231
5282
|
}
|
|
5232
5283
|
else {
|
|
5233
5284
|
this._buildingBlockDefinitionKey = null;
|
|
@@ -5883,9 +5934,7 @@ class CaseDetailComponent {
|
|
|
5883
5934
|
mapStartableItems(items) {
|
|
5884
5935
|
return items.map(item => ({
|
|
5885
5936
|
...item,
|
|
5886
|
-
displayName: this.translateService
|
|
5887
|
-
? this.translateService.instant(item.key)
|
|
5888
|
-
: item.name || item.key,
|
|
5937
|
+
displayName: resolveStartableItemTitle(this.translateService, item.key, item.name),
|
|
5889
5938
|
}));
|
|
5890
5939
|
}
|
|
5891
5940
|
setProcessDropdownWidth() {
|