@valtimo/case 13.4.1 → 13.6.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 +172 -113
- package/fesm2022/valtimo-case.mjs.map +1 -1
- package/lib/case-routing.module.d.ts.map +1 -1
- package/lib/case.module.d.ts.map +1 -1
- package/lib/components/case-detail/case-detail.component.d.ts +2 -2
- package/lib/components/case-detail/case-detail.component.d.ts.map +1 -1
- package/lib/components/case-detail/tab/widgets/components/collection/case-widget-collection.component.d.ts +2 -3
- package/lib/components/case-detail/tab/widgets/components/collection/case-widget-collection.component.d.ts.map +1 -1
- package/lib/components/case-detail/tab/widgets/components/custom/case-widget-custom.component.d.ts +10 -2
- package/lib/components/case-detail/tab/widgets/components/custom/case-widget-custom.component.d.ts.map +1 -1
- package/lib/components/case-detail/tab/widgets/components/field/case-widget-field.component.d.ts +3 -3
- package/lib/components/case-detail/tab/widgets/components/field/case-widget-field.component.d.ts.map +1 -1
- package/lib/components/case-detail/tab/widgets/components/formio/case-widget-formio.component.d.ts +8 -2
- package/lib/components/case-detail/tab/widgets/components/formio/case-widget-formio.component.d.ts.map +1 -1
- package/lib/components/case-detail/tab/widgets/components/map/case-widget-map.component.d.ts +29 -0
- package/lib/components/case-detail/tab/widgets/components/map/case-widget-map.component.d.ts.map +1 -0
- package/lib/components/case-detail/tab/widgets/widgets.component.d.ts +2 -3
- package/lib/components/case-detail/tab/widgets/widgets.component.d.ts.map +1 -1
- package/lib/models/case-widget.model.d.ts +3 -71
- package/lib/models/case-widget.model.d.ts.map +1 -1
- package/lib/models/index.d.ts +1 -3
- package/lib/models/index.d.ts.map +1 -1
- package/lib/models/tab-api.model.d.ts +2 -1
- package/lib/models/tab-api.model.d.ts.map +1 -1
- package/lib/services/case-menu.service.d.ts +4 -2
- package/lib/services/case-menu.service.d.ts.map +1 -1
- package/lib/services/case-widgets-api.service.d.ts +2 -2
- package/lib/services/case-widgets-api.service.d.ts.map +1 -1
- package/package.json +1 -1
- package/lib/models/case-widget-content.model.d.ts +0 -52
- package/lib/models/case-widget-content.model.d.ts.map +0 -1
- package/lib/models/case-widget-display.model.d.ts +0 -62
- package/lib/models/case-widget-display.model.d.ts.map +0 -1
|
@@ -15,10 +15,10 @@ import * as i1$2 from '@angular/router';
|
|
|
15
15
|
import { NavigationStart, RouterModule } from '@angular/router';
|
|
16
16
|
import * as i1$3 from 'ngx-logger';
|
|
17
17
|
import * as i2$1 from '@valtimo/components';
|
|
18
|
-
import { FormioOptionsImpl, TimelineItemImpl, CASES_WITHOUT_STATUS_KEY, CarbonListModule, EllipsisPipe, FormIoModule, WidgetModule, CurrentCarbonTheme, CARBON_THEME,
|
|
18
|
+
import { FormioOptionsImpl, TimelineItemImpl, CASES_WITHOUT_STATUS_KEY, CarbonListModule, EllipsisPipe, FormIoModule, WidgetModule, CurrentCarbonTheme, CARBON_THEME, ObserveSizeDirective, ValtimoCdsModalDirective, RenderInBodyComponent, ViewType, QUICK_SEARCH_SERVICE, CarbonListComponent, BpmnJsDiagramModule, TimelineModule, CamundaFormModule, FilterSidebarModule, DataListModule, ModalModule as ModalModule$1, SpinnerModule, UploaderModule, DropzoneModule, SelectModule, InputLabelModule, ParagraphModule, TableModule, VModalModule, SearchableDropdownSelectModule, SearchFieldsModule, InputModule as InputModule$1, FormModule as FormModule$1, ConfirmationModalModule, IsArrayPipe, StatusSelectorComponent, RenderInPageHeaderDirective, ValtimoCdsOverflowButtonDirective, CaseTagsSelectorComponent, ListColumnViewComponent, QuickSearchComponent } from '@valtimo/components';
|
|
19
19
|
export { CASES_WITHOUT_STATUS_KEY } from '@valtimo/components';
|
|
20
20
|
import moment from 'moment';
|
|
21
|
-
import { catchError, switchMap as switchMap$1, map as map$1, tap as tap$1, take as take$1 } from 'rxjs/operators';
|
|
21
|
+
import { catchError, switchMap as switchMap$1, map as map$1, tap as tap$1, take as take$1, filter as filter$1 } from 'rxjs/operators';
|
|
22
22
|
import * as i3 from '@valtimo/form';
|
|
23
23
|
import { FormModule } from '@valtimo/form';
|
|
24
24
|
import * as i5 from '@valtimo/sse';
|
|
@@ -34,7 +34,7 @@ import { NgbTooltipModule, NgbButtonsModule, NgbPaginationModule, NgbModule } fr
|
|
|
34
34
|
import * as i3$2 from '@valtimo/resource';
|
|
35
35
|
import * as i2$3 from '@valtimo/access-control';
|
|
36
36
|
import * as i5$1 from '@valtimo/layout';
|
|
37
|
-
import { WidgetFieldComponent, WidgetCustomComponent, WidgetFormioComponent, WidgetTableComponent, WidgetCollectionComponent, WidgetType, WidgetContainerComponent } from '@valtimo/layout';
|
|
37
|
+
import { WidgetFieldComponent, WidgetActionButtonComponent, WidgetCustomComponent, WidgetFormioComponent, WidgetTableComponent, WidgetCollectionComponent, WidgetMapComponent, WidgetType, WidgetContainerComponent } from '@valtimo/layout';
|
|
38
38
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
39
39
|
import { isEqual } from 'lodash-es';
|
|
40
40
|
import { UserFilled20, ChevronDown16 } from '@carbon/icons';
|
|
@@ -780,75 +780,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
780
780
|
* limitations under the License.
|
|
781
781
|
*/
|
|
782
782
|
|
|
783
|
-
/*
|
|
784
|
-
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
785
|
-
*
|
|
786
|
-
* Licensed under EUPL, Version 1.2 (the "License");
|
|
787
|
-
* you may not use this file except in compliance with the License.
|
|
788
|
-
* You may obtain a copy of the License at
|
|
789
|
-
*
|
|
790
|
-
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
791
|
-
*
|
|
792
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
793
|
-
* distributed under the License is distributed on an "AS IS" basis,
|
|
794
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
795
|
-
* See the License for the specific language governing permissions and
|
|
796
|
-
* limitations under the License.
|
|
797
|
-
*/
|
|
798
|
-
|
|
799
|
-
/*
|
|
800
|
-
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
801
|
-
*
|
|
802
|
-
* Licensed under EUPL, Version 1.2 (the "License");
|
|
803
|
-
* you may not use this file except in compliance with the License.
|
|
804
|
-
* You may obtain a copy of the License at
|
|
805
|
-
*
|
|
806
|
-
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
807
|
-
*
|
|
808
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
809
|
-
* distributed under the License is distributed on an "AS IS" basis,
|
|
810
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
811
|
-
* See the License for the specific language governing permissions and
|
|
812
|
-
* limitations under the License.
|
|
813
|
-
*/
|
|
814
|
-
var CaseWidgetDisplayTypeKey;
|
|
815
|
-
(function (CaseWidgetDisplayTypeKey) {
|
|
816
|
-
CaseWidgetDisplayTypeKey["TEXT"] = "text";
|
|
817
|
-
CaseWidgetDisplayTypeKey["BOOLEAN"] = "boolean";
|
|
818
|
-
CaseWidgetDisplayTypeKey["CURRENCY"] = "currency";
|
|
819
|
-
CaseWidgetDisplayTypeKey["DATE"] = "date";
|
|
820
|
-
CaseWidgetDisplayTypeKey["DATE_TIME"] = "datetime";
|
|
821
|
-
CaseWidgetDisplayTypeKey["ENUM"] = "enum";
|
|
822
|
-
CaseWidgetDisplayTypeKey["NUMBER"] = "number";
|
|
823
|
-
CaseWidgetDisplayTypeKey["PERCENT"] = "percent";
|
|
824
|
-
CaseWidgetDisplayTypeKey["LINK"] = "link";
|
|
825
|
-
})(CaseWidgetDisplayTypeKey || (CaseWidgetDisplayTypeKey = {}));
|
|
826
|
-
|
|
827
|
-
/*
|
|
828
|
-
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
829
|
-
*
|
|
830
|
-
* Licensed under EUPL, Version 1.2 (the "License");
|
|
831
|
-
* you may not use this file except in compliance with the License.
|
|
832
|
-
* You may obtain a copy of the License at
|
|
833
|
-
*
|
|
834
|
-
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
835
|
-
*
|
|
836
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
837
|
-
* distributed under the License is distributed on an "AS IS" basis,
|
|
838
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
839
|
-
* See the License for the specific language governing permissions and
|
|
840
|
-
* limitations under the License.
|
|
841
|
-
*/
|
|
842
|
-
var CaseWidgetType;
|
|
843
|
-
(function (CaseWidgetType) {
|
|
844
|
-
CaseWidgetType["FIELDS"] = "fields";
|
|
845
|
-
CaseWidgetType["TABLE"] = "table";
|
|
846
|
-
CaseWidgetType["CUSTOM"] = "custom";
|
|
847
|
-
CaseWidgetType["COLLECTION"] = "collection";
|
|
848
|
-
CaseWidgetType["FORMIO"] = "formio";
|
|
849
|
-
CaseWidgetType["DIVIDER"] = "divider";
|
|
850
|
-
})(CaseWidgetType || (CaseWidgetType = {}));
|
|
851
|
-
|
|
852
783
|
/*
|
|
853
784
|
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
854
785
|
*
|
|
@@ -926,6 +857,7 @@ var ApiTabType;
|
|
|
926
857
|
ApiTabType["FORMIO"] = "formio";
|
|
927
858
|
ApiTabType["CUSTOM"] = "custom";
|
|
928
859
|
ApiTabType["WIDGETS"] = "widgets";
|
|
860
|
+
ApiTabType["MAP"] = "map";
|
|
929
861
|
})(ApiTabType || (ApiTabType = {}));
|
|
930
862
|
|
|
931
863
|
class TabLoaderImpl {
|
|
@@ -2285,10 +2217,12 @@ class CaseWidgetFieldComponent extends WidgetProcess {
|
|
|
2285
2217
|
}));
|
|
2286
2218
|
}
|
|
2287
2219
|
onProcessStartClick(process) {
|
|
2220
|
+
if (!process.processDefinitionKey)
|
|
2221
|
+
return;
|
|
2288
2222
|
this.widgetsService.startProcess(process.processDefinitionKey);
|
|
2289
2223
|
}
|
|
2290
2224
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseWidgetFieldComponent, deps: [{ token: i2.DocumentService }, { token: i2$3.PermissionService }, { token: WidgetsService }, { token: CaseTabService }, { token: CaseWidgetsApiService }, { token: i5$1.WidgetLayoutService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2291
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: CaseWidgetFieldComponent, isStandalone: true, selector: "valtimo-case-widget-field", inputs: { documentId: "documentId", widgetConfiguration: "widgetConfiguration", widgetUuid: "widgetUuid" }, usesInheritance: true, ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-widget-field\n *ngIf=\"{\n widgetConfiguration: widgetConfiguration$ | async,\n widgetData: widgetData$ | async,\n } as obs\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetData]=\"obs.widgetData\"\n>\n @if (obs.widgetConfiguration
|
|
2225
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: CaseWidgetFieldComponent, isStandalone: true, selector: "valtimo-case-widget-field", inputs: { documentId: "documentId", widgetConfiguration: "widgetConfiguration", widgetUuid: "widgetUuid" }, usesInheritance: true, ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-widget-field\n *ngIf=\"{\n widgetConfiguration: widgetConfiguration$ | async,\n widgetData: widgetData$ | async,\n } as obs\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetData]=\"obs.widgetData\"\n>\n @if (obs.widgetConfiguration?.actions?.length === 1) {\n @if (obs.widgetConfiguration.actions[0].processDefinitionKey) {\n <button\n *ngIf=\"canCreateCamundaExecution$ | async\"\n cdsButton=\"ghost\"\n (click)=\"onProcessStartClick(obs.widgetConfiguration.actions[0])\"\n >\n {{ obs.widgetConfiguration.actions[0].name }}\n </button>\n }\n }\n</valtimo-widget-field>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "ngmodule", type: InputModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: CarbonListModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i4$1.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "component", type: WidgetFieldComponent, selector: "valtimo-widget-field", inputs: ["widgetConfiguration", "widgetData", "compact"], outputs: ["noVisibleFieldsEvent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2292
2226
|
}
|
|
2293
2227
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseWidgetFieldComponent, decorators: [{
|
|
2294
2228
|
type: Component,
|
|
@@ -2300,7 +2234,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
2300
2234
|
EllipsisPipe,
|
|
2301
2235
|
ButtonModule,
|
|
2302
2236
|
WidgetFieldComponent,
|
|
2303
|
-
|
|
2237
|
+
WidgetActionButtonComponent,
|
|
2238
|
+
], template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-widget-field\n *ngIf=\"{\n widgetConfiguration: widgetConfiguration$ | async,\n widgetData: widgetData$ | async,\n } as obs\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetData]=\"obs.widgetData\"\n>\n @if (obs.widgetConfiguration?.actions?.length === 1) {\n @if (obs.widgetConfiguration.actions[0].processDefinitionKey) {\n <button\n *ngIf=\"canCreateCamundaExecution$ | async\"\n cdsButton=\"ghost\"\n (click)=\"onProcessStartClick(obs.widgetConfiguration.actions[0])\"\n >\n {{ obs.widgetConfiguration.actions[0].name }}\n </button>\n }\n }\n</valtimo-widget-field>\n" }]
|
|
2304
2239
|
}], ctorParameters: () => [{ type: i2.DocumentService }, { type: i2$3.PermissionService }, { type: WidgetsService }, { type: CaseTabService }, { type: CaseWidgetsApiService }, { type: i5$1.WidgetLayoutService }], propDecorators: { documentId: [{
|
|
2305
2240
|
type: Input,
|
|
2306
2241
|
args: [{ required: true }]
|
|
@@ -2328,6 +2263,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
2328
2263
|
class CaseWidgetCustomComponent extends WidgetProcess {
|
|
2329
2264
|
set documentId(value) {
|
|
2330
2265
|
this.baseDocumentId = value;
|
|
2266
|
+
this._documentId$.next(value);
|
|
2331
2267
|
}
|
|
2332
2268
|
set widgetConfiguration(value) {
|
|
2333
2269
|
if (!value)
|
|
@@ -2338,23 +2274,41 @@ class CaseWidgetCustomComponent extends WidgetProcess {
|
|
|
2338
2274
|
get widgetConfig$() {
|
|
2339
2275
|
return this._widgetConfigSubject$.pipe(filter(config => config !== null));
|
|
2340
2276
|
}
|
|
2341
|
-
constructor(widgetsService, documentService, permissionService) {
|
|
2277
|
+
constructor(widgetsService, documentService, permissionService, caseTabService, caseWidgetApiService, widgetLayoutService) {
|
|
2342
2278
|
super(documentService, permissionService);
|
|
2343
2279
|
this.widgetsService = widgetsService;
|
|
2344
2280
|
this.documentService = documentService;
|
|
2345
2281
|
this.permissionService = permissionService;
|
|
2282
|
+
this.caseTabService = caseTabService;
|
|
2283
|
+
this.caseWidgetApiService = caseWidgetApiService;
|
|
2284
|
+
this.widgetLayoutService = widgetLayoutService;
|
|
2285
|
+
this._documentId$ = new BehaviorSubject('');
|
|
2346
2286
|
this._widgetConfigSubject$ = new BehaviorSubject(null);
|
|
2287
|
+
this._tabKey$ = this.caseTabService.activeTabKey$;
|
|
2288
|
+
this._refresh$ = this.widgetsService.refreshWidgets$.pipe(startWith(null));
|
|
2289
|
+
this.widgetData$ = combineLatest([
|
|
2290
|
+
this.widgetConfig$,
|
|
2291
|
+
this._tabKey$,
|
|
2292
|
+
this._documentId$,
|
|
2293
|
+
this._refresh$,
|
|
2294
|
+
]).pipe(switchMap(([widget, tabKey, documentId]) => this.caseWidgetApiService.getWidgetData(documentId, tabKey, widget.key, undefined)), tap(() => {
|
|
2295
|
+
this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid);
|
|
2296
|
+
}), catchError$1((error) => {
|
|
2297
|
+
if (error.status === 404)
|
|
2298
|
+
this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid);
|
|
2299
|
+
return of(null);
|
|
2300
|
+
}));
|
|
2347
2301
|
}
|
|
2348
2302
|
onProcessStartClick(process) {
|
|
2349
2303
|
this.widgetsService.startProcess(process.processDefinitionKey);
|
|
2350
2304
|
}
|
|
2351
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseWidgetCustomComponent, deps: [{ token: WidgetsService }, { token: i2.DocumentService }, { token: i2$3.PermissionService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2352
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: CaseWidgetCustomComponent, isStandalone: true, selector: "valtimo-case-widget-custom", inputs: { documentId: "documentId", widgetConfiguration: "widgetConfiguration", widgetUuid: "widgetUuid" }, usesInheritance: true, ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-widget-custom\n *ngIf=\"widgetConfig$ | async as
|
|
2305
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseWidgetCustomComponent, deps: [{ token: WidgetsService }, { token: i2.DocumentService }, { token: i2$3.PermissionService }, { token: CaseTabService }, { token: CaseWidgetsApiService }, { token: i5$1.WidgetLayoutService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2306
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: CaseWidgetCustomComponent, isStandalone: true, selector: "valtimo-case-widget-custom", inputs: { documentId: "documentId", widgetConfiguration: "widgetConfiguration", widgetUuid: "widgetUuid" }, usesInheritance: true, ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-widget-custom\n *ngIf=\"{\n widgetConfiguration: widgetConfig$ | async,\n widgetData: widgetData$ | async,\n } as obs\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetData]=\"obs.widgetData\"\n [widgetUuid]=\"widgetUuid\"\n>\n @if (obs.widgetConfiguration?.actions?.length === 1) {\n @if (obs.widgetConfiguration.actions[0].processDefinitionKey) {\n <button\n *ngIf=\"canCreateCamundaExecution$ | async\"\n cdsButton=\"ghost\"\n (click)=\"onProcessStartClick(obs.widgetConfiguration.actions[0])\"\n >\n {{ obs.widgetConfiguration.actions[0].name }}\n </button>\n }\n }\n</valtimo-widget-custom>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "ngmodule", type: CarbonListModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i4$1.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "component", type: WidgetCustomComponent, selector: "valtimo-widget-custom", inputs: ["widgetConfiguration", "widgetData", "widgetUuid"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2353
2307
|
}
|
|
2354
2308
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseWidgetCustomComponent, decorators: [{
|
|
2355
2309
|
type: Component,
|
|
2356
|
-
args: [{ selector: 'valtimo-case-widget-custom', standalone: true, imports: [CommonModule, CarbonListModule, TranslateModule, ButtonModule, WidgetCustomComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-widget-custom\n *ngIf=\"widgetConfig$ | async as
|
|
2357
|
-
}], ctorParameters: () => [{ type: WidgetsService }, { type: i2.DocumentService }, { type: i2$3.PermissionService }], propDecorators: { documentId: [{
|
|
2310
|
+
args: [{ selector: 'valtimo-case-widget-custom', standalone: true, imports: [CommonModule, CarbonListModule, TranslateModule, ButtonModule, WidgetCustomComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-widget-custom\n *ngIf=\"{\n widgetConfiguration: widgetConfig$ | async,\n widgetData: widgetData$ | async,\n } as obs\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetData]=\"obs.widgetData\"\n [widgetUuid]=\"widgetUuid\"\n>\n @if (obs.widgetConfiguration?.actions?.length === 1) {\n @if (obs.widgetConfiguration.actions[0].processDefinitionKey) {\n <button\n *ngIf=\"canCreateCamundaExecution$ | async\"\n cdsButton=\"ghost\"\n (click)=\"onProcessStartClick(obs.widgetConfiguration.actions[0])\"\n >\n {{ obs.widgetConfiguration.actions[0].name }}\n </button>\n }\n }\n</valtimo-widget-custom>\n" }]
|
|
2311
|
+
}], ctorParameters: () => [{ type: WidgetsService }, { type: i2.DocumentService }, { type: i2$3.PermissionService }, { type: CaseTabService }, { type: CaseWidgetsApiService }, { type: i5$1.WidgetLayoutService }], propDecorators: { documentId: [{
|
|
2358
2312
|
type: Input,
|
|
2359
2313
|
args: [{ required: true }]
|
|
2360
2314
|
}], widgetConfiguration: [{
|
|
@@ -2396,16 +2350,32 @@ class CaseWidgetFormioComponent extends WidgetProcess {
|
|
|
2396
2350
|
get documentId$() {
|
|
2397
2351
|
return this._documentIdSubject$.pipe(filter(id => !!id));
|
|
2398
2352
|
}
|
|
2399
|
-
constructor(documentService, permissionService,
|
|
2353
|
+
constructor(documentService, permissionService, widgetsService, destroyRef, caseTabService, caseWidgetApiService, widgetLayoutService) {
|
|
2400
2354
|
super(documentService, permissionService);
|
|
2401
2355
|
this.documentService = documentService;
|
|
2402
2356
|
this.permissionService = permissionService;
|
|
2403
|
-
this.layoutService = layoutService;
|
|
2404
2357
|
this.widgetsService = widgetsService;
|
|
2405
2358
|
this.destroyRef = destroyRef;
|
|
2359
|
+
this.caseTabService = caseTabService;
|
|
2360
|
+
this.caseWidgetApiService = caseWidgetApiService;
|
|
2361
|
+
this.widgetLayoutService = widgetLayoutService;
|
|
2406
2362
|
this._widgetConfigurationSubject$ = new BehaviorSubject(null);
|
|
2407
2363
|
this.refreshForm = new EventEmitter();
|
|
2408
2364
|
this._documentIdSubject$ = new BehaviorSubject('');
|
|
2365
|
+
this._tabKey$ = this.caseTabService.activeTabKey$;
|
|
2366
|
+
this._refresh$ = this.widgetsService.refreshWidgets$.pipe(startWith(null));
|
|
2367
|
+
this.widgetData$ = combineLatest([
|
|
2368
|
+
this._widgetConfigurationSubject$,
|
|
2369
|
+
this._tabKey$,
|
|
2370
|
+
this._documentIdSubject$,
|
|
2371
|
+
this._refresh$,
|
|
2372
|
+
]).pipe(switchMap(([widget, tabKey, documentId]) => this.caseWidgetApiService.getWidgetData(documentId, tabKey, widget.key, undefined)), tap(() => {
|
|
2373
|
+
this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid);
|
|
2374
|
+
}), catchError$1((error) => {
|
|
2375
|
+
if (error.status === 404)
|
|
2376
|
+
this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid);
|
|
2377
|
+
return of(null);
|
|
2378
|
+
}));
|
|
2409
2379
|
}
|
|
2410
2380
|
ngOnInit() {
|
|
2411
2381
|
this.widgetsService.refreshWidgets$
|
|
@@ -2415,13 +2385,13 @@ class CaseWidgetFormioComponent extends WidgetProcess {
|
|
|
2415
2385
|
onProcessStartClick(process) {
|
|
2416
2386
|
this.widgetsService.startProcess(process.processDefinitionKey);
|
|
2417
2387
|
}
|
|
2418
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseWidgetFormioComponent, deps: [{ token: i2.DocumentService }, { token: i2$3.PermissionService }, { token:
|
|
2419
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: CaseWidgetFormioComponent, isStandalone: true, selector: "valtimo-case-widget-formio", inputs: { documentId: "documentId", widgetConfiguration: "widgetConfiguration", widgetUuid: "widgetUuid" }, usesInheritance: true, ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-widget-formio\n *ngIf=\"{\n widgetConfiguration: widgetConfiguration$ | async,\n documentId: documentId$ | async,\n } as obs\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [documentId]=\"obs.documentId\"\n [widgetUuid]=\"widgetUuid\"\n [refreshForm]=\"refreshForm\"\n>\n @if (obs.widgetConfiguration?.actions?.length === 1) {\n <button\n
|
|
2388
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseWidgetFormioComponent, deps: [{ token: i2.DocumentService }, { token: i2$3.PermissionService }, { token: WidgetsService }, { token: i0.DestroyRef }, { token: CaseTabService }, { token: CaseWidgetsApiService }, { token: i5$1.WidgetLayoutService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2389
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: CaseWidgetFormioComponent, isStandalone: true, selector: "valtimo-case-widget-formio", inputs: { documentId: "documentId", widgetConfiguration: "widgetConfiguration", widgetUuid: "widgetUuid" }, usesInheritance: true, ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-widget-formio\n *ngIf=\"{\n widgetConfiguration: widgetConfiguration$ | async,\n widgetData: widgetData$ | async,\n documentId: documentId$ | async,\n } as obs\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetData]=\"obs.widgetData\"\n [documentId]=\"obs.documentId\"\n [widgetUuid]=\"widgetUuid\"\n [refreshForm]=\"refreshForm\"\n>\n @if (obs.widgetConfiguration?.actions?.length === 1) {\n @if (obs.widgetConfiguration.actions[0].processDefinitionKey) {\n <button\n *ngIf=\"canCreateCamundaExecution$ | async\"\n cdsButton=\"ghost\"\n (click)=\"onProcessStartClick(obs.widgetConfiguration.actions[0])\"\n >\n {{ obs.widgetConfiguration.actions[0].name }}\n </button>\n }\n }\n</valtimo-widget-formio>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: FormIoModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i4$1.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "component", type: WidgetFormioComponent, selector: "valtimo-widget-formio", inputs: ["documentId", "widgetConfiguration", "widgetData", "widgetUuid", "refreshForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2420
2390
|
}
|
|
2421
2391
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseWidgetFormioComponent, decorators: [{
|
|
2422
2392
|
type: Component,
|
|
2423
|
-
args: [{ selector: 'valtimo-case-widget-formio', standalone: true, imports: [CommonModule, TranslateModule, FormIoModule, ButtonModule, WidgetFormioComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-widget-formio\n *ngIf=\"{\n widgetConfiguration: widgetConfiguration$ | async,\n documentId: documentId$ | async,\n } as obs\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [documentId]=\"obs.documentId\"\n [widgetUuid]=\"widgetUuid\"\n [refreshForm]=\"refreshForm\"\n>\n @if (obs.widgetConfiguration?.actions?.length === 1) {\n <button\n
|
|
2424
|
-
}], ctorParameters: () => [{ type: i2.DocumentService }, { type: i2$3.PermissionService }, { type:
|
|
2393
|
+
args: [{ selector: 'valtimo-case-widget-formio', standalone: true, imports: [CommonModule, TranslateModule, FormIoModule, ButtonModule, WidgetFormioComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-widget-formio\n *ngIf=\"{\n widgetConfiguration: widgetConfiguration$ | async,\n widgetData: widgetData$ | async,\n documentId: documentId$ | async,\n } as obs\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetData]=\"obs.widgetData\"\n [documentId]=\"obs.documentId\"\n [widgetUuid]=\"widgetUuid\"\n [refreshForm]=\"refreshForm\"\n>\n @if (obs.widgetConfiguration?.actions?.length === 1) {\n @if (obs.widgetConfiguration.actions[0].processDefinitionKey) {\n <button\n *ngIf=\"canCreateCamundaExecution$ | async\"\n cdsButton=\"ghost\"\n (click)=\"onProcessStartClick(obs.widgetConfiguration.actions[0])\"\n >\n {{ obs.widgetConfiguration.actions[0].name }}\n </button>\n }\n }\n</valtimo-widget-formio>\n" }]
|
|
2394
|
+
}], ctorParameters: () => [{ type: i2.DocumentService }, { type: i2$3.PermissionService }, { type: WidgetsService }, { type: i0.DestroyRef }, { type: CaseTabService }, { type: CaseWidgetsApiService }, { type: i5$1.WidgetLayoutService }], propDecorators: { documentId: [{
|
|
2425
2395
|
type: Input
|
|
2426
2396
|
}], widgetConfiguration: [{
|
|
2427
2397
|
type: Input
|
|
@@ -2500,7 +2470,7 @@ class CaseWidgetTableComponent extends WidgetProcess {
|
|
|
2500
2470
|
return `size=${widgetConfiguration.properties.defaultPageSize}`;
|
|
2501
2471
|
}
|
|
2502
2472
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseWidgetTableComponent, deps: [{ token: i2.DocumentService }, { token: i2$3.PermissionService }, { token: CaseWidgetsApiService }, { token: WidgetsService }, { token: CaseTabService }, { token: i5$1.WidgetLayoutService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2503
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: CaseWidgetTableComponent, isStandalone: true, selector: "valtimo-case-widget-table", inputs: { documentId: "documentId", widgetConfiguration: "widgetConfiguration", widgetUuid: "widgetUuid" }, usesInheritance: true, ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-widget-table\n [widgetData]=\"widgetData$ | async\"\n [widgetConfiguration]=\"widgetConfiguration\"\n (paginationEvent)=\"onPaginationEvent($event)\"\n>\n @if (widgetConfiguration?.actions?.length === 1) {\n <button\n
|
|
2473
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: CaseWidgetTableComponent, isStandalone: true, selector: "valtimo-case-widget-table", inputs: { documentId: "documentId", widgetConfiguration: "widgetConfiguration", widgetUuid: "widgetUuid" }, usesInheritance: true, ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-widget-table\n [widgetData]=\"widgetData$ | async\"\n [widgetConfiguration]=\"widgetConfiguration\"\n (paginationEvent)=\"onPaginationEvent($event)\"\n>\n @if (widgetConfiguration?.actions?.length === 1) {\n @if (widgetConfiguration.actions[0].processDefinitionKey) {\n <button\n *ngIf=\"canCreateCamundaExecution$ | async\"\n cdsButton=\"ghost\"\n (click)=\"onProcessStartClick(widgetConfiguration.actions[0])\"\n >\n {{ widgetConfiguration.actions[0].name }}\n </button>\n }\n }\n</valtimo-widget-table>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "ngmodule", type: CarbonListModule }, { kind: "ngmodule", type: PaginationModule }, { kind: "ngmodule", type: TilesModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i4$1.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "component", type: WidgetTableComponent, selector: "valtimo-widget-table", inputs: ["widgetConfiguration", "widgetData"], outputs: ["paginationEvent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
2504
2474
|
}
|
|
2505
2475
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseWidgetTableComponent, decorators: [{
|
|
2506
2476
|
type: Component,
|
|
@@ -2512,7 +2482,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
2512
2482
|
TranslateModule,
|
|
2513
2483
|
ButtonModule,
|
|
2514
2484
|
WidgetTableComponent,
|
|
2515
|
-
], template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-widget-table\n [widgetData]=\"widgetData$ | async\"\n [widgetConfiguration]=\"widgetConfiguration\"\n (paginationEvent)=\"onPaginationEvent($event)\"\n>\n @if (widgetConfiguration?.actions?.length === 1) {\n <button\n
|
|
2485
|
+
], template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-widget-table\n [widgetData]=\"widgetData$ | async\"\n [widgetConfiguration]=\"widgetConfiguration\"\n (paginationEvent)=\"onPaginationEvent($event)\"\n>\n @if (widgetConfiguration?.actions?.length === 1) {\n @if (widgetConfiguration.actions[0].processDefinitionKey) {\n <button\n *ngIf=\"canCreateCamundaExecution$ | async\"\n cdsButton=\"ghost\"\n (click)=\"onProcessStartClick(widgetConfiguration.actions[0])\"\n >\n {{ widgetConfiguration.actions[0].name }}\n </button>\n }\n }\n</valtimo-widget-table>\n" }]
|
|
2516
2486
|
}], ctorParameters: () => [{ type: i2.DocumentService }, { type: i2$3.PermissionService }, { type: CaseWidgetsApiService }, { type: WidgetsService }, { type: CaseTabService }, { type: i5$1.WidgetLayoutService }], propDecorators: { documentId: [{
|
|
2517
2487
|
type: Input,
|
|
2518
2488
|
args: [{ required: true }]
|
|
@@ -2590,13 +2560,13 @@ class CaseWidgetCollectionComponent extends WidgetProcess {
|
|
|
2590
2560
|
this._queryParams$.next(`page=${event.currentPage - 1}&size=${event.pageLength}`);
|
|
2591
2561
|
}
|
|
2592
2562
|
onProcessStartClick(process) {
|
|
2593
|
-
this.widgetsService.startProcess(process.processDefinitionKey);
|
|
2563
|
+
this.widgetsService.startProcess(process.processDefinitionKey ?? '');
|
|
2594
2564
|
}
|
|
2595
2565
|
getPageSizeParam(widgetConfiguration) {
|
|
2596
2566
|
return `size=${widgetConfiguration.properties.defaultPageSize}`;
|
|
2597
2567
|
}
|
|
2598
2568
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseWidgetCollectionComponent, deps: [{ token: i2.DocumentService }, { token: i2$3.PermissionService }, { token: CaseWidgetsApiService }, { token: WidgetsService }, { token: i5$1.WidgetLayoutService }, { token: CaseTabService }, { token: CaseWidgetsApiService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2599
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: CaseWidgetCollectionComponent, isStandalone: true, selector: "valtimo-case-widget-collection", inputs: { documentId: "documentId", widgetConfiguration: "widgetConfiguration", widgetUuid: "widgetUuid" }, usesInheritance: true, ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-widget-collection\n *ngIf=\"{\n widgetConfiguration: widgetConfiguration$ | async,\n widgetData: widgetData$ | async,\n } as obs\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetData]=\"obs.widgetData\"\n (paginationEvent)=\"onPaginationEvent($event)\"\n>\n @if (obs.widgetConfiguration?.actions?.length === 1) {\n <button\n
|
|
2569
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: CaseWidgetCollectionComponent, isStandalone: true, selector: "valtimo-case-widget-collection", inputs: { documentId: "documentId", widgetConfiguration: "widgetConfiguration", widgetUuid: "widgetUuid" }, usesInheritance: true, ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-widget-collection\n *ngIf=\"{\n widgetConfiguration: widgetConfiguration$ | async,\n widgetData: widgetData$ | async,\n } as obs\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetData]=\"obs.widgetData\"\n (paginationEvent)=\"onPaginationEvent($event)\"\n>\n @if (obs.widgetConfiguration?.actions?.length === 1) {\n @if (obs.widgetConfiguration.actions[0].processDefinitionKey) {\n <button\n *ngIf=\"canCreateCamundaExecution$ | async\"\n cdsButton=\"ghost\"\n (click)=\"onProcessStartClick(obs.widgetConfiguration.actions[0])\"\n >\n {{ obs.widgetConfiguration.actions[0].name }}\n </button>\n }\n }\n</valtimo-widget-collection>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "ngmodule", type: InputModule }, { kind: "ngmodule", type: PaginationModule }, { kind: "ngmodule", type: TilesModule }, { kind: "ngmodule", type: CarbonListModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i4$1.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "component", type: WidgetCollectionComponent, selector: "valtimo-widget-collection", inputs: ["widgetConfiguration", "widgetData"], outputs: ["paginationEvent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
2600
2570
|
}
|
|
2601
2571
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseWidgetCollectionComponent, decorators: [{
|
|
2602
2572
|
type: Component,
|
|
@@ -2609,7 +2579,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
2609
2579
|
TranslateModule,
|
|
2610
2580
|
ButtonModule,
|
|
2611
2581
|
WidgetCollectionComponent,
|
|
2612
|
-
], template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-widget-collection\n *ngIf=\"{\n widgetConfiguration: widgetConfiguration$ | async,\n widgetData: widgetData$ | async,\n } as obs\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetData]=\"obs.widgetData\"\n (paginationEvent)=\"onPaginationEvent($event)\"\n>\n @if (obs.widgetConfiguration?.actions?.length === 1) {\n <button\n
|
|
2582
|
+
], template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-widget-collection\n *ngIf=\"{\n widgetConfiguration: widgetConfiguration$ | async,\n widgetData: widgetData$ | async,\n } as obs\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetData]=\"obs.widgetData\"\n (paginationEvent)=\"onPaginationEvent($event)\"\n>\n @if (obs.widgetConfiguration?.actions?.length === 1) {\n @if (obs.widgetConfiguration.actions[0].processDefinitionKey) {\n <button\n *ngIf=\"canCreateCamundaExecution$ | async\"\n cdsButton=\"ghost\"\n (click)=\"onProcessStartClick(obs.widgetConfiguration.actions[0])\"\n >\n {{ obs.widgetConfiguration.actions[0].name }}\n </button>\n }\n }\n</valtimo-widget-collection>\n" }]
|
|
2613
2583
|
}], ctorParameters: () => [{ type: i2.DocumentService }, { type: i2$3.PermissionService }, { type: CaseWidgetsApiService }, { type: WidgetsService }, { type: i5$1.WidgetLayoutService }, { type: CaseTabService }, { type: CaseWidgetsApiService }], propDecorators: { documentId: [{
|
|
2614
2584
|
type: Input,
|
|
2615
2585
|
args: [{ required: true }]
|
|
@@ -2619,6 +2589,86 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
2619
2589
|
type: Input
|
|
2620
2590
|
}] } });
|
|
2621
2591
|
|
|
2592
|
+
/*
|
|
2593
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
2594
|
+
*
|
|
2595
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
2596
|
+
* you may not use this file except in compliance with the License.
|
|
2597
|
+
* You may obtain a copy of the License at
|
|
2598
|
+
*
|
|
2599
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
2600
|
+
*
|
|
2601
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
2602
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
2603
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
2604
|
+
* See the License for the specific language governing permissions and
|
|
2605
|
+
* limitations under the License.
|
|
2606
|
+
*/
|
|
2607
|
+
class CaseWidgetMapComponent extends WidgetProcess {
|
|
2608
|
+
set documentId(value) {
|
|
2609
|
+
this.baseDocumentId = value;
|
|
2610
|
+
this._documentId$.next(value);
|
|
2611
|
+
}
|
|
2612
|
+
set widgetConfiguration(value) {
|
|
2613
|
+
if (!value)
|
|
2614
|
+
return;
|
|
2615
|
+
this.widgetConfiguration$.next(value);
|
|
2616
|
+
this.baseWidgetConfiguration = value;
|
|
2617
|
+
}
|
|
2618
|
+
constructor(documentService, permissionService, widgetsService, caseTabService, caseWidgetApiService, widgetLayoutService) {
|
|
2619
|
+
super(documentService, permissionService);
|
|
2620
|
+
this.documentService = documentService;
|
|
2621
|
+
this.permissionService = permissionService;
|
|
2622
|
+
this.widgetsService = widgetsService;
|
|
2623
|
+
this.caseTabService = caseTabService;
|
|
2624
|
+
this.caseWidgetApiService = caseWidgetApiService;
|
|
2625
|
+
this.widgetLayoutService = widgetLayoutService;
|
|
2626
|
+
this._documentId$ = new BehaviorSubject('');
|
|
2627
|
+
this.widgetConfiguration$ = new BehaviorSubject(null);
|
|
2628
|
+
this.tabKey$ = this.caseTabService.activeTabKey$;
|
|
2629
|
+
this._refresh$ = this.widgetsService.refreshWidgets$.pipe(startWith(null));
|
|
2630
|
+
this.widgetData$ = combineLatest([
|
|
2631
|
+
this.widgetConfiguration$,
|
|
2632
|
+
this.tabKey$,
|
|
2633
|
+
this._documentId$,
|
|
2634
|
+
this._refresh$,
|
|
2635
|
+
]).pipe(switchMap(([widget, tabkey, documentId]) => this.caseWidgetApiService.getWidgetData(documentId, tabkey, widget.key, undefined)), tap(() => {
|
|
2636
|
+
this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid);
|
|
2637
|
+
}), catchError$1((error) => {
|
|
2638
|
+
if (error.status === 404)
|
|
2639
|
+
this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid);
|
|
2640
|
+
return of(null);
|
|
2641
|
+
}));
|
|
2642
|
+
}
|
|
2643
|
+
onProcessStartClick(process) {
|
|
2644
|
+
if (!process.processDefinitionKey)
|
|
2645
|
+
return;
|
|
2646
|
+
this.widgetsService.startProcess(process.processDefinitionKey);
|
|
2647
|
+
}
|
|
2648
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseWidgetMapComponent, deps: [{ token: i2.DocumentService }, { token: i2$3.PermissionService }, { token: WidgetsService }, { token: CaseTabService }, { token: CaseWidgetsApiService }, { token: i5$1.WidgetLayoutService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2649
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: CaseWidgetMapComponent, isStandalone: true, selector: "valtimo-case-widget-map", inputs: { documentId: "documentId", widgetConfiguration: "widgetConfiguration", widgetUuid: "widgetUuid" }, usesInheritance: true, ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-widget-map\n *ngIf=\"{\n widgetConfiguration: widgetConfiguration$ | async,\n widgetData: widgetData$ | async\n } as obs\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetData]=\"obs.widgetData\"\n>\n @if (\n obs.widgetConfiguration?.actions?.length === 1 &&\n obs.widgetConfiguration.actions[0]?.processDefinitionKey &&\n (canCreateCamundaExecution$ | async)\n ) {\n <button\n cdsButton=\"ghost\"\n (click)=\"onProcessStartClick(obs.widgetConfiguration.actions[0])\"\n >\n {{ obs.widgetConfiguration.actions[0].name }}\n </button>\n }\n</valtimo-widget-map>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "ngmodule", type: InputModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: CarbonListModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i4$1.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "component", type: WidgetMapComponent, selector: "valtimo-widget-map", inputs: ["widgetConfiguration", "widgetData"], outputs: ["noVisibleMapEvent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2650
|
+
}
|
|
2651
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseWidgetMapComponent, decorators: [{
|
|
2652
|
+
type: Component,
|
|
2653
|
+
args: [{ selector: 'valtimo-case-widget-map', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
2654
|
+
CommonModule,
|
|
2655
|
+
InputModule,
|
|
2656
|
+
TranslateModule,
|
|
2657
|
+
CarbonListModule,
|
|
2658
|
+
EllipsisPipe,
|
|
2659
|
+
ButtonModule,
|
|
2660
|
+
WidgetMapComponent,
|
|
2661
|
+
WidgetActionButtonComponent,
|
|
2662
|
+
], template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-widget-map\n *ngIf=\"{\n widgetConfiguration: widgetConfiguration$ | async,\n widgetData: widgetData$ | async\n } as obs\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetData]=\"obs.widgetData\"\n>\n @if (\n obs.widgetConfiguration?.actions?.length === 1 &&\n obs.widgetConfiguration.actions[0]?.processDefinitionKey &&\n (canCreateCamundaExecution$ | async)\n ) {\n <button\n cdsButton=\"ghost\"\n (click)=\"onProcessStartClick(obs.widgetConfiguration.actions[0])\"\n >\n {{ obs.widgetConfiguration.actions[0].name }}\n </button>\n }\n</valtimo-widget-map>\n" }]
|
|
2663
|
+
}], ctorParameters: () => [{ type: i2.DocumentService }, { type: i2$3.PermissionService }, { type: WidgetsService }, { type: CaseTabService }, { type: CaseWidgetsApiService }, { type: i5$1.WidgetLayoutService }], propDecorators: { documentId: [{
|
|
2664
|
+
type: Input,
|
|
2665
|
+
args: [{ required: true }]
|
|
2666
|
+
}], widgetConfiguration: [{
|
|
2667
|
+
type: Input
|
|
2668
|
+
}], widgetUuid: [{
|
|
2669
|
+
type: Input
|
|
2670
|
+
}] } });
|
|
2671
|
+
|
|
2622
2672
|
/*
|
|
2623
2673
|
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
2624
2674
|
*
|
|
@@ -2658,7 +2708,7 @@ class CaseDetailWidgetsComponent {
|
|
|
2658
2708
|
]).pipe(switchMap(([documentId, tabKey, documentUpdatedEvent]) => {
|
|
2659
2709
|
return this.filterDuplicateConfigurations(this.widgetsApiService.getWidgetTabConfiguration(documentId, tabKey), documentUpdatedEvent);
|
|
2660
2710
|
}), shareReplay({ bufferSize: 1, refCount: true }));
|
|
2661
|
-
this.widgetGroups$ = this._widgetConfiguration$.pipe(map(
|
|
2711
|
+
this.widgetGroups$ = this._widgetConfiguration$.pipe(map(widgets => this.toCaseWidgetGroups(widgets)));
|
|
2662
2712
|
this.widgetComponentMap = {
|
|
2663
2713
|
[WidgetType.FIELDS]: CaseWidgetFieldComponent,
|
|
2664
2714
|
[WidgetType.CUSTOM]: CaseWidgetCustomComponent,
|
|
@@ -2666,6 +2716,7 @@ class CaseDetailWidgetsComponent {
|
|
|
2666
2716
|
[WidgetType.TABLE]: CaseWidgetTableComponent,
|
|
2667
2717
|
[WidgetType.INTERACTIVE_TABLE]: CaseWidgetTableComponent,
|
|
2668
2718
|
[WidgetType.COLLECTION]: CaseWidgetCollectionComponent,
|
|
2719
|
+
[WidgetType.MAP]: CaseWidgetMapComponent,
|
|
2669
2720
|
};
|
|
2670
2721
|
}
|
|
2671
2722
|
ngOnInit() {
|
|
@@ -2676,7 +2727,7 @@ class CaseDetailWidgetsComponent {
|
|
|
2676
2727
|
}
|
|
2677
2728
|
toCaseWidgetGroups(widgets) {
|
|
2678
2729
|
const groups = widgets.reduce((acc, widget) => {
|
|
2679
|
-
if (widget.type ===
|
|
2730
|
+
if (widget.type === WidgetType.DIVIDER) {
|
|
2680
2731
|
acc.push({ divider: widget, widgets: [] });
|
|
2681
2732
|
}
|
|
2682
2733
|
else {
|
|
@@ -3040,7 +3091,9 @@ class CaseWidgetsApiService extends BaseApiService {
|
|
|
3040
3091
|
this.configService = configService;
|
|
3041
3092
|
}
|
|
3042
3093
|
getWidgetTabConfiguration(documentId, tabKey) {
|
|
3043
|
-
return this.httpClient
|
|
3094
|
+
return this.httpClient
|
|
3095
|
+
.get(this.getApiUrl(`v1/document/${documentId}/widget-tab/${tabKey}`))
|
|
3096
|
+
.pipe(map((res) => res.widgets));
|
|
3044
3097
|
}
|
|
3045
3098
|
getWidgetData(documentId, tabKey, widgetKey, queryParams) {
|
|
3046
3099
|
return this.httpClient.get(this.getApiUrl(!queryParams
|
|
@@ -3324,10 +3377,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
3324
3377
|
* limitations under the License.
|
|
3325
3378
|
*/
|
|
3326
3379
|
class CaseMenuService {
|
|
3327
|
-
constructor(documentService, sseService, menuService) {
|
|
3380
|
+
constructor(documentService, sseService, menuService, configService) {
|
|
3328
3381
|
this.documentService = documentService;
|
|
3329
3382
|
this.sseService = sseService;
|
|
3330
3383
|
this.menuService = menuService;
|
|
3384
|
+
this.configService = configService;
|
|
3331
3385
|
this._subscriptions = new Subscription();
|
|
3332
3386
|
this.appendCaseMenuItems = (menuItems) => {
|
|
3333
3387
|
return from(this.documentService.getCaseDefinitions({ active: true })).pipe(switchMap$1(definitions => {
|
|
@@ -3347,6 +3401,7 @@ class CaseMenuService {
|
|
|
3347
3401
|
return of(menuItems);
|
|
3348
3402
|
}));
|
|
3349
3403
|
};
|
|
3404
|
+
this.disableCaseCount$ = this.configService.getFeatureToggleObservable('disableCaseCount');
|
|
3350
3405
|
this.menuService.registerAppendMenuItemsFunction(this.appendCaseMenuItems.bind(this));
|
|
3351
3406
|
}
|
|
3352
3407
|
ngOnDestroy() {
|
|
@@ -3355,7 +3410,7 @@ class CaseMenuService {
|
|
|
3355
3410
|
getCountMap(definitions) {
|
|
3356
3411
|
const map = new Map();
|
|
3357
3412
|
definitions.forEach(def => {
|
|
3358
|
-
map.set(def.caseDefinitionKey, new
|
|
3413
|
+
map.set(def.caseDefinitionKey, new BehaviorSubject(0));
|
|
3359
3414
|
});
|
|
3360
3415
|
this._subscriptions.add(this.sseService
|
|
3361
3416
|
.getSseMessagesObservableByEventType(['CASE_UNASSIGNED', 'CASE_ASSIGNED', 'CASE_CREATED'])
|
|
@@ -3364,22 +3419,24 @@ class CaseMenuService {
|
|
|
3364
3419
|
return map;
|
|
3365
3420
|
}
|
|
3366
3421
|
updateCounts(map) {
|
|
3367
|
-
this.
|
|
3422
|
+
this._subscriptions.add(this.disableCaseCount$
|
|
3423
|
+
.pipe(filter$1(disableCaseCount => !disableCaseCount), switchMap$1(_ => this.documentService.getOpenDocumentCount()))
|
|
3424
|
+
.subscribe(counts => {
|
|
3368
3425
|
counts.forEach(entry => {
|
|
3369
3426
|
const subject = map.get(entry.documentDefinitionName);
|
|
3370
3427
|
if (subject) {
|
|
3371
3428
|
subject.next(entry.openDocumentCount);
|
|
3372
3429
|
}
|
|
3373
3430
|
});
|
|
3374
|
-
});
|
|
3431
|
+
}));
|
|
3375
3432
|
}
|
|
3376
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseMenuService, deps: [{ token: i2.DocumentService }, { token: i5.SseService }, { token: i2$1.MenuService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
3433
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseMenuService, deps: [{ token: i2.DocumentService }, { token: i5.SseService }, { token: i2$1.MenuService }, { token: i1.ConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
3377
3434
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseMenuService, providedIn: 'root' }); }
|
|
3378
3435
|
}
|
|
3379
3436
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseMenuService, decorators: [{
|
|
3380
3437
|
type: Injectable,
|
|
3381
3438
|
args: [{ providedIn: 'root' }]
|
|
3382
|
-
}], ctorParameters: () => [{ type: i2.DocumentService }, { type: i5.SseService }, { type: i2$1.MenuService }] });
|
|
3439
|
+
}], ctorParameters: () => [{ type: i2.DocumentService }, { type: i5.SseService }, { type: i2$1.MenuService }, { type: i1.ConfigService }] });
|
|
3383
3440
|
|
|
3384
3441
|
/*
|
|
3385
3442
|
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
@@ -4224,12 +4281,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
4224
4281
|
* See the License for the specific language governing permissions and
|
|
4225
4282
|
* limitations under the License.
|
|
4226
4283
|
*/
|
|
4227
|
-
class CaseDetailComponent
|
|
4284
|
+
class CaseDetailComponent {
|
|
4228
4285
|
get activeTabName$() {
|
|
4229
4286
|
return combineLatest([this.route.paramMap, this._activeTabName$]).pipe(map(([paramMap, activeTabName]) => !activeTabName ? (paramMap.get('tab') ?? null) : activeTabName));
|
|
4230
4287
|
}
|
|
4231
4288
|
constructor(breadcrumbService, caseStatusService, cdsThemeService, componentFactoryResolver, documentService, caseDetailLayoutService, caseService, caseTabService, iconService, keyCloakService, logger, notificationService, pageHeaderService, pageTitleService, permissionService, translateService, renderer, route, router, widgetsService, userProviderService, htmlDocument) {
|
|
4232
|
-
super();
|
|
4233
4289
|
this.breadcrumbService = breadcrumbService;
|
|
4234
4290
|
this.caseStatusService = caseStatusService;
|
|
4235
4291
|
this.cdsThemeService = cdsThemeService;
|
|
@@ -4468,12 +4524,14 @@ class CaseDetailComponent extends PendingChangesComponent {
|
|
|
4468
4524
|
this._oldTabName = activeTab.name;
|
|
4469
4525
|
this._pendingTab = tab;
|
|
4470
4526
|
this._activeTabName$.next(tab.name);
|
|
4471
|
-
|
|
4472
|
-
|
|
4473
|
-
|
|
4474
|
-
|
|
4475
|
-
|
|
4476
|
-
|
|
4527
|
+
// to do: re-introduce when pending changes is implemented again
|
|
4528
|
+
// this.pendingChanges =
|
|
4529
|
+
// tab.contentKey === 'summary' ? false : !tab.showTasks && this._activeChange;
|
|
4530
|
+
//
|
|
4531
|
+
// if (this.pendingChanges) {
|
|
4532
|
+
// this.tabLoader.replaceUrlState(tab);
|
|
4533
|
+
// return;
|
|
4534
|
+
// }
|
|
4477
4535
|
if (!tab.showTasks)
|
|
4478
4536
|
this.openTaskAndProcessLinkInModal$.next(null);
|
|
4479
4537
|
this.tabLoader.load(tab);
|
|
@@ -4614,11 +4672,11 @@ class CaseDetailComponent extends PendingChangesComponent {
|
|
|
4614
4672
|
}));
|
|
4615
4673
|
}
|
|
4616
4674
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseDetailComponent, deps: [{ token: i2$1.BreadcrumbService }, { token: i2.CaseStatusService }, { token: i2$1.CdsThemeService }, { token: i0.ComponentFactoryResolver }, { token: i2.DocumentService }, { token: CaseDetailLayoutService }, { token: CaseService }, { token: CaseTabService }, { token: i4$1.IconService }, { token: i5$2.KeycloakService }, { token: i1$3.NGXLogger }, { token: i1.GlobalNotificationService }, { token: i2$1.PageHeaderService }, { token: i2$1.PageTitleService }, { token: i2$3.PermissionService }, { token: i4.TranslateService }, { token: i0.Renderer2 }, { token: i1$2.ActivatedRoute }, { token: i1$2.Router }, { token: WidgetsService }, { token: i12.UserProviderService }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4617
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: CaseDetailComponent, isStandalone: false, selector: "ng-component", providers: [CaseTabService, CaseDetailLayoutService, ObserveSizeDirective], viewQueries: [{ propertyName: "supportingProcessStart", first: true, predicate: ["supportingProcessStartModal"], descendants: true }, { propertyName: "viewContainerRef", first: true, predicate: ["tabContainer"], descendants: true, read: ViewContainerRef }, { propertyName: "_tabContentContainer", first: true, predicate: ["tabContentContainer"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<div\n class=\"main-content\"\n [ngClass]=\"{'main-content--no-horizontal-overflow': $tabHorizontalOverflowDisabled()}\"\n>\n <div class=\"container-fluid\">\n <div\n class=\"main-content__header\"\n observeSize\n (heightChange)=\"onMainContentHeaderHeightChange($event)\"\n >\n <valtimo-case-detail-header-widget></valtimo-case-detail-header-widget>\n\n <ng-container *ngIf=\"caseTags$ | async as caseTags\">\n @if ((caseTags || []).length > 0) {\n <div class=\"spacing-case-tags\">\n @for (tag of caseTags; track tag) {\n <cds-tag size=\"sm\" [type]=\"tag.tagType\">\n {{ tag.title }}\n </cds-tag>\n }\n </div>\n }\n </ng-container>\n\n <ng-container *ngTemplateOutlet=\"tabs\"></ng-container>\n\n <ng-template #tabs>\n <ng-container *ngIf=\"{activeTab: activeTab$ | async} as obs\">\n <cds-tabs *ngIf=\"tabLoader\" type=\"inline\" class=\"case-detail-tabs\">\n <cds-tab\n *ngFor=\"let tab of tabLoader.tabs\"\n [active]=\"tab.name === (activeTabName$ | async)\"\n heading=\"{{ tab | tabTranslate | async }}\"\n (selected)=\"onTabSelected(tab, obs.activeTab)\"\n ></cds-tab>\n </cds-tabs>\n </ng-container>\n </ng-template>\n </div>\n\n <div\n *ngIf=\"{\n noTabsConfigured: noTabsConfigured$ | async,\n showTaskList: showTaskList$ | async,\n showNoAccess: showNoAccess$ | async,\n caseDetailLayout: caseDetailLayout$ | async,\n openTaskAndProcessLinkInModal: openTaskAndProcessLinkInModal$ | async,\n taskAndProcessLinkOpenedInPanel: taskAndProcessLinkOpenedInPanel$ | async,\n } as tabContentObs\"\n #tabContentContainer\n class=\"tab-content-container\"\n [ngClass]=\"{\n 'tab-content-container--dark': isDarkMode$ | async,\n 'tab-content-container--compact': compactMode$ | async,\n }\"\n [style.max-height]=\"tabContentContainerMaxHeight$ | async\"\n >\n <as-split\n direction=\"horizontal\"\n [disabled]=\"!tabContentObs.caseDetailLayout.widthAdjustable\"\n [gutterSize]=\"CASE_DETAIL_GUTTER_SIZE\"\n [unit]=\"tabContentObs.caseDetailLayout.unit\"\n >\n <as-split-area\n [size]=\"tabContentObs.caseDetailLayout.leftPanelWidth\"\n [minSize]=\"tabContentObs.caseDetailLayout.leftPanelMinWidth\"\n [maxSize]=\"tabContentObs.caseDetailLayout.leftPanelMaxWidth\"\n >\n <div\n class=\"card-body bg-white p-5 position-relative tab-container\"\n [class.tab-container--compact]=\"compactMode$ | async\"\n >\n <div *ngIf=\"loadingTabs$ | async\" class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n\n <valtimo-no-results\n *ngIf=\"tabContentObs.showNoAccess\"\n description=\"{{ 'case.noAccess.description' | translate }}\"\n title=\"{{ 'case.noAccess.title' | translate }}\"\n illustration=\"valtimo-layout/img/emptystate-not-authorised.svg\"\n >\n </valtimo-no-results>\n\n <valtimo-no-results\n *ngIf=\"tabContentObs.noTabsConfigured\"\n [description]=\"'case.tabs.noResultsDescription' | translate\"\n [title]=\"'case.tabs.noResults' | translate\"\n ></valtimo-no-results>\n\n <ng-template #tabContainer></ng-template>\n\n <div class=\"clearfix\"></div>\n </div>\n </as-split-area>\n\n <as-split-area\n *ngIf=\"tabContentObs.caseDetailLayout.showRightPanel\"\n [size]=\"tabContentObs.caseDetailLayout.rightPanelWidth\"\n [minSize]=\"tabContentObs.caseDetailLayout.rightPanelMinWidth\"\n [maxSize]=\"tabContentObs.caseDetailLayout.rightPanelMaxWidth\"\n >\n @if (tabContentObs.showTaskList) {\n <div class=\"task-panel\">\n @if (!tabContentObs.taskAndProcessLinkOpenedInPanel) {\n <valtimo-case-detail-task-list\n [openTaskAndProcessLinkInModal]=\"tabContentObs.openTaskAndProcessLinkInModal\"\n (taskClickEvent)=\"onTaskClickEvent($event)\"\n (formSubmitEvent)=\"onFormSubmitEvent()\"\n ></valtimo-case-detail-task-list>\n }\n\n @if (tabContentObs.taskAndProcessLinkOpenedInPanel) {\n <valtimo-case-detail-task-detail\n [taskAndProcessLink]=\"tabContentObs.taskAndProcessLinkOpenedInPanel\"\n (activeChange)=\"onActiveChangeEvent($event)\"\n (closeEvent)=\"onTaskDetailsClose()\"\n (formSubmit)=\"onFormSubmitEvent()\"\n >\n </valtimo-case-detail-task-detail>\n }\n </div>\n }\n </as-split-area>\n </as-split>\n </div>\n </div>\n\n <valtimo-case-supporting-process-start-modal\n [isAdmin]=\"isAdmin$ | async\"\n (formSubmit)=\"onFormSubmitEvent()\"\n #supportingProcessStartModal\n ></valtimo-case-supporting-process-start-modal>\n</div>\n\n<ng-template\n #caseDetailHeader\n let-canHaveAssignee=\"canHaveAssignee\"\n let-document=\"document\"\n let-canAssign=\"canAssign\"\n>\n <ng-container\n *ngTemplateOutlet=\"\n caseDetailAssignee;\n context: {canHaveAssignee: canHaveAssignee, document: document, canAssign: canAssign}\n \"\n ></ng-container>\n</ng-template>\n\n<ng-template\n #caseDetailAssignee\n let-canHaveAssignee=\"canHaveAssignee\"\n let-document=\"document\"\n let-canAssign=\"canAssign\"\n>\n <div *ngIf=\"canHaveAssignee && document\">\n <valtimo-case-assign-user\n *ngIf=\"canAssignLoaded$ | async\"\n [assigneeFullName]=\"document?.assigneeFullName\"\n [assigneeId]=\"document.assigneeId\"\n [documentId]=\"document.id\"\n [hasPermission]=\"canAssign\"\n (assignmentOfDocumentChanged)=\"assignmentOfDocumentChanged()\"\n ></valtimo-case-assign-user>\n </div>\n</ng-template>\n\n<ng-template #claimButton let-canClaim=\"canClaim\" let-canHaveAssignee=\"canHaveAssignee\">\n <cds-overflow-menu-option\n *ngIf=\"canClaim && canHaveAssignee\"\n [disabled]=\"(isAssigning$ | async) || (isAssignedToCurrentUser$ | async)\"\n (click)=\"claimAssignee()\"\n >\n {{ 'case.claimAssigneeCase' | translate }}\n </cds-overflow-menu-option>\n</ng-template>\n\n<ng-template #unassignButton let-canHaveAssignee=\"canHaveAssignee\" let-assigneeId=\"assigneeId\">\n <cds-overflow-menu-option\n *ngIf=\"canHaveAssignee\"\n [disabled]=\"!assigneeId\"\n (selected)=\"unassignAssignee()\"\n >\n {{ 'assignDocument.remove' | translate }}\n </cds-overflow-menu-option>\n</ng-template>\n\n<ng-template #deleteButton let-canDelete=\"canDelete\">\n <cds-overflow-menu-option\n *ngIf=\"canDelete\"\n [disabled]=\"isDeleting$ | async\"\n (click)=\"deleteDocument()\"\n type=\"danger\"\n >\n {{ 'case.delete.delete' | translate }}\n </cds-overflow-menu-option>\n</ng-template>\n\n<ng-template #customStartTrigger>\n <button\n [size]=\"(compactMode$ | async) ? 'sm' : 'lg'\"\n cdsButton=\"primary\"\n [disabled]=\"processDefinitionCaseDefinitions.length === 0\"\n [ngbTooltip]=\"processDefinitionCaseDefinitions.length === 0 ? 'No action' : null\"\n >\n {{ 'case.startSubProcess' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"chevron--down\" size=\"16\"></svg>\n </button>\n</ng-template>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"case.delete.confirm\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"case.delete.description\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"case.delete.delete\"\n (confirmEvent)=\"onConfirmDelete()\"\n></valtimo-confirmation-modal>\n\n<ng-container renderInPageHeader [fullWidth]=\"true\">\n <ng-template>\n <div\n class=\"case-actions\"\n [ngClass]=\"{\n 'case-actions--compact': compactMode$ | async,\n 'case-actions--small-title': smallTitle$ | async,\n }\"\n *ngIf=\"{\n assigneeId: assigneeId$ | async,\n canAssign: canAssign$ | async,\n canClaim: canClaim$ | async,\n canHaveAssignee: canHaveAssignee$ | async,\n canDelete: canDelete$ | async,\n document: document$ | async,\n caseStatus: caseStatus$ | async,\n } as obs\"\n >\n <div class=\"case-status-assign-custom-title\" [ngClass]=\"{'--compact': compactMode$ | async}\">\n @if (obs.caseStatus) {\n <cds-tag size=\"sm\" [type]=\"obs.caseStatus.tagType\" [title]=\"obs.caseStatus.title\">{{\n obs.caseStatus.title\n }}</cds-tag>\n }\n\n <div [ngClass]=\"{'--compact': compactMode$ | async}\">\n <ng-container\n *ngTemplateOutlet=\"\n caseDetailAssignee;\n context: {\n canHaveAssignee: obs.canHaveAssignee,\n document: obs.document,\n canAssign: obs.canAssign,\n }\n \"\n ></ng-container>\n </div>\n\n <ng-container *ngTemplateOutlet=\"caseDetailHeader\"></ng-container>\n </div>\n\n <div class=\"buttons-container\">\n <cds-overflow-menu\n [ngClass]=\"{'--compact': compactMode$ | async}\"\n *ngIf=\"obs.canHaveAssignee || obs.canDelete\"\n flip=\"true\"\n [offset]=\"(compactMode$ | async) ? {y: 48, x: -4} : {y: 48, x: 4}\"\n class=\"overflow-button assign-overflow\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n claimButton;\n context: {canClaim: obs.canClaim, canHaveAssignee: obs.canHaveAssignee}\n \"\n >\n </ng-container>\n\n <ng-container\n *ngTemplateOutlet=\"\n unassignButton;\n context: {canHaveAssignee: obs.canHaveAssignee, assigneeId: obs.assigneeId}\n \"\n >\n </ng-container>\n\n <ng-container *ngTemplateOutlet=\"deleteButton; context: {canDelete: obs.canDelete}\">\n </ng-container>\n </cds-overflow-menu>\n\n <cds-overflow-menu\n valtimoCdsOverflowButton\n [ngClass]=\"{'--compact': compactMode$ | async}\"\n [width]=\"dropdownWidth$ | async\"\n [customTrigger]=\"customStartTrigger\"\n [offset]=\"{y: 48, x: 35}\"\n class=\"overflow-button case-detail-overflow\"\n >\n <cds-overflow-menu-option\n *ngFor=\"let processDefinitionCaseDefinition of processDefinitionCaseDefinitions\"\n [attr.title]=\"processDefinitionCaseDefinition.displayName\"\n (click)=\"startProcess(processDefinitionCaseDefinition)\"\n >\n {{ processDefinitionCaseDefinition.displayName }}\n </cds-overflow-menu-option>\n </cds-overflow-menu>\n </div>\n </div>\n </ng-template>\n</ng-container>\n", styles: [".main-content{overflow:hidden;padding-bottom:0}.main-content--no-horizontal-overflow{overflow-x:hidden}.tab-container{height:min-content;min-height:300px;overflow-y:auto;overflow-x:hidden}.tab-container:has(>.tab--no-margin){padding:0!important}.tab-container:has(>.tab--no-min-height){min-height:unset}.tab-container:has(>.tab--no-background){background:transparent!important}.tab-content-container{display:flex;gap:32px;overflow:auto;margin-bottom:16px}.loading-container{display:flex;justify-content:center;flex-direction:row}.case-detail-tabs{display:flex;margin-bottom:24px}.case-detail-tabs cds-tab{display:none!important}.cds--overflow-menu-options{margin-top:32px}.assign-overflow{margin-right:8px}.buttons-container{display:flex;flex-direction:row}.case-actions{display:flex;width:100%;justify-content:space-between;align-items:flex-end;padding-bottom:4px}.case-actions--compact,.case-actions--small-title{padding-bottom:0;align-items:flex-start}.case-actions ::ng-deep .version-selection{width:160px}.case-actions ::ng-deep .version-selection .cds--list-box__selection{display:none}.case-status-assign-custom-title{display:flex;gap:16px;align-items:flex-end}.case-status-assign-custom-title .cds--tag{margin:0;overflow:hidden;text-overflow:ellipsis;line-height:24px;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;max-width:100%}.case-status-assign-custom-title.--compact{align-items:center}.task-panel{width:100%;transition:height .15s ease-in-out}:host ::ng-deep .container-fluid{height:100%!important;width:100%!important;margin:0!important;padding:0!important}::ng-deep .tab-content-container .as-split-gutter{background-color:transparent!important;--_as-gutter-icon-disabled: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1' height='1'/%3E\");--_as-gutter-icon-horizontal: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAABQJJREFUeF7dWll22zAMpNwzlM5xmpMlOVl6mzrKHexWm8UFy4xIp+/FP3mxQWAwWAiRGsJ3/gwhhJvt4CRCfgCtosYhDOHm4SlW7rZyq9t/R7GsZoYQDhCA89UIrzakKuQtpRTiHv03ycJB3t8KuU9AByNfw5dWJpj1h5YABmGRsvgufzsSG21NEwGWUrv5yiuZb31yMZoAAjBFPqBdor9G0vpwu2+PBgE6TK/q0pUxxiwZxnE0SefkE0sHWQUygGG3ll0c2tGNn+M0DiSfHDlHQBu2rffoWgBWPRHWIUreM654li5bMwDQBIhI9naHFgVQCSS2PHliWlLm0/YsMrcwK6ISp1QGANhzG7XFDj2gUFr8yzrkydOJ6CyACBB1lIWkbPyeQ2UQ2ZKxksCLft4EaWqB/AshHCdg0b/1gB7wJB1QBrQ0ml4E2MMyFgxJ6iABuEGdgCUeZVQm+fQ7fhfAsflzAKFLS1G2ptmMwUpDl1oyAGxo2fw2hHBzjpsm+XiO2TGQF1GWACJGfecAjHmgCTZum/lQfezQTZ3L7z+g3goc2xGtFT86A0qLh5pgjPF13aLmv9aHdYiVn8uMwFNixQlYqVuNvayK3sZxNElgHarlP6duo2bpOcbXWxheVhkTj7Tv4ATsTG/OL6CG8DZ+KCQMIcSf6HnAAo8hrAjGRpIblLxveDm8/q4YC6fT6flyufzWBhXGoTWd4QOUp6enX9fr9X2od6SFhJlTu4FBGZA5n+jbnddZjPG8nz8lo222ItHJEraRICAAMmG6rPGb2FTjedqHsET+4/Lbu+phHWLlJ/g+Cd4gpJDgp71HHzAHFCqOEFCSULjrNkaxw2rO/zidnv/MNY99WIcY+TKufibUmOcSEB5IxLTHXLal2FG4h83VPzET1h6wUxDP8fXfJW5V8xuQhqFwVtGNgDuQ6Yo367Pb9ixdjVckVE1QS/0ekZhybRw/zMZblkBpd1sMPIdJkAsClF2ghQQPYJYBQjp5BKCBEHD4JZDi6bED3AebRDFbAp58Ski3JrgphQcgozEwXZ2dBH3nZ2Bq5KcyahuEgO1wIWBnyIuoS5hA9pHIp01dnANSdlvKwXWocRC6Pw/U70MBozCQAWI5JKDF5wFrtk8uR6XKYQibnL9dr+/CjgA5v81AamMFByTTmOhQp56hPw5/vrrvx61euz2gZKfHgcj98bUkgjo/WJCxeMrJFyQgR8ocQcGnwqsJpgSK8pymTPeIThus4DKwBKWJFNsFklEcOT9ApyFADswAQJMiwkaUldeQ7ZTKDWf79tsSgIasDwGduro1CbY+hVqZgpJ1SA5L6bQHMJNjOy19MsCgBiNgV8DK+1GxSXoYAcMwhNttOedPIZTPAhm8bQ6Anx57ZMBGgfHuXs6yuEANBBtR/2bIjzkj8bAMSIYU+KLDaoKSU8KFCOP7LAsTcDTZ2jPAfrUWf3VGnwdo1pgF5xiz9yhazwOExwfv9suEm2XArJwNtSP/+AxgwlHL1iVwiAUdhEaAxhtLWGbZDEbPEiCyhHWIla93KO7AvMoAwre7bW5jxCAfwaHnoa4N3gVU5X2RthX0gdVNBPhDZnYgzMH7ImKbCOA8wnfsVO+jeUgIEHfYFUs7jHYNLN2YvJkBXwYaNuQIwnp2cgoCag3LN1Z2+EwfwCVPLPAOJ1n05oDt9x5oRR37Pb72s/e+kU81L/EXSRwjcUdkvjUAAAAASUVORK5CYII=)}::ng-deep .tab-content-container .as-split-gutter-icon{background-repeat:no-repeat;background-size:16px 16px}::ng-deep .tab-content-container--dark .as-split-gutter{--_as-gutter-icon-horizontal: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAABPlJREFUeF7tm1tW3DAMhu2+krCmdmWlKytrIuGV9HjixDddfjkOtOd0XmAGWZfPsiw7g3fVyzvntvpD9H01+JIuwCamX5YKf9VfmCVaDze2S2fXIDG+CGC8YsrqMCvDFDmHZYCeI5gE6LietD2LlNb6uQAQTLWfCDTLmLpOIfoRvxEZydZn+pH7+vdlAEJyoIwIwDIrFtk7C2TyA/Po9gxY1zVWrN2haZq85FqS3zEF+YET3qi6rFzjfAR0yGkBwQA0wyFU75zf5MaOBYDoR2YGDigqY+U7HOKHlAsFiQOXqax+JYCYBGJr32ZAB+lEpxwc3i1nDcDWtBUYPjN8p35VBxf/4/MQUI7lqAGPzwjYBQDv3PQ0+Ue/CjV/sODp8+UiyNE7XLHO6EM+Dg4/ntBdAI69zdIqBlgTlDldADLN9a7R551cDot0kDPNbn40AIh6LSS4DS0Be9jJg7sAXPHJfBZojbXriMscGgDvvhUYmRGEes6iocJiyVejWdelYDPNk5cquhnAxVSAlgDZQG/7bUqKjvZEDqgdYwaAzQsrVQHowFkPqd5bA4LlO1ytp+zoFM0Ml2V5CYPmeX78lF7v67rla8B6GpynKZxnxBfmD03MvASCMe/9z+DRtm2/SAiZLXRGqcapbYTaICB/BHwggN1wbuzQSUHI3UQBHPqo+wPO/7dlefkWJ0PyR0ofEIAjg49Z8GOe51fOCAYgIcPkd2vLsnz33v+ubadJ0TZw8Fqcmnkk+CBjCahHXodQ49mhHGjUDJCDf37Vjmn54Sa4MuxGaL/weWzDdggJigjgDL7KpG3bxLTPmY/PALqa90JgAahpf/ohb8jjAfAlrQdCCSDG0gRPxCiHzf81XwKUVA1M7gDwbojbspsM4GZea3jov5cFp6cGoHYRFCWE5FthQwKAGCnLS9vD6UXwXbnIRpGUcsH3D6JxI2sADwFHwEnqAI4HKW0AB07ci6QDXgLHELUIghPxbxRBBukICDuAZMCaAbu8XnLf1K4wzBjdGYpzSUGI66ntBQg/8QzYB+PyyW18++sAEHvu8wSY02IbosyONaBTPj7XO6/F+SxVzgPKRooWlN7l0A0g+i0tGXrmvdu2D/qYTrBgO0GKG3ocRlrhB/jm6a13zR2i8GAk+BOOw/lmy95RMIlgAlAvh4ex5/ll5CUndYMkJfGNFyL84sCuoHa3tSVQW9HkGxjeueUNv6Krx7dbTO5R/J1FARSQ9X3d8gyh13RSZAYA9iOcmHkJWO1ZA+LkRdbaRAlO3wogKL/+/YDZl5cuFQogC/P4k/j+mx0AYVDyYVQGWDMPlbcDQDVHOREA1DmGDAgv7emA0bEofgmAmn3euXUpT3d9Z4G+4PRR+6PR9oigRqarPiT6ng4nBzRguCe0ZJEBatyqQGvkfw249VtiHTNSzdGZAddVESmW1YBDv5bSpoxBnOZkst7h6jISx5sCEltnJFp7KKkG3KNfPQvULluB2UMuR1zaBiXjB08+IJr4FQA9c3gDgNINKSDK4SCff67VjEsZEI+Cl3Scg3vwA4cU6uu0bRL3d4k3ZEDm3mAoY2YqdX7BvVsA2OJW9qlhUe+KQvObX1DYANS+2iIdHArR0bArgXfUBoAMoewopH9ROd3oBmcZiMkOANA3sXUq9mm5Pqrvq7IYXLo3Vs713ao7WRAZ8NULfTACRd0fdjtUcYyr1cIAAAAASUVORK5CYII=)}.spacing-case-tags{margin-bottom:8px}\n/*!\n * Copyright 2015-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.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i6$1.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "component", type: i4$1.Loading, selector: "cds-loading, ibm-loading", inputs: ["title", "isActive", "size", "overlay"] }, { kind: "directive", type: i4$1.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "directive", type: i4$1.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: i2$1.ConfirmationModalComponent, selector: "valtimo-confirmation-modal", inputs: ["titleTranslationKey", "title", "content", "contentTranslationKey", "confirmButtonText", "confirmButtonTextTranslationKey", "confirmButtonType", "showOptionalButton", "optionalButtonText", "optionalButtonTextTranslationKey", "optionalButtonType", "cancelButtonText", "cancelButtonTextTranslationKey", "cancelButtonType", "showModalSubject$", "outputOnConfirm", "outputOnOptional", "spacerAfterCancelButton"], outputs: ["confirmEvent", "optionalEvent", "cancelEvent"] }, { kind: "component", type: i4$1.Tabs, selector: "cds-tabs, ibm-tabs", inputs: ["position", "cacheActive", "followFocus", "isNavigation", "ariaLabel", "ariaLabelledby", "type", "theme", "skeleton"] }, { kind: "component", type: i4$1.Tab, selector: "cds-tab, ibm-tab", inputs: ["heading", "title", "context", "active", "disabled", "tabIndex", "id", "cacheActive", "tabContent", "templateContext"], outputs: ["selected"] }, { kind: "component", type: i2$1.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "directive", type: i2$1.RenderInPageHeaderDirective, selector: "[renderInPageHeader]", inputs: ["fullWidth"] }, { kind: "component", type: i4$1.Tag, selector: "cds-tag, ibm-tag", inputs: ["type", "size", "class", "skeleton"] }, { kind: "component", type: i4$1.OverflowMenu, selector: "cds-overflow-menu, ibm-overflow-menu", inputs: ["buttonLabel", "description", "flip", "placement", "open", "customTrigger", "offset", "wrapperClass", "triggerClass"], outputs: ["openChange"] }, { kind: "component", type: i4$1.OverflowMenuOption, selector: "cds-overflow-menu-option, ibm-overflow-menu-option", inputs: ["divider", "type", "disabled", "href", "target", "innerClass"], outputs: ["selected"] }, { kind: "directive", type: i2$1.ValtimoCdsOverflowButtonDirective, selector: "[valtimoCdsOverflowButton]", inputs: ["width"] }, { kind: "component", type: CaseDetailTaskListComponent, selector: "valtimo-case-detail-task-list", inputs: ["openTaskAndProcessLinkInModal"], outputs: ["taskClickEvent", "formSubmitEvent"] }, { kind: "component", type: CaseDetailsTaskDetailComponent, selector: "valtimo-case-detail-task-detail", inputs: ["taskAndProcessLink"], outputs: ["closeEvent", "assignmentOfTaskChanged", "activeChange", "formSubmit"] }, { kind: "component", type: i17.SplitComponent, selector: "as-split", inputs: ["gutterSize", "gutterStep", "disabled", "gutterClickDeltaPx", "direction", "dir", "unit", "gutterAriaLabel", "restrictMove", "useTransition", "gutterDblClickDuration"], outputs: ["gutterClick", "gutterDblClick", "dragStart", "dragEnd", "transitionEnd"], exportAs: ["asSplit"] }, { kind: "component", type: i17.SplitAreaComponent, selector: "as-split-area", inputs: ["size", "minSize", "maxSize", "lockSize", "visible"], exportAs: ["asSplitArea"] }, { kind: "component", type: CaseDetailHeaderWidgetComponent, selector: "valtimo-case-detail-header-widget" }, { kind: "directive", type: i2$1.ObserveSizeDirective, selector: "[observeSize]", outputs: ["widthChange", "heightChange"] }, { kind: "component", type: CaseSupportingProcessStartModalComponent, selector: "valtimo-case-supporting-process-start-modal", inputs: ["isAdmin"], outputs: ["formSubmit"] }, { kind: "component", type: CaseAssignUserComponent, selector: "valtimo-case-assign-user", inputs: ["documentId", "assigneeId", "assigneeFullName", "hasPermission"], outputs: ["assignmentOfDocumentChanged"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "pipe", type: TabTranslatePipe, name: "tabTranslate" }] }); }
|
|
4675
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: CaseDetailComponent, isStandalone: false, selector: "ng-component", providers: [CaseTabService, CaseDetailLayoutService, ObserveSizeDirective], viewQueries: [{ propertyName: "supportingProcessStart", first: true, predicate: ["supportingProcessStartModal"], descendants: true }, { propertyName: "viewContainerRef", first: true, predicate: ["tabContainer"], descendants: true, read: ViewContainerRef }, { propertyName: "_tabContentContainer", first: true, predicate: ["tabContentContainer"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-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<div\n class=\"main-content\"\n [ngClass]=\"{'main-content--no-horizontal-overflow': $tabHorizontalOverflowDisabled()}\"\n>\n <div class=\"container-fluid\">\n <div\n class=\"main-content__header\"\n observeSize\n (heightChange)=\"onMainContentHeaderHeightChange($event)\"\n >\n <valtimo-case-detail-header-widget></valtimo-case-detail-header-widget>\n\n <ng-container *ngIf=\"caseTags$ | async as caseTags\">\n @if ((caseTags || []).length > 0) {\n <div class=\"spacing-case-tags\">\n @for (tag of caseTags; track tag) {\n <cds-tag size=\"sm\" [type]=\"tag.tagType\">\n {{ tag.title }}\n </cds-tag>\n }\n </div>\n }\n </ng-container>\n\n <ng-container *ngTemplateOutlet=\"tabs\"></ng-container>\n\n <ng-template #tabs>\n <ng-container *ngIf=\"{activeTab: activeTab$ | async} as obs\">\n <cds-tabs *ngIf=\"tabLoader\" type=\"inline\" class=\"case-detail-tabs\">\n <cds-tab\n *ngFor=\"let tab of tabLoader.tabs\"\n [active]=\"tab.name === (activeTabName$ | async)\"\n heading=\"{{ tab | tabTranslate | async }}\"\n (selected)=\"onTabSelected(tab, obs.activeTab)\"\n ></cds-tab>\n </cds-tabs>\n </ng-container>\n </ng-template>\n </div>\n\n <div\n *ngIf=\"{\n noTabsConfigured: noTabsConfigured$ | async,\n showTaskList: showTaskList$ | async,\n showNoAccess: showNoAccess$ | async,\n caseDetailLayout: caseDetailLayout$ | async,\n openTaskAndProcessLinkInModal: openTaskAndProcessLinkInModal$ | async,\n taskAndProcessLinkOpenedInPanel: taskAndProcessLinkOpenedInPanel$ | async,\n isDarkMode: isDarkMode$ | async,\n compactMode: compactMode$ | async,\n tabContentContainerMaxHeight: tabContentContainerMaxHeight$ | async,\n } as tabContentObs\"\n #tabContentContainer\n class=\"tab-content-container\"\n [ngClass]=\"{\n 'tab-content-container--dark': tabContentObs.isDarkMode,\n 'tab-content-container--compact': tabContentObs.compactMode,\n }\"\n [style.max-height]=\"tabContentObs.tabContentContainerMaxHeight\"\n [style.height]=\"tabContentObs.tabContentContainerMaxHeight\"\n >\n <as-split\n direction=\"horizontal\"\n [disabled]=\"!tabContentObs.caseDetailLayout.widthAdjustable\"\n [gutterSize]=\"CASE_DETAIL_GUTTER_SIZE\"\n [unit]=\"tabContentObs.caseDetailLayout.unit\"\n class=\"split-area\"\n >\n <as-split-area\n [size]=\"tabContentObs.caseDetailLayout.leftPanelWidth\"\n [minSize]=\"tabContentObs.caseDetailLayout.leftPanelMinWidth\"\n [maxSize]=\"tabContentObs.caseDetailLayout.leftPanelMaxWidth\"\n class=\"split-area__content\"\n >\n <div\n class=\"card-body bg-white p-5 position-relative tab-container\"\n [class.tab-container--compact]=\"compactMode$ | async\"\n >\n <div *ngIf=\"loadingTabs$ | async\" class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n\n <valtimo-no-results\n *ngIf=\"tabContentObs.showNoAccess\"\n description=\"{{ 'case.noAccess.description' | translate }}\"\n title=\"{{ 'case.noAccess.title' | translate }}\"\n illustration=\"valtimo-layout/img/emptystate-not-authorised.svg\"\n >\n </valtimo-no-results>\n\n <valtimo-no-results\n *ngIf=\"tabContentObs.noTabsConfigured\"\n [description]=\"'case.tabs.noResultsDescription' | translate\"\n [title]=\"'case.tabs.noResults' | translate\"\n ></valtimo-no-results>\n\n <ng-template #tabContainer></ng-template>\n\n <div class=\"clearfix\"></div>\n </div>\n </as-split-area>\n\n <as-split-area\n *ngIf=\"tabContentObs.caseDetailLayout.showRightPanel\"\n [size]=\"tabContentObs.caseDetailLayout.rightPanelWidth\"\n [minSize]=\"tabContentObs.caseDetailLayout.rightPanelMinWidth\"\n [maxSize]=\"tabContentObs.caseDetailLayout.rightPanelMaxWidth\"\n >\n @if (tabContentObs.showTaskList) {\n <div class=\"task-panel\">\n @if (!tabContentObs.taskAndProcessLinkOpenedInPanel) {\n <valtimo-case-detail-task-list\n [openTaskAndProcessLinkInModal]=\"tabContentObs.openTaskAndProcessLinkInModal\"\n (taskClickEvent)=\"onTaskClickEvent($event)\"\n (formSubmitEvent)=\"onFormSubmitEvent()\"\n ></valtimo-case-detail-task-list>\n }\n\n @if (tabContentObs.taskAndProcessLinkOpenedInPanel) {\n <valtimo-case-detail-task-detail\n [taskAndProcessLink]=\"tabContentObs.taskAndProcessLinkOpenedInPanel\"\n (activeChange)=\"onActiveChangeEvent($event)\"\n (closeEvent)=\"onTaskDetailsClose()\"\n (formSubmit)=\"onFormSubmitEvent()\"\n >\n </valtimo-case-detail-task-detail>\n }\n </div>\n }\n </as-split-area>\n </as-split>\n </div>\n </div>\n\n <valtimo-case-supporting-process-start-modal\n [isAdmin]=\"isAdmin$ | async\"\n (formSubmit)=\"onFormSubmitEvent()\"\n #supportingProcessStartModal\n ></valtimo-case-supporting-process-start-modal>\n</div>\n\n<ng-template\n #caseDetailHeader\n let-canHaveAssignee=\"canHaveAssignee\"\n let-document=\"document\"\n let-canAssign=\"canAssign\"\n>\n <ng-container\n *ngTemplateOutlet=\"\n caseDetailAssignee;\n context: {canHaveAssignee: canHaveAssignee, document: document, canAssign: canAssign}\n \"\n ></ng-container>\n</ng-template>\n\n<ng-template\n #caseDetailAssignee\n let-canHaveAssignee=\"canHaveAssignee\"\n let-document=\"document\"\n let-canAssign=\"canAssign\"\n>\n <div *ngIf=\"canHaveAssignee && document\">\n <valtimo-case-assign-user\n *ngIf=\"canAssignLoaded$ | async\"\n [assigneeFullName]=\"document?.assigneeFullName\"\n [assigneeId]=\"document.assigneeId\"\n [documentId]=\"document.id\"\n [hasPermission]=\"canAssign\"\n (assignmentOfDocumentChanged)=\"assignmentOfDocumentChanged()\"\n ></valtimo-case-assign-user>\n </div>\n</ng-template>\n\n<ng-template #claimButton let-canClaim=\"canClaim\" let-canHaveAssignee=\"canHaveAssignee\">\n <cds-overflow-menu-option\n *ngIf=\"canClaim && canHaveAssignee\"\n [disabled]=\"(isAssigning$ | async) || (isAssignedToCurrentUser$ | async)\"\n (click)=\"claimAssignee()\"\n >\n {{ 'case.claimAssigneeCase' | translate }}\n </cds-overflow-menu-option>\n</ng-template>\n\n<ng-template #unassignButton let-canHaveAssignee=\"canHaveAssignee\" let-assigneeId=\"assigneeId\">\n <cds-overflow-menu-option\n *ngIf=\"canHaveAssignee\"\n [disabled]=\"!assigneeId\"\n (selected)=\"unassignAssignee()\"\n >\n {{ 'assignDocument.remove' | translate }}\n </cds-overflow-menu-option>\n</ng-template>\n\n<ng-template #deleteButton let-canDelete=\"canDelete\">\n <cds-overflow-menu-option\n *ngIf=\"canDelete\"\n [disabled]=\"isDeleting$ | async\"\n (click)=\"deleteDocument()\"\n type=\"danger\"\n >\n {{ 'case.delete.delete' | translate }}\n </cds-overflow-menu-option>\n</ng-template>\n\n<ng-template #customStartTrigger>\n <button\n [size]=\"(compactMode$ | async) ? 'sm' : 'lg'\"\n cdsButton=\"primary\"\n [disabled]=\"processDefinitionCaseDefinitions.length === 0\"\n [ngbTooltip]=\"processDefinitionCaseDefinitions.length === 0 ? 'No action' : null\"\n >\n {{ 'case.startSubProcess' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"chevron--down\" size=\"16\"></svg>\n </button>\n</ng-template>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"case.delete.confirm\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"case.delete.description\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"case.delete.delete\"\n (confirmEvent)=\"onConfirmDelete()\"\n></valtimo-confirmation-modal>\n\n<ng-container renderInPageHeader [fullWidth]=\"true\">\n <ng-template>\n <div\n class=\"case-actions\"\n [ngClass]=\"{\n 'case-actions--compact': compactMode$ | async,\n 'case-actions--small-title': smallTitle$ | async,\n }\"\n *ngIf=\"{\n assigneeId: assigneeId$ | async,\n canAssign: canAssign$ | async,\n canClaim: canClaim$ | async,\n canHaveAssignee: canHaveAssignee$ | async,\n canDelete: canDelete$ | async,\n document: document$ | async,\n caseStatus: caseStatus$ | async,\n } as obs\"\n >\n <div class=\"case-status-assign-custom-title\" [ngClass]=\"{'--compact': compactMode$ | async}\">\n @if (obs.caseStatus) {\n <cds-tag size=\"sm\" [type]=\"obs.caseStatus.tagType\" [title]=\"obs.caseStatus.title\">{{\n obs.caseStatus.title\n }}</cds-tag>\n }\n\n <div [ngClass]=\"{'--compact': compactMode$ | async}\">\n <ng-container\n *ngTemplateOutlet=\"\n caseDetailAssignee;\n context: {\n canHaveAssignee: obs.canHaveAssignee,\n document: obs.document,\n canAssign: obs.canAssign,\n }\n \"\n ></ng-container>\n </div>\n\n <ng-container *ngTemplateOutlet=\"caseDetailHeader\"></ng-container>\n </div>\n\n <div class=\"buttons-container\">\n <cds-overflow-menu\n [ngClass]=\"{'--compact': compactMode$ | async}\"\n *ngIf=\"obs.canHaveAssignee || obs.canDelete\"\n flip=\"true\"\n [offset]=\"(compactMode$ | async) ? {y: 48, x: -4} : {y: 48, x: 4}\"\n class=\"overflow-button assign-overflow\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n claimButton;\n context: {canClaim: obs.canClaim, canHaveAssignee: obs.canHaveAssignee}\n \"\n >\n </ng-container>\n\n <ng-container\n *ngTemplateOutlet=\"\n unassignButton;\n context: {canHaveAssignee: obs.canHaveAssignee, assigneeId: obs.assigneeId}\n \"\n >\n </ng-container>\n\n <ng-container *ngTemplateOutlet=\"deleteButton; context: {canDelete: obs.canDelete}\">\n </ng-container>\n </cds-overflow-menu>\n\n <cds-overflow-menu\n valtimoCdsOverflowButton\n [ngClass]=\"{'--compact': compactMode$ | async}\"\n [width]=\"dropdownWidth$ | async\"\n [customTrigger]=\"customStartTrigger\"\n [offset]=\"{y: 48, x: 35}\"\n class=\"overflow-button case-detail-overflow\"\n >\n <cds-overflow-menu-option\n *ngFor=\"let processDefinitionCaseDefinition of processDefinitionCaseDefinitions\"\n [attr.title]=\"processDefinitionCaseDefinition.displayName\"\n (click)=\"startProcess(processDefinitionCaseDefinition)\"\n >\n {{ processDefinitionCaseDefinition.displayName }}\n </cds-overflow-menu-option>\n </cds-overflow-menu>\n </div>\n </div>\n </ng-template>\n</ng-container>\n", styles: [".main-content{overflow:hidden;padding-bottom:0}.main-content--no-horizontal-overflow{overflow-x:hidden}.tab-container{height:min-content;min-height:300px;overflow-y:auto;overflow-x:hidden}.tab-container:has(>.tab--no-margin){padding:0!important}.tab-container:has(>.tab--no-min-height){min-height:unset}.tab-container:has(>.tab--no-background){background:transparent!important}.tab-content-container{display:flex;gap:32px;overflow:auto;margin-bottom:16px}.loading-container{display:flex;justify-content:center;flex-direction:row}.case-detail-tabs{display:flex;margin-bottom:24px}.case-detail-tabs cds-tab{display:none!important}.cds--overflow-menu-options{margin-top:32px}.assign-overflow{margin-right:8px}.buttons-container{display:flex;flex-direction:row}.case-actions{display:flex;width:100%;justify-content:space-between;align-items:flex-end;padding-bottom:4px}.case-actions--compact,.case-actions--small-title{padding-bottom:0;align-items:flex-start}.case-actions ::ng-deep .version-selection{width:160px}.case-actions ::ng-deep .version-selection .cds--list-box__selection{display:none}.case-status-assign-custom-title{display:flex;gap:16px;align-items:flex-end}.case-status-assign-custom-title .cds--tag{margin:0;overflow:hidden;text-overflow:ellipsis;line-height:24px;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;max-width:100%}.case-status-assign-custom-title.--compact{align-items:center}.task-panel{width:100%;transition:height .15s ease-in-out}.split-area__content{height:100%!important}.split-area__content .tab-container{height:min-content!important;overflow:hidden!important}:host ::ng-deep .container-fluid{height:100%!important;width:100%!important;margin:0!important;padding:0!important}::ng-deep .tab-content-container .as-split-gutter{background-color:transparent!important;--_as-gutter-icon-disabled: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1' height='1'/%3E\");--_as-gutter-icon-horizontal: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAABQJJREFUeF7dWll22zAMpNwzlM5xmpMlOVl6mzrKHexWm8UFy4xIp+/FP3mxQWAwWAiRGsJ3/gwhhJvt4CRCfgCtosYhDOHm4SlW7rZyq9t/R7GsZoYQDhCA89UIrzakKuQtpRTiHv03ycJB3t8KuU9AByNfw5dWJpj1h5YABmGRsvgufzsSG21NEwGWUrv5yiuZb31yMZoAAjBFPqBdor9G0vpwu2+PBgE6TK/q0pUxxiwZxnE0SefkE0sHWQUygGG3ll0c2tGNn+M0DiSfHDlHQBu2rffoWgBWPRHWIUreM654li5bMwDQBIhI9naHFgVQCSS2PHliWlLm0/YsMrcwK6ISp1QGANhzG7XFDj2gUFr8yzrkydOJ6CyACBB1lIWkbPyeQ2UQ2ZKxksCLft4EaWqB/AshHCdg0b/1gB7wJB1QBrQ0ml4E2MMyFgxJ6iABuEGdgCUeZVQm+fQ7fhfAsflzAKFLS1G2ptmMwUpDl1oyAGxo2fw2hHBzjpsm+XiO2TGQF1GWACJGfecAjHmgCTZum/lQfezQTZ3L7z+g3goc2xGtFT86A0qLh5pgjPF13aLmv9aHdYiVn8uMwFNixQlYqVuNvayK3sZxNElgHarlP6duo2bpOcbXWxheVhkTj7Tv4ATsTG/OL6CG8DZ+KCQMIcSf6HnAAo8hrAjGRpIblLxveDm8/q4YC6fT6flyufzWBhXGoTWd4QOUp6enX9fr9X2od6SFhJlTu4FBGZA5n+jbnddZjPG8nz8lo222ItHJEraRICAAMmG6rPGb2FTjedqHsET+4/Lbu+phHWLlJ/g+Cd4gpJDgp71HHzAHFCqOEFCSULjrNkaxw2rO/zidnv/MNY99WIcY+TKufibUmOcSEB5IxLTHXLal2FG4h83VPzET1h6wUxDP8fXfJW5V8xuQhqFwVtGNgDuQ6Yo367Pb9ixdjVckVE1QS/0ekZhybRw/zMZblkBpd1sMPIdJkAsClF2ghQQPYJYBQjp5BKCBEHD4JZDi6bED3AebRDFbAp58Ski3JrgphQcgozEwXZ2dBH3nZ2Bq5KcyahuEgO1wIWBnyIuoS5hA9pHIp01dnANSdlvKwXWocRC6Pw/U70MBozCQAWI5JKDF5wFrtk8uR6XKYQibnL9dr+/CjgA5v81AamMFByTTmOhQp56hPw5/vrrvx61euz2gZKfHgcj98bUkgjo/WJCxeMrJFyQgR8ocQcGnwqsJpgSK8pymTPeIThus4DKwBKWJFNsFklEcOT9ApyFADswAQJMiwkaUldeQ7ZTKDWf79tsSgIasDwGduro1CbY+hVqZgpJ1SA5L6bQHMJNjOy19MsCgBiNgV8DK+1GxSXoYAcMwhNttOedPIZTPAhm8bQ6Anx57ZMBGgfHuXs6yuEANBBtR/2bIjzkj8bAMSIYU+KLDaoKSU8KFCOP7LAsTcDTZ2jPAfrUWf3VGnwdo1pgF5xiz9yhazwOExwfv9suEm2XArJwNtSP/+AxgwlHL1iVwiAUdhEaAxhtLWGbZDEbPEiCyhHWIla93KO7AvMoAwre7bW5jxCAfwaHnoa4N3gVU5X2RthX0gdVNBPhDZnYgzMH7ImKbCOA8wnfsVO+jeUgIEHfYFUs7jHYNLN2YvJkBXwYaNuQIwnp2cgoCag3LN1Z2+EwfwCVPLPAOJ1n05oDt9x5oRR37Pb72s/e+kU81L/EXSRwjcUdkvjUAAAAASUVORK5CYII=)}::ng-deep .tab-content-container .as-split-gutter-icon{background-repeat:no-repeat;background-size:16px 16px}::ng-deep .tab-content-container--dark .as-split-gutter{--_as-gutter-icon-horizontal: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAABPlJREFUeF7tm1tW3DAMhu2+krCmdmWlKytrIuGV9HjixDddfjkOtOd0XmAGWZfPsiw7g3fVyzvntvpD9H01+JIuwCamX5YKf9VfmCVaDze2S2fXIDG+CGC8YsrqMCvDFDmHZYCeI5gE6LietD2LlNb6uQAQTLWfCDTLmLpOIfoRvxEZydZn+pH7+vdlAEJyoIwIwDIrFtk7C2TyA/Po9gxY1zVWrN2haZq85FqS3zEF+YET3qi6rFzjfAR0yGkBwQA0wyFU75zf5MaOBYDoR2YGDigqY+U7HOKHlAsFiQOXqax+JYCYBGJr32ZAB+lEpxwc3i1nDcDWtBUYPjN8p35VBxf/4/MQUI7lqAGPzwjYBQDv3PQ0+Ue/CjV/sODp8+UiyNE7XLHO6EM+Dg4/ntBdAI69zdIqBlgTlDldADLN9a7R551cDot0kDPNbn40AIh6LSS4DS0Be9jJg7sAXPHJfBZojbXriMscGgDvvhUYmRGEes6iocJiyVejWdelYDPNk5cquhnAxVSAlgDZQG/7bUqKjvZEDqgdYwaAzQsrVQHowFkPqd5bA4LlO1ytp+zoFM0Ml2V5CYPmeX78lF7v67rla8B6GpynKZxnxBfmD03MvASCMe/9z+DRtm2/SAiZLXRGqcapbYTaICB/BHwggN1wbuzQSUHI3UQBHPqo+wPO/7dlefkWJ0PyR0ofEIAjg49Z8GOe51fOCAYgIcPkd2vLsnz33v+ubadJ0TZw8Fqcmnkk+CBjCahHXodQ49mhHGjUDJCDf37Vjmn54Sa4MuxGaL/weWzDdggJigjgDL7KpG3bxLTPmY/PALqa90JgAahpf/ohb8jjAfAlrQdCCSDG0gRPxCiHzf81XwKUVA1M7gDwbojbspsM4GZea3jov5cFp6cGoHYRFCWE5FthQwKAGCnLS9vD6UXwXbnIRpGUcsH3D6JxI2sADwFHwEnqAI4HKW0AB07ci6QDXgLHELUIghPxbxRBBukICDuAZMCaAbu8XnLf1K4wzBjdGYpzSUGI66ntBQg/8QzYB+PyyW18++sAEHvu8wSY02IbosyONaBTPj7XO6/F+SxVzgPKRooWlN7l0A0g+i0tGXrmvdu2D/qYTrBgO0GKG3ocRlrhB/jm6a13zR2i8GAk+BOOw/lmy95RMIlgAlAvh4ex5/ll5CUndYMkJfGNFyL84sCuoHa3tSVQW9HkGxjeueUNv6Krx7dbTO5R/J1FARSQ9X3d8gyh13RSZAYA9iOcmHkJWO1ZA+LkRdbaRAlO3wogKL/+/YDZl5cuFQogC/P4k/j+mx0AYVDyYVQGWDMPlbcDQDVHOREA1DmGDAgv7emA0bEofgmAmn3euXUpT3d9Z4G+4PRR+6PR9oigRqarPiT6ng4nBzRguCe0ZJEBatyqQGvkfw249VtiHTNSzdGZAddVESmW1YBDv5bSpoxBnOZkst7h6jISx5sCEltnJFp7KKkG3KNfPQvULluB2UMuR1zaBiXjB08+IJr4FQA9c3gDgNINKSDK4SCff67VjEsZEI+Cl3Scg3vwA4cU6uu0bRL3d4k3ZEDm3mAoY2YqdX7BvVsA2OJW9qlhUe+KQvObX1DYANS+2iIdHArR0bArgXfUBoAMoewopH9ROd3oBmcZiMkOANA3sXUq9mm5Pqrvq7IYXLo3Vs713ao7WRAZ8NULfTACRd0fdjtUcYyr1cIAAAAASUVORK5CYII=)}.spacing-case-tags{margin-bottom:8px}\n/*!\n * Copyright 2015-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.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i6$1.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "component", type: i4$1.Loading, selector: "cds-loading, ibm-loading", inputs: ["title", "isActive", "size", "overlay"] }, { kind: "directive", type: i4$1.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "directive", type: i4$1.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: i2$1.ConfirmationModalComponent, selector: "valtimo-confirmation-modal", inputs: ["titleTranslationKey", "title", "content", "contentTranslationKey", "confirmButtonText", "confirmButtonTextTranslationKey", "confirmButtonType", "showOptionalButton", "optionalButtonText", "optionalButtonTextTranslationKey", "optionalButtonType", "cancelButtonText", "cancelButtonTextTranslationKey", "cancelButtonType", "showModalSubject$", "outputOnConfirm", "outputOnOptional", "spacerAfterCancelButton"], outputs: ["confirmEvent", "optionalEvent", "cancelEvent"] }, { kind: "component", type: i4$1.Tabs, selector: "cds-tabs, ibm-tabs", inputs: ["position", "cacheActive", "followFocus", "isNavigation", "ariaLabel", "ariaLabelledby", "type", "theme", "skeleton"] }, { kind: "component", type: i4$1.Tab, selector: "cds-tab, ibm-tab", inputs: ["heading", "title", "context", "active", "disabled", "tabIndex", "id", "cacheActive", "tabContent", "templateContext"], outputs: ["selected"] }, { kind: "component", type: i2$1.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "directive", type: i2$1.RenderInPageHeaderDirective, selector: "[renderInPageHeader]", inputs: ["fullWidth"] }, { kind: "component", type: i4$1.Tag, selector: "cds-tag, ibm-tag", inputs: ["type", "size", "class", "skeleton"] }, { kind: "component", type: i4$1.OverflowMenu, selector: "cds-overflow-menu, ibm-overflow-menu", inputs: ["buttonLabel", "description", "flip", "placement", "open", "customTrigger", "offset", "wrapperClass", "triggerClass"], outputs: ["openChange"] }, { kind: "component", type: i4$1.OverflowMenuOption, selector: "cds-overflow-menu-option, ibm-overflow-menu-option", inputs: ["divider", "type", "disabled", "href", "target", "innerClass"], outputs: ["selected"] }, { kind: "directive", type: i2$1.ValtimoCdsOverflowButtonDirective, selector: "[valtimoCdsOverflowButton]", inputs: ["width"] }, { kind: "component", type: CaseDetailTaskListComponent, selector: "valtimo-case-detail-task-list", inputs: ["openTaskAndProcessLinkInModal"], outputs: ["taskClickEvent", "formSubmitEvent"] }, { kind: "component", type: CaseDetailsTaskDetailComponent, selector: "valtimo-case-detail-task-detail", inputs: ["taskAndProcessLink"], outputs: ["closeEvent", "assignmentOfTaskChanged", "activeChange", "formSubmit"] }, { kind: "component", type: i17.SplitComponent, selector: "as-split", inputs: ["gutterSize", "gutterStep", "disabled", "gutterClickDeltaPx", "direction", "dir", "unit", "gutterAriaLabel", "restrictMove", "useTransition", "gutterDblClickDuration"], outputs: ["gutterClick", "gutterDblClick", "dragStart", "dragEnd", "transitionEnd"], exportAs: ["asSplit"] }, { kind: "component", type: i17.SplitAreaComponent, selector: "as-split-area", inputs: ["size", "minSize", "maxSize", "lockSize", "visible"], exportAs: ["asSplitArea"] }, { kind: "component", type: CaseDetailHeaderWidgetComponent, selector: "valtimo-case-detail-header-widget" }, { kind: "directive", type: i2$1.ObserveSizeDirective, selector: "[observeSize]", outputs: ["widthChange", "heightChange"] }, { kind: "component", type: CaseSupportingProcessStartModalComponent, selector: "valtimo-case-supporting-process-start-modal", inputs: ["isAdmin"], outputs: ["formSubmit"] }, { kind: "component", type: CaseAssignUserComponent, selector: "valtimo-case-assign-user", inputs: ["documentId", "assigneeId", "assigneeFullName", "hasPermission"], outputs: ["assignmentOfDocumentChanged"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "pipe", type: TabTranslatePipe, name: "tabTranslate" }] }); }
|
|
4618
4676
|
}
|
|
4619
4677
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseDetailComponent, decorators: [{
|
|
4620
4678
|
type: Component,
|
|
4621
|
-
args: [{ standalone: false, providers: [CaseTabService, CaseDetailLayoutService, ObserveSizeDirective], 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<div\n class=\"main-content\"\n [ngClass]=\"{'main-content--no-horizontal-overflow': $tabHorizontalOverflowDisabled()}\"\n>\n <div class=\"container-fluid\">\n <div\n class=\"main-content__header\"\n observeSize\n (heightChange)=\"onMainContentHeaderHeightChange($event)\"\n >\n <valtimo-case-detail-header-widget></valtimo-case-detail-header-widget>\n\n <ng-container *ngIf=\"caseTags$ | async as caseTags\">\n @if ((caseTags || []).length > 0) {\n <div class=\"spacing-case-tags\">\n @for (tag of caseTags; track tag) {\n <cds-tag size=\"sm\" [type]=\"tag.tagType\">\n {{ tag.title }}\n </cds-tag>\n }\n </div>\n }\n </ng-container>\n\n <ng-container *ngTemplateOutlet=\"tabs\"></ng-container>\n\n <ng-template #tabs>\n <ng-container *ngIf=\"{activeTab: activeTab$ | async} as obs\">\n <cds-tabs *ngIf=\"tabLoader\" type=\"inline\" class=\"case-detail-tabs\">\n <cds-tab\n *ngFor=\"let tab of tabLoader.tabs\"\n [active]=\"tab.name === (activeTabName$ | async)\"\n heading=\"{{ tab | tabTranslate | async }}\"\n (selected)=\"onTabSelected(tab, obs.activeTab)\"\n ></cds-tab>\n </cds-tabs>\n </ng-container>\n </ng-template>\n </div>\n\n <div\n *ngIf=\"{\n noTabsConfigured: noTabsConfigured$ | async,\n showTaskList: showTaskList$ | async,\n showNoAccess: showNoAccess$ | async,\n caseDetailLayout: caseDetailLayout$ | async,\n openTaskAndProcessLinkInModal: openTaskAndProcessLinkInModal$ | async,\n taskAndProcessLinkOpenedInPanel: taskAndProcessLinkOpenedInPanel$ | async,\n } as tabContentObs\"\n #tabContentContainer\n class=\"tab-content-container\"\n [ngClass]=\"{\n 'tab-content-container--dark': isDarkMode$ | async,\n 'tab-content-container--compact': compactMode$ | async,\n }\"\n [style.max-height]=\"tabContentContainerMaxHeight$ | async\"\n >\n <as-split\n direction=\"horizontal\"\n [disabled]=\"!tabContentObs.caseDetailLayout.widthAdjustable\"\n [gutterSize]=\"CASE_DETAIL_GUTTER_SIZE\"\n [unit]=\"tabContentObs.caseDetailLayout.unit\"\n >\n <as-split-area\n [size]=\"tabContentObs.caseDetailLayout.leftPanelWidth\"\n [minSize]=\"tabContentObs.caseDetailLayout.leftPanelMinWidth\"\n [maxSize]=\"tabContentObs.caseDetailLayout.leftPanelMaxWidth\"\n >\n <div\n class=\"card-body bg-white p-5 position-relative tab-container\"\n [class.tab-container--compact]=\"compactMode$ | async\"\n >\n <div *ngIf=\"loadingTabs$ | async\" class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n\n <valtimo-no-results\n *ngIf=\"tabContentObs.showNoAccess\"\n description=\"{{ 'case.noAccess.description' | translate }}\"\n title=\"{{ 'case.noAccess.title' | translate }}\"\n illustration=\"valtimo-layout/img/emptystate-not-authorised.svg\"\n >\n </valtimo-no-results>\n\n <valtimo-no-results\n *ngIf=\"tabContentObs.noTabsConfigured\"\n [description]=\"'case.tabs.noResultsDescription' | translate\"\n [title]=\"'case.tabs.noResults' | translate\"\n ></valtimo-no-results>\n\n <ng-template #tabContainer></ng-template>\n\n <div class=\"clearfix\"></div>\n </div>\n </as-split-area>\n\n <as-split-area\n *ngIf=\"tabContentObs.caseDetailLayout.showRightPanel\"\n [size]=\"tabContentObs.caseDetailLayout.rightPanelWidth\"\n [minSize]=\"tabContentObs.caseDetailLayout.rightPanelMinWidth\"\n [maxSize]=\"tabContentObs.caseDetailLayout.rightPanelMaxWidth\"\n >\n @if (tabContentObs.showTaskList) {\n <div class=\"task-panel\">\n @if (!tabContentObs.taskAndProcessLinkOpenedInPanel) {\n <valtimo-case-detail-task-list\n [openTaskAndProcessLinkInModal]=\"tabContentObs.openTaskAndProcessLinkInModal\"\n (taskClickEvent)=\"onTaskClickEvent($event)\"\n (formSubmitEvent)=\"onFormSubmitEvent()\"\n ></valtimo-case-detail-task-list>\n }\n\n @if (tabContentObs.taskAndProcessLinkOpenedInPanel) {\n <valtimo-case-detail-task-detail\n [taskAndProcessLink]=\"tabContentObs.taskAndProcessLinkOpenedInPanel\"\n (activeChange)=\"onActiveChangeEvent($event)\"\n (closeEvent)=\"onTaskDetailsClose()\"\n (formSubmit)=\"onFormSubmitEvent()\"\n >\n </valtimo-case-detail-task-detail>\n }\n </div>\n }\n </as-split-area>\n </as-split>\n </div>\n </div>\n\n <valtimo-case-supporting-process-start-modal\n [isAdmin]=\"isAdmin$ | async\"\n (formSubmit)=\"onFormSubmitEvent()\"\n #supportingProcessStartModal\n ></valtimo-case-supporting-process-start-modal>\n</div>\n\n<ng-template\n #caseDetailHeader\n let-canHaveAssignee=\"canHaveAssignee\"\n let-document=\"document\"\n let-canAssign=\"canAssign\"\n>\n <ng-container\n *ngTemplateOutlet=\"\n caseDetailAssignee;\n context: {canHaveAssignee: canHaveAssignee, document: document, canAssign: canAssign}\n \"\n ></ng-container>\n</ng-template>\n\n<ng-template\n #caseDetailAssignee\n let-canHaveAssignee=\"canHaveAssignee\"\n let-document=\"document\"\n let-canAssign=\"canAssign\"\n>\n <div *ngIf=\"canHaveAssignee && document\">\n <valtimo-case-assign-user\n *ngIf=\"canAssignLoaded$ | async\"\n [assigneeFullName]=\"document?.assigneeFullName\"\n [assigneeId]=\"document.assigneeId\"\n [documentId]=\"document.id\"\n [hasPermission]=\"canAssign\"\n (assignmentOfDocumentChanged)=\"assignmentOfDocumentChanged()\"\n ></valtimo-case-assign-user>\n </div>\n</ng-template>\n\n<ng-template #claimButton let-canClaim=\"canClaim\" let-canHaveAssignee=\"canHaveAssignee\">\n <cds-overflow-menu-option\n *ngIf=\"canClaim && canHaveAssignee\"\n [disabled]=\"(isAssigning$ | async) || (isAssignedToCurrentUser$ | async)\"\n (click)=\"claimAssignee()\"\n >\n {{ 'case.claimAssigneeCase' | translate }}\n </cds-overflow-menu-option>\n</ng-template>\n\n<ng-template #unassignButton let-canHaveAssignee=\"canHaveAssignee\" let-assigneeId=\"assigneeId\">\n <cds-overflow-menu-option\n *ngIf=\"canHaveAssignee\"\n [disabled]=\"!assigneeId\"\n (selected)=\"unassignAssignee()\"\n >\n {{ 'assignDocument.remove' | translate }}\n </cds-overflow-menu-option>\n</ng-template>\n\n<ng-template #deleteButton let-canDelete=\"canDelete\">\n <cds-overflow-menu-option\n *ngIf=\"canDelete\"\n [disabled]=\"isDeleting$ | async\"\n (click)=\"deleteDocument()\"\n type=\"danger\"\n >\n {{ 'case.delete.delete' | translate }}\n </cds-overflow-menu-option>\n</ng-template>\n\n<ng-template #customStartTrigger>\n <button\n [size]=\"(compactMode$ | async) ? 'sm' : 'lg'\"\n cdsButton=\"primary\"\n [disabled]=\"processDefinitionCaseDefinitions.length === 0\"\n [ngbTooltip]=\"processDefinitionCaseDefinitions.length === 0 ? 'No action' : null\"\n >\n {{ 'case.startSubProcess' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"chevron--down\" size=\"16\"></svg>\n </button>\n</ng-template>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"case.delete.confirm\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"case.delete.description\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"case.delete.delete\"\n (confirmEvent)=\"onConfirmDelete()\"\n></valtimo-confirmation-modal>\n\n<ng-container renderInPageHeader [fullWidth]=\"true\">\n <ng-template>\n <div\n class=\"case-actions\"\n [ngClass]=\"{\n 'case-actions--compact': compactMode$ | async,\n 'case-actions--small-title': smallTitle$ | async,\n }\"\n *ngIf=\"{\n assigneeId: assigneeId$ | async,\n canAssign: canAssign$ | async,\n canClaim: canClaim$ | async,\n canHaveAssignee: canHaveAssignee$ | async,\n canDelete: canDelete$ | async,\n document: document$ | async,\n caseStatus: caseStatus$ | async,\n } as obs\"\n >\n <div class=\"case-status-assign-custom-title\" [ngClass]=\"{'--compact': compactMode$ | async}\">\n @if (obs.caseStatus) {\n <cds-tag size=\"sm\" [type]=\"obs.caseStatus.tagType\" [title]=\"obs.caseStatus.title\">{{\n obs.caseStatus.title\n }}</cds-tag>\n }\n\n <div [ngClass]=\"{'--compact': compactMode$ | async}\">\n <ng-container\n *ngTemplateOutlet=\"\n caseDetailAssignee;\n context: {\n canHaveAssignee: obs.canHaveAssignee,\n document: obs.document,\n canAssign: obs.canAssign,\n }\n \"\n ></ng-container>\n </div>\n\n <ng-container *ngTemplateOutlet=\"caseDetailHeader\"></ng-container>\n </div>\n\n <div class=\"buttons-container\">\n <cds-overflow-menu\n [ngClass]=\"{'--compact': compactMode$ | async}\"\n *ngIf=\"obs.canHaveAssignee || obs.canDelete\"\n flip=\"true\"\n [offset]=\"(compactMode$ | async) ? {y: 48, x: -4} : {y: 48, x: 4}\"\n class=\"overflow-button assign-overflow\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n claimButton;\n context: {canClaim: obs.canClaim, canHaveAssignee: obs.canHaveAssignee}\n \"\n >\n </ng-container>\n\n <ng-container\n *ngTemplateOutlet=\"\n unassignButton;\n context: {canHaveAssignee: obs.canHaveAssignee, assigneeId: obs.assigneeId}\n \"\n >\n </ng-container>\n\n <ng-container *ngTemplateOutlet=\"deleteButton; context: {canDelete: obs.canDelete}\">\n </ng-container>\n </cds-overflow-menu>\n\n <cds-overflow-menu\n valtimoCdsOverflowButton\n [ngClass]=\"{'--compact': compactMode$ | async}\"\n [width]=\"dropdownWidth$ | async\"\n [customTrigger]=\"customStartTrigger\"\n [offset]=\"{y: 48, x: 35}\"\n class=\"overflow-button case-detail-overflow\"\n >\n <cds-overflow-menu-option\n *ngFor=\"let processDefinitionCaseDefinition of processDefinitionCaseDefinitions\"\n [attr.title]=\"processDefinitionCaseDefinition.displayName\"\n (click)=\"startProcess(processDefinitionCaseDefinition)\"\n >\n {{ processDefinitionCaseDefinition.displayName }}\n </cds-overflow-menu-option>\n </cds-overflow-menu>\n </div>\n </div>\n </ng-template>\n</ng-container>\n", styles: [".main-content{overflow:hidden;padding-bottom:0}.main-content--no-horizontal-overflow{overflow-x:hidden}.tab-container{height:min-content;min-height:300px;overflow-y:auto;overflow-x:hidden}.tab-container:has(>.tab--no-margin){padding:0!important}.tab-container:has(>.tab--no-min-height){min-height:unset}.tab-container:has(>.tab--no-background){background:transparent!important}.tab-content-container{display:flex;gap:32px;overflow:auto;margin-bottom:16px}.loading-container{display:flex;justify-content:center;flex-direction:row}.case-detail-tabs{display:flex;margin-bottom:24px}.case-detail-tabs cds-tab{display:none!important}.cds--overflow-menu-options{margin-top:32px}.assign-overflow{margin-right:8px}.buttons-container{display:flex;flex-direction:row}.case-actions{display:flex;width:100%;justify-content:space-between;align-items:flex-end;padding-bottom:4px}.case-actions--compact,.case-actions--small-title{padding-bottom:0;align-items:flex-start}.case-actions ::ng-deep .version-selection{width:160px}.case-actions ::ng-deep .version-selection .cds--list-box__selection{display:none}.case-status-assign-custom-title{display:flex;gap:16px;align-items:flex-end}.case-status-assign-custom-title .cds--tag{margin:0;overflow:hidden;text-overflow:ellipsis;line-height:24px;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;max-width:100%}.case-status-assign-custom-title.--compact{align-items:center}.task-panel{width:100%;transition:height .15s ease-in-out}:host ::ng-deep .container-fluid{height:100%!important;width:100%!important;margin:0!important;padding:0!important}::ng-deep .tab-content-container .as-split-gutter{background-color:transparent!important;--_as-gutter-icon-disabled: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1' height='1'/%3E\");--_as-gutter-icon-horizontal: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAABQJJREFUeF7dWll22zAMpNwzlM5xmpMlOVl6mzrKHexWm8UFy4xIp+/FP3mxQWAwWAiRGsJ3/gwhhJvt4CRCfgCtosYhDOHm4SlW7rZyq9t/R7GsZoYQDhCA89UIrzakKuQtpRTiHv03ycJB3t8KuU9AByNfw5dWJpj1h5YABmGRsvgufzsSG21NEwGWUrv5yiuZb31yMZoAAjBFPqBdor9G0vpwu2+PBgE6TK/q0pUxxiwZxnE0SefkE0sHWQUygGG3ll0c2tGNn+M0DiSfHDlHQBu2rffoWgBWPRHWIUreM654li5bMwDQBIhI9naHFgVQCSS2PHliWlLm0/YsMrcwK6ISp1QGANhzG7XFDj2gUFr8yzrkydOJ6CyACBB1lIWkbPyeQ2UQ2ZKxksCLft4EaWqB/AshHCdg0b/1gB7wJB1QBrQ0ml4E2MMyFgxJ6iABuEGdgCUeZVQm+fQ7fhfAsflzAKFLS1G2ptmMwUpDl1oyAGxo2fw2hHBzjpsm+XiO2TGQF1GWACJGfecAjHmgCTZum/lQfezQTZ3L7z+g3goc2xGtFT86A0qLh5pgjPF13aLmv9aHdYiVn8uMwFNixQlYqVuNvayK3sZxNElgHarlP6duo2bpOcbXWxheVhkTj7Tv4ATsTG/OL6CG8DZ+KCQMIcSf6HnAAo8hrAjGRpIblLxveDm8/q4YC6fT6flyufzWBhXGoTWd4QOUp6enX9fr9X2od6SFhJlTu4FBGZA5n+jbnddZjPG8nz8lo222ItHJEraRICAAMmG6rPGb2FTjedqHsET+4/Lbu+phHWLlJ/g+Cd4gpJDgp71HHzAHFCqOEFCSULjrNkaxw2rO/zidnv/MNY99WIcY+TKufibUmOcSEB5IxLTHXLal2FG4h83VPzET1h6wUxDP8fXfJW5V8xuQhqFwVtGNgDuQ6Yo367Pb9ixdjVckVE1QS/0ekZhybRw/zMZblkBpd1sMPIdJkAsClF2ghQQPYJYBQjp5BKCBEHD4JZDi6bED3AebRDFbAp58Ski3JrgphQcgozEwXZ2dBH3nZ2Bq5KcyahuEgO1wIWBnyIuoS5hA9pHIp01dnANSdlvKwXWocRC6Pw/U70MBozCQAWI5JKDF5wFrtk8uR6XKYQibnL9dr+/CjgA5v81AamMFByTTmOhQp56hPw5/vrrvx61euz2gZKfHgcj98bUkgjo/WJCxeMrJFyQgR8ocQcGnwqsJpgSK8pymTPeIThus4DKwBKWJFNsFklEcOT9ApyFADswAQJMiwkaUldeQ7ZTKDWf79tsSgIasDwGduro1CbY+hVqZgpJ1SA5L6bQHMJNjOy19MsCgBiNgV8DK+1GxSXoYAcMwhNttOedPIZTPAhm8bQ6Anx57ZMBGgfHuXs6yuEANBBtR/2bIjzkj8bAMSIYU+KLDaoKSU8KFCOP7LAsTcDTZ2jPAfrUWf3VGnwdo1pgF5xiz9yhazwOExwfv9suEm2XArJwNtSP/+AxgwlHL1iVwiAUdhEaAxhtLWGbZDEbPEiCyhHWIla93KO7AvMoAwre7bW5jxCAfwaHnoa4N3gVU5X2RthX0gdVNBPhDZnYgzMH7ImKbCOA8wnfsVO+jeUgIEHfYFUs7jHYNLN2YvJkBXwYaNuQIwnp2cgoCag3LN1Z2+EwfwCVPLPAOJ1n05oDt9x5oRR37Pb72s/e+kU81L/EXSRwjcUdkvjUAAAAASUVORK5CYII=)}::ng-deep .tab-content-container .as-split-gutter-icon{background-repeat:no-repeat;background-size:16px 16px}::ng-deep .tab-content-container--dark .as-split-gutter{--_as-gutter-icon-horizontal: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAABPlJREFUeF7tm1tW3DAMhu2+krCmdmWlKytrIuGV9HjixDddfjkOtOd0XmAGWZfPsiw7g3fVyzvntvpD9H01+JIuwCamX5YKf9VfmCVaDze2S2fXIDG+CGC8YsrqMCvDFDmHZYCeI5gE6LietD2LlNb6uQAQTLWfCDTLmLpOIfoRvxEZydZn+pH7+vdlAEJyoIwIwDIrFtk7C2TyA/Po9gxY1zVWrN2haZq85FqS3zEF+YET3qi6rFzjfAR0yGkBwQA0wyFU75zf5MaOBYDoR2YGDigqY+U7HOKHlAsFiQOXqax+JYCYBGJr32ZAB+lEpxwc3i1nDcDWtBUYPjN8p35VBxf/4/MQUI7lqAGPzwjYBQDv3PQ0+Ue/CjV/sODp8+UiyNE7XLHO6EM+Dg4/ntBdAI69zdIqBlgTlDldADLN9a7R551cDot0kDPNbn40AIh6LSS4DS0Be9jJg7sAXPHJfBZojbXriMscGgDvvhUYmRGEes6iocJiyVejWdelYDPNk5cquhnAxVSAlgDZQG/7bUqKjvZEDqgdYwaAzQsrVQHowFkPqd5bA4LlO1ytp+zoFM0Ml2V5CYPmeX78lF7v67rla8B6GpynKZxnxBfmD03MvASCMe/9z+DRtm2/SAiZLXRGqcapbYTaICB/BHwggN1wbuzQSUHI3UQBHPqo+wPO/7dlefkWJ0PyR0ofEIAjg49Z8GOe51fOCAYgIcPkd2vLsnz33v+ubadJ0TZw8Fqcmnkk+CBjCahHXodQ49mhHGjUDJCDf37Vjmn54Sa4MuxGaL/weWzDdggJigjgDL7KpG3bxLTPmY/PALqa90JgAahpf/ohb8jjAfAlrQdCCSDG0gRPxCiHzf81XwKUVA1M7gDwbojbspsM4GZea3jov5cFp6cGoHYRFCWE5FthQwKAGCnLS9vD6UXwXbnIRpGUcsH3D6JxI2sADwFHwEnqAI4HKW0AB07ci6QDXgLHELUIghPxbxRBBukICDuAZMCaAbu8XnLf1K4wzBjdGYpzSUGI66ntBQg/8QzYB+PyyW18++sAEHvu8wSY02IbosyONaBTPj7XO6/F+SxVzgPKRooWlN7l0A0g+i0tGXrmvdu2D/qYTrBgO0GKG3ocRlrhB/jm6a13zR2i8GAk+BOOw/lmy95RMIlgAlAvh4ex5/ll5CUndYMkJfGNFyL84sCuoHa3tSVQW9HkGxjeueUNv6Krx7dbTO5R/J1FARSQ9X3d8gyh13RSZAYA9iOcmHkJWO1ZA+LkRdbaRAlO3wogKL/+/YDZl5cuFQogC/P4k/j+mx0AYVDyYVQGWDMPlbcDQDVHOREA1DmGDAgv7emA0bEofgmAmn3euXUpT3d9Z4G+4PRR+6PR9oigRqarPiT6ng4nBzRguCe0ZJEBatyqQGvkfw249VtiHTNSzdGZAddVESmW1YBDv5bSpoxBnOZkst7h6jISx5sCEltnJFp7KKkG3KNfPQvULluB2UMuR1zaBiXjB08+IJr4FQA9c3gDgNINKSDK4SCff67VjEsZEI+Cl3Scg3vwA4cU6uu0bRL3d4k3ZEDm3mAoY2YqdX7BvVsA2OJW9qlhUe+KQvObX1DYANS+2iIdHArR0bArgXfUBoAMoewopH9ROd3oBmcZiMkOANA3sXUq9mm5Pqrvq7IYXLo3Vs713ao7WRAZ8NULfTACRd0fdjtUcYyr1cIAAAAASUVORK5CYII=)}.spacing-case-tags{margin-bottom:8px}\n/*!\n * Copyright 2015-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"] }]
|
|
4679
|
+
args: [{ standalone: false, providers: [CaseTabService, CaseDetailLayoutService, ObserveSizeDirective], 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<div\n class=\"main-content\"\n [ngClass]=\"{'main-content--no-horizontal-overflow': $tabHorizontalOverflowDisabled()}\"\n>\n <div class=\"container-fluid\">\n <div\n class=\"main-content__header\"\n observeSize\n (heightChange)=\"onMainContentHeaderHeightChange($event)\"\n >\n <valtimo-case-detail-header-widget></valtimo-case-detail-header-widget>\n\n <ng-container *ngIf=\"caseTags$ | async as caseTags\">\n @if ((caseTags || []).length > 0) {\n <div class=\"spacing-case-tags\">\n @for (tag of caseTags; track tag) {\n <cds-tag size=\"sm\" [type]=\"tag.tagType\">\n {{ tag.title }}\n </cds-tag>\n }\n </div>\n }\n </ng-container>\n\n <ng-container *ngTemplateOutlet=\"tabs\"></ng-container>\n\n <ng-template #tabs>\n <ng-container *ngIf=\"{activeTab: activeTab$ | async} as obs\">\n <cds-tabs *ngIf=\"tabLoader\" type=\"inline\" class=\"case-detail-tabs\">\n <cds-tab\n *ngFor=\"let tab of tabLoader.tabs\"\n [active]=\"tab.name === (activeTabName$ | async)\"\n heading=\"{{ tab | tabTranslate | async }}\"\n (selected)=\"onTabSelected(tab, obs.activeTab)\"\n ></cds-tab>\n </cds-tabs>\n </ng-container>\n </ng-template>\n </div>\n\n <div\n *ngIf=\"{\n noTabsConfigured: noTabsConfigured$ | async,\n showTaskList: showTaskList$ | async,\n showNoAccess: showNoAccess$ | async,\n caseDetailLayout: caseDetailLayout$ | async,\n openTaskAndProcessLinkInModal: openTaskAndProcessLinkInModal$ | async,\n taskAndProcessLinkOpenedInPanel: taskAndProcessLinkOpenedInPanel$ | async,\n isDarkMode: isDarkMode$ | async,\n compactMode: compactMode$ | async,\n tabContentContainerMaxHeight: tabContentContainerMaxHeight$ | async,\n } as tabContentObs\"\n #tabContentContainer\n class=\"tab-content-container\"\n [ngClass]=\"{\n 'tab-content-container--dark': tabContentObs.isDarkMode,\n 'tab-content-container--compact': tabContentObs.compactMode,\n }\"\n [style.max-height]=\"tabContentObs.tabContentContainerMaxHeight\"\n [style.height]=\"tabContentObs.tabContentContainerMaxHeight\"\n >\n <as-split\n direction=\"horizontal\"\n [disabled]=\"!tabContentObs.caseDetailLayout.widthAdjustable\"\n [gutterSize]=\"CASE_DETAIL_GUTTER_SIZE\"\n [unit]=\"tabContentObs.caseDetailLayout.unit\"\n class=\"split-area\"\n >\n <as-split-area\n [size]=\"tabContentObs.caseDetailLayout.leftPanelWidth\"\n [minSize]=\"tabContentObs.caseDetailLayout.leftPanelMinWidth\"\n [maxSize]=\"tabContentObs.caseDetailLayout.leftPanelMaxWidth\"\n class=\"split-area__content\"\n >\n <div\n class=\"card-body bg-white p-5 position-relative tab-container\"\n [class.tab-container--compact]=\"compactMode$ | async\"\n >\n <div *ngIf=\"loadingTabs$ | async\" class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n\n <valtimo-no-results\n *ngIf=\"tabContentObs.showNoAccess\"\n description=\"{{ 'case.noAccess.description' | translate }}\"\n title=\"{{ 'case.noAccess.title' | translate }}\"\n illustration=\"valtimo-layout/img/emptystate-not-authorised.svg\"\n >\n </valtimo-no-results>\n\n <valtimo-no-results\n *ngIf=\"tabContentObs.noTabsConfigured\"\n [description]=\"'case.tabs.noResultsDescription' | translate\"\n [title]=\"'case.tabs.noResults' | translate\"\n ></valtimo-no-results>\n\n <ng-template #tabContainer></ng-template>\n\n <div class=\"clearfix\"></div>\n </div>\n </as-split-area>\n\n <as-split-area\n *ngIf=\"tabContentObs.caseDetailLayout.showRightPanel\"\n [size]=\"tabContentObs.caseDetailLayout.rightPanelWidth\"\n [minSize]=\"tabContentObs.caseDetailLayout.rightPanelMinWidth\"\n [maxSize]=\"tabContentObs.caseDetailLayout.rightPanelMaxWidth\"\n >\n @if (tabContentObs.showTaskList) {\n <div class=\"task-panel\">\n @if (!tabContentObs.taskAndProcessLinkOpenedInPanel) {\n <valtimo-case-detail-task-list\n [openTaskAndProcessLinkInModal]=\"tabContentObs.openTaskAndProcessLinkInModal\"\n (taskClickEvent)=\"onTaskClickEvent($event)\"\n (formSubmitEvent)=\"onFormSubmitEvent()\"\n ></valtimo-case-detail-task-list>\n }\n\n @if (tabContentObs.taskAndProcessLinkOpenedInPanel) {\n <valtimo-case-detail-task-detail\n [taskAndProcessLink]=\"tabContentObs.taskAndProcessLinkOpenedInPanel\"\n (activeChange)=\"onActiveChangeEvent($event)\"\n (closeEvent)=\"onTaskDetailsClose()\"\n (formSubmit)=\"onFormSubmitEvent()\"\n >\n </valtimo-case-detail-task-detail>\n }\n </div>\n }\n </as-split-area>\n </as-split>\n </div>\n </div>\n\n <valtimo-case-supporting-process-start-modal\n [isAdmin]=\"isAdmin$ | async\"\n (formSubmit)=\"onFormSubmitEvent()\"\n #supportingProcessStartModal\n ></valtimo-case-supporting-process-start-modal>\n</div>\n\n<ng-template\n #caseDetailHeader\n let-canHaveAssignee=\"canHaveAssignee\"\n let-document=\"document\"\n let-canAssign=\"canAssign\"\n>\n <ng-container\n *ngTemplateOutlet=\"\n caseDetailAssignee;\n context: {canHaveAssignee: canHaveAssignee, document: document, canAssign: canAssign}\n \"\n ></ng-container>\n</ng-template>\n\n<ng-template\n #caseDetailAssignee\n let-canHaveAssignee=\"canHaveAssignee\"\n let-document=\"document\"\n let-canAssign=\"canAssign\"\n>\n <div *ngIf=\"canHaveAssignee && document\">\n <valtimo-case-assign-user\n *ngIf=\"canAssignLoaded$ | async\"\n [assigneeFullName]=\"document?.assigneeFullName\"\n [assigneeId]=\"document.assigneeId\"\n [documentId]=\"document.id\"\n [hasPermission]=\"canAssign\"\n (assignmentOfDocumentChanged)=\"assignmentOfDocumentChanged()\"\n ></valtimo-case-assign-user>\n </div>\n</ng-template>\n\n<ng-template #claimButton let-canClaim=\"canClaim\" let-canHaveAssignee=\"canHaveAssignee\">\n <cds-overflow-menu-option\n *ngIf=\"canClaim && canHaveAssignee\"\n [disabled]=\"(isAssigning$ | async) || (isAssignedToCurrentUser$ | async)\"\n (click)=\"claimAssignee()\"\n >\n {{ 'case.claimAssigneeCase' | translate }}\n </cds-overflow-menu-option>\n</ng-template>\n\n<ng-template #unassignButton let-canHaveAssignee=\"canHaveAssignee\" let-assigneeId=\"assigneeId\">\n <cds-overflow-menu-option\n *ngIf=\"canHaveAssignee\"\n [disabled]=\"!assigneeId\"\n (selected)=\"unassignAssignee()\"\n >\n {{ 'assignDocument.remove' | translate }}\n </cds-overflow-menu-option>\n</ng-template>\n\n<ng-template #deleteButton let-canDelete=\"canDelete\">\n <cds-overflow-menu-option\n *ngIf=\"canDelete\"\n [disabled]=\"isDeleting$ | async\"\n (click)=\"deleteDocument()\"\n type=\"danger\"\n >\n {{ 'case.delete.delete' | translate }}\n </cds-overflow-menu-option>\n</ng-template>\n\n<ng-template #customStartTrigger>\n <button\n [size]=\"(compactMode$ | async) ? 'sm' : 'lg'\"\n cdsButton=\"primary\"\n [disabled]=\"processDefinitionCaseDefinitions.length === 0\"\n [ngbTooltip]=\"processDefinitionCaseDefinitions.length === 0 ? 'No action' : null\"\n >\n {{ 'case.startSubProcess' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"chevron--down\" size=\"16\"></svg>\n </button>\n</ng-template>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"case.delete.confirm\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"case.delete.description\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"case.delete.delete\"\n (confirmEvent)=\"onConfirmDelete()\"\n></valtimo-confirmation-modal>\n\n<ng-container renderInPageHeader [fullWidth]=\"true\">\n <ng-template>\n <div\n class=\"case-actions\"\n [ngClass]=\"{\n 'case-actions--compact': compactMode$ | async,\n 'case-actions--small-title': smallTitle$ | async,\n }\"\n *ngIf=\"{\n assigneeId: assigneeId$ | async,\n canAssign: canAssign$ | async,\n canClaim: canClaim$ | async,\n canHaveAssignee: canHaveAssignee$ | async,\n canDelete: canDelete$ | async,\n document: document$ | async,\n caseStatus: caseStatus$ | async,\n } as obs\"\n >\n <div class=\"case-status-assign-custom-title\" [ngClass]=\"{'--compact': compactMode$ | async}\">\n @if (obs.caseStatus) {\n <cds-tag size=\"sm\" [type]=\"obs.caseStatus.tagType\" [title]=\"obs.caseStatus.title\">{{\n obs.caseStatus.title\n }}</cds-tag>\n }\n\n <div [ngClass]=\"{'--compact': compactMode$ | async}\">\n <ng-container\n *ngTemplateOutlet=\"\n caseDetailAssignee;\n context: {\n canHaveAssignee: obs.canHaveAssignee,\n document: obs.document,\n canAssign: obs.canAssign,\n }\n \"\n ></ng-container>\n </div>\n\n <ng-container *ngTemplateOutlet=\"caseDetailHeader\"></ng-container>\n </div>\n\n <div class=\"buttons-container\">\n <cds-overflow-menu\n [ngClass]=\"{'--compact': compactMode$ | async}\"\n *ngIf=\"obs.canHaveAssignee || obs.canDelete\"\n flip=\"true\"\n [offset]=\"(compactMode$ | async) ? {y: 48, x: -4} : {y: 48, x: 4}\"\n class=\"overflow-button assign-overflow\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n claimButton;\n context: {canClaim: obs.canClaim, canHaveAssignee: obs.canHaveAssignee}\n \"\n >\n </ng-container>\n\n <ng-container\n *ngTemplateOutlet=\"\n unassignButton;\n context: {canHaveAssignee: obs.canHaveAssignee, assigneeId: obs.assigneeId}\n \"\n >\n </ng-container>\n\n <ng-container *ngTemplateOutlet=\"deleteButton; context: {canDelete: obs.canDelete}\">\n </ng-container>\n </cds-overflow-menu>\n\n <cds-overflow-menu\n valtimoCdsOverflowButton\n [ngClass]=\"{'--compact': compactMode$ | async}\"\n [width]=\"dropdownWidth$ | async\"\n [customTrigger]=\"customStartTrigger\"\n [offset]=\"{y: 48, x: 35}\"\n class=\"overflow-button case-detail-overflow\"\n >\n <cds-overflow-menu-option\n *ngFor=\"let processDefinitionCaseDefinition of processDefinitionCaseDefinitions\"\n [attr.title]=\"processDefinitionCaseDefinition.displayName\"\n (click)=\"startProcess(processDefinitionCaseDefinition)\"\n >\n {{ processDefinitionCaseDefinition.displayName }}\n </cds-overflow-menu-option>\n </cds-overflow-menu>\n </div>\n </div>\n </ng-template>\n</ng-container>\n", styles: [".main-content{overflow:hidden;padding-bottom:0}.main-content--no-horizontal-overflow{overflow-x:hidden}.tab-container{height:min-content;min-height:300px;overflow-y:auto;overflow-x:hidden}.tab-container:has(>.tab--no-margin){padding:0!important}.tab-container:has(>.tab--no-min-height){min-height:unset}.tab-container:has(>.tab--no-background){background:transparent!important}.tab-content-container{display:flex;gap:32px;overflow:auto;margin-bottom:16px}.loading-container{display:flex;justify-content:center;flex-direction:row}.case-detail-tabs{display:flex;margin-bottom:24px}.case-detail-tabs cds-tab{display:none!important}.cds--overflow-menu-options{margin-top:32px}.assign-overflow{margin-right:8px}.buttons-container{display:flex;flex-direction:row}.case-actions{display:flex;width:100%;justify-content:space-between;align-items:flex-end;padding-bottom:4px}.case-actions--compact,.case-actions--small-title{padding-bottom:0;align-items:flex-start}.case-actions ::ng-deep .version-selection{width:160px}.case-actions ::ng-deep .version-selection .cds--list-box__selection{display:none}.case-status-assign-custom-title{display:flex;gap:16px;align-items:flex-end}.case-status-assign-custom-title .cds--tag{margin:0;overflow:hidden;text-overflow:ellipsis;line-height:24px;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;max-width:100%}.case-status-assign-custom-title.--compact{align-items:center}.task-panel{width:100%;transition:height .15s ease-in-out}.split-area__content{height:100%!important}.split-area__content .tab-container{height:min-content!important;overflow:hidden!important}:host ::ng-deep .container-fluid{height:100%!important;width:100%!important;margin:0!important;padding:0!important}::ng-deep .tab-content-container .as-split-gutter{background-color:transparent!important;--_as-gutter-icon-disabled: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1' height='1'/%3E\");--_as-gutter-icon-horizontal: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAABQJJREFUeF7dWll22zAMpNwzlM5xmpMlOVl6mzrKHexWm8UFy4xIp+/FP3mxQWAwWAiRGsJ3/gwhhJvt4CRCfgCtosYhDOHm4SlW7rZyq9t/R7GsZoYQDhCA89UIrzakKuQtpRTiHv03ycJB3t8KuU9AByNfw5dWJpj1h5YABmGRsvgufzsSG21NEwGWUrv5yiuZb31yMZoAAjBFPqBdor9G0vpwu2+PBgE6TK/q0pUxxiwZxnE0SefkE0sHWQUygGG3ll0c2tGNn+M0DiSfHDlHQBu2rffoWgBWPRHWIUreM654li5bMwDQBIhI9naHFgVQCSS2PHliWlLm0/YsMrcwK6ISp1QGANhzG7XFDj2gUFr8yzrkydOJ6CyACBB1lIWkbPyeQ2UQ2ZKxksCLft4EaWqB/AshHCdg0b/1gB7wJB1QBrQ0ml4E2MMyFgxJ6iABuEGdgCUeZVQm+fQ7fhfAsflzAKFLS1G2ptmMwUpDl1oyAGxo2fw2hHBzjpsm+XiO2TGQF1GWACJGfecAjHmgCTZum/lQfezQTZ3L7z+g3goc2xGtFT86A0qLh5pgjPF13aLmv9aHdYiVn8uMwFNixQlYqVuNvayK3sZxNElgHarlP6duo2bpOcbXWxheVhkTj7Tv4ATsTG/OL6CG8DZ+KCQMIcSf6HnAAo8hrAjGRpIblLxveDm8/q4YC6fT6flyufzWBhXGoTWd4QOUp6enX9fr9X2od6SFhJlTu4FBGZA5n+jbnddZjPG8nz8lo222ItHJEraRICAAMmG6rPGb2FTjedqHsET+4/Lbu+phHWLlJ/g+Cd4gpJDgp71HHzAHFCqOEFCSULjrNkaxw2rO/zidnv/MNY99WIcY+TKufibUmOcSEB5IxLTHXLal2FG4h83VPzET1h6wUxDP8fXfJW5V8xuQhqFwVtGNgDuQ6Yo367Pb9ixdjVckVE1QS/0ekZhybRw/zMZblkBpd1sMPIdJkAsClF2ghQQPYJYBQjp5BKCBEHD4JZDi6bED3AebRDFbAp58Ski3JrgphQcgozEwXZ2dBH3nZ2Bq5KcyahuEgO1wIWBnyIuoS5hA9pHIp01dnANSdlvKwXWocRC6Pw/U70MBozCQAWI5JKDF5wFrtk8uR6XKYQibnL9dr+/CjgA5v81AamMFByTTmOhQp56hPw5/vrrvx61euz2gZKfHgcj98bUkgjo/WJCxeMrJFyQgR8ocQcGnwqsJpgSK8pymTPeIThus4DKwBKWJFNsFklEcOT9ApyFADswAQJMiwkaUldeQ7ZTKDWf79tsSgIasDwGduro1CbY+hVqZgpJ1SA5L6bQHMJNjOy19MsCgBiNgV8DK+1GxSXoYAcMwhNttOedPIZTPAhm8bQ6Anx57ZMBGgfHuXs6yuEANBBtR/2bIjzkj8bAMSIYU+KLDaoKSU8KFCOP7LAsTcDTZ2jPAfrUWf3VGnwdo1pgF5xiz9yhazwOExwfv9suEm2XArJwNtSP/+AxgwlHL1iVwiAUdhEaAxhtLWGbZDEbPEiCyhHWIla93KO7AvMoAwre7bW5jxCAfwaHnoa4N3gVU5X2RthX0gdVNBPhDZnYgzMH7ImKbCOA8wnfsVO+jeUgIEHfYFUs7jHYNLN2YvJkBXwYaNuQIwnp2cgoCag3LN1Z2+EwfwCVPLPAOJ1n05oDt9x5oRR37Pb72s/e+kU81L/EXSRwjcUdkvjUAAAAASUVORK5CYII=)}::ng-deep .tab-content-container .as-split-gutter-icon{background-repeat:no-repeat;background-size:16px 16px}::ng-deep .tab-content-container--dark .as-split-gutter{--_as-gutter-icon-horizontal: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAABPlJREFUeF7tm1tW3DAMhu2+krCmdmWlKytrIuGV9HjixDddfjkOtOd0XmAGWZfPsiw7g3fVyzvntvpD9H01+JIuwCamX5YKf9VfmCVaDze2S2fXIDG+CGC8YsrqMCvDFDmHZYCeI5gE6LietD2LlNb6uQAQTLWfCDTLmLpOIfoRvxEZydZn+pH7+vdlAEJyoIwIwDIrFtk7C2TyA/Po9gxY1zVWrN2haZq85FqS3zEF+YET3qi6rFzjfAR0yGkBwQA0wyFU75zf5MaOBYDoR2YGDigqY+U7HOKHlAsFiQOXqax+JYCYBGJr32ZAB+lEpxwc3i1nDcDWtBUYPjN8p35VBxf/4/MQUI7lqAGPzwjYBQDv3PQ0+Ue/CjV/sODp8+UiyNE7XLHO6EM+Dg4/ntBdAI69zdIqBlgTlDldADLN9a7R551cDot0kDPNbn40AIh6LSS4DS0Be9jJg7sAXPHJfBZojbXriMscGgDvvhUYmRGEes6iocJiyVejWdelYDPNk5cquhnAxVSAlgDZQG/7bUqKjvZEDqgdYwaAzQsrVQHowFkPqd5bA4LlO1ytp+zoFM0Ml2V5CYPmeX78lF7v67rla8B6GpynKZxnxBfmD03MvASCMe/9z+DRtm2/SAiZLXRGqcapbYTaICB/BHwggN1wbuzQSUHI3UQBHPqo+wPO/7dlefkWJ0PyR0ofEIAjg49Z8GOe51fOCAYgIcPkd2vLsnz33v+ubadJ0TZw8Fqcmnkk+CBjCahHXodQ49mhHGjUDJCDf37Vjmn54Sa4MuxGaL/weWzDdggJigjgDL7KpG3bxLTPmY/PALqa90JgAahpf/ohb8jjAfAlrQdCCSDG0gRPxCiHzf81XwKUVA1M7gDwbojbspsM4GZea3jov5cFp6cGoHYRFCWE5FthQwKAGCnLS9vD6UXwXbnIRpGUcsH3D6JxI2sADwFHwEnqAI4HKW0AB07ci6QDXgLHELUIghPxbxRBBukICDuAZMCaAbu8XnLf1K4wzBjdGYpzSUGI66ntBQg/8QzYB+PyyW18++sAEHvu8wSY02IbosyONaBTPj7XO6/F+SxVzgPKRooWlN7l0A0g+i0tGXrmvdu2D/qYTrBgO0GKG3ocRlrhB/jm6a13zR2i8GAk+BOOw/lmy95RMIlgAlAvh4ex5/ll5CUndYMkJfGNFyL84sCuoHa3tSVQW9HkGxjeueUNv6Krx7dbTO5R/J1FARSQ9X3d8gyh13RSZAYA9iOcmHkJWO1ZA+LkRdbaRAlO3wogKL/+/YDZl5cuFQogC/P4k/j+mx0AYVDyYVQGWDMPlbcDQDVHOREA1DmGDAgv7emA0bEofgmAmn3euXUpT3d9Z4G+4PRR+6PR9oigRqarPiT6ng4nBzRguCe0ZJEBatyqQGvkfw249VtiHTNSzdGZAddVESmW1YBDv5bSpoxBnOZkst7h6jISx5sCEltnJFp7KKkG3KNfPQvULluB2UMuR1zaBiXjB08+IJr4FQA9c3gDgNINKSDK4SCff67VjEsZEI+Cl3Scg3vwA4cU6uu0bRL3d4k3ZEDm3mAoY2YqdX7BvVsA2OJW9qlhUe+KQvObX1DYANS+2iIdHArR0bArgXfUBoAMoewopH9ROd3oBmcZiMkOANA3sXUq9mm5Pqrvq7IYXLo3Vs713ao7WRAZ8NULfTACRd0fdjtUcYyr1cIAAAAASUVORK5CYII=)}.spacing-case-tags{margin-bottom:8px}\n/*!\n * Copyright 2015-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"] }]
|
|
4622
4680
|
}], ctorParameters: () => [{ type: i2$1.BreadcrumbService }, { type: i2.CaseStatusService }, { type: i2$1.CdsThemeService }, { type: i0.ComponentFactoryResolver }, { type: i2.DocumentService }, { type: CaseDetailLayoutService }, { type: CaseService }, { type: CaseTabService }, { type: i4$1.IconService }, { type: i5$2.KeycloakService }, { type: i1$3.NGXLogger }, { type: i1.GlobalNotificationService }, { type: i2$1.PageHeaderService }, { type: i2$1.PageTitleService }, { type: i2$3.PermissionService }, { type: i4.TranslateService }, { type: i0.Renderer2 }, { type: i1$2.ActivatedRoute }, { type: i1$2.Router }, { type: WidgetsService }, { type: i12.UserProviderService }, { type: Document, decorators: [{
|
|
4623
4681
|
type: Inject,
|
|
4624
4682
|
args: [DOCUMENT]
|
|
@@ -4856,7 +4914,7 @@ class CaseProcessStartModalComponent {
|
|
|
4856
4914
|
this.closeModalEvent.emit();
|
|
4857
4915
|
}
|
|
4858
4916
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseProcessStartModalComponent, deps: [{ token: i1$2.Router }, { token: i2$2.ProcessService }, { token: i3$3.ProcessLinkService }, { token: i12.UserProviderService }, { token: i2$3.PermissionService }, { token: CaseListService }, { token: StartModalService }, { token: i1.ConfigService }, { token: FORM_VIEW_MODEL_TOKEN, optional: true }, { token: FORM_CUSTOM_COMPONENT_TOKEN, optional: true }, { token: i3$3.UrlResolverService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4859
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: CaseProcessStartModalComponent, isStandalone: true, selector: "valtimo-case-process-start-modal", inputs: { navigateAfterSubmit: "navigateAfterSubmit" }, outputs: { formFlowComplete: "formFlowComplete", noProcessLinked: "noProcessLinked" }, viewQueries: [{ propertyName: "form", first: true, predicate: ["form"], descendants: true }, { propertyName: "formViewModelDynamicContainer", first: true, predicate: ["formViewModelComponent"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: "formCustomComponentDynamicContainer", first: true, predicate: ["formCustomComponent"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<valtimo-render-in-body>\n<cds-modal [open]=\"modalOpen$ | async\" size=\"sm\" valtimoCdsModal [minContentHeight]=\"480\">\n
|
|
4917
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: CaseProcessStartModalComponent, isStandalone: true, selector: "valtimo-case-process-start-modal", inputs: { navigateAfterSubmit: "navigateAfterSubmit" }, outputs: { formFlowComplete: "formFlowComplete", noProcessLinked: "noProcessLinked" }, viewQueries: [{ propertyName: "form", first: true, predicate: ["form"], descendants: true }, { propertyName: "formViewModelDynamicContainer", first: true, predicate: ["formViewModelComponent"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: "formCustomComponentDynamicContainer", first: true, predicate: ["formCustomComponent"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<valtimo-render-in-body>\n <cds-modal [open]=\"modalOpen$ | async\" size=\"sm\" valtimoCdsModal [minContentHeight]=\"480\">\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCloseSelect()\"\n ><h3 cdsModalHeaderHeading>\n {{ modalTitle }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent [cdsLayer]=\"1\" class=\"process-start-modal-content\">\n <ng-template #formViewModelComponent></ng-template>\n\n <ng-template #formCustomComponent></ng-template>\n\n @if (formDefinition && !isFormViewModel) {\n <valtimo-form-io\n #form\n [form]=\"formDefinition\"\n [options]=\"options\"\n (submit)=\"onSubmit($event)\"\n >\n </valtimo-form-io>\n }\n\n @if (formFlowInstanceId) {\n <valtimo-form-flow\n [formFlowInstanceId]=\"formFlowInstanceId\"\n (formFlowComplete)=\"formFlowSubmitted()\"\n ></valtimo-form-flow>\n }\n\n @if (!formFlowInstanceId && !formDefinition && isAdmin && !isUIComponent) {\n <div\n class=\"bg-warning text-black mb-0 p-3 text-center\"\n [translate]=\"'formManagement.noFormDefinitionFoundAdmin'\"\n ></div>\n <div class=\"mb-0 mt-4 p-3 text-center\">\n <button\n (click)=\"gotoProcessLinkScreen()\"\n class=\"btn btn-secondary btn-space\"\n id=\"process-link-button\"\n type=\"button\"\n >\n {{ 'formManagement.gotoProcessLinksButton' | translate }}\n </button>\n </div>\n }\n\n @if (!formFlowInstanceId && !formDefinition && !isAdmin && !isUIComponent) {\n <div\n class=\"bg-warning text-black mb-0 p-3 text-center\"\n [translate]=\"'formManagement.noFormDefinitionFoundUser'\"\n ></div>\n }\n </section>\n </cds-modal>\n</valtimo-render-in-body>\n", styles: [".process-start-modal-content{padding:16px}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "directive", type: i4.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "ngmodule", type: ProcessLinkModule }, { kind: "component", type: i3$3.FormFlowComponent, selector: "valtimo-form-flow", inputs: ["formIoFormData", "formFlowInstanceId"], outputs: ["formFlowComplete", "formFlowChange"] }, { kind: "ngmodule", type: FormIoModule }, { kind: "component", type: i2$1.FormioComponent, selector: "valtimo-form-io", inputs: ["options", "submission", "form", "readOnly", "formRefresh$"], outputs: ["submit", "change", "event"] }, { kind: "directive", type: ValtimoCdsModalDirective, selector: "[valtimoCdsModal]", inputs: ["minContentHeight"] }, { kind: "ngmodule", type: DialogModule }, { kind: "ngmodule", type: ModalModule }, { kind: "component", type: i4$1.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i4$1.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "directive", type: i4$1.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }, { kind: "directive", type: i4$1.ModalHeaderHeading, selector: "[cdsModalHeaderHeading], [ibmModalHeaderHeading]" }, { kind: "ngmodule", type: LayerModule }, { kind: "directive", type: i4$1.LayerDirective, selector: "[cdsLayer], [ibmLayer]", inputs: ["ibmLayer", "cdsLayer"], exportAs: ["layer"] }, { kind: "component", type: RenderInBodyComponent, selector: "valtimo-render-in-body" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
4860
4918
|
}
|
|
4861
4919
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseProcessStartModalComponent, decorators: [{
|
|
4862
4920
|
type: Component,
|
|
@@ -4870,7 +4928,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
4870
4928
|
ModalModule,
|
|
4871
4929
|
LayerModule,
|
|
4872
4930
|
RenderInBodyComponent,
|
|
4873
|
-
], template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<valtimo-render-in-body>\n<cds-modal [open]=\"modalOpen$ | async\" size=\"sm\" valtimoCdsModal [minContentHeight]=\"480\">\n
|
|
4931
|
+
], template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<valtimo-render-in-body>\n <cds-modal [open]=\"modalOpen$ | async\" size=\"sm\" valtimoCdsModal [minContentHeight]=\"480\">\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCloseSelect()\"\n ><h3 cdsModalHeaderHeading>\n {{ modalTitle }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent [cdsLayer]=\"1\" class=\"process-start-modal-content\">\n <ng-template #formViewModelComponent></ng-template>\n\n <ng-template #formCustomComponent></ng-template>\n\n @if (formDefinition && !isFormViewModel) {\n <valtimo-form-io\n #form\n [form]=\"formDefinition\"\n [options]=\"options\"\n (submit)=\"onSubmit($event)\"\n >\n </valtimo-form-io>\n }\n\n @if (formFlowInstanceId) {\n <valtimo-form-flow\n [formFlowInstanceId]=\"formFlowInstanceId\"\n (formFlowComplete)=\"formFlowSubmitted()\"\n ></valtimo-form-flow>\n }\n\n @if (!formFlowInstanceId && !formDefinition && isAdmin && !isUIComponent) {\n <div\n class=\"bg-warning text-black mb-0 p-3 text-center\"\n [translate]=\"'formManagement.noFormDefinitionFoundAdmin'\"\n ></div>\n <div class=\"mb-0 mt-4 p-3 text-center\">\n <button\n (click)=\"gotoProcessLinkScreen()\"\n class=\"btn btn-secondary btn-space\"\n id=\"process-link-button\"\n type=\"button\"\n >\n {{ 'formManagement.gotoProcessLinksButton' | translate }}\n </button>\n </div>\n }\n\n @if (!formFlowInstanceId && !formDefinition && !isAdmin && !isUIComponent) {\n <div\n class=\"bg-warning text-black mb-0 p-3 text-center\"\n [translate]=\"'formManagement.noFormDefinitionFoundUser'\"\n ></div>\n }\n </section>\n </cds-modal>\n</valtimo-render-in-body>\n", styles: [".process-start-modal-content{padding:16px}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
4874
4932
|
}], ctorParameters: () => [{ type: i1$2.Router }, { type: i2$2.ProcessService }, { type: i3$3.ProcessLinkService }, { type: i12.UserProviderService }, { type: i2$3.PermissionService }, { type: CaseListService }, { type: StartModalService }, { type: i1.ConfigService }, { type: undefined, decorators: [{
|
|
4875
4933
|
type: Optional
|
|
4876
4934
|
}, {
|
|
@@ -5690,7 +5748,8 @@ const routes = [
|
|
|
5690
5748
|
path: 'cases/:caseDefinitionKey/document/:documentId/:tab',
|
|
5691
5749
|
component: CaseDetailComponent,
|
|
5692
5750
|
canActivate: [AuthGuardService],
|
|
5693
|
-
|
|
5751
|
+
//TODO: Re-enable when pending changes is fixed
|
|
5752
|
+
// canDeactivate: [pendingChangesGuard],
|
|
5694
5753
|
data: {
|
|
5695
5754
|
title: 'Case details',
|
|
5696
5755
|
parentPath: 'cases/:caseDefinitionKey',
|
|
@@ -6094,5 +6153,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
6094
6153
|
* Generated bundle index. Do not edit.
|
|
6095
6154
|
*/
|
|
6096
6155
|
|
|
6097
|
-
export { ApiTabType, CASE_DETAIL_DEFAULT_DISPLAY_SIZE, CASE_DETAIL_DEFAULT_DISPLAY_TYPE, CASE_DETAIL_GUTTER_SIZE, CASE_DETAIL_LEFT_PANEL_MIN_WIDTH, CASE_DETAIL_RIGHT_PANEL_MIN_WIDTHS, CASE_DETAIL_START_PROCESS_DROPDOWN_WIDTH, CASE_DETAIL_TASK_LIST_WIDTH, CASE_LIST_NO_RESULTS_MESSAGE, CASE_LIST_TABLE_TRANSLATIONS, CASE_TAB_TOKEN, CASE_WITHOUT_STATUS_STATUS, CaseBulkAssignModalComponent, CaseBulkAssignService, CaseColumnService, CaseDetailComponent, CaseDetailLayoutService, CaseDetailTabAuditComponent, CaseDetailTabDocumentsComponent, CaseDetailTabNotesComponent, CaseDetailTabProgressComponent, CaseDetailTabSummaryComponent, CaseExportService, CaseHeaderWidgetApiService, CaseListActionsComponent, CaseListAssigneeService, CaseListCaseTagService, CaseListComponent, CaseListHiddenColumnsService, CaseListPaginationService, CaseListQuickSearchService, CaseListSearchService, CaseListService, CaseListStatusService, CaseMenuService, CaseModule, CaseParameterService, CaseProcessStartModalComponent, CaseService, CaseTabApiService, CaseTabService,
|
|
6156
|
+
export { ApiTabType, CASE_DETAIL_DEFAULT_DISPLAY_SIZE, CASE_DETAIL_DEFAULT_DISPLAY_TYPE, CASE_DETAIL_GUTTER_SIZE, CASE_DETAIL_LEFT_PANEL_MIN_WIDTH, CASE_DETAIL_RIGHT_PANEL_MIN_WIDTHS, CASE_DETAIL_START_PROCESS_DROPDOWN_WIDTH, CASE_DETAIL_TASK_LIST_WIDTH, CASE_LIST_NO_RESULTS_MESSAGE, CASE_LIST_TABLE_TRANSLATIONS, CASE_TAB_TOKEN, CASE_WITHOUT_STATUS_STATUS, CaseBulkAssignModalComponent, CaseBulkAssignService, CaseColumnService, CaseDetailComponent, CaseDetailLayoutService, CaseDetailTabAuditComponent, CaseDetailTabDocumentsComponent, CaseDetailTabNotesComponent, CaseDetailTabProgressComponent, CaseDetailTabSummaryComponent, CaseExportService, CaseHeaderWidgetApiService, CaseListActionsComponent, CaseListAssigneeService, CaseListCaseTagService, CaseListComponent, CaseListHiddenColumnsService, CaseListPaginationService, CaseListQuickSearchService, CaseListSearchService, CaseListService, CaseListStatusService, CaseMenuService, CaseModule, CaseParameterService, CaseProcessStartModalComponent, CaseService, CaseTabApiService, CaseTabService, CaseWidgetsApiService, DEFAULT_CASE_LIST_TABS, DEFAULT_TABS, DEFAULT_TAB_COMPONENTS, DefaultTabs, StartModalService, TAB_MAP, TabImpl, TabLoaderImpl, WIDGET_HEIGHT_1X, WIDGET_WIDTH_1X };
|
|
6098
6157
|
//# sourceMappingURL=valtimo-case.mjs.map
|