@valtimo/case 13.2.1 → 13.4.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 +561 -169
- package/fesm2022/valtimo-case.mjs.map +1 -1
- package/lib/case.module.d.ts +34 -33
- package/lib/case.module.d.ts.map +1 -1
- package/lib/components/case-detail/case-detail.component.d.ts +2 -0
- package/lib/components/case-detail/case-detail.component.d.ts.map +1 -1
- package/lib/components/case-detail/tab/formio/formio.component.d.ts +3 -1
- package/lib/components/case-detail/tab/formio/formio.component.d.ts.map +1 -1
- package/lib/components/case-detail/tab/summary/summary.component.d.ts +3 -1
- package/lib/components/case-detail/tab/summary/summary.component.d.ts.map +1 -1
- package/lib/components/case-detail/tab/widgets/components/collection/case-widget-collection.component.d.ts +1 -0
- 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/field/case-widget-field.component.d.ts +1 -0
- 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 +6 -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/table/case-widget-table.component.d.ts +1 -0
- package/lib/components/case-detail/tab/widgets/components/table/case-widget-table.component.d.ts.map +1 -1
- package/lib/components/case-detail/tab/widgets/widgets.component.d.ts +12 -2
- package/lib/components/case-detail/tab/widgets/widgets.component.d.ts.map +1 -1
- package/lib/components/case-detail/tab/widgets/widgets.service.d.ts +3 -0
- package/lib/components/case-detail/tab/widgets/widgets.service.d.ts.map +1 -1
- package/lib/components/case-detail-header-widget/case-detail-header-widget.component.d.ts +31 -0
- package/lib/components/case-detail-header-widget/case-detail-header-widget.component.d.ts.map +1 -0
- package/lib/components/case-list/case-list.component.d.ts +22 -10
- package/lib/components/case-list/case-list.component.d.ts.map +1 -1
- package/lib/components/case-list-actions/case-list-actions.component.d.ts +2 -1
- package/lib/components/case-list-actions/case-list-actions.component.d.ts.map +1 -1
- package/lib/components/case-process-start-modal/case-process-start-modal.component.d.ts +10 -12
- package/lib/components/case-process-start-modal/case-process-start-modal.component.d.ts.map +1 -1
- package/lib/models/case-list-quick-search.model.d.ts +4 -0
- package/lib/models/case-list-quick-search.model.d.ts.map +1 -0
- package/lib/models/case-sse-event.model.d.ts +7 -0
- package/lib/models/case-sse-event.model.d.ts.map +1 -0
- package/lib/models/case-widget.model.d.ts +14 -50
- package/lib/models/case-widget.model.d.ts.map +1 -1
- package/lib/models/index.d.ts +2 -0
- package/lib/models/index.d.ts.map +1 -1
- package/lib/services/case-detail-layout.service.d.ts +8 -1
- package/lib/services/case-detail-layout.service.d.ts.map +1 -1
- package/lib/services/case-header-widget-api.service.d.ts +15 -0
- package/lib/services/case-header-widget-api.service.d.ts.map +1 -0
- package/lib/services/case-list-case-tag.service.d.ts +3 -3
- package/lib/services/case-list-case-tag.service.d.ts.map +1 -1
- package/lib/services/case-list-hidden-columns.service.d.ts +15 -0
- package/lib/services/case-list-hidden-columns.service.d.ts.map +1 -0
- package/lib/services/case-list-quick-search.service.d.ts +23 -0
- package/lib/services/case-list-quick-search.service.d.ts.map +1 -0
- package/lib/services/case-list-status.service.d.ts +3 -3
- package/lib/services/case-list-status.service.d.ts.map +1 -1
- package/lib/services/case-list.service.d.ts +0 -3
- package/lib/services/case-list.service.d.ts.map +1 -1
- package/lib/services/case-parameter.service.d.ts +9 -4
- package/lib/services/case-parameter.service.d.ts.map +1 -1
- package/lib/services/index.d.ts +3 -0
- package/lib/services/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/public_api.d.ts +1 -0
- package/public_api.d.ts.map +1 -1
|
@@ -2,7 +2,7 @@ import * as i0 from '@angular/core';
|
|
|
2
2
|
import { Injectable, ViewEncapsulation, Component, EventEmitter, Output, ViewContainerRef, ViewChild, HostBinding, Optional, Inject, Input, ChangeDetectionStrategy, InjectionToken, signal, Pipe, NgModule } from '@angular/core';
|
|
3
3
|
import * as i1$4 from '@angular/forms';
|
|
4
4
|
import { Validators, FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
5
|
-
import { BehaviorSubject, take, map, distinctUntilChanged, combineLatest, Subject, switchMap, tap, filter, Subscription,
|
|
5
|
+
import { BehaviorSubject, take, map, distinctUntilChanged, combineLatest, Subject, switchMap, tap, filter, Subscription, startWith, forkJoin, of, catchError as catchError$1, shareReplay, first, fromEvent, from, debounceTime, defaultIfEmpty } from 'rxjs';
|
|
6
6
|
import * as i1 from '@valtimo/shared';
|
|
7
7
|
import { UploadProvider, ZGW_DOCUMENTEN_API_DOCUMENTS_COMPONENT_TOKEN, CaseListTab, TagColor, BaseApiService, ZGW_OBJECT_TYPE_COMPONENT_TOKEN, InterceptorSkip, FORM_VIEW_MODEL_TOKEN, ROLE_USER, ConfigModule, HttpLoaderFactory } from '@valtimo/shared';
|
|
8
8
|
import * as i1$1 from '@angular/common/http';
|
|
@@ -15,16 +15,17 @@ 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, PendingChangesComponent,
|
|
18
|
+
import { FormioOptionsImpl, TimelineItemImpl, CASES_WITHOUT_STATUS_KEY, CarbonListModule, EllipsisPipe, FormIoModule, WidgetModule, CurrentCarbonTheme, CARBON_THEME, PendingChangesComponent, ObserveSizeDirective, ValtimoCdsModalDirective, RenderInBodyComponent, ViewType, QUICK_SEARCH_SERVICE, CarbonListComponent, pendingChangesGuard, 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
21
|
import { catchError, switchMap as switchMap$1, map as map$1, tap as tap$1, take as take$1 } from 'rxjs/operators';
|
|
22
22
|
import * as i3 from '@valtimo/form';
|
|
23
23
|
import { FormModule } from '@valtimo/form';
|
|
24
|
+
import * as i5 from '@valtimo/sse';
|
|
24
25
|
import * as i6 from '@angular/common';
|
|
25
26
|
import { CommonModule, DOCUMENT } from '@angular/common';
|
|
26
27
|
import * as i4$1 from 'carbon-components-angular';
|
|
27
|
-
import { InputModule, ButtonModule, PaginationModule, TilesModule, LoadingModule, LayerModule, TagModule, IconModule,
|
|
28
|
+
import { InputModule, ButtonModule, PaginationModule, TilesModule, LoadingModule, LayerModule, TagModule, IconModule, DialogModule, ModalModule, Tabs, SelectModule as SelectModule$1, DropdownModule, TabsModule, ComboBoxModule, SkeletonModule, NotificationModule, TooltipModule } from 'carbon-components-angular';
|
|
28
29
|
import * as i2$2 from '@valtimo/process';
|
|
29
30
|
import { ProcessModule } from '@valtimo/process';
|
|
30
31
|
import * as i3$1 from 'ngx-spinner';
|
|
@@ -32,20 +33,21 @@ import * as i6$1 from '@ng-bootstrap/ng-bootstrap';
|
|
|
32
33
|
import { NgbTooltipModule, NgbButtonsModule, NgbPaginationModule, NgbModule } from '@ng-bootstrap/ng-bootstrap';
|
|
33
34
|
import * as i3$2 from '@valtimo/resource';
|
|
34
35
|
import * as i2$3 from '@valtimo/access-control';
|
|
35
|
-
import * as i5 from '@valtimo/layout';
|
|
36
|
+
import * as i5$1 from '@valtimo/layout';
|
|
36
37
|
import { WidgetFieldComponent, WidgetCustomComponent, WidgetFormioComponent, WidgetTableComponent, WidgetCollectionComponent, WidgetType, WidgetContainerComponent } from '@valtimo/layout';
|
|
37
|
-
import
|
|
38
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
39
|
+
import { isEqual } from 'lodash-es';
|
|
38
40
|
import { UserFilled20, ChevronDown16 } from '@carbon/icons';
|
|
39
|
-
import * as i5$
|
|
41
|
+
import * as i5$2 from 'keycloak-angular';
|
|
40
42
|
import * as i12 from '@valtimo/security';
|
|
41
43
|
import { AuthGuardService } from '@valtimo/security';
|
|
42
44
|
import * as i6$2 from '@valtimo/task';
|
|
43
45
|
import { CAN_VIEW_TASK_PERMISSION, TASK_DETAIL_PERMISSION_RESOURCE, TaskModule, CAN_ASSIGN_TASK_PERMISSION, CAN_MODIFY_TASK_PERMISSION, TaskDetailContentComponent, TaskDetailIntermediateSaveComponent, AssignUserToTaskComponent, SetTaskDueDateComponent } from '@valtimo/task';
|
|
44
|
-
import * as
|
|
46
|
+
import * as i3$3 from '@valtimo/process-link';
|
|
45
47
|
import { FORM_CUSTOM_COMPONENT_TOKEN, ProcessLinkModule } from '@valtimo/process-link';
|
|
46
48
|
import * as i17 from 'angular-split';
|
|
47
49
|
import { AngularSplitModule } from 'angular-split';
|
|
48
|
-
import { isEqual } from 'lodash';
|
|
50
|
+
import { isEqual as isEqual$1 } from 'lodash';
|
|
49
51
|
|
|
50
52
|
class CaseBulkAssignService {
|
|
51
53
|
constructor(configService, http) {
|
|
@@ -185,17 +187,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
185
187
|
* limitations under the License.
|
|
186
188
|
*/
|
|
187
189
|
class CaseParameterService {
|
|
188
|
-
get
|
|
189
|
-
return this.
|
|
190
|
+
get caseParameters$() {
|
|
191
|
+
return this._caseParameters$.asObservable();
|
|
190
192
|
}
|
|
191
193
|
get searchFieldValues$() {
|
|
192
194
|
return this._searchFieldValues$.asObservable();
|
|
193
195
|
}
|
|
194
196
|
get querySearchParams$() {
|
|
195
197
|
return this.route.queryParams.pipe(map(params => {
|
|
196
|
-
if (params.search)
|
|
198
|
+
if (params.search)
|
|
197
199
|
return JSON.parse(atob(params.search));
|
|
198
|
-
}
|
|
199
200
|
return {};
|
|
200
201
|
}), distinctUntilChanged((prevParams, currParams) => JSON.stringify(prevParams) === JSON.stringify(currParams)));
|
|
201
202
|
}
|
|
@@ -247,36 +248,36 @@ class CaseParameterService {
|
|
|
247
248
|
constructor(router, route) {
|
|
248
249
|
this.router = router;
|
|
249
250
|
this.route = route;
|
|
250
|
-
this.
|
|
251
|
+
this._caseParameters$ = new BehaviorSubject(undefined);
|
|
251
252
|
this._searchFieldValues$ = new BehaviorSubject({});
|
|
252
|
-
this.
|
|
253
|
+
this.setCaseParameters();
|
|
253
254
|
}
|
|
254
255
|
ngOnDestroy() {
|
|
255
|
-
this.
|
|
256
|
+
this._caseParametersSubscription?.unsubscribe();
|
|
256
257
|
}
|
|
257
258
|
setSearchFieldValues(searchFieldValues) {
|
|
258
259
|
this._searchFieldValues$.next(searchFieldValues);
|
|
259
260
|
}
|
|
260
261
|
setSearchParameters(searchParameters) {
|
|
261
|
-
this.
|
|
262
|
+
this._caseParameters$.pipe(take(1)).subscribe(caseParameters => {
|
|
262
263
|
if (Object.keys(searchParameters || {}).length > 0) {
|
|
263
|
-
this.
|
|
264
|
-
...
|
|
265
|
-
|
|
264
|
+
this._caseParameters$.next({
|
|
265
|
+
...caseParameters,
|
|
266
|
+
...this.getSearchParameter('search', searchParameters),
|
|
266
267
|
});
|
|
267
268
|
}
|
|
268
269
|
else {
|
|
269
|
-
if (
|
|
270
|
-
delete
|
|
270
|
+
if (caseParameters?.search) {
|
|
271
|
+
delete caseParameters.search;
|
|
271
272
|
}
|
|
272
|
-
this.
|
|
273
|
+
this._caseParameters$.next(caseParameters);
|
|
273
274
|
}
|
|
274
275
|
});
|
|
275
276
|
}
|
|
276
277
|
setPaginationParameters(pagination) {
|
|
277
278
|
if (pagination) {
|
|
278
|
-
this.
|
|
279
|
-
this.
|
|
279
|
+
this._caseParameters$.pipe(take(1)).subscribe(dossierParameters => {
|
|
280
|
+
this._caseParameters$.next({
|
|
280
281
|
...dossierParameters,
|
|
281
282
|
size: `${pagination.size}`,
|
|
282
283
|
collectionSize: `${pagination.collectionSize}`,
|
|
@@ -291,42 +292,42 @@ class CaseParameterService {
|
|
|
291
292
|
}
|
|
292
293
|
}
|
|
293
294
|
setAssigneeParameter(assigneeFilter) {
|
|
294
|
-
this.
|
|
295
|
-
this.
|
|
295
|
+
this._caseParameters$.pipe(take(1)).subscribe(dossierParameters => {
|
|
296
|
+
this._caseParameters$.next({
|
|
296
297
|
...dossierParameters,
|
|
297
298
|
assignee: assigneeFilter.toLowerCase(),
|
|
298
299
|
});
|
|
299
300
|
});
|
|
300
301
|
}
|
|
301
302
|
setStatusParameter(statusKeyParameters) {
|
|
302
|
-
this.
|
|
303
|
+
this._caseParameters$.pipe(take(1)).subscribe(dossierParameters => {
|
|
303
304
|
if ((statusKeyParameters || []).length > 0) {
|
|
304
|
-
this.
|
|
305
|
+
this._caseParameters$.next({
|
|
305
306
|
...dossierParameters,
|
|
306
|
-
|
|
307
|
+
...this.getSearchParameter('status', statusKeyParameters),
|
|
307
308
|
});
|
|
308
309
|
}
|
|
309
310
|
else {
|
|
310
311
|
if (dossierParameters?.status) {
|
|
311
312
|
delete dossierParameters.status;
|
|
312
313
|
}
|
|
313
|
-
this.
|
|
314
|
+
this._caseParameters$.next(dossierParameters);
|
|
314
315
|
}
|
|
315
316
|
});
|
|
316
317
|
}
|
|
317
318
|
setCaseTagParameter(caseTagKeyParameters) {
|
|
318
|
-
this.
|
|
319
|
+
this._caseParameters$.pipe(take(1)).subscribe(dossierParameters => {
|
|
319
320
|
if ((caseTagKeyParameters || []).length > 0) {
|
|
320
|
-
this.
|
|
321
|
+
this._caseParameters$.next({
|
|
321
322
|
...dossierParameters,
|
|
322
|
-
|
|
323
|
+
...this.getSearchParameter('casetags', caseTagKeyParameters),
|
|
323
324
|
});
|
|
324
325
|
}
|
|
325
326
|
else {
|
|
326
327
|
if (dossierParameters?.casetags) {
|
|
327
328
|
delete dossierParameters.casetags;
|
|
328
329
|
}
|
|
329
|
-
this.
|
|
330
|
+
this._caseParameters$.next(dossierParameters);
|
|
330
331
|
}
|
|
331
332
|
});
|
|
332
333
|
}
|
|
@@ -334,11 +335,17 @@ class CaseParameterService {
|
|
|
334
335
|
this._searchFieldValues$.next({});
|
|
335
336
|
}
|
|
336
337
|
clearParameters() {
|
|
337
|
-
this.
|
|
338
|
+
this._caseParameters$.next(undefined);
|
|
338
339
|
this.router.navigate([this.getUrlWithoutParams()], { replaceUrl: true });
|
|
339
340
|
}
|
|
341
|
+
getSearchParameter(searchParamKey, parameters) {
|
|
342
|
+
return { [searchParamKey]: this.objectToBase64(parameters) };
|
|
343
|
+
}
|
|
344
|
+
getSearchObject(searchQuery) {
|
|
345
|
+
return this.base64ToObject(searchQuery);
|
|
346
|
+
}
|
|
340
347
|
openDossierParametersSubscription() {
|
|
341
|
-
this.
|
|
348
|
+
this._caseParametersSubscription = this.caseParameters$.subscribe(dossierParams => {
|
|
342
349
|
this.router.navigate([this.getUrlWithoutParams()], {
|
|
343
350
|
queryParams: dossierParams,
|
|
344
351
|
replaceUrl: true,
|
|
@@ -348,13 +355,16 @@ class CaseParameterService {
|
|
|
348
355
|
objectToBase64(jsObject) {
|
|
349
356
|
return btoa(JSON.stringify(jsObject));
|
|
350
357
|
}
|
|
358
|
+
base64ToObject(string) {
|
|
359
|
+
return JSON.parse(atob(string));
|
|
360
|
+
}
|
|
351
361
|
getUrlWithoutParams() {
|
|
352
362
|
const urlTree = this.router.parseUrl(this.router.url);
|
|
353
363
|
urlTree.queryParams = {};
|
|
354
364
|
urlTree.fragment = null;
|
|
355
365
|
return urlTree.toString();
|
|
356
366
|
}
|
|
357
|
-
|
|
367
|
+
setCaseParameters() {
|
|
358
368
|
combineLatest([
|
|
359
369
|
this.queryPaginationParams$,
|
|
360
370
|
this.querySearchParams$,
|
|
@@ -402,6 +412,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
402
412
|
* limitations under the License.
|
|
403
413
|
*/
|
|
404
414
|
class CaseListService {
|
|
415
|
+
constructor() {
|
|
416
|
+
this._caseDefinitionKey$ = new BehaviorSubject('');
|
|
417
|
+
this._checkRefresh$ = new BehaviorSubject(false);
|
|
418
|
+
this._forceRefresh$ = new BehaviorSubject(false);
|
|
419
|
+
}
|
|
405
420
|
get caseDefinitionKey$() {
|
|
406
421
|
return this._caseDefinitionKey$.asObservable();
|
|
407
422
|
}
|
|
@@ -411,12 +426,6 @@ class CaseListService {
|
|
|
411
426
|
get forceRefresh$() {
|
|
412
427
|
return this._forceRefresh$.asObservable();
|
|
413
428
|
}
|
|
414
|
-
constructor(caseColumnService) {
|
|
415
|
-
this.caseColumnService = caseColumnService;
|
|
416
|
-
this._caseDefinitionKey$ = new BehaviorSubject('');
|
|
417
|
-
this._checkRefresh$ = new BehaviorSubject(false);
|
|
418
|
-
this._forceRefresh$ = new BehaviorSubject(false);
|
|
419
|
-
}
|
|
420
429
|
setCaseDefinitionKey(caseDefinitionKey) {
|
|
421
430
|
this._caseDefinitionKey$.next(caseDefinitionKey);
|
|
422
431
|
}
|
|
@@ -445,12 +454,12 @@ class CaseListService {
|
|
|
445
454
|
this._checkRefresh$.next(!checkRefresh);
|
|
446
455
|
});
|
|
447
456
|
}
|
|
448
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseListService, deps: [
|
|
457
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseListService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
449
458
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseListService }); }
|
|
450
459
|
}
|
|
451
460
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseListService, decorators: [{
|
|
452
461
|
type: Injectable
|
|
453
|
-
}]
|
|
462
|
+
}] });
|
|
454
463
|
|
|
455
464
|
/*
|
|
456
465
|
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
@@ -837,6 +846,7 @@ var CaseWidgetType;
|
|
|
837
846
|
CaseWidgetType["CUSTOM"] = "custom";
|
|
838
847
|
CaseWidgetType["COLLECTION"] = "collection";
|
|
839
848
|
CaseWidgetType["FORMIO"] = "formio";
|
|
849
|
+
CaseWidgetType["DIVIDER"] = "divider";
|
|
840
850
|
})(CaseWidgetType || (CaseWidgetType = {}));
|
|
841
851
|
|
|
842
852
|
/*
|
|
@@ -1065,6 +1075,22 @@ class TabImpl {
|
|
|
1065
1075
|
* limitations under the License.
|
|
1066
1076
|
*/
|
|
1067
1077
|
|
|
1078
|
+
/*
|
|
1079
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
1080
|
+
*
|
|
1081
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
1082
|
+
* you may not use this file except in compliance with the License.
|
|
1083
|
+
* You may obtain a copy of the License at
|
|
1084
|
+
*
|
|
1085
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
1086
|
+
*
|
|
1087
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
1088
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
1089
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
1090
|
+
* See the License for the specific language governing permissions and
|
|
1091
|
+
* limitations under the License.
|
|
1092
|
+
*/
|
|
1093
|
+
|
|
1068
1094
|
/*
|
|
1069
1095
|
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
1070
1096
|
*
|
|
@@ -1083,11 +1109,12 @@ class TabImpl {
|
|
|
1083
1109
|
moment.locale(localStorage.getItem('langKey') || '');
|
|
1084
1110
|
moment.defaultFormat = 'DD MMM YYYY HH:mm';
|
|
1085
1111
|
class CaseDetailTabSummaryComponent {
|
|
1086
|
-
constructor(documentService, route, formService, translateService) {
|
|
1112
|
+
constructor(documentService, route, formService, translateService, sseService) {
|
|
1087
1113
|
this.documentService = documentService;
|
|
1088
1114
|
this.route = route;
|
|
1089
1115
|
this.formService = formService;
|
|
1090
1116
|
this.translateService = translateService;
|
|
1117
|
+
this.sseService = sseService;
|
|
1091
1118
|
this.formDefinition$ = new BehaviorSubject(null);
|
|
1092
1119
|
this.document$ = new BehaviorSubject(null);
|
|
1093
1120
|
this.loading$ = new BehaviorSubject(true);
|
|
@@ -1107,13 +1134,16 @@ class CaseDetailTabSummaryComponent {
|
|
|
1107
1134
|
this._subscriptions.unsubscribe();
|
|
1108
1135
|
}
|
|
1109
1136
|
init() {
|
|
1110
|
-
this._subscriptions.add(
|
|
1111
|
-
|
|
1112
|
-
this.
|
|
1137
|
+
this._subscriptions.add(this.sseService
|
|
1138
|
+
.getSseEventObservable('DOCUMENT_UPDATED')
|
|
1139
|
+
.pipe(startWith(null), filter(event => event === null || event.documentId === this.documentId), switchMap(() => forkJoin({
|
|
1140
|
+
document: this.documentService
|
|
1141
|
+
.getDocument(this.documentId)
|
|
1142
|
+
.pipe(catchError(() => of(null))),
|
|
1143
|
+
formDefinition: this.formService
|
|
1113
1144
|
.getFormDefinitionByNamePreFilled(`${this.caseDefinitionKey}.summary`, this.documentId)
|
|
1114
1145
|
.pipe(catchError(() => of(null))),
|
|
1115
|
-
|
|
1116
|
-
.pipe(tap(([document, formDefinition]) => {
|
|
1146
|
+
})), tap(({ document, formDefinition }) => {
|
|
1117
1147
|
this.document$.next(document);
|
|
1118
1148
|
this.formDefinition$.next(formDefinition);
|
|
1119
1149
|
if (!formDefinition || !document) {
|
|
@@ -1134,13 +1164,13 @@ class CaseDetailTabSummaryComponent {
|
|
|
1134
1164
|
}))
|
|
1135
1165
|
.subscribe());
|
|
1136
1166
|
}
|
|
1137
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseDetailTabSummaryComponent, deps: [{ token: i2.DocumentService }, { token: i1$2.ActivatedRoute }, { token: i3.FormService }, { token: i4.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1167
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseDetailTabSummaryComponent, deps: [{ token: i2.DocumentService }, { token: i1$2.ActivatedRoute }, { token: i3.FormService }, { token: i4.TranslateService }, { token: i5.SseService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1138
1168
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: CaseDetailTabSummaryComponent, isStandalone: false, selector: "ng-component", ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n formDefinition: formDefinition$ | async,\n document: document$ | async,\n loading: loading$ | async,\n notificationObj: notificationObj$ | async,\n } as obs\"\n>\n @if (!obs.loading && obs.document && obs.formDefinition) {\n <valtimo-form-io\n class=\"valtimo-summary-form\"\n [form]=\"obs.formDefinition\"\n [options]=\"options\"\n ></valtimo-form-io>\n } @else if (obs.notificationObj) {\n <cds-inline-notification [notificationObj]=\"obs.notificationObj\"></cds-inline-notification>\n }\n</ng-container>\n", styles: [".hoverable:hover{background-color:#eee}.valtimo-summary-form .formio-component{margin-bottom:0!important}.valtimo-summary-form .formio-component div[ref=element] .form-control{height:24px!important;background-color:#fff;border:0px;margin:0;padding:0!important;font-size:13px}.valtimo-summary-form .formio-field div[ref=element] .form-control{font-weight:400}.valtimo-summary-form .formio-value div[ref=element] .form-control{font-weight:700}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$1.FormioComponent, selector: "valtimo-form-io", inputs: ["options", "submission", "form", "readOnly", "formRefresh$"], outputs: ["submit", "change", "event"] }, { kind: "component", type: i4$1.Notification, selector: "cds-notification, cds-inline-notification, ibm-notification, ibm-inline-notification", inputs: ["notificationObj"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
1139
1169
|
}
|
|
1140
1170
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseDetailTabSummaryComponent, decorators: [{
|
|
1141
1171
|
type: Component,
|
|
1142
1172
|
args: [{ standalone: false, encapsulation: ViewEncapsulation.None, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n formDefinition: formDefinition$ | async,\n document: document$ | async,\n loading: loading$ | async,\n notificationObj: notificationObj$ | async,\n } as obs\"\n>\n @if (!obs.loading && obs.document && obs.formDefinition) {\n <valtimo-form-io\n class=\"valtimo-summary-form\"\n [form]=\"obs.formDefinition\"\n [options]=\"options\"\n ></valtimo-form-io>\n } @else if (obs.notificationObj) {\n <cds-inline-notification [notificationObj]=\"obs.notificationObj\"></cds-inline-notification>\n }\n</ng-container>\n", styles: [".hoverable:hover{background-color:#eee}.valtimo-summary-form .formio-component{margin-bottom:0!important}.valtimo-summary-form .formio-component div[ref=element] .form-control{height:24px!important;background-color:#fff;border:0px;margin:0;padding:0!important;font-size:13px}.valtimo-summary-form .formio-field div[ref=element] .form-control{font-weight:400}.valtimo-summary-form .formio-value div[ref=element] .form-control{font-weight:700}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
1143
|
-
}], ctorParameters: () => [{ type: i2.DocumentService }, { type: i1$2.ActivatedRoute }, { type: i3.FormService }, { type: i4.TranslateService }] });
|
|
1173
|
+
}], ctorParameters: () => [{ type: i2.DocumentService }, { type: i1$2.ActivatedRoute }, { type: i3.FormService }, { type: i4.TranslateService }, { type: i5.SseService }] });
|
|
1144
1174
|
|
|
1145
1175
|
/*
|
|
1146
1176
|
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
@@ -1550,7 +1580,7 @@ const CAN_DELETE_CASE_PERMISSION = {
|
|
|
1550
1580
|
};
|
|
1551
1581
|
const CAN_EXPORT_CASE_PERMISSION = {
|
|
1552
1582
|
action: PERMISSION_ACTION$1.export,
|
|
1553
|
-
resource: CASE_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument
|
|
1583
|
+
resource: CASE_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,
|
|
1554
1584
|
};
|
|
1555
1585
|
|
|
1556
1586
|
/*
|
|
@@ -2023,17 +2053,21 @@ const CASE_DETAIL_START_PROCESS_DROPDOWN_WIDTH = {
|
|
|
2023
2053
|
* limitations under the License.
|
|
2024
2054
|
*/
|
|
2025
2055
|
class CaseDetailTabFormioComponent {
|
|
2026
|
-
constructor(tabService, route, formService) {
|
|
2056
|
+
constructor(tabService, route, formService, sseService) {
|
|
2027
2057
|
this.tabService = tabService;
|
|
2028
2058
|
this.route = route;
|
|
2029
2059
|
this.formService = formService;
|
|
2060
|
+
this.sseService = sseService;
|
|
2030
2061
|
this.loading$ = new BehaviorSubject(true);
|
|
2031
2062
|
this.formNotFound$ = new BehaviorSubject('');
|
|
2032
2063
|
this.noFormSpecified$ = new BehaviorSubject(false);
|
|
2033
2064
|
this.prefilledForm$ = combineLatest([
|
|
2034
2065
|
this.tabService.tabs$,
|
|
2035
2066
|
this.route.params,
|
|
2036
|
-
|
|
2067
|
+
this.sseService
|
|
2068
|
+
.getSseEventObservable('DOCUMENT_UPDATED')
|
|
2069
|
+
.pipe(startWith(null)),
|
|
2070
|
+
]).pipe(filter(([_, params, event]) => event === null || event.documentId === params?.documentId), switchMap(([tabs, params]) => {
|
|
2037
2071
|
const currentTabName = params?.tab;
|
|
2038
2072
|
const documentId = params?.documentId;
|
|
2039
2073
|
const currentTab = tabs.find(tab => tab.name === currentTabName);
|
|
@@ -2049,13 +2083,13 @@ class CaseDetailTabFormioComponent {
|
|
|
2049
2083
|
return of(null);
|
|
2050
2084
|
}));
|
|
2051
2085
|
}
|
|
2052
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseDetailTabFormioComponent, deps: [{ token: CaseTabService }, { token: i1$2.ActivatedRoute }, { token: i3.FormService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2086
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseDetailTabFormioComponent, deps: [{ token: CaseTabService }, { token: i1$2.ActivatedRoute }, { token: i3.FormService }, { token: i5.SseService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2053
2087
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: CaseDetailTabFormioComponent, isStandalone: false, selector: "ng-component", ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n prefilledForm: prefilledForm$ | async,\n loading: loading$ | async,\n formNotFound: formNotFound$ | async,\n noFormSpecified: noFormSpecified$ | async,\n } as obs\"\n>\n <div *ngIf=\"obs.loading\" class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n\n <p *ngIf=\"obs.formNotFound\" class=\"error-message\">\n {{ 'case.formio.formNotFound' | translate: {formDefinitionName: obs.formNotFound} }}\n </p>\n\n <p *ngIf=\"obs.noFormSpecified\" class=\"error-message\">\n {{ 'case.formio.noFormSpecified' | translate }}\n </p>\n\n <valtimo-form-io *ngIf=\"obs.prefilledForm\" [form]=\"obs.prefilledForm\"> </valtimo-form-io>\n</ng-container>\n", styles: [".loading-container{display:flex;width:100%;flex-direction:row;justify-content:center}.error-message{text-align:center}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$1.FormioComponent, selector: "valtimo-form-io", inputs: ["options", "submission", "form", "readOnly", "formRefresh$"], outputs: ["submit", "change", "event"] }, { kind: "component", type: i4$1.Loading, selector: "cds-loading, ibm-loading", inputs: ["title", "isActive", "size", "overlay"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2054
2088
|
}
|
|
2055
2089
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseDetailTabFormioComponent, decorators: [{
|
|
2056
2090
|
type: Component,
|
|
2057
2091
|
args: [{ standalone: false, 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<ng-container\n *ngIf=\"{\n prefilledForm: prefilledForm$ | async,\n loading: loading$ | async,\n formNotFound: formNotFound$ | async,\n noFormSpecified: noFormSpecified$ | async,\n } as obs\"\n>\n <div *ngIf=\"obs.loading\" class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n\n <p *ngIf=\"obs.formNotFound\" class=\"error-message\">\n {{ 'case.formio.formNotFound' | translate: {formDefinitionName: obs.formNotFound} }}\n </p>\n\n <p *ngIf=\"obs.noFormSpecified\" class=\"error-message\">\n {{ 'case.formio.noFormSpecified' | translate }}\n </p>\n\n <valtimo-form-io *ngIf=\"obs.prefilledForm\" [form]=\"obs.prefilledForm\"> </valtimo-form-io>\n</ng-container>\n", styles: [".loading-container{display:flex;width:100%;flex-direction:row;justify-content:center}.error-message{text-align:center}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
2058
|
-
}], ctorParameters: () => [{ type: CaseTabService }, { type: i1$2.ActivatedRoute }, { type: i3.FormService }] });
|
|
2092
|
+
}], ctorParameters: () => [{ type: CaseTabService }, { type: i1$2.ActivatedRoute }, { type: i3.FormService }, { type: i5.SseService }] });
|
|
2059
2093
|
|
|
2060
2094
|
/*
|
|
2061
2095
|
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
@@ -2172,7 +2206,9 @@ class WidgetsService {
|
|
|
2172
2206
|
this.documentService = documentService;
|
|
2173
2207
|
this._documentId$ = new BehaviorSubject(null);
|
|
2174
2208
|
this._activeProcessKey$ = new BehaviorSubject(null);
|
|
2209
|
+
this._refreshWidgets$ = new Subject();
|
|
2175
2210
|
this.startProcessEvent = new EventEmitter();
|
|
2211
|
+
this.refreshWidgets$ = this._refreshWidgets$.asObservable();
|
|
2176
2212
|
this.documentProcesses$ = this._documentId$.pipe(filter((documentId) => !!documentId), switchMap((documentId) => this.documentService.findProcessDefinitionCaseDefinitionsForDocument(documentId, {
|
|
2177
2213
|
startableByUser: true,
|
|
2178
2214
|
})), distinctUntilChanged());
|
|
@@ -2184,6 +2220,9 @@ class WidgetsService {
|
|
|
2184
2220
|
finishProcess() {
|
|
2185
2221
|
this._activeProcessKey$.next(null);
|
|
2186
2222
|
}
|
|
2223
|
+
refreshWidgets() {
|
|
2224
|
+
this._refreshWidgets$.next();
|
|
2225
|
+
}
|
|
2187
2226
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: WidgetsService, deps: [{ token: i2.DocumentService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
2188
2227
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: WidgetsService, providedIn: 'root' }); }
|
|
2189
2228
|
}
|
|
@@ -2231,10 +2270,12 @@ class CaseWidgetFieldComponent extends WidgetProcess {
|
|
|
2231
2270
|
this._documentId$ = new BehaviorSubject('');
|
|
2232
2271
|
this.widgetConfiguration$ = new BehaviorSubject(null);
|
|
2233
2272
|
this.tabKey$ = this.caseTabService.activeTabKey$;
|
|
2273
|
+
this._refresh$ = this.widgetsService.refreshWidgets$.pipe(startWith(null));
|
|
2234
2274
|
this.widgetData$ = combineLatest([
|
|
2235
2275
|
this.widgetConfiguration$,
|
|
2236
2276
|
this.tabKey$,
|
|
2237
2277
|
this._documentId$,
|
|
2278
|
+
this._refresh$,
|
|
2238
2279
|
]).pipe(switchMap(([widget, tabkey, documentId]) => this.caseWidgetApiService.getWidgetData(documentId, tabkey, widget.key, undefined)), tap(() => {
|
|
2239
2280
|
this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid);
|
|
2240
2281
|
}), catchError$1((error) => {
|
|
@@ -2246,8 +2287,8 @@ class CaseWidgetFieldComponent extends WidgetProcess {
|
|
|
2246
2287
|
onProcessStartClick(process) {
|
|
2247
2288
|
this.widgetsService.startProcess(process.processDefinitionKey);
|
|
2248
2289
|
}
|
|
2249
|
-
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.WidgetLayoutService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2250
|
-
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 <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</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"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2290
|
+
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.actions?.length === 1) {\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</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 }); }
|
|
2251
2292
|
}
|
|
2252
2293
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseWidgetFieldComponent, decorators: [{
|
|
2253
2294
|
type: Component,
|
|
@@ -2260,7 +2301,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
2260
2301
|
ButtonModule,
|
|
2261
2302
|
WidgetFieldComponent,
|
|
2262
2303
|
], 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 <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</valtimo-widget-field>\n" }]
|
|
2263
|
-
}], ctorParameters: () => [{ type: i2.DocumentService }, { type: i2$3.PermissionService }, { type: WidgetsService }, { type: CaseTabService }, { type: CaseWidgetsApiService }, { type: i5.WidgetLayoutService }], propDecorators: { documentId: [{
|
|
2304
|
+
}], ctorParameters: () => [{ type: i2.DocumentService }, { type: i2$3.PermissionService }, { type: WidgetsService }, { type: CaseTabService }, { type: CaseWidgetsApiService }, { type: i5$1.WidgetLayoutService }], propDecorators: { documentId: [{
|
|
2264
2305
|
type: Input,
|
|
2265
2306
|
args: [{ required: true }]
|
|
2266
2307
|
}], widgetConfiguration: [{
|
|
@@ -2346,7 +2387,6 @@ class CaseWidgetFormioComponent extends WidgetProcess {
|
|
|
2346
2387
|
set widgetConfiguration(value) {
|
|
2347
2388
|
if (!value)
|
|
2348
2389
|
return;
|
|
2349
|
-
this.layoutService.setWidgetWithExternalData(value.uuid);
|
|
2350
2390
|
this.baseWidgetConfiguration = value;
|
|
2351
2391
|
this._widgetConfigurationSubject$.next(value);
|
|
2352
2392
|
}
|
|
@@ -2356,25 +2396,32 @@ class CaseWidgetFormioComponent extends WidgetProcess {
|
|
|
2356
2396
|
get documentId$() {
|
|
2357
2397
|
return this._documentIdSubject$.pipe(filter(id => !!id));
|
|
2358
2398
|
}
|
|
2359
|
-
constructor(documentService, permissionService, layoutService, widgetsService) {
|
|
2399
|
+
constructor(documentService, permissionService, layoutService, widgetsService, destroyRef) {
|
|
2360
2400
|
super(documentService, permissionService);
|
|
2361
2401
|
this.documentService = documentService;
|
|
2362
2402
|
this.permissionService = permissionService;
|
|
2363
2403
|
this.layoutService = layoutService;
|
|
2364
2404
|
this.widgetsService = widgetsService;
|
|
2405
|
+
this.destroyRef = destroyRef;
|
|
2365
2406
|
this._widgetConfigurationSubject$ = new BehaviorSubject(null);
|
|
2407
|
+
this.refreshForm = new EventEmitter();
|
|
2366
2408
|
this._documentIdSubject$ = new BehaviorSubject('');
|
|
2367
2409
|
}
|
|
2410
|
+
ngOnInit() {
|
|
2411
|
+
this.widgetsService.refreshWidgets$
|
|
2412
|
+
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
2413
|
+
.subscribe(() => this.refreshForm.emit());
|
|
2414
|
+
}
|
|
2368
2415
|
onProcessStartClick(process) {
|
|
2369
2416
|
this.widgetsService.startProcess(process.processDefinitionKey);
|
|
2370
2417
|
}
|
|
2371
|
-
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: i5.WidgetLayoutService }, { token: WidgetsService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2372
|
-
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>\n @if (obs.widgetConfiguration?.actions?.length === 1) {\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</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", "widgetUuid"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
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: i5$1.WidgetLayoutService }, { token: WidgetsService }, { token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
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 *ngIf=\"canCreateCamundaExecution$ | async\"\n cdsButton=\"ghost\"\n (click)=\"onProcessStartClick(obs.widgetConfiguration?.actions[0])\"\n >\n {{ obs.widgetConfiguration?.actions[0].name }}\n </button>\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", "widgetUuid", "refreshForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2373
2420
|
}
|
|
2374
2421
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseWidgetFormioComponent, decorators: [{
|
|
2375
2422
|
type: Component,
|
|
2376
|
-
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>\n @if (obs.widgetConfiguration?.actions?.length === 1) {\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</valtimo-widget-formio>\n" }]
|
|
2377
|
-
}], ctorParameters: () => [{ type: i2.DocumentService }, { type: i2$3.PermissionService }, { type: i5.WidgetLayoutService }, { type: WidgetsService }], propDecorators: { documentId: [{
|
|
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 *ngIf=\"canCreateCamundaExecution$ | async\"\n cdsButton=\"ghost\"\n (click)=\"onProcessStartClick(obs.widgetConfiguration?.actions[0])\"\n >\n {{ obs.widgetConfiguration?.actions[0].name }}\n </button>\n }\n</valtimo-widget-formio>\n" }]
|
|
2424
|
+
}], ctorParameters: () => [{ type: i2.DocumentService }, { type: i2$3.PermissionService }, { type: i5$1.WidgetLayoutService }, { type: WidgetsService }, { type: i0.DestroyRef }], propDecorators: { documentId: [{
|
|
2378
2425
|
type: Input
|
|
2379
2426
|
}], widgetConfiguration: [{
|
|
2380
2427
|
type: Input
|
|
@@ -2422,10 +2469,12 @@ class CaseWidgetTableComponent extends WidgetProcess {
|
|
|
2422
2469
|
this.widgetConfiguration$ = new BehaviorSubject(null);
|
|
2423
2470
|
this._queryParams$ = new BehaviorSubject(null);
|
|
2424
2471
|
this.tabKey$ = this.caseTabService.activeTabKey$;
|
|
2472
|
+
this._refresh$ = this.widgetsService.refreshWidgets$.pipe(startWith(null));
|
|
2425
2473
|
this._initialWidgetData$ = combineLatest([
|
|
2426
2474
|
this.widgetConfiguration$,
|
|
2427
2475
|
this.tabKey$,
|
|
2428
2476
|
this._documentId$,
|
|
2477
|
+
this._refresh$,
|
|
2429
2478
|
]).pipe(switchMap(([widget, tabkey, documentId]) => this.caseWidgetsApiService.getWidgetData(documentId, tabkey, widget.key, this.getPageSizeParam(widget))), tap(() => {
|
|
2430
2479
|
this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid);
|
|
2431
2480
|
}), catchError$1((error) => {
|
|
@@ -2450,7 +2499,7 @@ class CaseWidgetTableComponent extends WidgetProcess {
|
|
|
2450
2499
|
getPageSizeParam(widgetConfiguration) {
|
|
2451
2500
|
return `size=${widgetConfiguration.properties.defaultPageSize}`;
|
|
2452
2501
|
}
|
|
2453
|
-
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.WidgetLayoutService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2502
|
+
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 }); }
|
|
2454
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 *ngIf=\"canCreateCamundaExecution$ | async\"\n cdsButton=\"ghost\"\n (click)=\"onProcessStartClick(widgetConfiguration?.actions[0])\"\n >\n {{ widgetConfiguration?.actions[0].name }}\n </button>\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 }); }
|
|
2455
2504
|
}
|
|
2456
2505
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseWidgetTableComponent, decorators: [{
|
|
@@ -2464,7 +2513,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
2464
2513
|
ButtonModule,
|
|
2465
2514
|
WidgetTableComponent,
|
|
2466
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 *ngIf=\"canCreateCamundaExecution$ | async\"\n cdsButton=\"ghost\"\n (click)=\"onProcessStartClick(widgetConfiguration?.actions[0])\"\n >\n {{ widgetConfiguration?.actions[0].name }}\n </button>\n }\n</valtimo-widget-table>\n" }]
|
|
2467
|
-
}], ctorParameters: () => [{ type: i2.DocumentService }, { type: i2$3.PermissionService }, { type: CaseWidgetsApiService }, { type: WidgetsService }, { type: CaseTabService }, { type: i5.WidgetLayoutService }], propDecorators: { documentId: [{
|
|
2516
|
+
}], ctorParameters: () => [{ type: i2.DocumentService }, { type: i2$3.PermissionService }, { type: CaseWidgetsApiService }, { type: WidgetsService }, { type: CaseTabService }, { type: i5$1.WidgetLayoutService }], propDecorators: { documentId: [{
|
|
2468
2517
|
type: Input,
|
|
2469
2518
|
args: [{ required: true }]
|
|
2470
2519
|
}], widgetConfiguration: [{
|
|
@@ -2513,10 +2562,12 @@ class CaseWidgetCollectionComponent extends WidgetProcess {
|
|
|
2513
2562
|
this.widgetConfiguration$ = new BehaviorSubject(null);
|
|
2514
2563
|
this._queryParams$ = new BehaviorSubject(null);
|
|
2515
2564
|
this.tabKey$ = this.caseTabService.activeTabKey$;
|
|
2565
|
+
this._refresh$ = this.widgetsService.refreshWidgets$.pipe(startWith(null));
|
|
2516
2566
|
this._initialWidgetData$ = combineLatest([
|
|
2517
2567
|
this.widgetConfiguration$,
|
|
2518
2568
|
this.tabKey$,
|
|
2519
2569
|
this._documentId$,
|
|
2570
|
+
this._refresh$,
|
|
2520
2571
|
]).pipe(switchMap(([widget, tabkey, documentId]) => this.caseWidgetsApiService.getWidgetData(documentId, tabkey, widget.key, this.getPageSizeParam(widget))), tap(() => {
|
|
2521
2572
|
this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid);
|
|
2522
2573
|
}), catchError$1((error) => {
|
|
@@ -2544,7 +2595,7 @@ class CaseWidgetCollectionComponent extends WidgetProcess {
|
|
|
2544
2595
|
getPageSizeParam(widgetConfiguration) {
|
|
2545
2596
|
return `size=${widgetConfiguration.properties.defaultPageSize}`;
|
|
2546
2597
|
}
|
|
2547
|
-
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.WidgetLayoutService }, { token: CaseTabService }, { token: CaseWidgetsApiService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2598
|
+
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 }); }
|
|
2548
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 *ngIf=\"canCreateCamundaExecution$ | async\"\n cdsButton=\"ghost\"\n (click)=\"onProcessStartClick(obs.widgetConfiguration?.actions[0])\"\n >\n {{ obs.widgetConfiguration?.actions[0].name }}\n </button>\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 }); }
|
|
2549
2600
|
}
|
|
2550
2601
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseWidgetCollectionComponent, decorators: [{
|
|
@@ -2559,7 +2610,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
2559
2610
|
ButtonModule,
|
|
2560
2611
|
WidgetCollectionComponent,
|
|
2561
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 *ngIf=\"canCreateCamundaExecution$ | async\"\n cdsButton=\"ghost\"\n (click)=\"onProcessStartClick(obs.widgetConfiguration?.actions[0])\"\n >\n {{ obs.widgetConfiguration?.actions[0].name }}\n </button>\n }\n</valtimo-widget-collection>\n" }]
|
|
2562
|
-
}], ctorParameters: () => [{ type: i2.DocumentService }, { type: i2$3.PermissionService }, { type: CaseWidgetsApiService }, { type: WidgetsService }, { type: i5.WidgetLayoutService }, { type: CaseTabService }, { type: CaseWidgetsApiService }], propDecorators: { documentId: [{
|
|
2613
|
+
}], ctorParameters: () => [{ type: i2.DocumentService }, { type: i2$3.PermissionService }, { type: CaseWidgetsApiService }, { type: WidgetsService }, { type: i5$1.WidgetLayoutService }, { type: CaseTabService }, { type: CaseWidgetsApiService }], propDecorators: { documentId: [{
|
|
2563
2614
|
type: Input,
|
|
2564
2615
|
args: [{ required: true }]
|
|
2565
2616
|
}], widgetConfiguration: [{
|
|
@@ -2584,21 +2635,36 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
2584
2635
|
* limitations under the License.
|
|
2585
2636
|
*/
|
|
2586
2637
|
class CaseDetailWidgetsComponent {
|
|
2587
|
-
constructor(route, caseTabService, widgetsApiService) {
|
|
2638
|
+
constructor(route, caseTabService, widgetsApiService, sseService, widgetsService) {
|
|
2588
2639
|
this.route = route;
|
|
2589
2640
|
this.caseTabService = caseTabService;
|
|
2590
2641
|
this.widgetsApiService = widgetsApiService;
|
|
2642
|
+
this.sseService = sseService;
|
|
2643
|
+
this.widgetsService = widgetsService;
|
|
2591
2644
|
this._noMargin = true;
|
|
2592
2645
|
this._noBackground = true;
|
|
2593
2646
|
this._noMinHeight = true;
|
|
2594
2647
|
this._documentId$ = this.route.params.pipe(map(params => params?.documentId), filter(documentId => !!documentId));
|
|
2595
2648
|
this._tabKey$ = this.caseTabService.activeTabKey$;
|
|
2596
|
-
this.
|
|
2649
|
+
this._documentUpdates$ = combineLatest([
|
|
2650
|
+
this.sseService.getSseEventObservable('DOCUMENT_UPDATED'),
|
|
2651
|
+
this._documentId$,
|
|
2652
|
+
]).pipe(filter(([event, documentId]) => event.documentId === documentId), map(([event]) => event), startWith(null));
|
|
2653
|
+
this._previousWidgetConfiguration = null;
|
|
2654
|
+
this._widgetConfiguration$ = combineLatest([
|
|
2655
|
+
this._documentId$,
|
|
2656
|
+
this._tabKey$,
|
|
2657
|
+
this._documentUpdates$,
|
|
2658
|
+
]).pipe(switchMap(([documentId, tabKey, documentUpdatedEvent]) => {
|
|
2659
|
+
return this.filterDuplicateConfigurations(this.widgetsApiService.getWidgetTabConfiguration(documentId, tabKey), documentUpdatedEvent);
|
|
2660
|
+
}), shareReplay({ bufferSize: 1, refCount: true }));
|
|
2661
|
+
this.widgetGroups$ = this._widgetConfiguration$.pipe(map(res => this.toCaseWidgetGroups(res.widgets)));
|
|
2597
2662
|
this.widgetComponentMap = {
|
|
2598
2663
|
[WidgetType.FIELDS]: CaseWidgetFieldComponent,
|
|
2599
2664
|
[WidgetType.CUSTOM]: CaseWidgetCustomComponent,
|
|
2600
2665
|
[WidgetType.FORMIO]: CaseWidgetFormioComponent,
|
|
2601
2666
|
[WidgetType.TABLE]: CaseWidgetTableComponent,
|
|
2667
|
+
[WidgetType.INTERACTIVE_TABLE]: CaseWidgetTableComponent,
|
|
2602
2668
|
[WidgetType.COLLECTION]: CaseWidgetCollectionComponent,
|
|
2603
2669
|
};
|
|
2604
2670
|
}
|
|
@@ -2608,8 +2674,46 @@ class CaseDetailWidgetsComponent {
|
|
|
2608
2674
|
ngOnDestroy() {
|
|
2609
2675
|
this.caseTabService.enableTabHorizontalOverflow();
|
|
2610
2676
|
}
|
|
2611
|
-
|
|
2612
|
-
|
|
2677
|
+
toCaseWidgetGroups(widgets) {
|
|
2678
|
+
const groups = widgets.reduce((acc, widget) => {
|
|
2679
|
+
if (widget.type === CaseWidgetType.DIVIDER) {
|
|
2680
|
+
acc.push({ divider: widget, widgets: [] });
|
|
2681
|
+
}
|
|
2682
|
+
else {
|
|
2683
|
+
if (acc.length === 0)
|
|
2684
|
+
acc.push({ divider: null, widgets: [] });
|
|
2685
|
+
acc[acc.length - 1].widgets.push(widget);
|
|
2686
|
+
}
|
|
2687
|
+
return acc;
|
|
2688
|
+
}, []);
|
|
2689
|
+
// if there is more than one group and trailing groups have only a divider and no widgets, don't render these last groups
|
|
2690
|
+
for (let i = groups.length - 1; i >= 0; i--) {
|
|
2691
|
+
if (groups[i].widgets.length === 0) {
|
|
2692
|
+
groups.pop();
|
|
2693
|
+
}
|
|
2694
|
+
else {
|
|
2695
|
+
break;
|
|
2696
|
+
}
|
|
2697
|
+
}
|
|
2698
|
+
return groups;
|
|
2699
|
+
}
|
|
2700
|
+
filterDuplicateConfigurations(widgetConfiguration, documentUpdatedEvent) {
|
|
2701
|
+
return widgetConfiguration.pipe(map(configuration => {
|
|
2702
|
+
const configurationChanged = !this._previousWidgetConfiguration ||
|
|
2703
|
+
!isEqual(this._previousWidgetConfiguration, configuration);
|
|
2704
|
+
if (!configurationChanged && documentUpdatedEvent) {
|
|
2705
|
+
this.widgetsService.refreshWidgets();
|
|
2706
|
+
return null;
|
|
2707
|
+
}
|
|
2708
|
+
if (configurationChanged) {
|
|
2709
|
+
this._previousWidgetConfiguration = configuration;
|
|
2710
|
+
return configuration;
|
|
2711
|
+
}
|
|
2712
|
+
return null;
|
|
2713
|
+
}), filter((configuration) => configuration !== null));
|
|
2714
|
+
}
|
|
2715
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseDetailWidgetsComponent, deps: [{ token: i1$2.ActivatedRoute }, { token: CaseTabService }, { token: CaseWidgetsApiService }, { token: i5.SseService }, { token: WidgetsService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2716
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: CaseDetailWidgetsComponent, isStandalone: true, selector: "ng-component", host: { properties: { "class.tab--no-margin": "this._noMargin", "class.tab--no-background": "this._noBackground", "class.tab--no-min-height": "this._noMinHeight" } }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n@for (widgetGroup of widgetGroups$ | async; track $index) {\n <div *ngIf=\"widgetGroup.divider\" class=\"divider\" [ngClass]=\"{'divider--first': $first}\">\n {{ widgetGroup.divider.title || '-' }}\n </div>\n\n <valtimo-widget-container\n [widgets]=\"widgetGroup.widgets\"\n [widgetComponentMap]=\"widgetComponentMap\"\n ></valtimo-widget-container>\n}\n", styles: [".loading-container{display:flex;justify-content:center;padding:16px 0}.divider{width:100%;font-weight:700;font-size:20px;padding:32px 0 16px 8px}.divider--first{padding-top:0}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "ngmodule", type: LoadingModule }, { kind: "component", type: WidgetContainerComponent, selector: "valtimo-widget-container", inputs: ["widgets", "widgetComponentMap", "widgetParams"] }, { kind: "ngmodule", type: CarbonListModule }, { kind: "ngmodule", type: TranslateModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2613
2717
|
}
|
|
2614
2718
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseDetailWidgetsComponent, decorators: [{
|
|
2615
2719
|
type: Component,
|
|
@@ -2619,8 +2723,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
2619
2723
|
WidgetContainerComponent,
|
|
2620
2724
|
CarbonListModule,
|
|
2621
2725
|
TranslateModule,
|
|
2622
|
-
], 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-container\n
|
|
2623
|
-
}], ctorParameters: () => [{ type: i1$2.ActivatedRoute }, { type: CaseTabService }, { type: CaseWidgetsApiService }], propDecorators: { _noMargin: [{
|
|
2726
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n@for (widgetGroup of widgetGroups$ | async; track $index) {\n <div *ngIf=\"widgetGroup.divider\" class=\"divider\" [ngClass]=\"{'divider--first': $first}\">\n {{ widgetGroup.divider.title || '-' }}\n </div>\n\n <valtimo-widget-container\n [widgets]=\"widgetGroup.widgets\"\n [widgetComponentMap]=\"widgetComponentMap\"\n ></valtimo-widget-container>\n}\n", styles: [".loading-container{display:flex;justify-content:center;padding:16px 0}.divider{width:100%;font-weight:700;font-size:20px;padding:32px 0 16px 8px}.divider--first{padding-top:0}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
2727
|
+
}], ctorParameters: () => [{ type: i1$2.ActivatedRoute }, { type: CaseTabService }, { type: CaseWidgetsApiService }, { type: i5.SseService }, { type: WidgetsService }], propDecorators: { _noMargin: [{
|
|
2624
2728
|
type: HostBinding,
|
|
2625
2729
|
args: ['class.tab--no-margin']
|
|
2626
2730
|
}], _noBackground: [{
|
|
@@ -2841,13 +2945,13 @@ class CaseListStatusService {
|
|
|
2841
2945
|
return this._showStatusSelector$.asObservable();
|
|
2842
2946
|
}
|
|
2843
2947
|
get selectedCaseStatuses$() {
|
|
2844
|
-
return this.
|
|
2948
|
+
return this._selectedCaseStatusKeys$;
|
|
2845
2949
|
}
|
|
2846
2950
|
constructor(caseListService, caseStatusService, caseParameterService) {
|
|
2847
2951
|
this.caseListService = caseListService;
|
|
2848
2952
|
this.caseStatusService = caseStatusService;
|
|
2849
2953
|
this.caseParameterService = caseParameterService;
|
|
2850
|
-
this.
|
|
2954
|
+
this._selectedCaseStatusKeys$ = new BehaviorSubject([]);
|
|
2851
2955
|
this._showStatusSelector$ = new BehaviorSubject(false);
|
|
2852
2956
|
this._caseStatuses$ = this.caseListService.caseDefinitionKey$.pipe(switchMap(caseDefinitionKey => combineLatest([
|
|
2853
2957
|
this.caseStatusService.getInternalCaseStatuses(caseDefinitionKey),
|
|
@@ -2859,12 +2963,12 @@ class CaseListStatusService {
|
|
|
2859
2963
|
...statuses.filter(status => status.visibleInCaseListByDefault),
|
|
2860
2964
|
CASE_WITHOUT_STATUS_STATUS,
|
|
2861
2965
|
];
|
|
2862
|
-
this.setSelectedStatuses(selectedStatuses);
|
|
2966
|
+
this.setSelectedStatuses(selectedStatuses.map((status) => status.key));
|
|
2863
2967
|
}), map(([statuses]) => statuses), tap(statuses => this._showStatusSelector$.next((statuses || []).length > 1)));
|
|
2864
2968
|
}
|
|
2865
|
-
setSelectedStatuses(
|
|
2866
|
-
this.
|
|
2867
|
-
this.caseParameterService.setStatusParameter(
|
|
2969
|
+
setSelectedStatuses(statusKeys) {
|
|
2970
|
+
this._selectedCaseStatusKeys$.next(statusKeys);
|
|
2971
|
+
this.caseParameterService.setStatusParameter(statusKeys);
|
|
2868
2972
|
}
|
|
2869
2973
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseListStatusService, deps: [{ token: CaseListService }, { token: i2.CaseStatusService }, { token: CaseParameterService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
2870
2974
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseListStatusService }); }
|
|
@@ -2981,14 +3085,26 @@ class CaseDetailLayoutService {
|
|
|
2981
3085
|
get formDisplaySize$() {
|
|
2982
3086
|
return this._formDisplaySize$.asObservable();
|
|
2983
3087
|
}
|
|
2984
|
-
|
|
3088
|
+
get tabContentContainerMaxHeight$() {
|
|
3089
|
+
return combineLatest([
|
|
3090
|
+
this.pageHeaderService.compactMode$,
|
|
3091
|
+
this._mainContentHeaderHeight$,
|
|
3092
|
+
this._hasCaseTags$,
|
|
3093
|
+
]).pipe(map(([compactMode, mainContentHeaderHeight, hasCaseTags]) => !compactMode && !hasCaseTags
|
|
3094
|
+
? `calc(100vh - ${202 + mainContentHeaderHeight}px)`
|
|
3095
|
+
: `calc(100vh - ${160 + mainContentHeaderHeight}px)`));
|
|
3096
|
+
}
|
|
3097
|
+
constructor(caseTabService, pageHeaderService) {
|
|
2985
3098
|
this.caseTabService = caseTabService;
|
|
3099
|
+
this.pageHeaderService = pageHeaderService;
|
|
2986
3100
|
this._tabContentContainerWidth$ = new BehaviorSubject(null);
|
|
2987
3101
|
this._showTaskList$ = this.caseTabService.showTaskList$;
|
|
2988
3102
|
this._taskAndProcessLinkOpenedInPanel$ = new BehaviorSubject(null);
|
|
2989
3103
|
this._formDisplayType$ = new BehaviorSubject(CASE_DETAIL_DEFAULT_DISPLAY_TYPE);
|
|
2990
3104
|
this._formDisplaySize$ = new BehaviorSubject(CASE_DETAIL_DEFAULT_DISPLAY_SIZE);
|
|
2991
3105
|
this._refreshTasks$ = new BehaviorSubject(null);
|
|
3106
|
+
this._mainContentHeaderHeight$ = new BehaviorSubject(0);
|
|
3107
|
+
this._hasCaseTags$ = new BehaviorSubject(false);
|
|
2992
3108
|
this.caseDetailLayout$ = combineLatest([
|
|
2993
3109
|
this.tabContentContainerWidth$,
|
|
2994
3110
|
this._showTaskList$,
|
|
@@ -3023,6 +3139,12 @@ class CaseDetailLayoutService {
|
|
|
3023
3139
|
refreshTasks() {
|
|
3024
3140
|
this._refreshTasks$.next(null);
|
|
3025
3141
|
}
|
|
3142
|
+
setMainContentHeaderHeight(height) {
|
|
3143
|
+
this._mainContentHeaderHeight$.next(height);
|
|
3144
|
+
}
|
|
3145
|
+
setHasCaseTags(hasCaseTags) {
|
|
3146
|
+
this._hasCaseTags$.next(hasCaseTags);
|
|
3147
|
+
}
|
|
3026
3148
|
getInitialLayout() {
|
|
3027
3149
|
return {
|
|
3028
3150
|
showRightPanel: false,
|
|
@@ -3056,12 +3178,12 @@ class CaseDetailLayoutService {
|
|
|
3056
3178
|
leftPanelWidth: '*',
|
|
3057
3179
|
};
|
|
3058
3180
|
}
|
|
3059
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseDetailLayoutService, deps: [{ token: CaseTabService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
3181
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseDetailLayoutService, deps: [{ token: CaseTabService }, { token: i2$1.PageHeaderService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
3060
3182
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseDetailLayoutService }); }
|
|
3061
3183
|
}
|
|
3062
3184
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseDetailLayoutService, decorators: [{
|
|
3063
3185
|
type: Injectable
|
|
3064
|
-
}], ctorParameters: () => [{ type: CaseTabService }] });
|
|
3186
|
+
}], ctorParameters: () => [{ type: CaseTabService }, { type: i2$1.PageHeaderService }] });
|
|
3065
3187
|
|
|
3066
3188
|
/*
|
|
3067
3189
|
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
@@ -3085,14 +3207,14 @@ class CaseListCaseTagService {
|
|
|
3085
3207
|
get showCaseTagsSelector$() {
|
|
3086
3208
|
return this._showCaseTagsSelector$.asObservable();
|
|
3087
3209
|
}
|
|
3088
|
-
get
|
|
3089
|
-
return this.
|
|
3210
|
+
get selectedCaseTagKeys$() {
|
|
3211
|
+
return this._selectedCaseTagKeys$;
|
|
3090
3212
|
}
|
|
3091
3213
|
constructor(caseListService, caseTagsService, caseParameterService) {
|
|
3092
3214
|
this.caseListService = caseListService;
|
|
3093
3215
|
this.caseTagsService = caseTagsService;
|
|
3094
3216
|
this.caseParameterService = caseParameterService;
|
|
3095
|
-
this.
|
|
3217
|
+
this._selectedCaseTagKeys$ = new BehaviorSubject([]);
|
|
3096
3218
|
this._showCaseTagsSelector$ = new BehaviorSubject(false);
|
|
3097
3219
|
this._caseTags$ = this.caseListService.caseDefinitionKey$.pipe(switchMap(caseDefinitionKey => combineLatest([
|
|
3098
3220
|
this.caseTagsService.getCaseTags(caseDefinitionKey),
|
|
@@ -3101,13 +3223,13 @@ class CaseListCaseTagService {
|
|
|
3101
3223
|
let selectedCaseTags;
|
|
3102
3224
|
if (queryCaseTags) {
|
|
3103
3225
|
selectedCaseTags = caseTags.filter(caseTag => queryCaseTags.includes(caseTag.key));
|
|
3104
|
-
this.setSelectedCaseTags(selectedCaseTags);
|
|
3226
|
+
this.setSelectedCaseTags(selectedCaseTags.map(selectedCaseTags => selectedCaseTags.key));
|
|
3105
3227
|
}
|
|
3106
3228
|
}), map(([caseTags]) => caseTags), tap(caseTags => this._showCaseTagsSelector$.next((caseTags || []).length > 1)));
|
|
3107
3229
|
}
|
|
3108
|
-
setSelectedCaseTags(
|
|
3109
|
-
this.
|
|
3110
|
-
this.caseParameterService.setCaseTagParameter(
|
|
3230
|
+
setSelectedCaseTags(caseTagKeys) {
|
|
3231
|
+
this._selectedCaseTagKeys$.next(caseTagKeys);
|
|
3232
|
+
this.caseParameterService.setCaseTagParameter(caseTagKeys);
|
|
3111
3233
|
}
|
|
3112
3234
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseListCaseTagService, deps: [{ token: CaseListService }, { token: i2.CaseTagService }, { token: CaseParameterService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
3113
3235
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseListCaseTagService }); }
|
|
@@ -3251,13 +3373,114 @@ class CaseMenuService {
|
|
|
3251
3373
|
});
|
|
3252
3374
|
});
|
|
3253
3375
|
}
|
|
3254
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseMenuService, deps: [{ token: i2.DocumentService }, { token:
|
|
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 }); }
|
|
3255
3377
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseMenuService, providedIn: 'root' }); }
|
|
3256
3378
|
}
|
|
3257
3379
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseMenuService, decorators: [{
|
|
3258
3380
|
type: Injectable,
|
|
3259
3381
|
args: [{ providedIn: 'root' }]
|
|
3260
|
-
}], ctorParameters: () => [{ type: i2.DocumentService }, { type:
|
|
3382
|
+
}], ctorParameters: () => [{ type: i2.DocumentService }, { type: i5.SseService }, { type: i2$1.MenuService }] });
|
|
3383
|
+
|
|
3384
|
+
/*
|
|
3385
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
3386
|
+
*
|
|
3387
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
3388
|
+
* you may not use this file except in compliance with the License.
|
|
3389
|
+
* You may obtain a copy of the License at
|
|
3390
|
+
*
|
|
3391
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
3392
|
+
*
|
|
3393
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
3394
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
3395
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
3396
|
+
* See the License for the specific language governing permissions and
|
|
3397
|
+
* limitations under the License.
|
|
3398
|
+
*/
|
|
3399
|
+
class CaseHeaderWidgetApiService extends BaseApiService {
|
|
3400
|
+
constructor(httpClient, configService) {
|
|
3401
|
+
super(httpClient, configService);
|
|
3402
|
+
this.httpClient = httpClient;
|
|
3403
|
+
this.configService = configService;
|
|
3404
|
+
}
|
|
3405
|
+
getHeaderWidget(documentId) {
|
|
3406
|
+
return this.httpClient.get(this.getApiUrl(`v1/case/${documentId}/header-widget`), {
|
|
3407
|
+
headers: new HttpHeaders().set(InterceptorSkip, '404'),
|
|
3408
|
+
});
|
|
3409
|
+
}
|
|
3410
|
+
getHeaderWidgetData(documentId, pageSize = 5, page = 0) {
|
|
3411
|
+
return this.httpClient.get(this.getApiUrl(`v1/case/${documentId}/header-widget/data?page=${page}&size=${pageSize}`), {
|
|
3412
|
+
headers: new HttpHeaders().set(InterceptorSkip, '404'),
|
|
3413
|
+
});
|
|
3414
|
+
}
|
|
3415
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseHeaderWidgetApiService, deps: [{ token: i1$1.HttpClient }, { token: i1.ConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
3416
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseHeaderWidgetApiService, providedIn: 'root' }); }
|
|
3417
|
+
}
|
|
3418
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseHeaderWidgetApiService, decorators: [{
|
|
3419
|
+
type: Injectable,
|
|
3420
|
+
args: [{ providedIn: 'root' }]
|
|
3421
|
+
}], ctorParameters: () => [{ type: i1$1.HttpClient }, { type: i1.ConfigService }] });
|
|
3422
|
+
|
|
3423
|
+
class CaseListHiddenColumnsService extends BaseApiService {
|
|
3424
|
+
constructor(httpClient, configService) {
|
|
3425
|
+
super(httpClient, configService);
|
|
3426
|
+
this.httpClient = httpClient;
|
|
3427
|
+
this.configService = configService;
|
|
3428
|
+
}
|
|
3429
|
+
getHiddenColumns(caseDefinitionKey) {
|
|
3430
|
+
return this.httpClient.get(this.getApiUrl(`v1/case/${caseDefinitionKey}/hidden-list-column`));
|
|
3431
|
+
}
|
|
3432
|
+
saveHiddenColumns(caseDefinitionKey, hiddenColumns) {
|
|
3433
|
+
return this.httpClient.post(this.getApiUrl(`v1/case/${caseDefinitionKey}/hidden-list-column`), hiddenColumns);
|
|
3434
|
+
}
|
|
3435
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseListHiddenColumnsService, deps: [{ token: i1$1.HttpClient }, { token: i1.ConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
3436
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseListHiddenColumnsService, providedIn: 'root' }); }
|
|
3437
|
+
}
|
|
3438
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseListHiddenColumnsService, decorators: [{
|
|
3439
|
+
type: Injectable,
|
|
3440
|
+
args: [{
|
|
3441
|
+
providedIn: 'root',
|
|
3442
|
+
}]
|
|
3443
|
+
}], ctorParameters: () => [{ type: i1$1.HttpClient }, { type: i1.ConfigService }] });
|
|
3444
|
+
|
|
3445
|
+
class CaseListQuickSearchService extends BaseApiService {
|
|
3446
|
+
get _params() {
|
|
3447
|
+
return this._params$.getValue() ?? { caseDefinitionKey: '' };
|
|
3448
|
+
}
|
|
3449
|
+
get params$() {
|
|
3450
|
+
return this._params$.pipe(filter(params => !!params));
|
|
3451
|
+
}
|
|
3452
|
+
constructor(httpClient, configService) {
|
|
3453
|
+
super(httpClient, configService);
|
|
3454
|
+
this.httpClient = httpClient;
|
|
3455
|
+
this.configService = configService;
|
|
3456
|
+
this._params$ = new BehaviorSubject(null);
|
|
3457
|
+
}
|
|
3458
|
+
initParams(caseDefinitionKey) {
|
|
3459
|
+
if (caseDefinitionKey === this._params.caseDefinitionKey)
|
|
3460
|
+
return;
|
|
3461
|
+
this._params$.next({ caseDefinitionKey });
|
|
3462
|
+
}
|
|
3463
|
+
getQuickSearchItems() {
|
|
3464
|
+
return this.params$.pipe(take(1), switchMap((params) => this.httpClient.get(this.getApiUrl(`v1/case/${params?.caseDefinitionKey}/stored-quick-search`))));
|
|
3465
|
+
}
|
|
3466
|
+
createQuickSearchItem(quickSearchItem) {
|
|
3467
|
+
return this.params$.pipe(take(1), switchMap((params) => this.httpClient.post(this.getApiUrl(`v1/case/${params?.caseDefinitionKey}/stored-quick-search`), quickSearchItem)));
|
|
3468
|
+
}
|
|
3469
|
+
updateQuickSearchItems(quickSearchItems) {
|
|
3470
|
+
throw new Error('Method not implemented.');
|
|
3471
|
+
}
|
|
3472
|
+
editQuickSearchItem(quickSearchItem) {
|
|
3473
|
+
return this.params$.pipe(take(1), switchMap((params) => this.httpClient.put(this.getApiUrl(`v1/case/${params?.caseDefinitionKey}/stored-quick-search`), quickSearchItem)));
|
|
3474
|
+
}
|
|
3475
|
+
deleteQuickSearchItem(quickSearchItem) {
|
|
3476
|
+
return this.params$.pipe(take(1), switchMap((params) => this.httpClient.delete(this.getApiUrl(`v1/case/${params?.caseDefinitionKey}/stored-quick-search/${quickSearchItem.title}`))));
|
|
3477
|
+
}
|
|
3478
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseListQuickSearchService, deps: [{ token: i1$1.HttpClient }, { token: i1.ConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
3479
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseListQuickSearchService }); }
|
|
3480
|
+
}
|
|
3481
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseListQuickSearchService, decorators: [{
|
|
3482
|
+
type: Injectable
|
|
3483
|
+
}], ctorParameters: () => [{ type: i1$1.HttpClient }, { type: i1.ConfigService }] });
|
|
3261
3484
|
|
|
3262
3485
|
/*
|
|
3263
3486
|
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
@@ -3455,8 +3678,8 @@ class CaseDetailTaskListComponent {
|
|
|
3455
3678
|
? { ...acc, myTasks: [...acc.myTasks, curr] }
|
|
3456
3679
|
: { ...acc, otherTasks: [...acc.otherTasks, curr] }, { myTasks: [], otherTasks: [] });
|
|
3457
3680
|
}
|
|
3458
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseDetailTaskListComponent, deps: [{ token: i2.DocumentService }, { token: i4$1.IconService }, { token: i1$2.ActivatedRoute }, { token: i2$3.PermissionService }, { token:
|
|
3459
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: CaseDetailTaskListComponent, isStandalone: true, selector: "valtimo-case-detail-task-list", inputs: { openTaskAndProcessLinkInModal: "openTaskAndProcessLinkInModal" }, outputs: { taskClickEvent: "taskClickEvent", formSubmitEvent: "formSubmitEvent" }, viewQueries: [{ propertyName: "_taskDetailModal", first: true, predicate: ["taskDetail"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n class=\"task-list\"\n *ngIf=\"{loadingTasks: loadingTasks$ | async, tasks: processInstanceTasks$ | async} as obs\"\n>\n @if (obs.loadingTasks && !obs.tasks) {\n <ng-container *ngTemplateOutlet=\"loadingTasksTemplate\"></ng-container>\n } @else if (obs.tasks?.myTasks?.length === 0 && obs.tasks?.otherTasks?.length === 0) {\n <ng-container *ngTemplateOutlet=\"noTasksTemplate\"></ng-container>\n } @else {\n <h2 class=\"task-list__title\">{{ 'summary.tasks' | translate }}</h2>\n\n <div class=\"task-list__tasks-container\" cdsLayer=\"1\">\n <h3 class=\"task-list__subtitle\">{{ 'summary.myTasks' | translate }}</h3>\n\n @if (obs.tasks?.myTasks.length === 0) {\n {{ 'summary.noResultsMyTasks' | translate }}\n } @else {\n @for (taskWithProcessLink of obs.tasks?.myTasks; track taskWithProcessLink.task.id) {\n <ng-container\n *ngTemplateOutlet=\"taskTemplate; context: {taskWithProcessLink: taskWithProcessLink}\"\n ></ng-container>\n }\n }\n </div>\n\n <div class=\"task-list__tasks-container\" cdsLayer=\"1\">\n <h3 class=\"task-list__subtitle\">{{ 'summary.otherTasks' | translate }}</h3>\n\n @if (obs.tasks?.otherTasks.length === 0) {\n {{ 'summary.noResultsOtherTasks' | translate }}\n } @else {\n @for (taskWithProcessLink of obs.tasks?.otherTasks; track taskWithProcessLink.task.id) {\n <ng-container\n *ngTemplateOutlet=\"taskTemplate; context: {taskWithProcessLink: taskWithProcessLink}\"\n ></ng-container>\n }\n }\n </div>\n }\n\n <valtimo-task-detail-modal\n #taskDetail\n [openFromCaseManagement]=\"true\"\n [modalSize]=\"formSize$ | async\"\n (formSubmit)=\"onFormSubmit()\"\n (assignmentOfTaskChanged)=\"refresh()\"\n ></valtimo-task-detail-modal>\n</div>\n\n<ng-template #taskTemplate let-taskWithProcessLink=\"taskWithProcessLink\">\n <cds-clickable-tile [href]=\"null\" (click)=\"rowTaskClick(taskWithProcessLink)\">\n <div class=\"task\">\n <div class=\"task__header\">\n <span class=\"task__title\">{{ taskWithProcessLink.task.name }}</span>\n\n @if (!!taskWithProcessLink.task.assignee) {\n <cds-tag\n class=\"cds-tag--no-margin\"\n [ngbTooltip]=\"'summary.taskIsAssigned' | translate\"\n [type]=\"'cool-gray'\"\n >\n <svg cdsIcon=\"user--filled\" size=\"20\"></svg>\n </cds-tag>\n }\n <cds-tag\n class=\"cds-tag--no-margin\"\n [type]=\"taskWithProcessLink.task.isLocked ? 'cool-gray' : 'green'\"\n >\n @if (!taskWithProcessLink.task.isLocked) {\n {{ 'summary.taskOpen' | translate }}\n } @else {\n <i class=\"icon mdi mdi-lock\"></i>\n }\n </cds-tag>\n </div>\n\n <div class=\"task__description\">\n {{ 'summary.taskCreated' | translate }} {{ taskWithProcessLink.task.created }}\n </div>\n\n <div class=\"task__subtitles\">\n @for (
|
|
3681
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseDetailTaskListComponent, deps: [{ token: i2.DocumentService }, { token: i4$1.IconService }, { token: i1$2.ActivatedRoute }, { token: i2$3.PermissionService }, { token: i5.SseService }, { token: CaseDetailLayoutService }, { token: i3$3.ProcessLinkService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3682
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: CaseDetailTaskListComponent, isStandalone: true, selector: "valtimo-case-detail-task-list", inputs: { openTaskAndProcessLinkInModal: "openTaskAndProcessLinkInModal" }, outputs: { taskClickEvent: "taskClickEvent", formSubmitEvent: "formSubmitEvent" }, viewQueries: [{ propertyName: "_taskDetailModal", first: true, predicate: ["taskDetail"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n class=\"task-list\"\n *ngIf=\"{loadingTasks: loadingTasks$ | async, tasks: processInstanceTasks$ | async} as obs\"\n>\n @if (obs.loadingTasks && !obs.tasks) {\n <ng-container *ngTemplateOutlet=\"loadingTasksTemplate\"></ng-container>\n } @else if (obs.tasks?.myTasks?.length === 0 && obs.tasks?.otherTasks?.length === 0) {\n <ng-container *ngTemplateOutlet=\"noTasksTemplate\"></ng-container>\n } @else {\n <h2 class=\"task-list__title\">{{ 'summary.tasks' | translate }}</h2>\n\n <div class=\"task-list__tasks-container\" cdsLayer=\"1\">\n <h3 class=\"task-list__subtitle\">{{ 'summary.myTasks' | translate }}</h3>\n\n @if (obs.tasks?.myTasks.length === 0) {\n {{ 'summary.noResultsMyTasks' | translate }}\n } @else {\n @for (taskWithProcessLink of obs.tasks?.myTasks; track taskWithProcessLink.task.id) {\n <ng-container\n *ngTemplateOutlet=\"taskTemplate; context: {taskWithProcessLink: taskWithProcessLink}\"\n ></ng-container>\n }\n }\n </div>\n\n <div class=\"task-list__tasks-container\" cdsLayer=\"1\">\n <h3 class=\"task-list__subtitle\">{{ 'summary.otherTasks' | translate }}</h3>\n\n @if (obs.tasks?.otherTasks.length === 0) {\n {{ 'summary.noResultsOtherTasks' | translate }}\n } @else {\n @for (taskWithProcessLink of obs.tasks?.otherTasks; track taskWithProcessLink.task.id) {\n <ng-container\n *ngTemplateOutlet=\"taskTemplate; context: {taskWithProcessLink: taskWithProcessLink}\"\n ></ng-container>\n }\n }\n </div>\n }\n\n <valtimo-task-detail-modal\n #taskDetail\n [openFromCaseManagement]=\"true\"\n [modalSize]=\"formSize$ | async\"\n (formSubmit)=\"onFormSubmit()\"\n (assignmentOfTaskChanged)=\"refresh()\"\n ></valtimo-task-detail-modal>\n</div>\n\n<ng-template #taskTemplate let-taskWithProcessLink=\"taskWithProcessLink\">\n <cds-clickable-tile [href]=\"null\" (click)=\"rowTaskClick(taskWithProcessLink)\">\n <div class=\"task\">\n <div class=\"task__header\">\n <span class=\"task__title\">{{ taskWithProcessLink.task.name }}</span>\n\n @if (!!taskWithProcessLink.task.assignee) {\n <cds-tag\n class=\"cds-tag--no-margin\"\n [ngbTooltip]=\"'summary.taskIsAssigned' | translate\"\n [type]=\"'cool-gray'\"\n >\n <svg cdsIcon=\"user--filled\" size=\"20\"></svg>\n </cds-tag>\n }\n <cds-tag\n class=\"cds-tag--no-margin\"\n [type]=\"taskWithProcessLink.task.isLocked ? 'cool-gray' : 'green'\"\n >\n @if (!taskWithProcessLink.task.isLocked) {\n {{ 'summary.taskOpen' | translate }}\n } @else {\n <i class=\"icon mdi mdi-lock\"></i>\n }\n </cds-tag>\n </div>\n\n <div class=\"task__description\">\n {{ 'summary.taskCreated' | translate }} {{ taskWithProcessLink.task.created }}\n </div>\n\n <div class=\"task__subtitles\">\n @for (subtitle of taskWithProcessLink.task?.subtitles || []; track subtitle) {\n <p class=\"task__subtitle\">{{ subtitle }}</p>\n }\n </div>\n </div>\n </cds-clickable-tile>\n</ng-template>\n\n<ng-template #noTasksTemplate>\n <valtimo-no-results\n [alwaysRenderVertically]=\"true\"\n illustration=\"valtimo-layout/img/emptystate-success.svg\"\n [description]=\"'summary.userTasksDoneState' | translate\"\n [smallPadding]=\"true\"\n ></valtimo-no-results>\n</ng-template>\n\n<ng-template #loadingTasksTemplate>\n <div class=\"loading-container\">\n <cds-loading size=\"sm\"></cds-loading>\n </div>\n</ng-template>\n", styles: [".task-list{width:100%;background-color:var(--cds-layer);padding:24px;display:flex;flex-direction:column;gap:16px}.task-list__title{font-size:24px;line-height:24px;font-weight:600}.task-list__subtitle{font-size:16px;line-height:16px;font-weight:600}.task-list__tasks-container,.task{display:flex;flex-direction:column;gap:8px}.task__header{display:flex;justify-content:space-between;align-items:center;gap:8px}.task__header .cds--tag{margin:0;white-space:pre}.task__title{flex:1;font-size:14px;font-weight:600;line-height:20px;letter-spacing:.16px;text-align:left;text-underline-position:from-font;text-decoration-skip-ink:none}.task__subtitle{font-size:12px;font-weight:400;line-height:16px;letter-spacing:.32px;text-align:left;text-underline-position:from-font;text-decoration-skip-ink:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.task__subtitles{display:flex;flex-direction:column;gap:4px}.task__description{font-size:12px;font-weight:400;line-height:16px;letter-spacing:.32px;text-align:left;text-underline-position:from-font;text-decoration-skip-ink:none}.loading-container{width:100%;display:flex;justify-content:center}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "ngmodule", type: NgbTooltipModule }, { kind: "directive", type: i6$1.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: WidgetModule }, { kind: "ngmodule", type: LoadingModule }, { kind: "component", type: i4$1.Loading, selector: "cds-loading, ibm-loading", inputs: ["title", "isActive", "size", "overlay"] }, { kind: "ngmodule", type: TaskModule }, { kind: "component", type: i6$2.TaskDetailModalComponent, selector: "valtimo-task-detail-modal", inputs: ["modalSize", "openFromCaseManagement"], outputs: ["formSubmit", "assignmentOfTaskChanged"] }, { kind: "ngmodule", type: TilesModule }, { kind: "component", type: i4$1.ClickableTile, selector: "cds-clickable-tile, ibm-clickable-tile", inputs: ["theme", "href", "target", "rel", "disabled", "route", "routeExtras"], outputs: ["navigation"] }, { kind: "ngmodule", type: LayerModule }, { kind: "directive", type: i4$1.LayerDirective, selector: "[cdsLayer], [ibmLayer]", inputs: ["ibmLayer", "cdsLayer"], exportAs: ["layer"] }, { kind: "ngmodule", type: TagModule }, { kind: "component", type: i4$1.Tag, selector: "cds-tag, ibm-tag", inputs: ["type", "size", "class", "skeleton"] }, { kind: "ngmodule", type: CarbonListModule }, { kind: "component", type: i2$1.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "ngmodule", type: IconModule }, { kind: "directive", type: i4$1.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }] }); }
|
|
3460
3683
|
}
|
|
3461
3684
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseDetailTaskListComponent, decorators: [{
|
|
3462
3685
|
type: Component,
|
|
@@ -3472,8 +3695,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
3472
3695
|
TagModule,
|
|
3473
3696
|
CarbonListModule,
|
|
3474
3697
|
IconModule,
|
|
3475
|
-
], template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n class=\"task-list\"\n *ngIf=\"{loadingTasks: loadingTasks$ | async, tasks: processInstanceTasks$ | async} as obs\"\n>\n @if (obs.loadingTasks && !obs.tasks) {\n <ng-container *ngTemplateOutlet=\"loadingTasksTemplate\"></ng-container>\n } @else if (obs.tasks?.myTasks?.length === 0 && obs.tasks?.otherTasks?.length === 0) {\n <ng-container *ngTemplateOutlet=\"noTasksTemplate\"></ng-container>\n } @else {\n <h2 class=\"task-list__title\">{{ 'summary.tasks' | translate }}</h2>\n\n <div class=\"task-list__tasks-container\" cdsLayer=\"1\">\n <h3 class=\"task-list__subtitle\">{{ 'summary.myTasks' | translate }}</h3>\n\n @if (obs.tasks?.myTasks.length === 0) {\n {{ 'summary.noResultsMyTasks' | translate }}\n } @else {\n @for (taskWithProcessLink of obs.tasks?.myTasks; track taskWithProcessLink.task.id) {\n <ng-container\n *ngTemplateOutlet=\"taskTemplate; context: {taskWithProcessLink: taskWithProcessLink}\"\n ></ng-container>\n }\n }\n </div>\n\n <div class=\"task-list__tasks-container\" cdsLayer=\"1\">\n <h3 class=\"task-list__subtitle\">{{ 'summary.otherTasks' | translate }}</h3>\n\n @if (obs.tasks?.otherTasks.length === 0) {\n {{ 'summary.noResultsOtherTasks' | translate }}\n } @else {\n @for (taskWithProcessLink of obs.tasks?.otherTasks; track taskWithProcessLink.task.id) {\n <ng-container\n *ngTemplateOutlet=\"taskTemplate; context: {taskWithProcessLink: taskWithProcessLink}\"\n ></ng-container>\n }\n }\n </div>\n }\n\n <valtimo-task-detail-modal\n #taskDetail\n [openFromCaseManagement]=\"true\"\n [modalSize]=\"formSize$ | async\"\n (formSubmit)=\"onFormSubmit()\"\n (assignmentOfTaskChanged)=\"refresh()\"\n ></valtimo-task-detail-modal>\n</div>\n\n<ng-template #taskTemplate let-taskWithProcessLink=\"taskWithProcessLink\">\n <cds-clickable-tile [href]=\"null\" (click)=\"rowTaskClick(taskWithProcessLink)\">\n <div class=\"task\">\n <div class=\"task__header\">\n <span class=\"task__title\">{{ taskWithProcessLink.task.name }}</span>\n\n @if (!!taskWithProcessLink.task.assignee) {\n <cds-tag\n class=\"cds-tag--no-margin\"\n [ngbTooltip]=\"'summary.taskIsAssigned' | translate\"\n [type]=\"'cool-gray'\"\n >\n <svg cdsIcon=\"user--filled\" size=\"20\"></svg>\n </cds-tag>\n }\n <cds-tag\n class=\"cds-tag--no-margin\"\n [type]=\"taskWithProcessLink.task.isLocked ? 'cool-gray' : 'green'\"\n >\n @if (!taskWithProcessLink.task.isLocked) {\n {{ 'summary.taskOpen' | translate }}\n } @else {\n <i class=\"icon mdi mdi-lock\"></i>\n }\n </cds-tag>\n </div>\n\n <div class=\"task__description\">\n {{ 'summary.taskCreated' | translate }} {{ taskWithProcessLink.task.created }}\n </div>\n\n <div class=\"task__subtitles\">\n @for (
|
|
3476
|
-
}], ctorParameters: () => [{ type: i2.DocumentService }, { type: i4$1.IconService }, { type: i1$2.ActivatedRoute }, { type: i2$3.PermissionService }, { type:
|
|
3698
|
+
], template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n class=\"task-list\"\n *ngIf=\"{loadingTasks: loadingTasks$ | async, tasks: processInstanceTasks$ | async} as obs\"\n>\n @if (obs.loadingTasks && !obs.tasks) {\n <ng-container *ngTemplateOutlet=\"loadingTasksTemplate\"></ng-container>\n } @else if (obs.tasks?.myTasks?.length === 0 && obs.tasks?.otherTasks?.length === 0) {\n <ng-container *ngTemplateOutlet=\"noTasksTemplate\"></ng-container>\n } @else {\n <h2 class=\"task-list__title\">{{ 'summary.tasks' | translate }}</h2>\n\n <div class=\"task-list__tasks-container\" cdsLayer=\"1\">\n <h3 class=\"task-list__subtitle\">{{ 'summary.myTasks' | translate }}</h3>\n\n @if (obs.tasks?.myTasks.length === 0) {\n {{ 'summary.noResultsMyTasks' | translate }}\n } @else {\n @for (taskWithProcessLink of obs.tasks?.myTasks; track taskWithProcessLink.task.id) {\n <ng-container\n *ngTemplateOutlet=\"taskTemplate; context: {taskWithProcessLink: taskWithProcessLink}\"\n ></ng-container>\n }\n }\n </div>\n\n <div class=\"task-list__tasks-container\" cdsLayer=\"1\">\n <h3 class=\"task-list__subtitle\">{{ 'summary.otherTasks' | translate }}</h3>\n\n @if (obs.tasks?.otherTasks.length === 0) {\n {{ 'summary.noResultsOtherTasks' | translate }}\n } @else {\n @for (taskWithProcessLink of obs.tasks?.otherTasks; track taskWithProcessLink.task.id) {\n <ng-container\n *ngTemplateOutlet=\"taskTemplate; context: {taskWithProcessLink: taskWithProcessLink}\"\n ></ng-container>\n }\n }\n </div>\n }\n\n <valtimo-task-detail-modal\n #taskDetail\n [openFromCaseManagement]=\"true\"\n [modalSize]=\"formSize$ | async\"\n (formSubmit)=\"onFormSubmit()\"\n (assignmentOfTaskChanged)=\"refresh()\"\n ></valtimo-task-detail-modal>\n</div>\n\n<ng-template #taskTemplate let-taskWithProcessLink=\"taskWithProcessLink\">\n <cds-clickable-tile [href]=\"null\" (click)=\"rowTaskClick(taskWithProcessLink)\">\n <div class=\"task\">\n <div class=\"task__header\">\n <span class=\"task__title\">{{ taskWithProcessLink.task.name }}</span>\n\n @if (!!taskWithProcessLink.task.assignee) {\n <cds-tag\n class=\"cds-tag--no-margin\"\n [ngbTooltip]=\"'summary.taskIsAssigned' | translate\"\n [type]=\"'cool-gray'\"\n >\n <svg cdsIcon=\"user--filled\" size=\"20\"></svg>\n </cds-tag>\n }\n <cds-tag\n class=\"cds-tag--no-margin\"\n [type]=\"taskWithProcessLink.task.isLocked ? 'cool-gray' : 'green'\"\n >\n @if (!taskWithProcessLink.task.isLocked) {\n {{ 'summary.taskOpen' | translate }}\n } @else {\n <i class=\"icon mdi mdi-lock\"></i>\n }\n </cds-tag>\n </div>\n\n <div class=\"task__description\">\n {{ 'summary.taskCreated' | translate }} {{ taskWithProcessLink.task.created }}\n </div>\n\n <div class=\"task__subtitles\">\n @for (subtitle of taskWithProcessLink.task?.subtitles || []; track subtitle) {\n <p class=\"task__subtitle\">{{ subtitle }}</p>\n }\n </div>\n </div>\n </cds-clickable-tile>\n</ng-template>\n\n<ng-template #noTasksTemplate>\n <valtimo-no-results\n [alwaysRenderVertically]=\"true\"\n illustration=\"valtimo-layout/img/emptystate-success.svg\"\n [description]=\"'summary.userTasksDoneState' | translate\"\n [smallPadding]=\"true\"\n ></valtimo-no-results>\n</ng-template>\n\n<ng-template #loadingTasksTemplate>\n <div class=\"loading-container\">\n <cds-loading size=\"sm\"></cds-loading>\n </div>\n</ng-template>\n", styles: [".task-list{width:100%;background-color:var(--cds-layer);padding:24px;display:flex;flex-direction:column;gap:16px}.task-list__title{font-size:24px;line-height:24px;font-weight:600}.task-list__subtitle{font-size:16px;line-height:16px;font-weight:600}.task-list__tasks-container,.task{display:flex;flex-direction:column;gap:8px}.task__header{display:flex;justify-content:space-between;align-items:center;gap:8px}.task__header .cds--tag{margin:0;white-space:pre}.task__title{flex:1;font-size:14px;font-weight:600;line-height:20px;letter-spacing:.16px;text-align:left;text-underline-position:from-font;text-decoration-skip-ink:none}.task__subtitle{font-size:12px;font-weight:400;line-height:16px;letter-spacing:.32px;text-align:left;text-underline-position:from-font;text-decoration-skip-ink:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.task__subtitles{display:flex;flex-direction:column;gap:4px}.task__description{font-size:12px;font-weight:400;line-height:16px;letter-spacing:.32px;text-align:left;text-underline-position:from-font;text-decoration-skip-ink:none}.loading-container{width:100%;display:flex;justify-content:center}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
3699
|
+
}], ctorParameters: () => [{ type: i2.DocumentService }, { type: i4$1.IconService }, { type: i1$2.ActivatedRoute }, { type: i2$3.PermissionService }, { type: i5.SseService }, { type: CaseDetailLayoutService }, { type: i3$3.ProcessLinkService }], propDecorators: { _taskDetailModal: [{
|
|
3477
3700
|
type: ViewChild,
|
|
3478
3701
|
args: ['taskDetail']
|
|
3479
3702
|
}], openTaskAndProcessLinkInModal: [{
|
|
@@ -3581,6 +3804,75 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
3581
3804
|
type: Output
|
|
3582
3805
|
}] } });
|
|
3583
3806
|
|
|
3807
|
+
/*
|
|
3808
|
+
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
3809
|
+
*
|
|
3810
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
3811
|
+
* you may not use this file except in compliance with the License.
|
|
3812
|
+
* You may obtain a copy of the License at
|
|
3813
|
+
*
|
|
3814
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
3815
|
+
*
|
|
3816
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
3817
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
3818
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
3819
|
+
* See the License for the specific language governing permissions and
|
|
3820
|
+
* limitations under the License.
|
|
3821
|
+
*/
|
|
3822
|
+
class CaseDetailHeaderWidgetComponent {
|
|
3823
|
+
constructor(caseHeaderWidgetApiService, route, permissionService, cdsThemeService, sseService) {
|
|
3824
|
+
this.caseHeaderWidgetApiService = caseHeaderWidgetApiService;
|
|
3825
|
+
this.route = route;
|
|
3826
|
+
this.permissionService = permissionService;
|
|
3827
|
+
this.cdsThemeService = cdsThemeService;
|
|
3828
|
+
this.sseService = sseService;
|
|
3829
|
+
this._documentId$ = this.route.params.pipe(map(params => params?.documentId), filter(documentId => !!documentId), distinctUntilChanged());
|
|
3830
|
+
this.canViewCaseHeaderWidget$ = this._documentId$.pipe(switchMap(documentId => this.permissionService.requestPermission(CAN_VIEW_CASE_PERMISSION, {
|
|
3831
|
+
resource: CASE_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,
|
|
3832
|
+
identifier: documentId,
|
|
3833
|
+
})));
|
|
3834
|
+
this._fetchData$ = new Subject();
|
|
3835
|
+
this._highContrast$ = new BehaviorSubject(false);
|
|
3836
|
+
this.headerWidget$ = this._documentId$.pipe(switchMap(documentId => this.caseHeaderWidgetApiService.getHeaderWidget(documentId)), tap(widget => {
|
|
3837
|
+
if (!!widget) {
|
|
3838
|
+
this._fetchData$.next(null);
|
|
3839
|
+
this._highContrast$.next(widget.highContrast);
|
|
3840
|
+
}
|
|
3841
|
+
}));
|
|
3842
|
+
this.theme$ = combineLatest([
|
|
3843
|
+
this.cdsThemeService.currentTheme$,
|
|
3844
|
+
this._highContrast$,
|
|
3845
|
+
]).pipe(map(([theme, highContrast]) => {
|
|
3846
|
+
const isLight = theme === CurrentCarbonTheme.WHITE || theme === CurrentCarbonTheme.G10;
|
|
3847
|
+
const normalTheme = isLight ? CARBON_THEME.G10 : CARBON_THEME.G90;
|
|
3848
|
+
const invertedTheme = normalTheme === CARBON_THEME.G10 ? CARBON_THEME.G90 : CARBON_THEME.G10;
|
|
3849
|
+
return highContrast ? invertedTheme : normalTheme;
|
|
3850
|
+
}));
|
|
3851
|
+
this.headerWidgetData$ = this._fetchData$.pipe(switchMap(() => this._documentId$), switchMap(documentId => this.caseHeaderWidgetApiService.getHeaderWidgetData(documentId)));
|
|
3852
|
+
this._documentUpdates$ = combineLatest([
|
|
3853
|
+
this.sseService.getSseEventObservable('DOCUMENT_UPDATED'),
|
|
3854
|
+
this._documentId$,
|
|
3855
|
+
]).pipe(filter(([event, documentId]) => event.documentId === documentId), map(([event]) => event), startWith(null));
|
|
3856
|
+
this._subscriptions = new Subscription();
|
|
3857
|
+
this.$noVisibleFields = signal(false);
|
|
3858
|
+
}
|
|
3859
|
+
ngOnInit() {
|
|
3860
|
+
this._subscriptions.add(this._documentUpdates$.subscribe(() => this._fetchData$.next(null)));
|
|
3861
|
+
}
|
|
3862
|
+
ngOnDestroy() {
|
|
3863
|
+
this._subscriptions.unsubscribe();
|
|
3864
|
+
}
|
|
3865
|
+
onNoVisibleFields(noVisibleFields) {
|
|
3866
|
+
this.$noVisibleFields.set(noVisibleFields);
|
|
3867
|
+
}
|
|
3868
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseDetailHeaderWidgetComponent, deps: [{ token: CaseHeaderWidgetApiService }, { token: i1$2.ActivatedRoute }, { token: i2$3.PermissionService }, { token: i2$1.CdsThemeService }, { token: i5.SseService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3869
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: CaseDetailHeaderWidgetComponent, isStandalone: true, selector: "valtimo-case-detail-header-widget", ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n@if (canViewCaseHeaderWidget$ | async) {\n <ng-container\n *ngIf=\"{\n headerWidget: headerWidget$ | async,\n headerWidgetData: headerWidgetData$ | async,\n theme: theme$ | async,\n } as obs\"\n >\n <div\n *ngIf=\"obs.headerWidget\"\n class=\"header-widget-container\"\n [attr.data-carbon-theme]=\"obs.theme\"\n [style.display]=\"$noVisibleFields() && 'none'\"\n >\n @if (!obs.headerWidgetData) {\n <div class=\"header-widget-container__loader\"><cds-loading size=\"sm\"></cds-loading></div>\n } @else {\n <valtimo-widget-field\n [cdsLayer]=\"1\"\n [widgetConfiguration]=\"obs.headerWidget\"\n [widgetData]=\"obs.headerWidgetData\"\n [compact]=\"true\"\n (noVisibleFieldsEvent)=\"onNoVisibleFields($event)\"\n ></valtimo-widget-field>\n }\n </div>\n </ng-container>\n}\n", styles: [".header-widget-container{display:flex;width:100%;justify-content:center;background:var(--cds-layer);margin-top:16px;margin-bottom:16px}.header-widget-container__loader{margin:16px}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "component", type: WidgetFieldComponent, selector: "valtimo-widget-field", inputs: ["widgetConfiguration", "widgetData", "compact"], outputs: ["noVisibleFieldsEvent"] }, { kind: "ngmodule", type: LoadingModule }, { kind: "component", type: i4$1.Loading, selector: "cds-loading, ibm-loading", inputs: ["title", "isActive", "size", "overlay"] }, { kind: "ngmodule", type: LayerModule }, { kind: "directive", type: i4$1.LayerDirective, selector: "[cdsLayer], [ibmLayer]", inputs: ["ibmLayer", "cdsLayer"], exportAs: ["layer"] }, { kind: "ngmodule", type: InputModule }] }); }
|
|
3870
|
+
}
|
|
3871
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseDetailHeaderWidgetComponent, decorators: [{
|
|
3872
|
+
type: Component,
|
|
3873
|
+
args: [{ standalone: true, selector: 'valtimo-case-detail-header-widget', imports: [CommonModule, WidgetFieldComponent, LoadingModule, LayerModule, InputModule], template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n@if (canViewCaseHeaderWidget$ | async) {\n <ng-container\n *ngIf=\"{\n headerWidget: headerWidget$ | async,\n headerWidgetData: headerWidgetData$ | async,\n theme: theme$ | async,\n } as obs\"\n >\n <div\n *ngIf=\"obs.headerWidget\"\n class=\"header-widget-container\"\n [attr.data-carbon-theme]=\"obs.theme\"\n [style.display]=\"$noVisibleFields() && 'none'\"\n >\n @if (!obs.headerWidgetData) {\n <div class=\"header-widget-container__loader\"><cds-loading size=\"sm\"></cds-loading></div>\n } @else {\n <valtimo-widget-field\n [cdsLayer]=\"1\"\n [widgetConfiguration]=\"obs.headerWidget\"\n [widgetData]=\"obs.headerWidgetData\"\n [compact]=\"true\"\n (noVisibleFieldsEvent)=\"onNoVisibleFields($event)\"\n ></valtimo-widget-field>\n }\n </div>\n </ng-container>\n}\n", styles: [".header-widget-container{display:flex;width:100%;justify-content:center;background:var(--cds-layer);margin-top:16px;margin-bottom:16px}.header-widget-container__loader{margin:16px}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
3874
|
+
}], ctorParameters: () => [{ type: CaseHeaderWidgetApiService }, { type: i1$2.ActivatedRoute }, { type: i2$3.PermissionService }, { type: i2$1.CdsThemeService }, { type: i5.SseService }] });
|
|
3875
|
+
|
|
3584
3876
|
/*
|
|
3585
3877
|
* Copyright 2015-2025 Ritense BV, the Netherlands.
|
|
3586
3878
|
*
|
|
@@ -3758,13 +4050,13 @@ class CaseSupportingProcessStartModalComponent {
|
|
|
3758
4050
|
openCdsModal() {
|
|
3759
4051
|
this.modalOpen$.next(true);
|
|
3760
4052
|
}
|
|
3761
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseSupportingProcessStartModalComponent, deps: [{ token: i1$2.Router }, { token: i2$2.ProcessService }, { token:
|
|
3762
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: CaseSupportingProcessStartModalComponent, isStandalone: false, selector: "valtimo-case-supporting-process-start-modal", inputs: { isAdmin: "isAdmin" }, outputs: { formSubmit: "formSubmit" }, viewQueries: [{ propertyName: "form", first: true, predicate: ["form"], descendants: true }, { propertyName: "formViewModelDynamicContainer", first: true, predicate: ["formViewModelComponent"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: "formCustomComponentDynamicContainer", first: true, predicate: ["formCustomComponent"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal [open]=\"modalOpen$ | async\" valtimoCdsModal size=\"sm\" [minContentHeight]=\"480\">\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCloseSelect()\" [cdsLayer]=\"1\"\n ><h3 cdsModalHeaderHeading>\n {{\n (processDefinitionKey$ | async | translate) !== (processDefinitionKey$ | async)\n ? (processDefinitionKey$ | async | translate)\n : (processName$ | async)\n }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent [cdsLayer]=\"1\">\n <ng-template #formViewModelComponent></ng-template>\n <ng-template #formCustomComponent></ng-template>\n\n @if (isLoading$ | async) {\n <div class=\"loading-container\">\n <cds-loading size=\"sm\"></cds-loading>\n </div>\n }\n\n @if (\n !(isLoading$ | async) &&\n (startProcessLinkType$ | async) === 'form' &&\n (formDefinition$ | async)\n ) {\n <valtimo-form-io\n #form\n [submission]=\"submission$ | async\"\n [form]=\"formDefinition$ | async\"\n [options]=\"options$ | async\"\n (submit)=\"onSubmit($event)\"\n ></valtimo-form-io>\n }\n\n @if (\n !(isLoading$ | async) &&\n (startProcessLinkType$ | async) === 'form-flow' &&\n (formFlowInstanceId$ | async)\n ) {\n <valtimo-form-flow\n #formFlow\n [formFlowInstanceId]=\"formFlowInstanceId$ | async\"\n (formFlowComplete)=\"formSubmitted()\"\n ></valtimo-form-flow>\n }\n\n @if (\n !(isLoading$ | async) &&\n !(formDefinition$ | async) &&\n !(formFlowInstanceId$ | async) &&\n (startProcessLinkType$ | async) !== 'ui-component'\n ) {\n <div class=\"bg-warning text-black mb-0 p-3 text-center\">\n {{\n isAdmin\n ? ('formManagement.noFormDefinitionFoundAdmin' | translate)\n : ('formManagement.noFormDefinitionFoundUser' | translate)\n }}\n </div>\n\n <div class=\"mb-0 mt-4 p-3 text-center\">\n <button\n class=\"btn btn-secondary btn-space\"\n type=\"button\"\n (click)=\"gotoFormLinkScreen()\"\n id=\"form-link-button\"\n >\n {{ 'formManagement.gotoProcessLinksButton' | translate }}\n </button>\n </div>\n }\n </section>\n</cds-modal>\n", styles: ["#supportingProcessStartModal .formio-component-submit{text-align:right}.loading-container{width:100%;display:flex;justify-content:center}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "component", type: i2$1.FormioComponent, selector: "valtimo-form-io", inputs: ["options", "submission", "form", "readOnly", "formRefresh$"], outputs: ["submit", "change", "event"] }, { kind: "component", type: i4$1.Loading, selector: "cds-loading, ibm-loading", inputs: ["title", "isActive", "size", "overlay"] }, { kind: "component", type:
|
|
4053
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseSupportingProcessStartModalComponent, deps: [{ token: i1$2.Router }, { token: i2$2.ProcessService }, { token: i3$3.ProcessLinkService }, { token: FORM_VIEW_MODEL_TOKEN, optional: true }, { token: FORM_CUSTOM_COMPONENT_TOKEN, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4054
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: CaseSupportingProcessStartModalComponent, isStandalone: false, selector: "valtimo-case-supporting-process-start-modal", inputs: { isAdmin: "isAdmin" }, outputs: { formSubmit: "formSubmit" }, viewQueries: [{ propertyName: "form", first: true, predicate: ["form"], descendants: true }, { propertyName: "formViewModelDynamicContainer", first: true, predicate: ["formViewModelComponent"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: "formCustomComponentDynamicContainer", first: true, predicate: ["formCustomComponent"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal [open]=\"modalOpen$ | async\" valtimoCdsModal size=\"sm\" [minContentHeight]=\"480\">\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCloseSelect()\" [cdsLayer]=\"1\"\n ><h3 cdsModalHeaderHeading>\n {{\n (processDefinitionKey$ | async | translate) !== (processDefinitionKey$ | async)\n ? (processDefinitionKey$ | async | translate)\n : (processName$ | async)\n }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent [cdsLayer]=\"1\">\n <ng-template #formViewModelComponent></ng-template>\n <ng-template #formCustomComponent></ng-template>\n\n @if (isLoading$ | async) {\n <div class=\"loading-container\">\n <cds-loading size=\"sm\"></cds-loading>\n </div>\n }\n\n @if (\n !(isLoading$ | async) &&\n (startProcessLinkType$ | async) === 'form' &&\n (formDefinition$ | async)\n ) {\n <valtimo-form-io\n #form\n [submission]=\"submission$ | async\"\n [form]=\"formDefinition$ | async\"\n [options]=\"options$ | async\"\n (submit)=\"onSubmit($event)\"\n ></valtimo-form-io>\n }\n\n @if (\n !(isLoading$ | async) &&\n (startProcessLinkType$ | async) === 'form-flow' &&\n (formFlowInstanceId$ | async)\n ) {\n <valtimo-form-flow\n #formFlow\n [formFlowInstanceId]=\"formFlowInstanceId$ | async\"\n (formFlowComplete)=\"formSubmitted()\"\n ></valtimo-form-flow>\n }\n\n @if (\n !(isLoading$ | async) &&\n !(formDefinition$ | async) &&\n !(formFlowInstanceId$ | async) &&\n (startProcessLinkType$ | async) !== 'ui-component'\n ) {\n <div class=\"bg-warning text-black mb-0 p-3 text-center\">\n {{\n isAdmin\n ? ('formManagement.noFormDefinitionFoundAdmin' | translate)\n : ('formManagement.noFormDefinitionFoundUser' | translate)\n }}\n </div>\n\n <div class=\"mb-0 mt-4 p-3 text-center\">\n <button\n class=\"btn btn-secondary btn-space\"\n type=\"button\"\n (click)=\"gotoFormLinkScreen()\"\n id=\"form-link-button\"\n >\n {{ 'formManagement.gotoProcessLinksButton' | translate }}\n </button>\n </div>\n }\n </section>\n</cds-modal>\n", styles: ["#supportingProcessStartModal .formio-component-submit{text-align:right}.loading-container{width:100%;display:flex;justify-content:center}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "component", type: i2$1.FormioComponent, selector: "valtimo-form-io", inputs: ["options", "submission", "form", "readOnly", "formRefresh$"], outputs: ["submit", "change", "event"] }, { kind: "component", type: i4$1.Loading, selector: "cds-loading, ibm-loading", inputs: ["title", "isActive", "size", "overlay"] }, { kind: "component", type: i3$3.FormFlowComponent, selector: "valtimo-form-flow", inputs: ["formIoFormData", "formFlowInstanceId"], outputs: ["formFlowComplete", "formFlowChange"] }, { kind: "component", type: i4$1.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i4$1.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "directive", type: i4$1.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }, { kind: "directive", type: i4$1.ModalHeaderHeading, selector: "[cdsModalHeaderHeading], [ibmModalHeaderHeading]" }, { kind: "directive", type: i2$1.ValtimoCdsModalDirective, selector: "[valtimoCdsModal]", inputs: ["minContentHeight"] }, { kind: "directive", type: i4$1.LayerDirective, selector: "[cdsLayer], [ibmLayer]", inputs: ["ibmLayer", "cdsLayer"], exportAs: ["layer"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
3763
4055
|
}
|
|
3764
4056
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseSupportingProcessStartModalComponent, decorators: [{
|
|
3765
4057
|
type: Component,
|
|
3766
4058
|
args: [{ standalone: false, selector: 'valtimo-case-supporting-process-start-modal', encapsulation: ViewEncapsulation.None, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal [open]=\"modalOpen$ | async\" valtimoCdsModal size=\"sm\" [minContentHeight]=\"480\">\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCloseSelect()\" [cdsLayer]=\"1\"\n ><h3 cdsModalHeaderHeading>\n {{\n (processDefinitionKey$ | async | translate) !== (processDefinitionKey$ | async)\n ? (processDefinitionKey$ | async | translate)\n : (processName$ | async)\n }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent [cdsLayer]=\"1\">\n <ng-template #formViewModelComponent></ng-template>\n <ng-template #formCustomComponent></ng-template>\n\n @if (isLoading$ | async) {\n <div class=\"loading-container\">\n <cds-loading size=\"sm\"></cds-loading>\n </div>\n }\n\n @if (\n !(isLoading$ | async) &&\n (startProcessLinkType$ | async) === 'form' &&\n (formDefinition$ | async)\n ) {\n <valtimo-form-io\n #form\n [submission]=\"submission$ | async\"\n [form]=\"formDefinition$ | async\"\n [options]=\"options$ | async\"\n (submit)=\"onSubmit($event)\"\n ></valtimo-form-io>\n }\n\n @if (\n !(isLoading$ | async) &&\n (startProcessLinkType$ | async) === 'form-flow' &&\n (formFlowInstanceId$ | async)\n ) {\n <valtimo-form-flow\n #formFlow\n [formFlowInstanceId]=\"formFlowInstanceId$ | async\"\n (formFlowComplete)=\"formSubmitted()\"\n ></valtimo-form-flow>\n }\n\n @if (\n !(isLoading$ | async) &&\n !(formDefinition$ | async) &&\n !(formFlowInstanceId$ | async) &&\n (startProcessLinkType$ | async) !== 'ui-component'\n ) {\n <div class=\"bg-warning text-black mb-0 p-3 text-center\">\n {{\n isAdmin\n ? ('formManagement.noFormDefinitionFoundAdmin' | translate)\n : ('formManagement.noFormDefinitionFoundUser' | translate)\n }}\n </div>\n\n <div class=\"mb-0 mt-4 p-3 text-center\">\n <button\n class=\"btn btn-secondary btn-space\"\n type=\"button\"\n (click)=\"gotoFormLinkScreen()\"\n id=\"form-link-button\"\n >\n {{ 'formManagement.gotoProcessLinksButton' | translate }}\n </button>\n </div>\n }\n </section>\n</cds-modal>\n", styles: ["#supportingProcessStartModal .formio-component-submit{text-align:right}.loading-container{width:100%;display:flex;justify-content:center}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
3767
|
-
}], ctorParameters: () => [{ type: i1$2.Router }, { type: i2$2.ProcessService }, { type:
|
|
4059
|
+
}], ctorParameters: () => [{ type: i1$2.Router }, { type: i2$2.ProcessService }, { type: i3$3.ProcessLinkService }, { type: undefined, decorators: [{
|
|
3768
4060
|
type: Optional
|
|
3769
4061
|
}, {
|
|
3770
4062
|
type: Inject,
|
|
@@ -4003,7 +4295,7 @@ class CaseDetailComponent extends PendingChangesComponent {
|
|
|
4003
4295
|
...caseTag,
|
|
4004
4296
|
tagType: CaseTagsUtils.getTagTypeFromCaseTagColor(caseTag.color),
|
|
4005
4297
|
}))));
|
|
4006
|
-
this.hasCaseTags$ = this._caseTags$.pipe(map(caseTags => Array.isArray(caseTags) && caseTags.length > 0));
|
|
4298
|
+
this.hasCaseTags$ = this._caseTags$.pipe(map(caseTags => Array.isArray(caseTags) && caseTags.length > 0), tap((hasCaseTags) => this.caseDetailLayoutService.setHasCaseTags(hasCaseTags)));
|
|
4007
4299
|
this.userId$ = of(this.keyCloakService.isLoggedIn()).pipe(switchMap(() => this.keyCloakService.loadUserProfile()), map(profile => profile?.id));
|
|
4008
4300
|
this.isAssigning$ = new BehaviorSubject(false);
|
|
4009
4301
|
this.isAssignedToCurrentUser$ = combineLatest([
|
|
@@ -4039,6 +4331,7 @@ class CaseDetailComponent extends PendingChangesComponent {
|
|
|
4039
4331
|
this.caseDetailLayout$ = this.caseDetailLayoutService.caseDetailLayout$;
|
|
4040
4332
|
this.openTaskAndProcessLinkInModal$ = new Subject();
|
|
4041
4333
|
this.isDarkMode$ = this.cdsThemeService.currentTheme$.pipe(map(currentTheme => currentTheme === CurrentCarbonTheme.G90));
|
|
4334
|
+
this.tabContentContainerMaxHeight$ = this.caseDetailLayoutService.tabContentContainerMaxHeight$;
|
|
4042
4335
|
this._activeChange = false;
|
|
4043
4336
|
this._tabsInit = false;
|
|
4044
4337
|
this._subscriptions = new Subscription();
|
|
@@ -4191,6 +4484,9 @@ class CaseDetailComponent extends PendingChangesComponent {
|
|
|
4191
4484
|
this.caseDetailLayoutService.refreshTasks();
|
|
4192
4485
|
this.tabLoader?.refreshView();
|
|
4193
4486
|
}
|
|
4487
|
+
onMainContentHeaderHeightChange(height) {
|
|
4488
|
+
this.caseDetailLayoutService.setMainContentHeaderHeight(height);
|
|
4489
|
+
}
|
|
4194
4490
|
onConfirmRedirect() {
|
|
4195
4491
|
if (!this.tabLoader || !this._pendingTab)
|
|
4196
4492
|
return;
|
|
@@ -4317,13 +4613,13 @@ class CaseDetailComponent extends PendingChangesComponent {
|
|
|
4317
4613
|
}
|
|
4318
4614
|
}));
|
|
4319
4615
|
}
|
|
4320
|
-
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$
|
|
4321
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: CaseDetailComponent, isStandalone: false, selector: "ng-component", providers: [CaseTabService, CaseDetailLayoutService], 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 <ng-container *ngIf=\"caseTags$ | async as caseTags\">\n @if (caseTags && 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\n <div\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 *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 >\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;max-height:calc(100vh - 226px);overflow-x:hidden}.tab-container--compact{max-height:calc(100vh - 176px)}.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{overflow:hidden;display:flex;gap:32px;overflow:auto;margin-bottom:16px;max-height:calc(100vh - 226px)}.tab-content-container--compact{max-height:calc(100vh - 176px)}.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=)}.case-tags{margin-bottom:16px}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i6.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: 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" }] }); }
|
|
4616
|
+
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" }] }); }
|
|
4322
4618
|
}
|
|
4323
4619
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseDetailComponent, decorators: [{
|
|
4324
4620
|
type: Component,
|
|
4325
|
-
args: [{ standalone: false, providers: [CaseTabService, CaseDetailLayoutService], 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 <ng-container *ngIf=\"caseTags$ | async as caseTags\">\n @if (caseTags && 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\n <div\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 *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 >\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;max-height:calc(100vh - 226px);overflow-x:hidden}.tab-container--compact{max-height:calc(100vh - 176px)}.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{overflow:hidden;display:flex;gap:32px;overflow:auto;margin-bottom:16px;max-height:calc(100vh - 226px)}.tab-content-container--compact{max-height:calc(100vh - 176px)}.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=)}.case-tags{margin-bottom: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"] }]
|
|
4326
|
-
}], 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$
|
|
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"] }]
|
|
4622
|
+
}], 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: [{
|
|
4327
4623
|
type: Inject,
|
|
4328
4624
|
args: [DOCUMENT]
|
|
4329
4625
|
}] }], propDecorators: { supportingProcessStart: [{
|
|
@@ -4353,13 +4649,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
4353
4649
|
* limitations under the License.
|
|
4354
4650
|
*/
|
|
4355
4651
|
class CaseProcessStartModalComponent {
|
|
4356
|
-
constructor(
|
|
4357
|
-
this.route = route;
|
|
4652
|
+
constructor(router, processService, processLinkService, userProviderService, permissionService, listService, startModalService, configService, formViewModel, formCustomComponentConfig, urlResolverService) {
|
|
4358
4653
|
this.router = router;
|
|
4359
4654
|
this.processService = processService;
|
|
4360
|
-
this.documentService = documentService;
|
|
4361
4655
|
this.processLinkService = processLinkService;
|
|
4362
|
-
this.formFlowService = formFlowService;
|
|
4363
4656
|
this.userProviderService = userProviderService;
|
|
4364
4657
|
this.permissionService = permissionService;
|
|
4365
4658
|
this.listService = listService;
|
|
@@ -4370,6 +4663,7 @@ class CaseProcessStartModalComponent {
|
|
|
4370
4663
|
this.urlResolverService = urlResolverService;
|
|
4371
4664
|
this.isFormViewModel = false;
|
|
4372
4665
|
this.isUIComponent = false;
|
|
4666
|
+
this.navigateAfterSubmit = true;
|
|
4373
4667
|
this.formFlowComplete = new EventEmitter();
|
|
4374
4668
|
this.noProcessLinked = new EventEmitter();
|
|
4375
4669
|
this.modalOpen$ = new BehaviorSubject(false);
|
|
@@ -4504,7 +4798,7 @@ class CaseProcessStartModalComponent {
|
|
|
4504
4798
|
identifier: formSubmissionResult.documentId,
|
|
4505
4799
|
})
|
|
4506
4800
|
.subscribe(canViewCase => {
|
|
4507
|
-
if (canViewCase) {
|
|
4801
|
+
if (canViewCase && this.navigateAfterSubmit) {
|
|
4508
4802
|
this.router.navigate([
|
|
4509
4803
|
'cases',
|
|
4510
4804
|
this.caseDefinitionKey,
|
|
@@ -4561,13 +4855,23 @@ class CaseProcessStartModalComponent {
|
|
|
4561
4855
|
setTimeout(() => this.modalOpen$.next(false));
|
|
4562
4856
|
this.closeModalEvent.emit();
|
|
4563
4857
|
}
|
|
4564
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseProcessStartModalComponent, deps: [{ token: i1$2.
|
|
4565
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: CaseProcessStartModalComponent, isStandalone:
|
|
4858
|
+
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 <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 }); }
|
|
4566
4860
|
}
|
|
4567
4861
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseProcessStartModalComponent, decorators: [{
|
|
4568
4862
|
type: Component,
|
|
4569
|
-
args: [{ standalone:
|
|
4570
|
-
|
|
4863
|
+
args: [{ standalone: true, selector: 'valtimo-case-process-start-modal', encapsulation: ViewEncapsulation.None, imports: [
|
|
4864
|
+
CommonModule,
|
|
4865
|
+
TranslateModule,
|
|
4866
|
+
ProcessLinkModule,
|
|
4867
|
+
FormIoModule,
|
|
4868
|
+
ValtimoCdsModalDirective,
|
|
4869
|
+
DialogModule,
|
|
4870
|
+
ModalModule,
|
|
4871
|
+
LayerModule,
|
|
4872
|
+
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 <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
|
+
}], 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: [{
|
|
4571
4875
|
type: Optional
|
|
4572
4876
|
}, {
|
|
4573
4877
|
type: Inject,
|
|
@@ -4577,7 +4881,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
4577
4881
|
}, {
|
|
4578
4882
|
type: Inject,
|
|
4579
4883
|
args: [FORM_CUSTOM_COMPONENT_TOKEN]
|
|
4580
|
-
}] }, { type:
|
|
4884
|
+
}] }, { type: i3$3.UrlResolverService }], propDecorators: { navigateAfterSubmit: [{
|
|
4885
|
+
type: Input
|
|
4886
|
+
}], form: [{
|
|
4581
4887
|
type: ViewChild,
|
|
4582
4888
|
args: ['form', { static: false }]
|
|
4583
4889
|
}], formViewModelDynamicContainer: [{
|
|
@@ -4621,11 +4927,12 @@ class CaseListActionsComponent {
|
|
|
4621
4927
|
this.router = router;
|
|
4622
4928
|
this.translateService = translateService;
|
|
4623
4929
|
this._loading$ = new BehaviorSubject(true);
|
|
4930
|
+
this.navigateAfterSubmit = true;
|
|
4624
4931
|
this.formFlowComplete = new EventEmitter();
|
|
4625
4932
|
this.startButtonDisableEvent = new EventEmitter();
|
|
4626
4933
|
this._caseSettings$ = new BehaviorSubject(null);
|
|
4627
4934
|
this.caseSettings$ = this._caseSettings$.pipe(filter(settings => !!settings));
|
|
4628
|
-
this.associatedProcessDocumentDefinitions$ = this.listService.caseDefinitionKey$.pipe(switchMap(caseDefinitionKey => combineLatest([
|
|
4935
|
+
this.associatedProcessDocumentDefinitions$ = this.listService.caseDefinitionKey$.pipe(filter(caseDefinitionKey => !!caseDefinitionKey), switchMap(caseDefinitionKey => combineLatest([
|
|
4629
4936
|
caseDefinitionKey
|
|
4630
4937
|
? this.documentService.findProcessDefinitionCaseDefinitionsByCanInitializeDocument(caseDefinitionKey, true)
|
|
4631
4938
|
: of([]),
|
|
@@ -4643,7 +4950,7 @@ class CaseListActionsComponent {
|
|
|
4643
4950
|
}
|
|
4644
4951
|
ngOnInit() {
|
|
4645
4952
|
this._subscriptions.add(this.listService.caseDefinitionKey$
|
|
4646
|
-
.pipe(switchMap(caseDefinitionKey => this.documentService.getCaseSettings(caseDefinitionKey)))
|
|
4953
|
+
.pipe(filter(caseDefinitionKey => !!caseDefinitionKey), switchMap(caseDefinitionKey => this.documentService.getCaseSettings(caseDefinitionKey)))
|
|
4647
4954
|
.subscribe(caseSettings => {
|
|
4648
4955
|
this._caseSettings$.next(caseSettings);
|
|
4649
4956
|
}));
|
|
@@ -4703,16 +5010,27 @@ class CaseListActionsComponent {
|
|
|
4703
5010
|
}
|
|
4704
5011
|
}
|
|
4705
5012
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseListActionsComponent, deps: [{ token: i2.DocumentService }, { token: CaseListService }, { token: i1.GlobalNotificationService }, { token: i1$2.Router }, { token: i4.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4706
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: CaseListActionsComponent, isStandalone:
|
|
5013
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: CaseListActionsComponent, isStandalone: true, selector: "valtimo-case-list-actions", inputs: { loading: "loading", navigateAfterSubmit: "navigateAfterSubmit" }, outputs: { formFlowComplete: "formFlowComplete", startButtonDisableEvent: "startButtonDisableEvent" }, viewQueries: [{ propertyName: "processStart", first: true, predicate: ["processStartModal"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-render-in-body>\n <cds-modal\n valtimoCdsModal\n [open]=\"startSelectionModalOpen$ | async\"\n size=\"xs\"\n *ngIf=\"{\n associatedProcessDocumentDefinitions: associatedProcessDocumentDefinitions$ | async,\n caseSettings: caseSettings$ | async,\n } as obs\"\n >\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCloseSelect()\"\n ><h3 cdsModalHeaderHeading>\n {{ 'dashboard.startProcess.title' | translate }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent class=\"start-modal-content\" [cdsLayer]=\"1\">\n <cds-clickable-tile\n *ngIf=\"obs.caseSettings?.hasExternalStartForm\"\n (click)=\"openExternalCaseStartForm(true)\"\n >\n {{ obs?.caseSettings.externalStartFormDescription || '-' }}\n </cds-clickable-tile>\n\n <cds-clickable-tile\n *ngFor=\"let processDocumentDefinition of obs.associatedProcessDocumentDefinitions\"\n (click)=\"selectProcess(processDocumentDefinition)\"\n >\n {{ processDocumentDefinition.processDefinitionName }}\n </cds-clickable-tile>\n </section>\n </cds-modal>\n</valtimo-render-in-body>\n\n<valtimo-case-process-start-modal\n #processStartModal\n [navigateAfterSubmit]=\"navigateAfterSubmit\"\n (formFlowComplete)=\"onFormFlowComplete()\"\n (noProcessLinked)=\"onNoProcessLinked($event)\"\n></valtimo-case-process-start-modal>\n", styles: ["/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: DialogModule }, { kind: "ngmodule", type: ModalModule }, { kind: "component", type: i4$1.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i4$1.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "directive", type: i4$1.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }, { kind: "directive", type: i4$1.ModalHeaderHeading, selector: "[cdsModalHeaderHeading], [ibmModalHeaderHeading]" }, { kind: "directive", type: ValtimoCdsModalDirective, selector: "[valtimoCdsModal]", inputs: ["minContentHeight"] }, { kind: "ngmodule", type: TilesModule }, { kind: "component", type: i4$1.ClickableTile, selector: "cds-clickable-tile, ibm-clickable-tile", inputs: ["theme", "href", "target", "rel", "disabled", "route", "routeExtras"], outputs: ["navigation"] }, { kind: "component", type: CaseProcessStartModalComponent, selector: "valtimo-case-process-start-modal", inputs: ["navigateAfterSubmit"], outputs: ["formFlowComplete", "noProcessLinked"] }, { kind: "component", type: RenderInBodyComponent, selector: "valtimo-render-in-body" }] }); }
|
|
4707
5014
|
}
|
|
4708
5015
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseListActionsComponent, decorators: [{
|
|
4709
5016
|
type: Component,
|
|
4710
|
-
args: [{ standalone:
|
|
5017
|
+
args: [{ standalone: true, selector: 'valtimo-case-list-actions', imports: [
|
|
5018
|
+
CommonModule,
|
|
5019
|
+
TranslateModule,
|
|
5020
|
+
DialogModule,
|
|
5021
|
+
ModalModule,
|
|
5022
|
+
ValtimoCdsModalDirective,
|
|
5023
|
+
TilesModule,
|
|
5024
|
+
CaseProcessStartModalComponent,
|
|
5025
|
+
RenderInBodyComponent,
|
|
5026
|
+
], template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-render-in-body>\n <cds-modal\n valtimoCdsModal\n [open]=\"startSelectionModalOpen$ | async\"\n size=\"xs\"\n *ngIf=\"{\n associatedProcessDocumentDefinitions: associatedProcessDocumentDefinitions$ | async,\n caseSettings: caseSettings$ | async,\n } as obs\"\n >\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCloseSelect()\"\n ><h3 cdsModalHeaderHeading>\n {{ 'dashboard.startProcess.title' | translate }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent class=\"start-modal-content\" [cdsLayer]=\"1\">\n <cds-clickable-tile\n *ngIf=\"obs.caseSettings?.hasExternalStartForm\"\n (click)=\"openExternalCaseStartForm(true)\"\n >\n {{ obs?.caseSettings.externalStartFormDescription || '-' }}\n </cds-clickable-tile>\n\n <cds-clickable-tile\n *ngFor=\"let processDocumentDefinition of obs.associatedProcessDocumentDefinitions\"\n (click)=\"selectProcess(processDocumentDefinition)\"\n >\n {{ processDocumentDefinition.processDefinitionName }}\n </cds-clickable-tile>\n </section>\n </cds-modal>\n</valtimo-render-in-body>\n\n<valtimo-case-process-start-modal\n #processStartModal\n [navigateAfterSubmit]=\"navigateAfterSubmit\"\n (formFlowComplete)=\"onFormFlowComplete()\"\n (noProcessLinked)=\"onNoProcessLinked($event)\"\n></valtimo-case-process-start-modal>\n", styles: ["/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
4711
5027
|
}], ctorParameters: () => [{ type: i2.DocumentService }, { type: CaseListService }, { type: i1.GlobalNotificationService }, { type: i1$2.Router }, { type: i4.TranslateService }], propDecorators: { processStart: [{
|
|
4712
5028
|
type: ViewChild,
|
|
4713
5029
|
args: ['processStartModal']
|
|
4714
5030
|
}], loading: [{
|
|
4715
5031
|
type: Input
|
|
5032
|
+
}], navigateAfterSubmit: [{
|
|
5033
|
+
type: Input
|
|
4716
5034
|
}], formFlowComplete: [{
|
|
4717
5035
|
type: Output
|
|
4718
5036
|
}], startButtonDisableEvent: [{
|
|
@@ -4735,7 +5053,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
4735
5053
|
* limitations under the License.
|
|
4736
5054
|
*/
|
|
4737
5055
|
class CaseListComponent {
|
|
4738
|
-
constructor(assigneeService, breadcrumbService, bulkAssignService, columnService, configService, documentService, listService, pageTitleService, paginationService, parameterService, route, router, searchService, translateService, permissionService, statusService, caseListCaseTagService, caseExportService) {
|
|
5056
|
+
constructor(assigneeService, breadcrumbService, bulkAssignService, columnService, configService, documentService, listService, pageTitleService, paginationService, parameterService, route, router, searchService, translateService, permissionService, statusService, caseListCaseTagService, caseExportService, caseListHiddenColumnsService, quickSearchStateService, caseListQuickSearchService) {
|
|
4739
5057
|
this.assigneeService = assigneeService;
|
|
4740
5058
|
this.breadcrumbService = breadcrumbService;
|
|
4741
5059
|
this.bulkAssignService = bulkAssignService;
|
|
@@ -4754,6 +5072,9 @@ class CaseListComponent {
|
|
|
4754
5072
|
this.statusService = statusService;
|
|
4755
5073
|
this.caseListCaseTagService = caseListCaseTagService;
|
|
4756
5074
|
this.caseExportService = caseExportService;
|
|
5075
|
+
this.caseListHiddenColumnsService = caseListHiddenColumnsService;
|
|
5076
|
+
this.quickSearchStateService = quickSearchStateService;
|
|
5077
|
+
this.caseListQuickSearchService = caseListQuickSearchService;
|
|
4757
5078
|
this.activeTab = null;
|
|
4758
5079
|
this.loadingFields = true;
|
|
4759
5080
|
this.loadingPagination = true;
|
|
@@ -4774,10 +5095,12 @@ class CaseListComponent {
|
|
|
4774
5095
|
this.searchFields$ = this.searchService.documentSearchFields$.pipe(tap(() => (this.loadingSearchFields = false)));
|
|
4775
5096
|
this.statuses$ = this.statusService.caseStatuses$.pipe(tap(() => (this.loadingStatuses = false)));
|
|
4776
5097
|
this.caseTags$ = this.caseListCaseTagService.caseTags$.pipe(tap(() => (this.loadingStatuses = false)));
|
|
4777
|
-
this.
|
|
4778
|
-
this.
|
|
4779
|
-
this.caseDefinitionKey$ = this.listService.caseDefinitionKey
|
|
5098
|
+
this.selectedStatusKeys$ = this.statusService.selectedCaseStatuses$;
|
|
5099
|
+
this.selectedCaseTagKeys$ = this.caseListCaseTagService.selectedCaseTagKeys$;
|
|
5100
|
+
this.caseDefinitionKey$ = this.listService.caseDefinitionKey$.pipe(tap((caseDefinitionKey) => this.caseListQuickSearchService.initParams(caseDefinitionKey)));
|
|
4780
5101
|
this.selectedCaseIds$ = new BehaviorSubject([]);
|
|
5102
|
+
this._refreshHiddenColumns$ = new BehaviorSubject(null);
|
|
5103
|
+
this.hiddenColumns$ = this._refreshHiddenColumns$.pipe(switchMap(() => this.caseDefinitionKey$), switchMap((caseDefinitionKey) => this.caseListHiddenColumnsService.getHiddenColumns(caseDefinitionKey)));
|
|
4781
5104
|
this.schema$ = this.listService.caseDefinitionKey$.pipe(switchMap(caseDefinitionKey => this.documentService.getDocumentDefinition(caseDefinitionKey)), map(caseDefinition => caseDefinition?.schema), tap(schema => {
|
|
4782
5105
|
if (schema?.title) {
|
|
4783
5106
|
this.pageTitleService.setCustomPageTitle(schema?.title, true);
|
|
@@ -4805,10 +5128,10 @@ class CaseListComponent {
|
|
|
4805
5128
|
this.pagination = pagination;
|
|
4806
5129
|
this.loadingPagination = false;
|
|
4807
5130
|
}));
|
|
4808
|
-
this.
|
|
5131
|
+
this.hasApiColumnConfig$ = new BehaviorSubject(false);
|
|
4809
5132
|
this._canHaveAssignee$ = this.assigneeService.canHaveAssignee$;
|
|
4810
5133
|
this._columns$ = this.listService.caseDefinitionKey$.pipe(switchMap(caseDefinitionKey => this.columnService.getDefinitionColumns(caseDefinitionKey)), map(res => {
|
|
4811
|
-
this.
|
|
5134
|
+
this.hasApiColumnConfig$.next(res.hasApiConfig);
|
|
4812
5135
|
return res.columns;
|
|
4813
5136
|
}), tap(columns => {
|
|
4814
5137
|
this.listService.caseDefinitionKey$.pipe(take(1)).subscribe(_ => {
|
|
@@ -4829,10 +5152,10 @@ class CaseListComponent {
|
|
|
4829
5152
|
this.INTERNAL_STATUS_COLUMN,
|
|
4830
5153
|
]);
|
|
4831
5154
|
this._caseTagsKeys$ = new BehaviorSubject([this.CASE_TAGS_COLUMN]);
|
|
4832
|
-
this.
|
|
5155
|
+
this.availableFields$ = combineLatest([
|
|
4833
5156
|
this._canHaveAssignee$,
|
|
4834
5157
|
this._columns$,
|
|
4835
|
-
this.
|
|
5158
|
+
this.hasApiColumnConfig$,
|
|
4836
5159
|
this.statuses$,
|
|
4837
5160
|
this.translateService.stream('key'),
|
|
4838
5161
|
]).pipe(tap(([canHaveAssignee]) => {
|
|
@@ -4852,7 +5175,11 @@ class CaseListComponent {
|
|
|
4852
5175
|
return statuses.some((status) => status.key !== CASES_WITHOUT_STATUS_KEY) && !hasApiConfig
|
|
4853
5176
|
? [...fieldsToReturn, this._statusField]
|
|
4854
5177
|
: fieldsToReturn;
|
|
4855
|
-
})
|
|
5178
|
+
}));
|
|
5179
|
+
this.fields$ = combineLatest([
|
|
5180
|
+
this.availableFields$,
|
|
5181
|
+
this.hiddenColumns$,
|
|
5182
|
+
]).pipe(map(([fields, hiddenColumns]) => fields.filter((field) => !hiddenColumns.find((hiddenColumn) => hiddenColumn.key === field.key))), tap(listFields => {
|
|
4856
5183
|
const defaultListField = listFields.find(field => field.default);
|
|
4857
5184
|
// set default sort state if no pagination query parameters for sorting are available
|
|
4858
5185
|
this.parameterService.queryPaginationParams$
|
|
@@ -4878,34 +5205,33 @@ class CaseListComponent {
|
|
|
4878
5205
|
this.assigneeFilter$,
|
|
4879
5206
|
this.searchFieldValues$,
|
|
4880
5207
|
this.statusService.selectedCaseStatuses$,
|
|
4881
|
-
this.caseListCaseTagService.
|
|
5208
|
+
this.caseListCaseTagService.selectedCaseTagKeys$,
|
|
4882
5209
|
this.listService.forceRefresh$,
|
|
4883
|
-
this.
|
|
5210
|
+
this.hasApiColumnConfig$,
|
|
4884
5211
|
this.statusService.caseStatuses$,
|
|
4885
5212
|
this.caseListCaseTagService.caseTags$,
|
|
4886
|
-
]).pipe(debounceTime(50))), distinctUntilChanged(([prevSearchRequest, prevAssigneeFilter, prevSearchFieldValues, prevSelectedStatuses,
|
|
5213
|
+
]).pipe(debounceTime(50))), distinctUntilChanged(([prevSearchRequest, prevAssigneeFilter, prevSearchFieldValues, prevSelectedStatuses, prevCaseTagKeys, prevForceRefresh,], [currSearchRequest, currAssigneeFilter, currSearchFieldValues, currSelectedStatuses, currCaseTagKeys, currForceRefresh,]) => isEqual$1({
|
|
4887
5214
|
...prevSearchRequest,
|
|
4888
5215
|
assignee: prevAssigneeFilter,
|
|
4889
5216
|
...prevSearchFieldValues,
|
|
4890
|
-
...prevSelectedStatuses
|
|
4891
|
-
...
|
|
5217
|
+
...prevSelectedStatuses,
|
|
5218
|
+
...prevCaseTagKeys,
|
|
4892
5219
|
forceRefresh: prevForceRefresh,
|
|
4893
5220
|
}, {
|
|
4894
5221
|
...currSearchRequest,
|
|
4895
5222
|
assignee: currAssigneeFilter,
|
|
4896
5223
|
...currSearchFieldValues,
|
|
4897
|
-
...currSelectedStatuses
|
|
4898
|
-
...
|
|
5224
|
+
...currSelectedStatuses,
|
|
5225
|
+
...currCaseTagKeys,
|
|
4899
5226
|
forceRefresh: currForceRefresh,
|
|
4900
|
-
})), switchMap(([documentSearchRequest, assigneeFilter, searchValues, selectedStatuses,
|
|
5227
|
+
})), switchMap(([documentSearchRequest, assigneeFilter, searchValues, selectedStatuses, selectedCaseTagKeys, _, hasApiColumnConfig, allStatuses,]) => {
|
|
4901
5228
|
const obsApi = of(hasApiColumnConfig);
|
|
4902
|
-
const statusKeys = selectedStatuses.map((
|
|
4903
|
-
const caseTagsKeys = selectedCaseTags.map(caseTag => caseTag.key);
|
|
5229
|
+
const statusKeys = selectedStatuses.map((statusKey) => statusKey === CASES_WITHOUT_STATUS_KEY ? null : statusKey);
|
|
4904
5230
|
if ((Object.keys(searchValues) || []).length > 0) {
|
|
4905
5231
|
return forkJoin({
|
|
4906
5232
|
documents: !hasApiColumnConfig
|
|
4907
|
-
? this.documentService.getDocumentsSearch(documentSearchRequest, 'AND', assigneeFilter, this.searchService.mapSearchValuesToFilters(searchValues), statusKeys,
|
|
4908
|
-
: this.documentService.getSpecifiedDocumentsSearch(documentSearchRequest, 'AND', assigneeFilter, this.searchService.mapSearchValuesToFilters(searchValues), statusKeys,
|
|
5233
|
+
? this.documentService.getDocumentsSearch(documentSearchRequest, 'AND', assigneeFilter, this.searchService.mapSearchValuesToFilters(searchValues), statusKeys, selectedCaseTagKeys)
|
|
5234
|
+
: this.documentService.getSpecifiedDocumentsSearch(documentSearchRequest, 'AND', assigneeFilter, this.searchService.mapSearchValuesToFilters(searchValues), statusKeys, selectedCaseTagKeys),
|
|
4909
5235
|
hasApiColumnConfig: obsApi,
|
|
4910
5236
|
isSearchResult: of(true),
|
|
4911
5237
|
allStatuses: of(allStatuses),
|
|
@@ -4913,8 +5239,8 @@ class CaseListComponent {
|
|
|
4913
5239
|
}
|
|
4914
5240
|
return forkJoin({
|
|
4915
5241
|
documents: !hasApiColumnConfig
|
|
4916
|
-
? this.documentService.getDocumentsSearch(documentSearchRequest, 'AND', assigneeFilter, undefined, statusKeys,
|
|
4917
|
-
: this.documentService.getSpecifiedDocumentsSearch(documentSearchRequest, 'AND', assigneeFilter, undefined, statusKeys,
|
|
5242
|
+
? this.documentService.getDocumentsSearch(documentSearchRequest, 'AND', assigneeFilter, undefined, statusKeys, selectedCaseTagKeys)
|
|
5243
|
+
: this.documentService.getSpecifiedDocumentsSearch(documentSearchRequest, 'AND', assigneeFilter, undefined, statusKeys, selectedCaseTagKeys),
|
|
4918
5244
|
hasApiColumnConfig: obsApi,
|
|
4919
5245
|
isSearchResult: of(false),
|
|
4920
5246
|
allStatuses: of(allStatuses),
|
|
@@ -4989,6 +5315,10 @@ class CaseListComponent {
|
|
|
4989
5315
|
this.loadingAssigneeFilter = false;
|
|
4990
5316
|
this.loadingDocumentItems = false;
|
|
4991
5317
|
}));
|
|
5318
|
+
this.disableSaveSearch$ = combineLatest([
|
|
5319
|
+
this.statusService.selectedCaseStatuses$,
|
|
5320
|
+
this.caseListCaseTagService.selectedCaseTagKeys$,
|
|
5321
|
+
]).pipe(map(([selectedStatuses, selectedTags]) => !selectedStatuses.length && !selectedTags.length));
|
|
4992
5322
|
}
|
|
4993
5323
|
ngOnInit() {
|
|
4994
5324
|
this.setVisibleTabs();
|
|
@@ -5102,15 +5432,53 @@ class CaseListComponent {
|
|
|
5102
5432
|
forceRefresh() {
|
|
5103
5433
|
this.listService.forceRefresh();
|
|
5104
5434
|
}
|
|
5105
|
-
onSelectedStatusesChange(
|
|
5106
|
-
this.statusService.setSelectedStatuses(
|
|
5435
|
+
onSelectedStatusesChange(statusKeys) {
|
|
5436
|
+
this.statusService.setSelectedStatuses(statusKeys);
|
|
5107
5437
|
}
|
|
5108
|
-
onSelectedCaseTagsChange(
|
|
5109
|
-
this.caseListCaseTagService.setSelectedCaseTags(
|
|
5438
|
+
onSelectedCaseTagsChange(caseTagKeys) {
|
|
5439
|
+
this.caseListCaseTagService.setSelectedCaseTags(caseTagKeys);
|
|
5110
5440
|
}
|
|
5111
5441
|
onStartButtonDisableEvent(disabled) {
|
|
5112
5442
|
this.disableStartButton$.next(disabled);
|
|
5113
5443
|
}
|
|
5444
|
+
onViewUpdateEvent(hiddenColumns) {
|
|
5445
|
+
this.caseDefinitionKey$
|
|
5446
|
+
.pipe(take(1), switchMap((caseDefinitionKey) => this.caseListHiddenColumnsService.saveHiddenColumns(caseDefinitionKey, hiddenColumns)))
|
|
5447
|
+
.subscribe(() => this._refreshHiddenColumns$.next(null));
|
|
5448
|
+
}
|
|
5449
|
+
onSaveSearchEvent(event) {
|
|
5450
|
+
combineLatest([
|
|
5451
|
+
this.statusService.selectedCaseStatuses$,
|
|
5452
|
+
this.caseListCaseTagService.selectedCaseTagKeys$,
|
|
5453
|
+
])
|
|
5454
|
+
.pipe(take(1))
|
|
5455
|
+
.subscribe(([statusKeys, tags]) => {
|
|
5456
|
+
this.quickSearchStateService.openModal({
|
|
5457
|
+
...this.parameterService.getSearchParameter('casetags', tags),
|
|
5458
|
+
...this.parameterService.getSearchParameter('status', statusKeys),
|
|
5459
|
+
...this.parameterService.getSearchParameter('search', event),
|
|
5460
|
+
});
|
|
5461
|
+
});
|
|
5462
|
+
}
|
|
5463
|
+
onQuickSearchEvent(queryPath) {
|
|
5464
|
+
combineLatest([this.route.queryParams, this.caseDefinitionKey$])
|
|
5465
|
+
.pipe(take(1))
|
|
5466
|
+
.subscribe(([urlParams, caseDefinitionKey]) => {
|
|
5467
|
+
const queryParams = { ...urlParams, ...Object.fromEntries(new URLSearchParams(queryPath)) };
|
|
5468
|
+
this.router.navigate([`/cases/${caseDefinitionKey}`], {
|
|
5469
|
+
queryParams,
|
|
5470
|
+
replaceUrl: true,
|
|
5471
|
+
queryParamsHandling: 'replace',
|
|
5472
|
+
});
|
|
5473
|
+
this.statusService.setSelectedStatuses(this.parameterService.getSearchObject(queryParams['status']));
|
|
5474
|
+
this.caseListCaseTagService.setSelectedCaseTags(this.parameterService.getSearchObject(queryParams['casetags']));
|
|
5475
|
+
this.parameterService.setSearchFieldValues(this.parameterService.getSearchObject(queryParams['search']));
|
|
5476
|
+
});
|
|
5477
|
+
}
|
|
5478
|
+
onClearEvent() {
|
|
5479
|
+
this.statusService.setSelectedStatuses([]);
|
|
5480
|
+
this.caseListCaseTagService.setSelectedCaseTags([]);
|
|
5481
|
+
}
|
|
5114
5482
|
openCaseDefinitionKeySubscription() {
|
|
5115
5483
|
this._caseDefinitionKeySubscription = this.route.params
|
|
5116
5484
|
.pipe(map((params) => params?.caseDefinitionKey), filter(docDefName => !!docDefName), distinctUntilChanged())
|
|
@@ -5150,7 +5518,7 @@ class CaseListComponent {
|
|
|
5150
5518
|
title: `case.noResults.${this.activeTab ?? 'ALL'}.title`,
|
|
5151
5519
|
});
|
|
5152
5520
|
}
|
|
5153
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseListComponent, deps: [{ token: CaseListAssigneeService }, { token: i2$1.BreadcrumbService }, { token: CaseBulkAssignService }, { token: CaseColumnService }, { token: i1.ConfigService }, { token: i2.DocumentService }, { token: CaseListService }, { token: i2$1.PageTitleService }, { token: CaseListPaginationService }, { token: CaseParameterService }, { token: i1$2.ActivatedRoute }, { token: i1$2.Router }, { token: CaseListSearchService }, { token: i4.TranslateService }, { token: i2$3.PermissionService }, { token: CaseListStatusService }, { token: CaseListCaseTagService }, { token: CaseExportService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5521
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseListComponent, deps: [{ token: CaseListAssigneeService }, { token: i2$1.BreadcrumbService }, { token: CaseBulkAssignService }, { token: CaseColumnService }, { token: i1.ConfigService }, { token: i2.DocumentService }, { token: CaseListService }, { token: i2$1.PageTitleService }, { token: CaseListPaginationService }, { token: CaseParameterService }, { token: i1$2.ActivatedRoute }, { token: i1$2.Router }, { token: CaseListSearchService }, { token: i4.TranslateService }, { token: i2$3.PermissionService }, { token: CaseListStatusService }, { token: CaseListCaseTagService }, { token: CaseExportService }, { token: CaseListHiddenColumnsService }, { token: i2$1.QuickSearchStateService }, { token: QUICK_SEARCH_SERVICE }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5154
5522
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: CaseListComponent, isStandalone: false, selector: "ng-component", providers: [
|
|
5155
5523
|
CaseListService,
|
|
5156
5524
|
CaseColumnService,
|
|
@@ -5161,7 +5529,11 @@ class CaseListComponent {
|
|
|
5161
5529
|
CaseListStatusService,
|
|
5162
5530
|
CaseListCaseTagService,
|
|
5163
5531
|
CaseExportService,
|
|
5164
|
-
], viewQueries: [{ propertyName: "carbonList", first: true, predicate: CarbonListComponent, descendants: true }, { propertyName: "listActionsComponent", first: true, predicate: CaseListActionsComponent, descendants: true }, { propertyName: "tabsComponent", first: true, predicate: Tabs, descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n fields: fields$ | async,\n documentItems: documentItems$ | async,\n noResultsMessage: noResultsMessage$ | async,\n searchFields: searchFields$ | async,\n schema: schema$ | async,\n showAssignModal: showAssignModal$ | async,\n selectedCaseIds: selectedCaseIds$ | async,\n statuses: statuses$ | async,\n caseTags: caseTags$ | async,\n selectedStatuses: selectedStatuses$ | async,\n selectedCaseTags: selectedCaseTags$ | async,\n showStatusSelector: showStatusSelector$ | async,\n showCaseTagsSelector: showCaseTagsSelector$ | async,\n loaded:\n !loadingFields &&\n !loadingPagination &&\n !loadingSearchFields &&\n !loadingAssigneeFilter &&\n !loadingDocumentItems,\n } as obs\"\n>\n <valtimo-case-list-actions\n [loading]=\"!obs.loaded\"\n (formFlowComplete)=\"forceRefresh()\"\n (startButtonDisableEvent)=\"onStartButtonDisableEvent($event)\"\n ></valtimo-case-list-actions>\n\n <ng-container *ngTemplateOutlet=\"searchFields; context: {obs: obs}\"></ng-container>\n\n <ng-container *ngIf=\"obs.loaded; else loading\">\n <ng-container *ngTemplateOutlet=\"list; context: {obs: obs}\"></ng-container>\n </ng-container>\n\n <ng-container *ngTemplateOutlet=\"bulkAssignModal; context: {obs: obs}\"></ng-container>\n\n <ng-container *ngTemplateOutlet=\"changePageModal\"></ng-container>\n\n <ng-container *ngTemplateOutlet=\"changeTabModal\"></ng-container>\n</ng-container>\n\n<ng-template #searchFields let-obs=\"obs\">\n <valtimo-search-fields\n [searchFields]=\"obs.searchFields\"\n (doSearch)=\"search($event)\"\n [caseDefinitionKey]=\"caseDefinitionKey$ | async\"\n [defaultValues]=\"searchFieldValues$ | async\"\n [inputDisabled]=\"!obs.loaded\"\n [externalSearchField]=\"obs.showStatusSelector\"\n >\n <valtimo-status-selector\n *ngIf=\"obs.showStatusSelector\"\n [statuses]=\"obs.statuses\"\n [selectedStatuses]=\"obs.selectedStatuses\"\n [disabled]=\"!obs.loaded\"\n (selectedStatusesChangeEvent)=\"onSelectedStatusesChange($event)\"\n ></valtimo-status-selector>\n\n <valtimo-case-tags-selector\n *ngIf=\"obs.showCaseTagsSelector\"\n [caseTags]=\"obs.caseTags\"\n [selectedCaseTags]=\"obs.selectedCaseTags\"\n [disabled]=\"!obs.loaded\"\n (selectedCaseTagsChangeEvent)=\"onSelectedCaseTagsChange($event)\"\n ></valtimo-case-tags-selector>\n </valtimo-search-fields>\n</ng-template>\n\n<ng-template #list let-obs=\"obs\">\n <valtimo-carbon-list\n [fields]=\"obs.fields\"\n [header]=\"false\"\n [initialSortState]=\"pagination.sort\"\n [items]=\"obs.documentItems\"\n [pagination]=\"pagination\"\n paginationIdentifier=\"caseList\"\n lockedTooltipTranslationKey=\"case.rowLocked\"\n [showSelectionColumn]=\"canHaveAssignee\"\n [tableTranslations]=\"tableTranslations\"\n (paginationClicked)=\"pageChange($event)\"\n (paginationSet)=\"pageSizeChange($event)\"\n (rowClicked)=\"rowClick($event)\"\n (sortChanged)=\"sortChanged($event)\"\n >\n <ng-container carbonToolbarActions>\n <button cdsButton=\"primary\" (click)=\"showAssignModal()\">\n {{ 'case.bulkAssign.assign' | translate }}\n </button>\n </ng-container>\n\n <div carbonToolbarContent>\n <ng-container *ngTemplateOutlet=\"caseListActions\"></ng-container>\n </div>\n\n <valtimo-no-results\n [action]=\"obs.noResultsMessage.isSearchResult ? null : caseListActionsNoResult\"\n [description]=\"obs.noResultsMessage.description | translate\"\n [title]=\"obs.noResultsMessage.title | translate\"\n ></valtimo-no-results>\n\n <div tabs *ngIf=\"canHaveAssignee\">\n <ng-container *ngTemplateOutlet=\"tabs\"></ng-container>\n </div>\n </valtimo-carbon-list>\n</ng-template>\n\n<ng-template #tabs>\n <ng-container *ngIf=\"assigneeFilter$ | async as assigneeFilter\">\n <cds-tabs *ngIf=\"!visibleCaseTabs; else configuredTabs\" type=\"contained\" class=\"case-list-tabs\">\n <cds-tab\n *ngFor=\"let tab of defaultTabs; trackBy: trackByIndex\"\n [active]=\"assigneeFilter === tab\"\n heading=\"{{ 'case.tabs.' + tab | translate }}\"\n [id]=\"tab\"\n (selected)=\"tabChange(tab)\"\n ></cds-tab>\n </cds-tabs>\n </ng-container>\n</ng-template>\n\n<ng-template #configuredTabs>\n <ng-container *ngIf=\"assigneeFilter$ | async as assigneeFilter\">\n <cds-tabs type=\"contained\" class=\"case-list-tabs\">\n <cds-tab\n *ngFor=\"let tab of visibleCaseTabs; trackBy: trackByIndex\"\n [active]=\"assigneeFilter === tab\"\n heading=\"{{ 'case.tabs.' + tab | translate }}\"\n [id]=\"tab\"\n (selected)=\"tabChange(tab)\"\n ></cds-tab>\n </cds-tabs>\n </ng-container>\n</ng-template>\n\n<ng-template #loading\n ><valtimo-carbon-list [loading]=\"true\">\n <div tabs *ngIf=\"canHaveAssignee\">\n <ng-container *ngTemplateOutlet=\"tabs\"></ng-container>\n </div> </valtimo-carbon-list\n></ng-template>\n\n<ng-template #bulkAssignModal let-obs=\"obs\">\n <valtimo-case-bulk-assign-modal\n [documentIds]=\"obs.selectedCaseIds\"\n [open]=\"obs.showAssignModal\"\n (closeEvent)=\"onCloseEvent($event, obs.selectedCaseIds)\"\n ></valtimo-case-bulk-assign-modal>\n</ng-template>\n\n<ng-template #changePageModal>\n <valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"case.changePageModal.confirm\"\n contentTranslationKey=\"case.changePageModal.content\"\n [outputOnConfirm]=\"paginationChange$ | async\"\n [showModalSubject$]=\"showChangePageModal$\"\n titleTranslationKey=\"case.changePageModal.title\"\n (confirmEvent)=\"onChangePageConfirm($event)\"\n ></valtimo-confirmation-modal>\n</ng-template>\n\n<ng-template #changeTabModal>\n <valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"case.changeTabModal.confirm\"\n contentTranslationKey=\"case.changeTabModal.content\"\n [outputOnConfirm]=\"tabChange$ | async\"\n [showModalSubject$]=\"showChangeTabModal$\"\n titleTranslationKey=\"case.changeTabModal.title\"\n (cancelEvent)=\"onChangeTabCancel()\"\n (confirmEvent)=\"onChangeTabConfirm($event)\"\n ></valtimo-confirmation-modal>\n</ng-template>\n\n<ng-template #caseListActions>\n <cds-tooltip\n *ngIf=\"canExportCase$ | async\"\n [description]=\"'case.exportButtonTooltip' | translate\"\n >\n <cds-loading *ngIf=\"loadingExport\" size=\"sm\" class=\"loading-spinner\"></cds-loading>\n\n <button\n *ngIf=\"!loadingExport\"\n data-testid=\"case-list-export-button\"\n cdsButton=\"ghost\"\n iconOnly=\"true\"\n (click)=\"export()\"\n [disabled]=\"disableExportButton$ | async\"\n >\n <svg cdsIcon=\"download\" size=\"16\"></svg>\n </button>\n </cds-tooltip>\n\n <button\n *ngIf=\"canCreateCase$ | async\"\n cdsButton=\"primary\"\n [disabled]=\"disableStartButton$ | async\"\n (click)=\"startCase()\"\n >\n {{ 'Start Case' | translate }}\n\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n</ng-template>\n\n<ng-template #caseListActionsNoResult>\n <button\n *ngIf=\"canCreateCase$ | async\"\n cdsButton=\"primary\"\n [disabled]=\"disableStartButton$ | async\"\n (click)=\"startCase()\"\n >\n {{ 'Start Case' | translate }}\n\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n</ng-template>\n", styles: [".case-list-tabs cds-tab{display:none}:host{display:flex;flex-direction:column;gap:16px}.loading-spinner{margin:24px 24px 0 10px}\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.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: "component", type: i2$1.SearchFieldsComponent, selector: "valtimo-search-fields", inputs: ["loading", "searchFields", "caseDefinitionKey", "setValuesSubject$", "clearValuesSubject$", "defaultValues", "inputDisabled", "externalSearchField"], outputs: ["doSearch"] }, { 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.CarbonListComponent, selector: "valtimo-carbon-list", inputs: ["items", "fields", "tableTranslations", "paginatorConfig", "pagination", "loading", "actions", "actionItems", "showActionItems", "header", "hideColumnHeader", "initialSortState", "sortState", "isSearchable", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped", "hideToolbar", "lockedTooltipTranslationKey", "movingRowsEnabled", "dragAndDrop", "dragAndDropDisabled"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged", "moveRow", "itemsReordered"] }, { kind: "component", type: i2$1.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "component", type: i2$1.StatusSelectorComponent, selector: "valtimo-status-selector", inputs: ["statuses", "selectedStatuses", "carbonTheme", "disabled"], outputs: ["selectedStatusesChangeEvent"] }, { kind: "component", type: i2$1.CaseTagsSelectorComponent, selector: "valtimo-case-tags-selector", inputs: ["caseTags", "selectedCaseTags", "carbonTheme", "disabled"], outputs: ["selectedCaseTagsChangeEvent"] }, { kind: "component", type: i4$1.Tooltip, selector: "cds-tooltip, ibm-tooltip", inputs: ["id", "enterDelayMs", "leaveDelayMs", "disabled", "description", "templateContext"] }, { kind: "component", type: CaseBulkAssignModalComponent, selector: "valtimo-case-bulk-assign-modal", inputs: ["documentIds", "open"], outputs: ["closeEvent"] }, { kind: "component", type: CaseListActionsComponent, selector: "valtimo-case-list-actions", inputs: ["loading"], outputs: ["formFlowComplete", "startButtonDisableEvent"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
|
|
5532
|
+
{
|
|
5533
|
+
provide: QUICK_SEARCH_SERVICE,
|
|
5534
|
+
useClass: CaseListQuickSearchService,
|
|
5535
|
+
},
|
|
5536
|
+
], viewQueries: [{ propertyName: "carbonList", first: true, predicate: CarbonListComponent, descendants: true }, { propertyName: "listActionsComponent", first: true, predicate: CaseListActionsComponent, descendants: true }, { propertyName: "tabsComponent", first: true, predicate: Tabs, descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n availableFields: availableFields$ | async,\n fields: fields$ | async,\n documentItems: documentItems$ | async,\n noResultsMessage: noResultsMessage$ | async,\n hasApiColumnConfig: hasApiColumnConfig$ | async,\n searchFields: searchFields$ | async,\n schema: schema$ | async,\n showAssignModal: showAssignModal$ | async,\n selectedCaseIds: selectedCaseIds$ | async,\n statuses: statuses$ | async,\n caseTags: caseTags$ | async,\n selectedStatusKeys: selectedStatusKeys$ | async,\n selectedCaseTagKeys: selectedCaseTagKeys$ | async,\n showStatusSelector: showStatusSelector$ | async,\n showCaseTagsSelector: showCaseTagsSelector$ | async,\n loaded:\n !loadingFields &&\n !loadingPagination &&\n !loadingSearchFields &&\n !loadingAssigneeFilter &&\n !loadingDocumentItems,\n } as obs\"\n>\n <valtimo-case-list-actions\n [loading]=\"!obs.loaded\"\n (formFlowComplete)=\"forceRefresh()\"\n (startButtonDisableEvent)=\"onStartButtonDisableEvent($event)\"\n ></valtimo-case-list-actions>\n\n <ng-container *ngTemplateOutlet=\"searchFields; context: {obs: obs}\"></ng-container>\n\n <valtimo-quick-search (quickSearchEvent)=\"onQuickSearchEvent($event)\"></valtimo-quick-search>\n\n <ng-container *ngIf=\"obs.loaded; else loading\">\n <ng-container *ngTemplateOutlet=\"list; context: {obs: obs}\"></ng-container>\n </ng-container>\n\n <ng-container *ngTemplateOutlet=\"bulkAssignModal; context: {obs: obs}\"></ng-container>\n\n <ng-container *ngTemplateOutlet=\"changePageModal\"></ng-container>\n\n <ng-container *ngTemplateOutlet=\"changeTabModal\"></ng-container>\n</ng-container>\n\n<ng-template #searchFields let-obs=\"obs\">\n <valtimo-search-fields\n [disableSaveSearch]=\"disableSaveSearch$ | async\"\n [canSaveSearch]=\"true\"\n [searchFields]=\"obs.searchFields\"\n [caseDefinitionKey]=\"caseDefinitionKey$ | async\"\n [defaultValues]=\"searchFieldValues$ | async\"\n [inputDisabled]=\"!obs.loaded\"\n [externalSearchField]=\"obs.showStatusSelector\"\n (clearEvent)=\"onClearEvent()\"\n (doSearch)=\"search($event)\"\n (saveSearchEvent)=\"onSaveSearchEvent($event)\"\n >\n <valtimo-status-selector\n *ngIf=\"obs.showStatusSelector\"\n [statuses]=\"obs.statuses\"\n [selectedStatusKeys]=\"obs.selectedStatusKeys\"\n [disabled]=\"!obs.loaded\"\n (selectedStatusesChangeEvent)=\"onSelectedStatusesChange($event)\"\n ></valtimo-status-selector>\n\n <valtimo-case-tags-selector\n *ngIf=\"obs.showCaseTagsSelector\"\n [caseTags]=\"obs.caseTags\"\n [selectedCaseTagKeys]=\"obs.selectedCaseTagKeys\"\n [disabled]=\"!obs.loaded\"\n (selectedCaseTagsChangeEvent)=\"onSelectedCaseTagsChange($event)\"\n ></valtimo-case-tags-selector>\n </valtimo-search-fields>\n</ng-template>\n\n<ng-template #list let-obs=\"obs\">\n <valtimo-carbon-list\n [fields]=\"obs.fields\"\n [header]=\"false\"\n [initialSortState]=\"pagination.sort\"\n [items]=\"obs.documentItems\"\n [pagination]=\"pagination\"\n paginationIdentifier=\"caseList\"\n lockedTooltipTranslationKey=\"case.rowLocked\"\n [showSelectionColumn]=\"canHaveAssignee\"\n [tableTranslations]=\"tableTranslations\"\n (paginationClicked)=\"pageChange($event)\"\n (paginationSet)=\"pageSizeChange($event)\"\n (rowClicked)=\"rowClick($event)\"\n (sortChanged)=\"sortChanged($event)\"\n >\n <ng-container carbonToolbarActions>\n <button cdsButton=\"primary\" (click)=\"showAssignModal()\">\n {{ 'case.bulkAssign.assign' | translate }}\n </button>\n </ng-container>\n\n <div class=\"case-list-toolbar\" carbonToolbarContent>\n <valtimo-list-column-view\n [availableFields]=\"availableFields$ | async\"\n [disabled]=\"!obs.hasApiColumnConfig\"\n [hiddenColumns]=\"hiddenColumns$ | async\"\n (viewUpdateEvent)=\"onViewUpdateEvent($event)\"\n ></valtimo-list-column-view>\n\n <ng-container *ngTemplateOutlet=\"caseListActions\"></ng-container>\n </div>\n\n <valtimo-no-results\n [action]=\"obs.noResultsMessage.isSearchResult ? null : caseListActionsNoResult\"\n [description]=\"obs.noResultsMessage.description | translate\"\n [title]=\"obs.noResultsMessage.title | translate\"\n ></valtimo-no-results>\n\n <div tabs *ngIf=\"canHaveAssignee\">\n <ng-container *ngTemplateOutlet=\"tabs\"></ng-container>\n </div>\n </valtimo-carbon-list>\n</ng-template>\n\n<ng-template #tabs>\n <ng-container *ngIf=\"assigneeFilter$ | async as assigneeFilter\">\n <cds-tabs *ngIf=\"!visibleCaseTabs; else configuredTabs\" type=\"contained\" class=\"case-list-tabs\">\n <cds-tab\n *ngFor=\"let tab of defaultTabs; trackBy: trackByIndex\"\n [active]=\"assigneeFilter === tab\"\n heading=\"{{ 'case.tabs.' + tab | translate }}\"\n [id]=\"tab\"\n (selected)=\"tabChange(tab)\"\n ></cds-tab>\n </cds-tabs>\n </ng-container>\n</ng-template>\n\n<ng-template #configuredTabs>\n <ng-container *ngIf=\"assigneeFilter$ | async as assigneeFilter\">\n <cds-tabs type=\"contained\" class=\"case-list-tabs\">\n <cds-tab\n *ngFor=\"let tab of visibleCaseTabs; trackBy: trackByIndex\"\n [active]=\"assigneeFilter === tab\"\n heading=\"{{ 'case.tabs.' + tab | translate }}\"\n [id]=\"tab\"\n (selected)=\"tabChange(tab)\"\n ></cds-tab>\n </cds-tabs>\n </ng-container>\n</ng-template>\n\n<ng-template #loading\n ><valtimo-carbon-list [loading]=\"true\">\n <div tabs *ngIf=\"canHaveAssignee\">\n <ng-container *ngTemplateOutlet=\"tabs\"></ng-container>\n </div> </valtimo-carbon-list\n></ng-template>\n\n<ng-template #bulkAssignModal let-obs=\"obs\">\n <valtimo-case-bulk-assign-modal\n [documentIds]=\"obs.selectedCaseIds\"\n [open]=\"obs.showAssignModal\"\n (closeEvent)=\"onCloseEvent($event, obs.selectedCaseIds)\"\n ></valtimo-case-bulk-assign-modal>\n</ng-template>\n\n<ng-template #changePageModal>\n <valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"case.changePageModal.confirm\"\n contentTranslationKey=\"case.changePageModal.content\"\n [outputOnConfirm]=\"paginationChange$ | async\"\n [showModalSubject$]=\"showChangePageModal$\"\n titleTranslationKey=\"case.changePageModal.title\"\n (confirmEvent)=\"onChangePageConfirm($event)\"\n ></valtimo-confirmation-modal>\n</ng-template>\n\n<ng-template #changeTabModal>\n <valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"case.changeTabModal.confirm\"\n contentTranslationKey=\"case.changeTabModal.content\"\n [outputOnConfirm]=\"tabChange$ | async\"\n [showModalSubject$]=\"showChangeTabModal$\"\n titleTranslationKey=\"case.changeTabModal.title\"\n (cancelEvent)=\"onChangeTabCancel()\"\n (confirmEvent)=\"onChangeTabConfirm($event)\"\n ></valtimo-confirmation-modal>\n</ng-template>\n\n<ng-template #caseListActions>\n <cds-tooltip\n *ngIf=\"canExportCase$ | async\"\n [description]=\"'case.exportButtonTooltip' | translate\"\n >\n <cds-loading *ngIf=\"loadingExport\" size=\"sm\" class=\"loading-spinner\"></cds-loading>\n\n <button\n *ngIf=\"!loadingExport\"\n data-testid=\"case-list-export-button\"\n cdsButton=\"ghost\"\n iconOnly=\"true\"\n (click)=\"export()\"\n [disabled]=\"disableExportButton$ | async\"\n >\n <svg cdsIcon=\"download\" size=\"16\"></svg>\n </button>\n </cds-tooltip>\n\n <button\n *ngIf=\"canCreateCase$ | async\"\n cdsButton=\"primary\"\n [disabled]=\"disableStartButton$ | async\"\n (click)=\"startCase()\"\n >\n {{ 'Start Case' | translate }}\n\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n</ng-template>\n\n<ng-template #caseListActionsNoResult>\n <button\n *ngIf=\"canCreateCase$ | async\"\n cdsButton=\"primary\"\n [disabled]=\"disableStartButton$ | async\"\n (click)=\"startCase()\"\n >\n {{ 'Start Case' | translate }}\n\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n</ng-template>\n", styles: [".case-list-tabs cds-tab{display:none}.case-list-toolbar{display:flex}:host{display:flex;flex-direction:column;gap:16px}.loading-spinner{margin:24px 24px 0 10px}\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.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: "component", type: i2$1.SearchFieldsComponent, selector: "valtimo-search-fields", inputs: ["loading", "searchFields", "caseDefinitionKey", "setValuesSubject$", "clearValuesSubject$", "defaultValues", "disableSaveSearch", "inputDisabled", "externalSearchField", "canSaveSearch"], outputs: ["doSearch", "saveSearchEvent", "clearEvent"] }, { kind: "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.CarbonListComponent, selector: "valtimo-carbon-list", inputs: ["items", "fields", "tableTranslations", "paginatorConfig", "pagination", "loading", "actions", "actionItems", "showActionItems", "header", "hideColumnHeader", "initialSortState", "sortState", "isSearchable", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped", "hideToolbar", "lockedTooltipTranslationKey", "movingRowsEnabled", "dragAndDrop", "dragAndDropDisabled"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged", "moveRow", "itemsReordered"] }, { kind: "component", type: i2$1.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "component", type: i2$1.StatusSelectorComponent, selector: "valtimo-status-selector", inputs: ["statuses", "selectedStatusKeys", "carbonTheme", "disabled"], outputs: ["selectedStatusesChangeEvent"] }, { kind: "component", type: i2$1.CaseTagsSelectorComponent, selector: "valtimo-case-tags-selector", inputs: ["caseTags", "selectedCaseTagKeys", "carbonTheme", "disabled"], outputs: ["selectedCaseTagsChangeEvent"] }, { kind: "component", type: i4$1.Tooltip, selector: "cds-tooltip, ibm-tooltip", inputs: ["id", "enterDelayMs", "leaveDelayMs", "disabled", "description", "templateContext"] }, { kind: "component", type: i2$1.ListColumnViewComponent, selector: "valtimo-list-column-view", inputs: ["availableFields", "hiddenColumns", "disabled"], outputs: ["viewUpdateEvent"] }, { kind: "component", type: i2$1.QuickSearchComponent, selector: "valtimo-quick-search", outputs: ["quickSearchEvent"] }, { kind: "component", type: CaseListActionsComponent, selector: "valtimo-case-list-actions", inputs: ["loading", "navigateAfterSubmit"], outputs: ["formFlowComplete", "startButtonDisableEvent"] }, { kind: "component", type: CaseBulkAssignModalComponent, selector: "valtimo-case-bulk-assign-modal", inputs: ["documentIds", "open"], outputs: ["closeEvent"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
|
|
5165
5537
|
}
|
|
5166
5538
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseListComponent, decorators: [{
|
|
5167
5539
|
type: Component,
|
|
@@ -5175,8 +5547,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
5175
5547
|
CaseListStatusService,
|
|
5176
5548
|
CaseListCaseTagService,
|
|
5177
5549
|
CaseExportService,
|
|
5178
|
-
|
|
5179
|
-
|
|
5550
|
+
{
|
|
5551
|
+
provide: QUICK_SEARCH_SERVICE,
|
|
5552
|
+
useClass: CaseListQuickSearchService,
|
|
5553
|
+
},
|
|
5554
|
+
], template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n availableFields: availableFields$ | async,\n fields: fields$ | async,\n documentItems: documentItems$ | async,\n noResultsMessage: noResultsMessage$ | async,\n hasApiColumnConfig: hasApiColumnConfig$ | async,\n searchFields: searchFields$ | async,\n schema: schema$ | async,\n showAssignModal: showAssignModal$ | async,\n selectedCaseIds: selectedCaseIds$ | async,\n statuses: statuses$ | async,\n caseTags: caseTags$ | async,\n selectedStatusKeys: selectedStatusKeys$ | async,\n selectedCaseTagKeys: selectedCaseTagKeys$ | async,\n showStatusSelector: showStatusSelector$ | async,\n showCaseTagsSelector: showCaseTagsSelector$ | async,\n loaded:\n !loadingFields &&\n !loadingPagination &&\n !loadingSearchFields &&\n !loadingAssigneeFilter &&\n !loadingDocumentItems,\n } as obs\"\n>\n <valtimo-case-list-actions\n [loading]=\"!obs.loaded\"\n (formFlowComplete)=\"forceRefresh()\"\n (startButtonDisableEvent)=\"onStartButtonDisableEvent($event)\"\n ></valtimo-case-list-actions>\n\n <ng-container *ngTemplateOutlet=\"searchFields; context: {obs: obs}\"></ng-container>\n\n <valtimo-quick-search (quickSearchEvent)=\"onQuickSearchEvent($event)\"></valtimo-quick-search>\n\n <ng-container *ngIf=\"obs.loaded; else loading\">\n <ng-container *ngTemplateOutlet=\"list; context: {obs: obs}\"></ng-container>\n </ng-container>\n\n <ng-container *ngTemplateOutlet=\"bulkAssignModal; context: {obs: obs}\"></ng-container>\n\n <ng-container *ngTemplateOutlet=\"changePageModal\"></ng-container>\n\n <ng-container *ngTemplateOutlet=\"changeTabModal\"></ng-container>\n</ng-container>\n\n<ng-template #searchFields let-obs=\"obs\">\n <valtimo-search-fields\n [disableSaveSearch]=\"disableSaveSearch$ | async\"\n [canSaveSearch]=\"true\"\n [searchFields]=\"obs.searchFields\"\n [caseDefinitionKey]=\"caseDefinitionKey$ | async\"\n [defaultValues]=\"searchFieldValues$ | async\"\n [inputDisabled]=\"!obs.loaded\"\n [externalSearchField]=\"obs.showStatusSelector\"\n (clearEvent)=\"onClearEvent()\"\n (doSearch)=\"search($event)\"\n (saveSearchEvent)=\"onSaveSearchEvent($event)\"\n >\n <valtimo-status-selector\n *ngIf=\"obs.showStatusSelector\"\n [statuses]=\"obs.statuses\"\n [selectedStatusKeys]=\"obs.selectedStatusKeys\"\n [disabled]=\"!obs.loaded\"\n (selectedStatusesChangeEvent)=\"onSelectedStatusesChange($event)\"\n ></valtimo-status-selector>\n\n <valtimo-case-tags-selector\n *ngIf=\"obs.showCaseTagsSelector\"\n [caseTags]=\"obs.caseTags\"\n [selectedCaseTagKeys]=\"obs.selectedCaseTagKeys\"\n [disabled]=\"!obs.loaded\"\n (selectedCaseTagsChangeEvent)=\"onSelectedCaseTagsChange($event)\"\n ></valtimo-case-tags-selector>\n </valtimo-search-fields>\n</ng-template>\n\n<ng-template #list let-obs=\"obs\">\n <valtimo-carbon-list\n [fields]=\"obs.fields\"\n [header]=\"false\"\n [initialSortState]=\"pagination.sort\"\n [items]=\"obs.documentItems\"\n [pagination]=\"pagination\"\n paginationIdentifier=\"caseList\"\n lockedTooltipTranslationKey=\"case.rowLocked\"\n [showSelectionColumn]=\"canHaveAssignee\"\n [tableTranslations]=\"tableTranslations\"\n (paginationClicked)=\"pageChange($event)\"\n (paginationSet)=\"pageSizeChange($event)\"\n (rowClicked)=\"rowClick($event)\"\n (sortChanged)=\"sortChanged($event)\"\n >\n <ng-container carbonToolbarActions>\n <button cdsButton=\"primary\" (click)=\"showAssignModal()\">\n {{ 'case.bulkAssign.assign' | translate }}\n </button>\n </ng-container>\n\n <div class=\"case-list-toolbar\" carbonToolbarContent>\n <valtimo-list-column-view\n [availableFields]=\"availableFields$ | async\"\n [disabled]=\"!obs.hasApiColumnConfig\"\n [hiddenColumns]=\"hiddenColumns$ | async\"\n (viewUpdateEvent)=\"onViewUpdateEvent($event)\"\n ></valtimo-list-column-view>\n\n <ng-container *ngTemplateOutlet=\"caseListActions\"></ng-container>\n </div>\n\n <valtimo-no-results\n [action]=\"obs.noResultsMessage.isSearchResult ? null : caseListActionsNoResult\"\n [description]=\"obs.noResultsMessage.description | translate\"\n [title]=\"obs.noResultsMessage.title | translate\"\n ></valtimo-no-results>\n\n <div tabs *ngIf=\"canHaveAssignee\">\n <ng-container *ngTemplateOutlet=\"tabs\"></ng-container>\n </div>\n </valtimo-carbon-list>\n</ng-template>\n\n<ng-template #tabs>\n <ng-container *ngIf=\"assigneeFilter$ | async as assigneeFilter\">\n <cds-tabs *ngIf=\"!visibleCaseTabs; else configuredTabs\" type=\"contained\" class=\"case-list-tabs\">\n <cds-tab\n *ngFor=\"let tab of defaultTabs; trackBy: trackByIndex\"\n [active]=\"assigneeFilter === tab\"\n heading=\"{{ 'case.tabs.' + tab | translate }}\"\n [id]=\"tab\"\n (selected)=\"tabChange(tab)\"\n ></cds-tab>\n </cds-tabs>\n </ng-container>\n</ng-template>\n\n<ng-template #configuredTabs>\n <ng-container *ngIf=\"assigneeFilter$ | async as assigneeFilter\">\n <cds-tabs type=\"contained\" class=\"case-list-tabs\">\n <cds-tab\n *ngFor=\"let tab of visibleCaseTabs; trackBy: trackByIndex\"\n [active]=\"assigneeFilter === tab\"\n heading=\"{{ 'case.tabs.' + tab | translate }}\"\n [id]=\"tab\"\n (selected)=\"tabChange(tab)\"\n ></cds-tab>\n </cds-tabs>\n </ng-container>\n</ng-template>\n\n<ng-template #loading\n ><valtimo-carbon-list [loading]=\"true\">\n <div tabs *ngIf=\"canHaveAssignee\">\n <ng-container *ngTemplateOutlet=\"tabs\"></ng-container>\n </div> </valtimo-carbon-list\n></ng-template>\n\n<ng-template #bulkAssignModal let-obs=\"obs\">\n <valtimo-case-bulk-assign-modal\n [documentIds]=\"obs.selectedCaseIds\"\n [open]=\"obs.showAssignModal\"\n (closeEvent)=\"onCloseEvent($event, obs.selectedCaseIds)\"\n ></valtimo-case-bulk-assign-modal>\n</ng-template>\n\n<ng-template #changePageModal>\n <valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"case.changePageModal.confirm\"\n contentTranslationKey=\"case.changePageModal.content\"\n [outputOnConfirm]=\"paginationChange$ | async\"\n [showModalSubject$]=\"showChangePageModal$\"\n titleTranslationKey=\"case.changePageModal.title\"\n (confirmEvent)=\"onChangePageConfirm($event)\"\n ></valtimo-confirmation-modal>\n</ng-template>\n\n<ng-template #changeTabModal>\n <valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"case.changeTabModal.confirm\"\n contentTranslationKey=\"case.changeTabModal.content\"\n [outputOnConfirm]=\"tabChange$ | async\"\n [showModalSubject$]=\"showChangeTabModal$\"\n titleTranslationKey=\"case.changeTabModal.title\"\n (cancelEvent)=\"onChangeTabCancel()\"\n (confirmEvent)=\"onChangeTabConfirm($event)\"\n ></valtimo-confirmation-modal>\n</ng-template>\n\n<ng-template #caseListActions>\n <cds-tooltip\n *ngIf=\"canExportCase$ | async\"\n [description]=\"'case.exportButtonTooltip' | translate\"\n >\n <cds-loading *ngIf=\"loadingExport\" size=\"sm\" class=\"loading-spinner\"></cds-loading>\n\n <button\n *ngIf=\"!loadingExport\"\n data-testid=\"case-list-export-button\"\n cdsButton=\"ghost\"\n iconOnly=\"true\"\n (click)=\"export()\"\n [disabled]=\"disableExportButton$ | async\"\n >\n <svg cdsIcon=\"download\" size=\"16\"></svg>\n </button>\n </cds-tooltip>\n\n <button\n *ngIf=\"canCreateCase$ | async\"\n cdsButton=\"primary\"\n [disabled]=\"disableStartButton$ | async\"\n (click)=\"startCase()\"\n >\n {{ 'Start Case' | translate }}\n\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n</ng-template>\n\n<ng-template #caseListActionsNoResult>\n <button\n *ngIf=\"canCreateCase$ | async\"\n cdsButton=\"primary\"\n [disabled]=\"disableStartButton$ | async\"\n (click)=\"startCase()\"\n >\n {{ 'Start Case' | translate }}\n\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n</ng-template>\n", styles: [".case-list-tabs cds-tab{display:none}.case-list-toolbar{display:flex}:host{display:flex;flex-direction:column;gap:16px}.loading-spinner{margin:24px 24px 0 10px}\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"] }]
|
|
5555
|
+
}], ctorParameters: () => [{ type: CaseListAssigneeService }, { type: i2$1.BreadcrumbService }, { type: CaseBulkAssignService }, { type: CaseColumnService }, { type: i1.ConfigService }, { type: i2.DocumentService }, { type: CaseListService }, { type: i2$1.PageTitleService }, { type: CaseListPaginationService }, { type: CaseParameterService }, { type: i1$2.ActivatedRoute }, { type: i1$2.Router }, { type: CaseListSearchService }, { type: i4.TranslateService }, { type: i2$3.PermissionService }, { type: CaseListStatusService }, { type: CaseListCaseTagService }, { type: CaseExportService }, { type: CaseListHiddenColumnsService }, { type: i2$1.QuickSearchStateService }, { type: undefined, decorators: [{
|
|
5556
|
+
type: Inject,
|
|
5557
|
+
args: [QUICK_SEARCH_SERVICE]
|
|
5558
|
+
}] }], propDecorators: { carbonList: [{
|
|
5180
5559
|
type: ViewChild,
|
|
5181
5560
|
args: [CarbonListComponent]
|
|
5182
5561
|
}], listActionsComponent: [{
|
|
@@ -5441,7 +5820,6 @@ class CaseModule {
|
|
|
5441
5820
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseModule, deps: [{ token: CaseMenuService }, { token: i2$1.MenuService }], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
5442
5821
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.15", ngImport: i0, type: CaseModule, declarations: [CaseBulkAssignModalComponent,
|
|
5443
5822
|
CaseListComponent,
|
|
5444
|
-
CaseListActionsComponent,
|
|
5445
5823
|
CaseDetailComponent,
|
|
5446
5824
|
CaseDetailTabSummaryComponent,
|
|
5447
5825
|
CaseDetailTabProgressComponent,
|
|
@@ -5449,7 +5827,6 @@ class CaseModule {
|
|
|
5449
5827
|
CaseDetailTabDocumentsComponent,
|
|
5450
5828
|
CaseDetailTabNotesComponent,
|
|
5451
5829
|
CaseUpdateComponent,
|
|
5452
|
-
CaseProcessStartModalComponent,
|
|
5453
5830
|
CaseSupportingProcessStartModalComponent,
|
|
5454
5831
|
CaseDetailTabS3DocumentsComponent,
|
|
5455
5832
|
CaseDetailTabNotFoundComponent,
|
|
@@ -5469,9 +5846,9 @@ class CaseModule {
|
|
|
5469
5846
|
ReactiveFormsModule,
|
|
5470
5847
|
FormModule,
|
|
5471
5848
|
FormIoModule,
|
|
5472
|
-
ModalModule,
|
|
5849
|
+
ModalModule$1,
|
|
5473
5850
|
SpinnerModule, i4.TranslateModule, TaskModule,
|
|
5474
|
-
ModalModule,
|
|
5851
|
+
ModalModule$1,
|
|
5475
5852
|
NgbTooltipModule,
|
|
5476
5853
|
UploaderModule,
|
|
5477
5854
|
DropzoneModule,
|
|
@@ -5492,7 +5869,7 @@ class CaseModule {
|
|
|
5492
5869
|
ButtonModule,
|
|
5493
5870
|
IconModule,
|
|
5494
5871
|
ProcessLinkModule,
|
|
5495
|
-
ModalModule
|
|
5872
|
+
ModalModule,
|
|
5496
5873
|
SelectModule$1,
|
|
5497
5874
|
ConfirmationModalModule,
|
|
5498
5875
|
DropdownModule,
|
|
@@ -5517,7 +5894,13 @@ class CaseModule {
|
|
|
5517
5894
|
LayerModule,
|
|
5518
5895
|
NotificationModule,
|
|
5519
5896
|
InputModule,
|
|
5520
|
-
TooltipModule
|
|
5897
|
+
TooltipModule,
|
|
5898
|
+
ListColumnViewComponent,
|
|
5899
|
+
CaseDetailHeaderWidgetComponent,
|
|
5900
|
+
ObserveSizeDirective,
|
|
5901
|
+
QuickSearchComponent,
|
|
5902
|
+
CaseProcessStartModalComponent,
|
|
5903
|
+
CaseListActionsComponent], exports: [CaseListComponent, CaseDetailComponent] }); }
|
|
5521
5904
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseModule, imports: [CommonModule,
|
|
5522
5905
|
CaseRoutingModule,
|
|
5523
5906
|
WidgetModule,
|
|
@@ -5532,13 +5915,13 @@ class CaseModule {
|
|
|
5532
5915
|
ReactiveFormsModule,
|
|
5533
5916
|
FormModule,
|
|
5534
5917
|
FormIoModule,
|
|
5535
|
-
ModalModule,
|
|
5918
|
+
ModalModule$1,
|
|
5536
5919
|
SpinnerModule,
|
|
5537
5920
|
TranslateModule.forRoot({
|
|
5538
5921
|
loader: { provide: TranslateLoader, useFactory: HttpLoaderFactory, deps: [HttpClient] },
|
|
5539
5922
|
}),
|
|
5540
5923
|
TaskModule,
|
|
5541
|
-
ModalModule,
|
|
5924
|
+
ModalModule$1,
|
|
5542
5925
|
NgbTooltipModule,
|
|
5543
5926
|
UploaderModule,
|
|
5544
5927
|
DropzoneModule,
|
|
@@ -5559,7 +5942,7 @@ class CaseModule {
|
|
|
5559
5942
|
ButtonModule,
|
|
5560
5943
|
IconModule,
|
|
5561
5944
|
ProcessLinkModule,
|
|
5562
|
-
ModalModule
|
|
5945
|
+
ModalModule,
|
|
5563
5946
|
SelectModule$1,
|
|
5564
5947
|
ConfirmationModalModule,
|
|
5565
5948
|
DropdownModule,
|
|
@@ -5580,7 +5963,12 @@ class CaseModule {
|
|
|
5580
5963
|
LayerModule,
|
|
5581
5964
|
NotificationModule,
|
|
5582
5965
|
InputModule,
|
|
5583
|
-
TooltipModule
|
|
5966
|
+
TooltipModule,
|
|
5967
|
+
ListColumnViewComponent,
|
|
5968
|
+
CaseDetailHeaderWidgetComponent,
|
|
5969
|
+
QuickSearchComponent,
|
|
5970
|
+
CaseProcessStartModalComponent,
|
|
5971
|
+
CaseListActionsComponent] }); }
|
|
5584
5972
|
}
|
|
5585
5973
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CaseModule, decorators: [{
|
|
5586
5974
|
type: NgModule,
|
|
@@ -5588,7 +5976,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
5588
5976
|
declarations: [
|
|
5589
5977
|
CaseBulkAssignModalComponent,
|
|
5590
5978
|
CaseListComponent,
|
|
5591
|
-
CaseListActionsComponent,
|
|
5592
5979
|
CaseDetailComponent,
|
|
5593
5980
|
CaseDetailTabSummaryComponent,
|
|
5594
5981
|
CaseDetailTabProgressComponent,
|
|
@@ -5596,7 +5983,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
5596
5983
|
CaseDetailTabDocumentsComponent,
|
|
5597
5984
|
CaseDetailTabNotesComponent,
|
|
5598
5985
|
CaseUpdateComponent,
|
|
5599
|
-
CaseProcessStartModalComponent,
|
|
5600
5986
|
CaseSupportingProcessStartModalComponent,
|
|
5601
5987
|
CaseDetailTabS3DocumentsComponent,
|
|
5602
5988
|
CaseDetailTabNotFoundComponent,
|
|
@@ -5619,13 +6005,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
5619
6005
|
ReactiveFormsModule,
|
|
5620
6006
|
FormModule,
|
|
5621
6007
|
FormIoModule,
|
|
5622
|
-
ModalModule,
|
|
6008
|
+
ModalModule$1,
|
|
5623
6009
|
SpinnerModule,
|
|
5624
6010
|
TranslateModule.forRoot({
|
|
5625
6011
|
loader: { provide: TranslateLoader, useFactory: HttpLoaderFactory, deps: [HttpClient] },
|
|
5626
6012
|
}),
|
|
5627
6013
|
TaskModule,
|
|
5628
|
-
ModalModule,
|
|
6014
|
+
ModalModule$1,
|
|
5629
6015
|
NgbTooltipModule,
|
|
5630
6016
|
UploaderModule,
|
|
5631
6017
|
DropzoneModule,
|
|
@@ -5646,7 +6032,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
5646
6032
|
ButtonModule,
|
|
5647
6033
|
IconModule,
|
|
5648
6034
|
ProcessLinkModule,
|
|
5649
|
-
ModalModule
|
|
6035
|
+
ModalModule,
|
|
5650
6036
|
SelectModule$1,
|
|
5651
6037
|
ConfirmationModalModule,
|
|
5652
6038
|
DropdownModule,
|
|
@@ -5672,8 +6058,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
5672
6058
|
NotificationModule,
|
|
5673
6059
|
InputModule,
|
|
5674
6060
|
TooltipModule,
|
|
6061
|
+
ListColumnViewComponent,
|
|
6062
|
+
CaseDetailHeaderWidgetComponent,
|
|
6063
|
+
ObserveSizeDirective,
|
|
6064
|
+
QuickSearchComponent,
|
|
6065
|
+
CaseProcessStartModalComponent,
|
|
6066
|
+
CaseListActionsComponent,
|
|
5675
6067
|
],
|
|
5676
|
-
exports: [CaseListComponent, CaseDetailComponent
|
|
6068
|
+
exports: [CaseListComponent, CaseDetailComponent],
|
|
5677
6069
|
}]
|
|
5678
6070
|
}], ctorParameters: () => [{ type: CaseMenuService }, { type: i2$1.MenuService }] });
|
|
5679
6071
|
|
|
@@ -5700,5 +6092,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
5700
6092
|
* Generated bundle index. Do not edit.
|
|
5701
6093
|
*/
|
|
5702
6094
|
|
|
5703
|
-
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, CaseListAssigneeService, CaseListCaseTagService, CaseListComponent, CaseListPaginationService, CaseListSearchService, CaseListService, CaseListStatusService, CaseMenuService, CaseModule, CaseParameterService, CaseProcessStartModalComponent, CaseService, CaseTabApiService, CaseTabService, CaseWidgetDisplayTypeKey, CaseWidgetType, CaseWidgetsApiService, DEFAULT_CASE_LIST_TABS, DEFAULT_TABS, DEFAULT_TAB_COMPONENTS, DefaultTabs, StartModalService, TAB_MAP, TabImpl, TabLoaderImpl, WIDGET_HEIGHT_1X, WIDGET_WIDTH_1X };
|
|
6095
|
+
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, CaseWidgetDisplayTypeKey, CaseWidgetType, CaseWidgetsApiService, DEFAULT_CASE_LIST_TABS, DEFAULT_TABS, DEFAULT_TAB_COMPONENTS, DefaultTabs, StartModalService, TAB_MAP, TabImpl, TabLoaderImpl, WIDGET_HEIGHT_1X, WIDGET_WIDTH_1X };
|
|
5704
6096
|
//# sourceMappingURL=valtimo-case.mjs.map
|