@valtimo/zgw 13.31.0 → 13.33.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.
@@ -1,25 +1,25 @@
1
1
  import * as i4 from '@angular/common';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import * as i0 from '@angular/core';
4
- import { Injectable, EventEmitter, Output, Input, ChangeDetectionStrategy, Component, ViewChild, signal, HostListener, NgModule, ViewContainerRef } from '@angular/core';
4
+ import { Injectable, EventEmitter, Output, Input, ChangeDetectionStrategy, Component, ViewChild, signal, HostListener, NgModule, ViewContainerRef, computed } from '@angular/core';
5
5
  import * as i5 from '@ngx-translate/core';
6
6
  import { TranslateModule } from '@ngx-translate/core';
7
7
  import { CaseManagementDraftWarningComponent } from '@valtimo/case-management';
8
8
  import * as i2 from '@valtimo/shared';
9
9
  import { BaseApiService, InterceptorSkipHeader, getCaseManagementRouteParams, UploadProvider, ROLE_ADMIN, CASE_MANAGEMENT_TAB_TOKEN, ZGW_OBJECT_TYPE_COMPONENT_TOKEN, ZGW_DOCUMENTEN_API_DOCUMENTS_COMPONENT_TOKEN, CASE_CONFIGURATION_EXTENSIONS_TOKEN } from '@valtimo/shared';
10
10
  import * as i6 from 'carbon-components-angular';
11
- import { ModalModule, InputModule, ButtonModule, DropdownModule, RadioModule, NotificationModule, LayerModule, TagModule, IconModule, DatePickerInputModule, DatePickerModule, ComboBoxModule, TooltipModule, ToggleModule, LoadingModule, ToggletipModule, CheckboxModule, TilesModule, SelectModule as SelectModule$1, TabsModule } from 'carbon-components-angular';
12
- import { catchError, of, BehaviorSubject, combineLatest, map, Subscription, switchMap, filter, tap, startWith, debounceTime, Subject, take as take$1, from, ReplaySubject, EMPTY, finalize, distinctUntilChanged } from 'rxjs';
11
+ import { ModalModule, InputModule, ButtonModule, DropdownModule, RadioModule, NotificationModule, LayerModule, TagModule, IconModule, DatePickerInputModule, DatePickerModule, ComboBoxModule, TooltipModule, ToggleModule, LoadingModule, ToggletipModule, CheckboxModule, TilesModule, SelectModule as SelectModule$1, TabsModule, AccordionModule, StructuredListModule } from 'carbon-components-angular';
12
+ import { catchError, of, BehaviorSubject, combineLatest, map, Subscription, switchMap, filter, tap, startWith, debounceTime, Subject, take as take$1, from, ReplaySubject, EMPTY, finalize, distinctUntilChanged, forkJoin } from 'rxjs';
13
13
  import * as i1$1 from '@angular/forms';
14
14
  import { Validators, ReactiveFormsModule, FormGroup, FormControl, FormsModule } from '@angular/forms';
15
15
  import * as i3 from '@valtimo/components';
16
- import { CARBON_CONSTANTS, ViewType, CarbonListModule, ConfirmationModalModule, InputLabelModule, InputModule as InputModule$1, SelectModule, VModalModule, DEFAULT_PAGINATION, DEFAULT_PAGINATOR_CONFIG, OverflowMenuComponent, CarbonListComponent, registerCustomFormioComponent, ParagraphModule, TableModule, FormIoModule, FormModule, SpinnerModule, ValtimoCdsModalDirective, RenderInBodyComponent, MuuriDirectiveModule, DropzoneModule, FileSizeModule } from '@valtimo/components';
16
+ import { CARBON_CONSTANTS, ViewType, CarbonListModule, ConfirmationModalModule, InputLabelModule, InputModule as InputModule$1, SelectModule, VModalModule, DEFAULT_PAGINATION, DEFAULT_PAGINATOR_CONFIG, OverflowMenuComponent, CarbonListComponent, registerCustomFormioComponent, ParagraphModule, TableModule, FormIoModule, FormModule, SpinnerModule, ValtimoCdsModalDirective, RenderInBodyComponent, MuuriDirectiveModule, JsonEditorComponent, DropzoneModule, FileSizeModule } from '@valtimo/components';
17
17
  import * as i1 from '@angular/common/http';
18
18
  import { HttpParams } from '@angular/common/http';
19
19
  import { take, tap as tap$1, map as map$1, filter as filter$1, switchMap as switchMap$1, catchError as catchError$1, shareReplay } from 'rxjs/operators';
20
20
  import * as i1$2 from '@angular/router';
21
21
  import { RouterModule } from '@angular/router';
22
- import { TrashCan16, Filter16, TagGroup16, Upload16, Edit16, WarningFilled16, Save16 } from '@carbon/icons';
22
+ import { TrashCan16, Filter16, TagGroup16, Upload16, Edit16, WarningFilled16, Save16, Copy16, Launch16, WarningAltFilled16 } from '@carbon/icons';
23
23
  import * as i4$2 from '@valtimo/resource';
24
24
  import { CAN_CREATE_RESOURCE_PERMISSION, RESOURCE_PERMISSION_RESOURCE, ResourceModule } from '@valtimo/resource';
25
25
  import flatpickr from 'flatpickr';
@@ -32,6 +32,7 @@ import * as i6$1 from '@valtimo/access-control';
32
32
  import * as i9 from '@valtimo/security';
33
33
  import { AuthGuardService } from '@valtimo/security';
34
34
  import { FormioModule } from '@formio/angular';
35
+ import { ZGW_CASE_INSPECTION_TAB_TOKEN } from '@valtimo/case';
35
36
 
36
37
  /*
37
38
  * Copyright 2015-2025 Ritense BV, the Netherlands.
@@ -5214,7 +5215,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
5214
5215
  */
5215
5216
  class CaseManagementZgwGeneralComponent {
5216
5217
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseManagementZgwGeneralComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5217
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: CaseManagementZgwGeneralComponent, isStandalone: true, 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<div class=\"muuri-container\">\n <div muuri [columnMinWidth]=\"450\">\n <valtimo-muuri-item>\n <valtimo-document-objecten-api-sync></valtimo-document-objecten-api-sync>\n </valtimo-muuri-item>\n\n <valtimo-muuri-item>\n <valtimo-case-zaken-api-sync></valtimo-case-zaken-api-sync>\n </valtimo-muuri-item>\n\n <valtimo-muuri-item>\n <valtimo-documenten-api-version></valtimo-documenten-api-version\n ></valtimo-muuri-item>\n\n <valtimo-muuri-item>\n <valtimo-zaken-api-zaaktype-link></valtimo-zaken-api-zaaktype-link>\n </valtimo-muuri-item>\n </div>\n</div>\n", styles: [".muuri-container{margin-bottom:-16px;padding:16px;background-color:var(--cds-layer-01)}\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: "component", type: CaseZakenApiSyncComponent, selector: "valtimo-case-zaken-api-sync" }, { kind: "component", type: ZakenApiZaaktypeLinkComponent, selector: "valtimo-zaken-api-zaaktype-link" }, { kind: "component", type: DocumentObjectenApiSyncComponent, selector: "valtimo-document-objecten-api-sync" }, { kind: "ngmodule", type: MuuriDirectiveModule }, { kind: "directive", type: i3.MuuriDirective, selector: "[muuri]", inputs: ["columnMinWidth"] }, { kind: "component", type: i3.MuuriItemComponent, selector: "valtimo-muuri-item" }, { kind: "component", type: DocumentenApiVersionComponent, selector: "valtimo-documenten-api-version" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
5218
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: CaseManagementZgwGeneralComponent, isStandalone: true, 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<div class=\"muuri-container\">\n <div muuri [columnMinWidth]=\"450\">\n <valtimo-muuri-item>\n <valtimo-document-objecten-api-sync></valtimo-document-objecten-api-sync>\n </valtimo-muuri-item>\n\n <valtimo-muuri-item>\n <valtimo-case-zaken-api-sync></valtimo-case-zaken-api-sync>\n </valtimo-muuri-item>\n\n <valtimo-muuri-item>\n <valtimo-documenten-api-version></valtimo-documenten-api-version\n ></valtimo-muuri-item>\n\n <valtimo-muuri-item>\n <valtimo-zaken-api-zaaktype-link></valtimo-zaken-api-zaaktype-link>\n </valtimo-muuri-item>\n </div>\n</div>\n", styles: [".muuri-container{margin-bottom:-16px;padding:16px;background-color:var(--cds-layer-01)}\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: "component", type: CaseZakenApiSyncComponent, selector: "valtimo-case-zaken-api-sync" }, { kind: "component", type: ZakenApiZaaktypeLinkComponent, selector: "valtimo-zaken-api-zaaktype-link" }, { kind: "component", type: DocumentObjectenApiSyncComponent, selector: "valtimo-document-objecten-api-sync" }, { kind: "ngmodule", type: MuuriDirectiveModule }, { kind: "directive", type: i3.MuuriDirective, selector: "[muuri]", inputs: ["columnMinWidth", "widgetLayout"] }, { kind: "component", type: i3.MuuriItemComponent, selector: "valtimo-muuri-item" }, { kind: "component", type: DocumentenApiVersionComponent, selector: "valtimo-documenten-api-version" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
5218
5219
  }
5219
5220
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseManagementZgwGeneralComponent, decorators: [{
5220
5221
  type: Component,
@@ -5406,6 +5407,189 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
5406
5407
  * limitations under the License.
5407
5408
  */
5408
5409
 
5410
+ /*
5411
+ * Copyright 2015-2026 Ritense BV, the Netherlands.
5412
+ *
5413
+ * Licensed under EUPL, Version 1.2 (the "License");
5414
+ * you may not use this file except in compliance with the License.
5415
+ * You may obtain a copy of the License at
5416
+ *
5417
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
5418
+ *
5419
+ * Unless required by applicable law or agreed to in writing, software
5420
+ * distributed under the License is distributed on an "AS IS" basis,
5421
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
5422
+ * See the License for the specific language governing permissions and
5423
+ * limitations under the License.
5424
+ */
5425
+ class ZgwCaseInspectionService {
5426
+ constructor(http, configService) {
5427
+ this.http = http;
5428
+ this.configService = configService;
5429
+ this._baseUrl = this.configService.config.valtimoApi.endpointUri;
5430
+ }
5431
+ getZgwInspection(caseId) {
5432
+ return this.http.get(`${this._baseUrl}management/v1/case/${caseId}/zgw`);
5433
+ }
5434
+ resolveZaakobjectContent(caseId, objectUrl) {
5435
+ return this.http.get(`${this._baseUrl}management/v1/case/${caseId}/zgw/zaakobject/resolve`, { params: new HttpParams().set('objectUrl', objectUrl) });
5436
+ }
5437
+ getZaakdetailsInspection(caseId) {
5438
+ return this.http.get(`${this._baseUrl}management/v1/case/${caseId}/zgw/zaakdetails`);
5439
+ }
5440
+ getZaakdetailsObjectContent(caseId) {
5441
+ return this.http.get(`${this._baseUrl}management/v1/case/${caseId}/zgw/zaakdetails/object`);
5442
+ }
5443
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ZgwCaseInspectionService, deps: [{ token: i1.HttpClient }, { token: i2.ConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); }
5444
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ZgwCaseInspectionService, providedIn: 'root' }); }
5445
+ }
5446
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ZgwCaseInspectionService, decorators: [{
5447
+ type: Injectable,
5448
+ args: [{ providedIn: 'root' }]
5449
+ }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.ConfigService }] });
5450
+
5451
+ /*
5452
+ * Copyright 2015-2026 Ritense BV, the Netherlands.
5453
+ *
5454
+ * Licensed under EUPL, Version 1.2 (the "License");
5455
+ * you may not use this file except in compliance with the License.
5456
+ * You may obtain a copy of the License at
5457
+ *
5458
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
5459
+ *
5460
+ * Unless required by applicable law or agreed to in writing, software
5461
+ * distributed under the License is distributed on an "AS IS" basis,
5462
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
5463
+ * See the License for the specific language governing permissions and
5464
+ * limitations under the License.
5465
+ */
5466
+ class CaseInspectionZgwTabComponent {
5467
+ constructor(zgwCaseInspectionService, iconService) {
5468
+ this.zgwCaseInspectionService = zgwCaseInspectionService;
5469
+ this.iconService = iconService;
5470
+ this.$loading = signal(true);
5471
+ this.$errorMessage = signal(null);
5472
+ this.$zgw = signal(null);
5473
+ this.$zaakdetails = signal(null);
5474
+ this.$showZaakdetails = signal(false);
5475
+ this.$resolvedObjects = signal({});
5476
+ this.$zaakdetailsContent = signal(null);
5477
+ this.$rawZaakModel = computed(() => {
5478
+ const zaak = this.$zgw()?.zaak;
5479
+ return zaak ? { value: JSON.stringify(zaak, null, 2), language: 'json' } : null;
5480
+ });
5481
+ this.$resolvedRecordModels = computed(() => {
5482
+ const out = {};
5483
+ const resolved = this.$resolvedObjects();
5484
+ Object.keys(resolved).forEach(objectUrl => {
5485
+ const value = resolved[objectUrl];
5486
+ if (value !== 'loading' && value.resolved && value.record) {
5487
+ out[objectUrl] = { value: JSON.stringify(value.record, null, 2), language: 'json' };
5488
+ }
5489
+ });
5490
+ return out;
5491
+ });
5492
+ this.$zaakdetailsContentModel = computed(() => {
5493
+ const content = this.$zaakdetailsContent();
5494
+ if (!content || content === 'loading')
5495
+ return null;
5496
+ if (!content.resolved || !content.record)
5497
+ return null;
5498
+ return { value: JSON.stringify(content.record, null, 2), language: 'json' };
5499
+ });
5500
+ this.iconService.registerAll([Copy16, Launch16, WarningAltFilled16]);
5501
+ }
5502
+ ngOnChanges(changes) {
5503
+ if (changes.documentId && this.documentId)
5504
+ this.load();
5505
+ }
5506
+ onCopy(value) {
5507
+ if (typeof navigator !== 'undefined' && navigator.clipboard) {
5508
+ navigator.clipboard.writeText(value);
5509
+ }
5510
+ }
5511
+ onResolveZaakobject(objectUrl) {
5512
+ this.$resolvedObjects.update(current => ({ ...current, [objectUrl]: 'loading' }));
5513
+ this.zgwCaseInspectionService.resolveZaakobjectContent(this.documentId, objectUrl).subscribe({
5514
+ next: result => {
5515
+ this.$resolvedObjects.update(current => ({ ...current, [objectUrl]: result }));
5516
+ },
5517
+ error: err => {
5518
+ this.$resolvedObjects.update(current => {
5519
+ const copy = { ...current };
5520
+ delete copy[objectUrl];
5521
+ return copy;
5522
+ });
5523
+ this.$errorMessage.set(err?.error?.message ?? err?.message ?? 'Failed to resolve zaakobject');
5524
+ },
5525
+ });
5526
+ }
5527
+ onResolveZaakdetailsContent() {
5528
+ this.$zaakdetailsContent.set('loading');
5529
+ this.zgwCaseInspectionService.getZaakdetailsObjectContent(this.documentId).subscribe({
5530
+ next: result => this.$zaakdetailsContent.set(result),
5531
+ error: err => {
5532
+ this.$zaakdetailsContent.set(null);
5533
+ this.$errorMessage.set(err?.error?.message ?? err?.message ?? 'Failed to load zaakdetails content');
5534
+ },
5535
+ });
5536
+ }
5537
+ objectResolveState(objectUrl) {
5538
+ return this.$resolvedObjects()[objectUrl];
5539
+ }
5540
+ load() {
5541
+ const requestedDocumentId = this.documentId;
5542
+ this.$loading.set(true);
5543
+ this.$errorMessage.set(null);
5544
+ this.$zgw.set(null);
5545
+ this.$zaakdetails.set(null);
5546
+ this.$resolvedObjects.set({});
5547
+ this.$zaakdetailsContent.set(null);
5548
+ forkJoin({
5549
+ zgw: this.zgwCaseInspectionService.getZgwInspection(requestedDocumentId),
5550
+ zaakdetails: this.zgwCaseInspectionService
5551
+ .getZaakdetailsInspection(requestedDocumentId)
5552
+ .pipe(catchError(() => of(null))),
5553
+ }).subscribe({
5554
+ next: ({ zgw, zaakdetails }) => {
5555
+ if (requestedDocumentId !== this.documentId) {
5556
+ return;
5557
+ }
5558
+ this.$zgw.set(zgw);
5559
+ this.$zaakdetails.set(zaakdetails);
5560
+ this.$showZaakdetails.set(!!zaakdetails && (!!zaakdetails.syncConfig || !!zaakdetails.zaakdetailsObject));
5561
+ this.$loading.set(false);
5562
+ },
5563
+ error: err => {
5564
+ if (requestedDocumentId !== this.documentId) {
5565
+ return;
5566
+ }
5567
+ this.$errorMessage.set(err?.error?.message ?? err?.message ?? 'Failed to load ZGW data');
5568
+ this.$loading.set(false);
5569
+ },
5570
+ });
5571
+ }
5572
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseInspectionZgwTabComponent, deps: [{ token: ZgwCaseInspectionService }, { token: i6.IconService }], target: i0.ɵɵFactoryTarget.Component }); }
5573
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: CaseInspectionZgwTabComponent, isStandalone: true, selector: "valtimo-case-inspection-zgw", inputs: { documentId: "documentId" }, usesOnChanges: true, ngImport: i0, template: "<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<section class=\"case-inspection-zgw-tab\">\n <div *ngIf=\"$loading()\" class=\"loading-container\">\n <cds-loading size=\"sm\"></cds-loading>\n </div>\n\n <ng-container *ngIf=\"$errorMessage() as message\">\n <p class=\"case-inspection-zgw-tab__error\">{{ message }}</p>\n </ng-container>\n\n <ng-container *ngIf=\"!$loading() && $zgw() as zgw\">\n <!-- State 1: case is not linked to a zaak (neutral info) -->\n <ng-container *ngIf=\"!zgw.zaakInstanceLink\">\n <p class=\"case-inspection-zgw-tab__empty\">\n {{ 'case.inspection.zgw.empty' | translate }}\n </p>\n </ng-container>\n\n <!-- State 2: link present but zaak could not be loaded (error notification) -->\n <ng-container *ngIf=\"zgw.zaakInstanceLink && !zgw.zaak\">\n <cds-inline-notification\n class=\"case-inspection-zgw-tab__warnings\"\n [notificationObj]=\"{\n type: 'error',\n title: 'case.inspection.zgw.zaakUnreachable.title' | translate,\n message: 'case.inspection.zgw.zaakUnreachable.message' | translate,\n showClose: false,\n lowContrast: true,\n }\"\n ></cds-inline-notification>\n\n <dl class=\"case-inspection-zgw-tab__list\">\n <dt>{{ 'case.inspection.zgw.zaak.url' | translate }}</dt>\n <dd>\n <code>{{ zgw.zaakInstanceLink.zaakInstanceUrl }}</code>\n <button\n cdsButton=\"ghost\"\n size=\"sm\"\n [iconOnly]=\"true\"\n [attr.aria-label]=\"'case.inspection.zgw.actions.copy' | translate\"\n (click)=\"onCopy(zgw.zaakInstanceLink.zaakInstanceUrl)\"\n >\n <svg cdsIcon=\"copy\" size=\"16\"></svg>\n </button>\n <a\n cdsButton=\"ghost\"\n size=\"sm\"\n target=\"_blank\"\n rel=\"noopener\"\n [attr.aria-label]=\"'case.inspection.zgw.actions.openExternal' | translate\"\n [href]=\"zgw.zaakInstanceLink.zaakInstanceUrl\"\n >\n <svg cdsIcon=\"launch\" size=\"16\"></svg>\n </a>\n </dd>\n\n <ng-container *ngIf=\"zgw.warnings.length\">\n <dt>{{ 'case.inspection.zgw.zaakUnreachable.details' | translate }}</dt>\n <dd>\n <ul class=\"case-inspection-zgw-tab__warning-list\">\n <li *ngFor=\"let w of zgw.warnings\">{{ w }}</li>\n </ul>\n </dd>\n </ng-container>\n </dl>\n </ng-container>\n\n <!-- State 3: link + zaak loaded (full accordion) -->\n <ng-container *ngIf=\"zgw.zaakInstanceLink && zgw.zaak\">\n <cds-inline-notification\n *ngIf=\"zgw.warnings.length\"\n class=\"case-inspection-zgw-tab__warnings\"\n [notificationObj]=\"{\n type: 'warning',\n title: 'case.inspection.zgw.warnings.title' | translate,\n message: zgw.warnings.join(' \u2022 '),\n showClose: false,\n lowContrast: true,\n }\"\n ></cds-inline-notification>\n\n <cds-accordion align=\"start\" size=\"sm\">\n <!-- Zaak header -->\n <cds-accordion-item\n [title]=\"'case.inspection.zgw.zaak.title' | translate\"\n [expanded]=\"true\"\n >\n <dl class=\"case-inspection-zgw-tab__list\">\n <dt>{{ 'case.inspection.zgw.zaak.url' | translate }}</dt>\n <dd>\n <code>{{ zgw.zaakInstanceLink!.zaakInstanceUrl }}</code>\n <button\n cdsButton=\"ghost\"\n size=\"sm\"\n [iconOnly]=\"true\"\n [attr.aria-label]=\"'case.inspection.zgw.actions.copy' | translate\"\n (click)=\"onCopy(zgw.zaakInstanceLink!.zaakInstanceUrl)\"\n >\n <svg cdsIcon=\"copy\" size=\"16\"></svg>\n </button>\n <a\n cdsButton=\"ghost\"\n size=\"sm\"\n target=\"_blank\"\n rel=\"noopener\"\n [attr.aria-label]=\"'case.inspection.zgw.actions.openExternal' | translate\"\n [href]=\"zgw.zaakInstanceLink!.zaakInstanceUrl\"\n >\n <svg cdsIcon=\"launch\" size=\"16\"></svg>\n </a>\n </dd>\n\n <dt>{{ 'case.inspection.zgw.zaak.uuid' | translate }}</dt>\n <dd>\n <code>{{ zgw.zaakInstanceLink!.zaakInstanceId }}</code>\n </dd>\n\n <ng-container *ngIf=\"zgw.zaak as zaakBody\">\n <dt>{{ 'case.inspection.zgw.zaak.identificatie' | translate }}</dt>\n <dd>{{ zaakBody.identificatie || '-' }}</dd>\n\n <dt>{{ 'case.inspection.zgw.zaak.bronorganisatie' | translate }}</dt>\n <dd>{{ zaakBody.bronorganisatie || '-' }}</dd>\n\n <dt>{{ 'case.inspection.zgw.zaak.zaaktype' | translate }}</dt>\n <dd>\n <code>{{ zgw.zaakInstanceLink!.zaakTypeUrl }}</code>\n <button\n cdsButton=\"ghost\"\n size=\"sm\"\n [iconOnly]=\"true\"\n [attr.aria-label]=\"'case.inspection.zgw.actions.copy' | translate\"\n (click)=\"onCopy(zgw.zaakInstanceLink!.zaakTypeUrl)\"\n >\n <svg cdsIcon=\"copy\" size=\"16\"></svg>\n </button>\n </dd>\n\n <dt>{{ 'case.inspection.zgw.zaak.registratiedatum' | translate }}</dt>\n <dd>{{ zaakBody.registratiedatum || '-' }}</dd>\n\n <dt>{{ 'case.inspection.zgw.zaak.startdatum' | translate }}</dt>\n <dd>{{ zaakBody.startdatum || '-' }}</dd>\n\n <dt>{{ 'case.inspection.zgw.zaak.einddatum' | translate }}</dt>\n <dd>{{ zaakBody.einddatum || '-' }}</dd>\n\n <dt>{{ 'case.inspection.zgw.zaak.einddatumGepland' | translate }}</dt>\n <dd>{{ zaakBody.einddatumGepland || '-' }}</dd>\n\n <dt>{{ 'case.inspection.zgw.zaak.uiterlijkeEinddatumAfdoening' | translate }}</dt>\n <dd>{{ zaakBody.uiterlijkeEinddatumAfdoening || '-' }}</dd>\n\n <dt>{{ 'case.inspection.zgw.zaak.vertrouwelijkheidaanduiding' | translate }}</dt>\n <dd>\n <cds-tag *ngIf=\"zaakBody.vertrouwelijkheidaanduiding\" size=\"sm\" type=\"cool-gray\">\n {{ zaakBody.vertrouwelijkheidaanduiding }}\n </cds-tag>\n <span *ngIf=\"!zaakBody.vertrouwelijkheidaanduiding\">-</span>\n </dd>\n\n <dt>{{ 'case.inspection.zgw.zaak.archiefstatus' | translate }}</dt>\n <dd>\n <cds-tag *ngIf=\"zaakBody.archiefstatus\" size=\"sm\" type=\"cool-gray\">\n {{ zaakBody.archiefstatus }}\n </cds-tag>\n <span *ngIf=\"!zaakBody.archiefstatus\">-</span>\n </dd>\n\n <dt>{{ 'case.inspection.zgw.zaak.betalingsindicatie' | translate }}</dt>\n <dd>\n <cds-tag *ngIf=\"zaakBody.betalingsindicatie\" size=\"sm\" type=\"cool-gray\">\n {{ zaakBody.betalingsindicatie }}\n </cds-tag>\n <span *ngIf=\"!zaakBody.betalingsindicatie\">-</span>\n </dd>\n </ng-container>\n\n <dt>{{ 'case.inspection.zgw.zaak.currentResultaat' | translate }}</dt>\n <dd>\n <ng-container *ngIf=\"zgw.resultaat as resultaat; else noResultaat\">\n <code>{{ resultaat.resultaattype }}</code>\n <button\n cdsButton=\"ghost\"\n size=\"sm\"\n [iconOnly]=\"true\"\n [attr.aria-label]=\"'case.inspection.zgw.actions.copy' | translate\"\n (click)=\"onCopy(resultaat.resultaattype)\"\n >\n <svg cdsIcon=\"copy\" size=\"16\"></svg>\n </button>\n <span *ngIf=\"resultaat.toelichting\">\u2014 {{ resultaat.toelichting }}</span>\n </ng-container>\n <ng-template #noResultaat>\n <span class=\"case-inspection-zgw-tab__empty\">\n {{ 'case.inspection.zgw.zaak.noResultaat' | translate }}\n </span>\n </ng-template>\n </dd>\n </dl>\n </cds-accordion-item>\n\n <!-- Eigenschappen -->\n <cds-accordion-item [title]=\"'case.inspection.zgw.eigenschappen.title' | translate\">\n <ng-container *ngIf=\"zgw.eigenschappen.length; else noEigenschappen\">\n <cds-structured-list [condensed]=\"true\">\n <cds-list-header>\n <cds-list-column>{{\n 'case.inspection.zgw.eigenschappen.naam' | translate\n }}</cds-list-column>\n <cds-list-column>{{\n 'case.inspection.zgw.eigenschappen.waarde' | translate\n }}</cds-list-column>\n <cds-list-column>{{\n 'case.inspection.zgw.eigenschappen.eigenschapUrl' | translate\n }}</cds-list-column>\n <cds-list-column>{{\n 'case.inspection.zgw.eigenschappen.zaakeigenschapUrl' | translate\n }}</cds-list-column>\n </cds-list-header>\n\n <cds-list-row *ngFor=\"let e of zgw.eigenschappen\">\n <cds-list-column>{{ e.naam || '-' }}</cds-list-column>\n <cds-list-column>{{ e.waarde }}</cds-list-column>\n <cds-list-column>\n <code>{{ e.eigenschap }}</code>\n <button\n cdsButton=\"ghost\"\n size=\"sm\"\n [iconOnly]=\"true\"\n [attr.aria-label]=\"'case.inspection.zgw.actions.copy' | translate\"\n (click)=\"onCopy(e.eigenschap)\"\n >\n <svg cdsIcon=\"copy\" size=\"16\"></svg>\n </button>\n </cds-list-column>\n <cds-list-column>\n <code>{{ e.url }}</code>\n <button\n cdsButton=\"ghost\"\n size=\"sm\"\n [iconOnly]=\"true\"\n [attr.aria-label]=\"'case.inspection.zgw.actions.copy' | translate\"\n (click)=\"onCopy(e.url)\"\n >\n <svg cdsIcon=\"copy\" size=\"16\"></svg>\n </button>\n </cds-list-column>\n </cds-list-row>\n </cds-structured-list>\n </ng-container>\n <ng-template #noEigenschappen>\n <p class=\"case-inspection-zgw-tab__empty\">\n {{ 'case.inspection.zgw.eigenschappen.empty' | translate }}\n </p>\n </ng-template>\n </cds-accordion-item>\n\n <!-- Rollen -->\n <cds-accordion-item [title]=\"'case.inspection.zgw.rollen.title' | translate\">\n <ng-container *ngIf=\"zgw.rollen.length; else noRollen\">\n <cds-structured-list [condensed]=\"true\">\n <cds-list-header>\n <cds-list-column>{{\n 'case.inspection.zgw.rollen.betrokkeneType' | translate\n }}</cds-list-column>\n <cds-list-column>{{\n 'case.inspection.zgw.rollen.roltype' | translate\n }}</cds-list-column>\n <cds-list-column>{{\n 'case.inspection.zgw.rollen.identificatie' | translate\n }}</cds-list-column>\n <cds-list-column>{{\n 'case.inspection.zgw.rollen.indicatieMachtiging' | translate\n }}</cds-list-column>\n <cds-list-column>{{\n 'case.inspection.zgw.rollen.url' | translate\n }}</cds-list-column>\n </cds-list-header>\n\n <cds-list-row *ngFor=\"let r of zgw.rollen\">\n <cds-list-column>{{ r.betrokkeneType }}</cds-list-column>\n <cds-list-column>{{\n r.omschrijving || r.omschrijvingGeneriek || '-'\n }}</cds-list-column>\n <cds-list-column>\n <code *ngIf=\"r.betrokkeneIdentificatie\">\n {{ r.betrokkeneIdentificatie | json }}\n </code>\n <span *ngIf=\"!r.betrokkeneIdentificatie\">-</span>\n </cds-list-column>\n <cds-list-column>{{ r.indicatieMachtiging || '-' }}</cds-list-column>\n <cds-list-column>\n <ng-container *ngIf=\"r.url\">\n <code>{{ r.url }}</code>\n <button\n cdsButton=\"ghost\"\n size=\"sm\"\n [iconOnly]=\"true\"\n [attr.aria-label]=\"'case.inspection.zgw.actions.copy' | translate\"\n (click)=\"onCopy(r.url)\"\n >\n <svg cdsIcon=\"copy\" size=\"16\"></svg>\n </button>\n </ng-container>\n </cds-list-column>\n </cds-list-row>\n </cds-structured-list>\n </ng-container>\n <ng-template #noRollen>\n <p class=\"case-inspection-zgw-tab__empty\">\n {{ 'case.inspection.zgw.rollen.empty' | translate }}\n </p>\n </ng-template>\n </cds-accordion-item>\n\n <!-- Status history -->\n <cds-accordion-item [title]=\"'case.inspection.zgw.statusHistory.title' | translate\">\n <ng-container *ngIf=\"zgw.statusHistory.length; else noStatuses\">\n <cds-structured-list [condensed]=\"true\">\n <cds-list-header>\n <cds-list-column>{{\n 'case.inspection.zgw.statusHistory.datumStatusGezet' | translate\n }}</cds-list-column>\n <cds-list-column>{{\n 'case.inspection.zgw.statusHistory.statustype' | translate\n }}</cds-list-column>\n <cds-list-column>{{\n 'case.inspection.zgw.statusHistory.statustoelichting' | translate\n }}</cds-list-column>\n </cds-list-header>\n\n <cds-list-row *ngFor=\"let s of zgw.statusHistory\">\n <cds-list-column>{{ s.datumStatusGezet | date: 'medium' }}</cds-list-column>\n <cds-list-column>\n <code>{{ s.statustype }}</code>\n <button\n cdsButton=\"ghost\"\n size=\"sm\"\n [iconOnly]=\"true\"\n [attr.aria-label]=\"'case.inspection.zgw.actions.copy' | translate\"\n (click)=\"onCopy(s.statustype)\"\n >\n <svg cdsIcon=\"copy\" size=\"16\"></svg>\n </button>\n </cds-list-column>\n <cds-list-column>{{ s.statustoelichting || '-' }}</cds-list-column>\n </cds-list-row>\n </cds-structured-list>\n </ng-container>\n <ng-template #noStatuses>\n <p class=\"case-inspection-zgw-tab__empty\">\n {{ 'case.inspection.zgw.statusHistory.empty' | translate }}\n </p>\n </ng-template>\n </cds-accordion-item>\n\n <!-- Zaakobjecten -->\n <cds-accordion-item [title]=\"'case.inspection.zgw.zaakobjecten.title' | translate\">\n <ng-container *ngIf=\"zgw.zaakObjecten.length; else noZaakObjecten\">\n <ul class=\"case-inspection-zgw-tab__cards\">\n <li *ngFor=\"let o of zgw.zaakObjecten\" class=\"case-inspection-zgw-tab__card\">\n <dl>\n <dt>{{ 'case.inspection.zgw.zaakobjecten.objectUrl' | translate }}</dt>\n <dd>\n <code>{{ o.objectUrl }}</code>\n <button\n cdsButton=\"ghost\"\n size=\"sm\"\n [iconOnly]=\"true\"\n [attr.aria-label]=\"'case.inspection.zgw.actions.copy' | translate\"\n (click)=\"onCopy(o.objectUrl)\"\n >\n <svg cdsIcon=\"copy\" size=\"16\"></svg>\n </button>\n </dd>\n\n <dt>{{ 'case.inspection.zgw.zaakobjecten.objectType' | translate }}</dt>\n <dd>{{ o.objectTypeOverige || o.objectType }}</dd>\n\n <dt *ngIf=\"o.relatieomschrijving\">\n {{ 'case.inspection.zgw.zaakobjecten.relatieomschrijving' | translate }}\n </dt>\n <dd *ngIf=\"o.relatieomschrijving\">{{ o.relatieomschrijving }}</dd>\n </dl>\n\n <ng-container [ngSwitch]=\"objectResolveState(o.objectUrl)\">\n <button\n *ngSwitchCase=\"undefined\"\n cdsButton=\"tertiary\"\n size=\"sm\"\n (click)=\"onResolveZaakobject(o.objectUrl)\"\n >\n {{ 'case.inspection.zgw.actions.resolveContent' | translate }}\n </button>\n <p *ngSwitchCase=\"'loading'\">\n {{ 'case.inspection.zgw.zaakobjecten.resolveLoading' | translate }}\n </p>\n </ng-container>\n\n <ng-container\n *ngIf=\"\n objectResolveState(o.objectUrl) !== undefined &&\n objectResolveState(o.objectUrl) !== 'loading'\n \"\n >\n <ng-container *ngIf=\"$resolvedObjects()[o.objectUrl] as resolved\">\n <ng-container *ngIf=\"resolved !== 'loading'\">\n <cds-inline-notification\n *ngIf=\"!resolved.resolved\"\n [notificationObj]=\"{\n type: 'info',\n title: 'case.inspection.zgw.zaakobjecten.notResolved' | translate,\n message: resolved.message,\n showClose: false,\n lowContrast: true,\n }\"\n ></cds-inline-notification>\n\n <valtimo-json-editor\n *ngIf=\"resolved.resolved && $resolvedRecordModels()[o.objectUrl] as model\"\n [model]=\"model\"\n [showEditButton]=\"false\"\n [heightPx]=\"320\"\n ></valtimo-json-editor>\n </ng-container>\n </ng-container>\n </ng-container>\n </li>\n </ul>\n </ng-container>\n <ng-template #noZaakObjecten>\n <p class=\"case-inspection-zgw-tab__empty\">\n {{ 'case.inspection.zgw.zaakobjecten.empty' | translate }}\n </p>\n </ng-template>\n </cds-accordion-item>\n\n <!-- Zaakinformatieobjecten -->\n <cds-accordion-item\n [title]=\"'case.inspection.zgw.zaakinformatieobjecten.title' | translate\"\n >\n <ng-container *ngIf=\"zgw.zaakInformatieObjecten.length; else noZios\">\n <cds-structured-list [condensed]=\"true\">\n <cds-list-header>\n <cds-list-column>{{\n 'case.inspection.zgw.zaakinformatieobjecten.titel' | translate\n }}</cds-list-column>\n <cds-list-column>{{\n 'case.inspection.zgw.zaakinformatieobjecten.registratiedatum' | translate\n }}</cds-list-column>\n <cds-list-column>{{\n 'case.inspection.zgw.zaakinformatieobjecten.url' | translate\n }}</cds-list-column>\n </cds-list-header>\n\n <cds-list-row *ngFor=\"let z of zgw.zaakInformatieObjecten\">\n <cds-list-column>{{ z.titel || '-' }}</cds-list-column>\n <cds-list-column>{{ z.registratiedatum | date: 'medium' }}</cds-list-column>\n <cds-list-column>\n <code>{{ z.informatieobject }}</code>\n <button\n cdsButton=\"ghost\"\n size=\"sm\"\n [iconOnly]=\"true\"\n [attr.aria-label]=\"'case.inspection.zgw.actions.copy' | translate\"\n (click)=\"onCopy(z.informatieobject)\"\n >\n <svg cdsIcon=\"copy\" size=\"16\"></svg>\n </button>\n </cds-list-column>\n </cds-list-row>\n </cds-structured-list>\n </ng-container>\n <ng-template #noZios>\n <p class=\"case-inspection-zgw-tab__empty\">\n {{ 'case.inspection.zgw.zaakinformatieobjecten.empty' | translate }}\n </p>\n </ng-template>\n </cds-accordion-item>\n\n <!-- Besluiten -->\n <cds-accordion-item [title]=\"'case.inspection.zgw.besluiten.title' | translate\">\n <ng-container *ngIf=\"zgw.besluiten.length; else noBesluiten\">\n <cds-structured-list [condensed]=\"true\">\n <cds-list-header>\n <cds-list-column>{{\n 'case.inspection.zgw.besluiten.url' | translate\n }}</cds-list-column>\n </cds-list-header>\n\n <cds-list-row *ngFor=\"let b of zgw.besluiten\">\n <cds-list-column>\n <code>{{ b.besluit }}</code>\n <button\n cdsButton=\"ghost\"\n size=\"sm\"\n [iconOnly]=\"true\"\n [attr.aria-label]=\"'case.inspection.zgw.actions.copy' | translate\"\n (click)=\"onCopy(b.besluit)\"\n >\n <svg cdsIcon=\"copy\" size=\"16\"></svg>\n </button>\n </cds-list-column>\n </cds-list-row>\n </cds-structured-list>\n </ng-container>\n <ng-template #noBesluiten>\n <p class=\"case-inspection-zgw-tab__empty\">\n {{ 'case.inspection.zgw.besluiten.empty' | translate }}\n </p>\n </ng-template>\n </cds-accordion-item>\n\n <!-- Zaakdetails sync object -->\n <cds-accordion-item\n *ngIf=\"$showZaakdetails()\"\n [title]=\"'case.inspection.zgw.zaakdetails.title' | translate\"\n >\n <ng-container *ngIf=\"$zaakdetails() as zd\">\n <dl class=\"case-inspection-zgw-tab__list\" *ngIf=\"zd.syncConfig as cfg\">\n <dt>{{ 'case.inspection.zgw.zaakdetails.caseDefinitionKey' | translate }}</dt>\n <dd>{{ cfg.caseDefinitionKey }}:{{ cfg.caseDefinitionVersionTag }}</dd>\n\n <dt>{{ 'case.inspection.zgw.zaakdetails.objectManagementTitle' | translate }}</dt>\n <dd>{{ cfg.objectManagementTitle || '-' }}</dd>\n\n <dt>{{ 'case.inspection.zgw.zaakdetails.enabled' | translate }}</dt>\n <dd>\n <cds-tag size=\"sm\" [type]=\"cfg.enabled ? 'green' : 'cool-gray'\">\n {{\n (cfg.enabled ? 'case.inspection.zgw.yes' : 'case.inspection.zgw.no') | translate\n }}\n </cds-tag>\n </dd>\n </dl>\n\n <p *ngIf=\"!zd.syncConfig\" class=\"case-inspection-zgw-tab__empty\">\n {{ 'case.inspection.zgw.zaakdetails.notConfigured' | translate }}\n </p>\n\n <dl class=\"case-inspection-zgw-tab__list\" *ngIf=\"zd.zaakdetailsObject as zo\">\n <dt>{{ 'case.inspection.zgw.zaakdetails.objectUrl' | translate }}</dt>\n <dd>\n <code>{{ zo.objectUrl }}</code>\n <button\n cdsButton=\"ghost\"\n size=\"sm\"\n [iconOnly]=\"true\"\n [attr.aria-label]=\"'case.inspection.zgw.actions.copy' | translate\"\n (click)=\"onCopy(zo.objectUrl)\"\n >\n <svg cdsIcon=\"copy\" size=\"16\"></svg>\n </button>\n </dd>\n\n <dt>{{ 'case.inspection.zgw.zaakdetails.linkedToZaak' | translate }}</dt>\n <dd>\n <cds-tag size=\"sm\" [type]=\"zo.linkedToZaak ? 'green' : 'cool-gray'\">\n {{\n (zo.linkedToZaak ? 'case.inspection.zgw.yes' : 'case.inspection.zgw.no')\n | translate\n }}\n </cds-tag>\n </dd>\n </dl>\n\n <ng-container *ngIf=\"zd.zaakdetailsObject\">\n <button\n *ngIf=\"!$zaakdetailsContent()\"\n cdsButton=\"tertiary\"\n size=\"sm\"\n (click)=\"onResolveZaakdetailsContent()\"\n >\n {{ 'case.inspection.zgw.actions.viewLatestContent' | translate }}\n </button>\n\n <p *ngIf=\"$zaakdetailsContent() === 'loading'\">\n {{ 'case.inspection.zgw.zaakdetails.contentLoading' | translate }}\n </p>\n\n <ng-container *ngIf=\"$zaakdetailsContent() as content\">\n <ng-container *ngIf=\"content !== 'loading'\">\n <cds-inline-notification\n *ngIf=\"!content.resolved\"\n [notificationObj]=\"{\n type: 'info',\n title: 'case.inspection.zgw.zaakdetails.contentNotResolved' | translate,\n message: content.message,\n showClose: false,\n lowContrast: true,\n }\"\n ></cds-inline-notification>\n\n <valtimo-json-editor\n *ngIf=\"content.resolved && $zaakdetailsContentModel() as model\"\n [model]=\"model\"\n [showEditButton]=\"false\"\n [heightPx]=\"320\"\n ></valtimo-json-editor>\n </ng-container>\n </ng-container>\n </ng-container>\n </ng-container>\n </cds-accordion-item>\n\n <!-- Raw zaak JSON -->\n <cds-accordion-item [title]=\"'case.inspection.zgw.rawJson.title' | translate\">\n <valtimo-json-editor\n *ngIf=\"$rawZaakModel() as model\"\n [model]=\"model\"\n [showEditButton]=\"false\"\n [heightPx]=\"500\"\n ></valtimo-json-editor>\n </cds-accordion-item>\n </cds-accordion>\n </ng-container>\n </ng-container>\n</section>\n", styles: [".case-inspection-zgw-tab{display:flex;flex-direction:column;gap:1rem}.case-inspection-zgw-tab__error{color:var(--cds-text-error, #da1e28)}.case-inspection-zgw-tab__empty{color:var(--cds-text-secondary, #525252);font-style:italic}.case-inspection-zgw-tab__warnings{margin-bottom:.5rem}.case-inspection-zgw-tab__warning-list{margin:0;padding-left:1.25rem;list-style:disc;font-size:.875rem;color:var(--cds-text-secondary, #525252)}.case-inspection-zgw-tab__list{display:grid;grid-template-columns:minmax(180px,max-content) 1fr;column-gap:1rem;margin:0;font-size:.875rem}.case-inspection-zgw-tab__list dt,.case-inspection-zgw-tab__list dd{min-height:2rem;display:flex;align-items:center;margin:0}.case-inspection-zgw-tab__list dt{font-weight:600}.case-inspection-zgw-tab__list dd{gap:.25rem;word-break:break-all}.case-inspection-zgw-tab__list code{font-size:.85rem}.case-inspection-zgw-tab__cards{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:1rem}.case-inspection-zgw-tab__card{border:1px solid var(--cds-border-subtle, #e0e0e0);padding:1rem;display:flex;flex-direction:column;gap:.75rem}:host ::ng-deep cds-accordion{border-left:1px solid var(--cds-border-subtle);border-right:1px solid var(--cds-border-subtle)}\n/*!\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "pipe", type: i4.JsonPipe, name: "json" }, { kind: "pipe", type: i4.DatePipe, name: "date" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: AccordionModule }, { kind: "component", type: i6.Accordion, selector: "cds-accordion, ibm-accordion", inputs: ["align", "size", "skeleton"] }, { kind: "component", type: i6.AccordionItem, selector: "cds-accordion-item, ibm-accordion-item", inputs: ["title", "context", "id", "skeleton", "expanded", "disabled"], outputs: ["selected"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i6.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: IconModule }, { kind: "directive", type: i6.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "ngmodule", type: NotificationModule }, { kind: "component", type: i6.Notification, selector: "cds-notification, cds-inline-notification, ibm-notification, ibm-inline-notification", inputs: ["notificationObj"] }, { kind: "ngmodule", type: StructuredListModule }, { kind: "component", type: i6.StructuredList, selector: "cds-structured-list, ibm-structured-list", inputs: ["selection", "flushed", "condensed", "name", "skeleton"], outputs: ["selected"] }, { kind: "component", type: i6.ListRow, selector: "cds-list-row, ibm-list-row", inputs: ["selected", "label", "value"], outputs: ["change"] }, { kind: "component", type: i6.ListHeader, selector: "cds-list-header, ibm-list-header", inputs: ["skeleton"] }, { kind: "component", type: i6.ListColumn, selector: "cds-list-column, ibm-list-column", inputs: ["skeleton", "nowrap"] }, { kind: "ngmodule", type: TagModule }, { kind: "component", type: i6.Tag, selector: "cds-tag, ibm-tag", inputs: ["type", "size", "class", "skeleton"] }, { kind: "component", type: JsonEditorComponent, selector: "valtimo-json-editor", inputs: ["disabled", "model", "editorOptions", "fitPage", "fitPageSpaceAdjustment", "formatOnLoad", "heightPx", "heightStyle", "jsonSchema", "showEditButton", "widthPx"], outputs: ["changeEvent", "discardEvent", "keepEditingEvent", "saveEvent"] }, { kind: "ngmodule", type: LoadingModule }, { kind: "component", type: i6.Loading, selector: "cds-loading, ibm-loading", inputs: ["title", "isActive", "size", "overlay"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
5574
+ }
5575
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CaseInspectionZgwTabComponent, decorators: [{
5576
+ type: Component,
5577
+ args: [{ standalone: true, selector: 'valtimo-case-inspection-zgw', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
5578
+ CommonModule,
5579
+ TranslateModule,
5580
+ AccordionModule,
5581
+ ButtonModule,
5582
+ IconModule,
5583
+ NotificationModule,
5584
+ StructuredListModule,
5585
+ TagModule,
5586
+ JsonEditorComponent,
5587
+ LoadingModule,
5588
+ ], template: "<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<section class=\"case-inspection-zgw-tab\">\n <div *ngIf=\"$loading()\" class=\"loading-container\">\n <cds-loading size=\"sm\"></cds-loading>\n </div>\n\n <ng-container *ngIf=\"$errorMessage() as message\">\n <p class=\"case-inspection-zgw-tab__error\">{{ message }}</p>\n </ng-container>\n\n <ng-container *ngIf=\"!$loading() && $zgw() as zgw\">\n <!-- State 1: case is not linked to a zaak (neutral info) -->\n <ng-container *ngIf=\"!zgw.zaakInstanceLink\">\n <p class=\"case-inspection-zgw-tab__empty\">\n {{ 'case.inspection.zgw.empty' | translate }}\n </p>\n </ng-container>\n\n <!-- State 2: link present but zaak could not be loaded (error notification) -->\n <ng-container *ngIf=\"zgw.zaakInstanceLink && !zgw.zaak\">\n <cds-inline-notification\n class=\"case-inspection-zgw-tab__warnings\"\n [notificationObj]=\"{\n type: 'error',\n title: 'case.inspection.zgw.zaakUnreachable.title' | translate,\n message: 'case.inspection.zgw.zaakUnreachable.message' | translate,\n showClose: false,\n lowContrast: true,\n }\"\n ></cds-inline-notification>\n\n <dl class=\"case-inspection-zgw-tab__list\">\n <dt>{{ 'case.inspection.zgw.zaak.url' | translate }}</dt>\n <dd>\n <code>{{ zgw.zaakInstanceLink.zaakInstanceUrl }}</code>\n <button\n cdsButton=\"ghost\"\n size=\"sm\"\n [iconOnly]=\"true\"\n [attr.aria-label]=\"'case.inspection.zgw.actions.copy' | translate\"\n (click)=\"onCopy(zgw.zaakInstanceLink.zaakInstanceUrl)\"\n >\n <svg cdsIcon=\"copy\" size=\"16\"></svg>\n </button>\n <a\n cdsButton=\"ghost\"\n size=\"sm\"\n target=\"_blank\"\n rel=\"noopener\"\n [attr.aria-label]=\"'case.inspection.zgw.actions.openExternal' | translate\"\n [href]=\"zgw.zaakInstanceLink.zaakInstanceUrl\"\n >\n <svg cdsIcon=\"launch\" size=\"16\"></svg>\n </a>\n </dd>\n\n <ng-container *ngIf=\"zgw.warnings.length\">\n <dt>{{ 'case.inspection.zgw.zaakUnreachable.details' | translate }}</dt>\n <dd>\n <ul class=\"case-inspection-zgw-tab__warning-list\">\n <li *ngFor=\"let w of zgw.warnings\">{{ w }}</li>\n </ul>\n </dd>\n </ng-container>\n </dl>\n </ng-container>\n\n <!-- State 3: link + zaak loaded (full accordion) -->\n <ng-container *ngIf=\"zgw.zaakInstanceLink && zgw.zaak\">\n <cds-inline-notification\n *ngIf=\"zgw.warnings.length\"\n class=\"case-inspection-zgw-tab__warnings\"\n [notificationObj]=\"{\n type: 'warning',\n title: 'case.inspection.zgw.warnings.title' | translate,\n message: zgw.warnings.join(' \u2022 '),\n showClose: false,\n lowContrast: true,\n }\"\n ></cds-inline-notification>\n\n <cds-accordion align=\"start\" size=\"sm\">\n <!-- Zaak header -->\n <cds-accordion-item\n [title]=\"'case.inspection.zgw.zaak.title' | translate\"\n [expanded]=\"true\"\n >\n <dl class=\"case-inspection-zgw-tab__list\">\n <dt>{{ 'case.inspection.zgw.zaak.url' | translate }}</dt>\n <dd>\n <code>{{ zgw.zaakInstanceLink!.zaakInstanceUrl }}</code>\n <button\n cdsButton=\"ghost\"\n size=\"sm\"\n [iconOnly]=\"true\"\n [attr.aria-label]=\"'case.inspection.zgw.actions.copy' | translate\"\n (click)=\"onCopy(zgw.zaakInstanceLink!.zaakInstanceUrl)\"\n >\n <svg cdsIcon=\"copy\" size=\"16\"></svg>\n </button>\n <a\n cdsButton=\"ghost\"\n size=\"sm\"\n target=\"_blank\"\n rel=\"noopener\"\n [attr.aria-label]=\"'case.inspection.zgw.actions.openExternal' | translate\"\n [href]=\"zgw.zaakInstanceLink!.zaakInstanceUrl\"\n >\n <svg cdsIcon=\"launch\" size=\"16\"></svg>\n </a>\n </dd>\n\n <dt>{{ 'case.inspection.zgw.zaak.uuid' | translate }}</dt>\n <dd>\n <code>{{ zgw.zaakInstanceLink!.zaakInstanceId }}</code>\n </dd>\n\n <ng-container *ngIf=\"zgw.zaak as zaakBody\">\n <dt>{{ 'case.inspection.zgw.zaak.identificatie' | translate }}</dt>\n <dd>{{ zaakBody.identificatie || '-' }}</dd>\n\n <dt>{{ 'case.inspection.zgw.zaak.bronorganisatie' | translate }}</dt>\n <dd>{{ zaakBody.bronorganisatie || '-' }}</dd>\n\n <dt>{{ 'case.inspection.zgw.zaak.zaaktype' | translate }}</dt>\n <dd>\n <code>{{ zgw.zaakInstanceLink!.zaakTypeUrl }}</code>\n <button\n cdsButton=\"ghost\"\n size=\"sm\"\n [iconOnly]=\"true\"\n [attr.aria-label]=\"'case.inspection.zgw.actions.copy' | translate\"\n (click)=\"onCopy(zgw.zaakInstanceLink!.zaakTypeUrl)\"\n >\n <svg cdsIcon=\"copy\" size=\"16\"></svg>\n </button>\n </dd>\n\n <dt>{{ 'case.inspection.zgw.zaak.registratiedatum' | translate }}</dt>\n <dd>{{ zaakBody.registratiedatum || '-' }}</dd>\n\n <dt>{{ 'case.inspection.zgw.zaak.startdatum' | translate }}</dt>\n <dd>{{ zaakBody.startdatum || '-' }}</dd>\n\n <dt>{{ 'case.inspection.zgw.zaak.einddatum' | translate }}</dt>\n <dd>{{ zaakBody.einddatum || '-' }}</dd>\n\n <dt>{{ 'case.inspection.zgw.zaak.einddatumGepland' | translate }}</dt>\n <dd>{{ zaakBody.einddatumGepland || '-' }}</dd>\n\n <dt>{{ 'case.inspection.zgw.zaak.uiterlijkeEinddatumAfdoening' | translate }}</dt>\n <dd>{{ zaakBody.uiterlijkeEinddatumAfdoening || '-' }}</dd>\n\n <dt>{{ 'case.inspection.zgw.zaak.vertrouwelijkheidaanduiding' | translate }}</dt>\n <dd>\n <cds-tag *ngIf=\"zaakBody.vertrouwelijkheidaanduiding\" size=\"sm\" type=\"cool-gray\">\n {{ zaakBody.vertrouwelijkheidaanduiding }}\n </cds-tag>\n <span *ngIf=\"!zaakBody.vertrouwelijkheidaanduiding\">-</span>\n </dd>\n\n <dt>{{ 'case.inspection.zgw.zaak.archiefstatus' | translate }}</dt>\n <dd>\n <cds-tag *ngIf=\"zaakBody.archiefstatus\" size=\"sm\" type=\"cool-gray\">\n {{ zaakBody.archiefstatus }}\n </cds-tag>\n <span *ngIf=\"!zaakBody.archiefstatus\">-</span>\n </dd>\n\n <dt>{{ 'case.inspection.zgw.zaak.betalingsindicatie' | translate }}</dt>\n <dd>\n <cds-tag *ngIf=\"zaakBody.betalingsindicatie\" size=\"sm\" type=\"cool-gray\">\n {{ zaakBody.betalingsindicatie }}\n </cds-tag>\n <span *ngIf=\"!zaakBody.betalingsindicatie\">-</span>\n </dd>\n </ng-container>\n\n <dt>{{ 'case.inspection.zgw.zaak.currentResultaat' | translate }}</dt>\n <dd>\n <ng-container *ngIf=\"zgw.resultaat as resultaat; else noResultaat\">\n <code>{{ resultaat.resultaattype }}</code>\n <button\n cdsButton=\"ghost\"\n size=\"sm\"\n [iconOnly]=\"true\"\n [attr.aria-label]=\"'case.inspection.zgw.actions.copy' | translate\"\n (click)=\"onCopy(resultaat.resultaattype)\"\n >\n <svg cdsIcon=\"copy\" size=\"16\"></svg>\n </button>\n <span *ngIf=\"resultaat.toelichting\">\u2014 {{ resultaat.toelichting }}</span>\n </ng-container>\n <ng-template #noResultaat>\n <span class=\"case-inspection-zgw-tab__empty\">\n {{ 'case.inspection.zgw.zaak.noResultaat' | translate }}\n </span>\n </ng-template>\n </dd>\n </dl>\n </cds-accordion-item>\n\n <!-- Eigenschappen -->\n <cds-accordion-item [title]=\"'case.inspection.zgw.eigenschappen.title' | translate\">\n <ng-container *ngIf=\"zgw.eigenschappen.length; else noEigenschappen\">\n <cds-structured-list [condensed]=\"true\">\n <cds-list-header>\n <cds-list-column>{{\n 'case.inspection.zgw.eigenschappen.naam' | translate\n }}</cds-list-column>\n <cds-list-column>{{\n 'case.inspection.zgw.eigenschappen.waarde' | translate\n }}</cds-list-column>\n <cds-list-column>{{\n 'case.inspection.zgw.eigenschappen.eigenschapUrl' | translate\n }}</cds-list-column>\n <cds-list-column>{{\n 'case.inspection.zgw.eigenschappen.zaakeigenschapUrl' | translate\n }}</cds-list-column>\n </cds-list-header>\n\n <cds-list-row *ngFor=\"let e of zgw.eigenschappen\">\n <cds-list-column>{{ e.naam || '-' }}</cds-list-column>\n <cds-list-column>{{ e.waarde }}</cds-list-column>\n <cds-list-column>\n <code>{{ e.eigenschap }}</code>\n <button\n cdsButton=\"ghost\"\n size=\"sm\"\n [iconOnly]=\"true\"\n [attr.aria-label]=\"'case.inspection.zgw.actions.copy' | translate\"\n (click)=\"onCopy(e.eigenschap)\"\n >\n <svg cdsIcon=\"copy\" size=\"16\"></svg>\n </button>\n </cds-list-column>\n <cds-list-column>\n <code>{{ e.url }}</code>\n <button\n cdsButton=\"ghost\"\n size=\"sm\"\n [iconOnly]=\"true\"\n [attr.aria-label]=\"'case.inspection.zgw.actions.copy' | translate\"\n (click)=\"onCopy(e.url)\"\n >\n <svg cdsIcon=\"copy\" size=\"16\"></svg>\n </button>\n </cds-list-column>\n </cds-list-row>\n </cds-structured-list>\n </ng-container>\n <ng-template #noEigenschappen>\n <p class=\"case-inspection-zgw-tab__empty\">\n {{ 'case.inspection.zgw.eigenschappen.empty' | translate }}\n </p>\n </ng-template>\n </cds-accordion-item>\n\n <!-- Rollen -->\n <cds-accordion-item [title]=\"'case.inspection.zgw.rollen.title' | translate\">\n <ng-container *ngIf=\"zgw.rollen.length; else noRollen\">\n <cds-structured-list [condensed]=\"true\">\n <cds-list-header>\n <cds-list-column>{{\n 'case.inspection.zgw.rollen.betrokkeneType' | translate\n }}</cds-list-column>\n <cds-list-column>{{\n 'case.inspection.zgw.rollen.roltype' | translate\n }}</cds-list-column>\n <cds-list-column>{{\n 'case.inspection.zgw.rollen.identificatie' | translate\n }}</cds-list-column>\n <cds-list-column>{{\n 'case.inspection.zgw.rollen.indicatieMachtiging' | translate\n }}</cds-list-column>\n <cds-list-column>{{\n 'case.inspection.zgw.rollen.url' | translate\n }}</cds-list-column>\n </cds-list-header>\n\n <cds-list-row *ngFor=\"let r of zgw.rollen\">\n <cds-list-column>{{ r.betrokkeneType }}</cds-list-column>\n <cds-list-column>{{\n r.omschrijving || r.omschrijvingGeneriek || '-'\n }}</cds-list-column>\n <cds-list-column>\n <code *ngIf=\"r.betrokkeneIdentificatie\">\n {{ r.betrokkeneIdentificatie | json }}\n </code>\n <span *ngIf=\"!r.betrokkeneIdentificatie\">-</span>\n </cds-list-column>\n <cds-list-column>{{ r.indicatieMachtiging || '-' }}</cds-list-column>\n <cds-list-column>\n <ng-container *ngIf=\"r.url\">\n <code>{{ r.url }}</code>\n <button\n cdsButton=\"ghost\"\n size=\"sm\"\n [iconOnly]=\"true\"\n [attr.aria-label]=\"'case.inspection.zgw.actions.copy' | translate\"\n (click)=\"onCopy(r.url)\"\n >\n <svg cdsIcon=\"copy\" size=\"16\"></svg>\n </button>\n </ng-container>\n </cds-list-column>\n </cds-list-row>\n </cds-structured-list>\n </ng-container>\n <ng-template #noRollen>\n <p class=\"case-inspection-zgw-tab__empty\">\n {{ 'case.inspection.zgw.rollen.empty' | translate }}\n </p>\n </ng-template>\n </cds-accordion-item>\n\n <!-- Status history -->\n <cds-accordion-item [title]=\"'case.inspection.zgw.statusHistory.title' | translate\">\n <ng-container *ngIf=\"zgw.statusHistory.length; else noStatuses\">\n <cds-structured-list [condensed]=\"true\">\n <cds-list-header>\n <cds-list-column>{{\n 'case.inspection.zgw.statusHistory.datumStatusGezet' | translate\n }}</cds-list-column>\n <cds-list-column>{{\n 'case.inspection.zgw.statusHistory.statustype' | translate\n }}</cds-list-column>\n <cds-list-column>{{\n 'case.inspection.zgw.statusHistory.statustoelichting' | translate\n }}</cds-list-column>\n </cds-list-header>\n\n <cds-list-row *ngFor=\"let s of zgw.statusHistory\">\n <cds-list-column>{{ s.datumStatusGezet | date: 'medium' }}</cds-list-column>\n <cds-list-column>\n <code>{{ s.statustype }}</code>\n <button\n cdsButton=\"ghost\"\n size=\"sm\"\n [iconOnly]=\"true\"\n [attr.aria-label]=\"'case.inspection.zgw.actions.copy' | translate\"\n (click)=\"onCopy(s.statustype)\"\n >\n <svg cdsIcon=\"copy\" size=\"16\"></svg>\n </button>\n </cds-list-column>\n <cds-list-column>{{ s.statustoelichting || '-' }}</cds-list-column>\n </cds-list-row>\n </cds-structured-list>\n </ng-container>\n <ng-template #noStatuses>\n <p class=\"case-inspection-zgw-tab__empty\">\n {{ 'case.inspection.zgw.statusHistory.empty' | translate }}\n </p>\n </ng-template>\n </cds-accordion-item>\n\n <!-- Zaakobjecten -->\n <cds-accordion-item [title]=\"'case.inspection.zgw.zaakobjecten.title' | translate\">\n <ng-container *ngIf=\"zgw.zaakObjecten.length; else noZaakObjecten\">\n <ul class=\"case-inspection-zgw-tab__cards\">\n <li *ngFor=\"let o of zgw.zaakObjecten\" class=\"case-inspection-zgw-tab__card\">\n <dl>\n <dt>{{ 'case.inspection.zgw.zaakobjecten.objectUrl' | translate }}</dt>\n <dd>\n <code>{{ o.objectUrl }}</code>\n <button\n cdsButton=\"ghost\"\n size=\"sm\"\n [iconOnly]=\"true\"\n [attr.aria-label]=\"'case.inspection.zgw.actions.copy' | translate\"\n (click)=\"onCopy(o.objectUrl)\"\n >\n <svg cdsIcon=\"copy\" size=\"16\"></svg>\n </button>\n </dd>\n\n <dt>{{ 'case.inspection.zgw.zaakobjecten.objectType' | translate }}</dt>\n <dd>{{ o.objectTypeOverige || o.objectType }}</dd>\n\n <dt *ngIf=\"o.relatieomschrijving\">\n {{ 'case.inspection.zgw.zaakobjecten.relatieomschrijving' | translate }}\n </dt>\n <dd *ngIf=\"o.relatieomschrijving\">{{ o.relatieomschrijving }}</dd>\n </dl>\n\n <ng-container [ngSwitch]=\"objectResolveState(o.objectUrl)\">\n <button\n *ngSwitchCase=\"undefined\"\n cdsButton=\"tertiary\"\n size=\"sm\"\n (click)=\"onResolveZaakobject(o.objectUrl)\"\n >\n {{ 'case.inspection.zgw.actions.resolveContent' | translate }}\n </button>\n <p *ngSwitchCase=\"'loading'\">\n {{ 'case.inspection.zgw.zaakobjecten.resolveLoading' | translate }}\n </p>\n </ng-container>\n\n <ng-container\n *ngIf=\"\n objectResolveState(o.objectUrl) !== undefined &&\n objectResolveState(o.objectUrl) !== 'loading'\n \"\n >\n <ng-container *ngIf=\"$resolvedObjects()[o.objectUrl] as resolved\">\n <ng-container *ngIf=\"resolved !== 'loading'\">\n <cds-inline-notification\n *ngIf=\"!resolved.resolved\"\n [notificationObj]=\"{\n type: 'info',\n title: 'case.inspection.zgw.zaakobjecten.notResolved' | translate,\n message: resolved.message,\n showClose: false,\n lowContrast: true,\n }\"\n ></cds-inline-notification>\n\n <valtimo-json-editor\n *ngIf=\"resolved.resolved && $resolvedRecordModels()[o.objectUrl] as model\"\n [model]=\"model\"\n [showEditButton]=\"false\"\n [heightPx]=\"320\"\n ></valtimo-json-editor>\n </ng-container>\n </ng-container>\n </ng-container>\n </li>\n </ul>\n </ng-container>\n <ng-template #noZaakObjecten>\n <p class=\"case-inspection-zgw-tab__empty\">\n {{ 'case.inspection.zgw.zaakobjecten.empty' | translate }}\n </p>\n </ng-template>\n </cds-accordion-item>\n\n <!-- Zaakinformatieobjecten -->\n <cds-accordion-item\n [title]=\"'case.inspection.zgw.zaakinformatieobjecten.title' | translate\"\n >\n <ng-container *ngIf=\"zgw.zaakInformatieObjecten.length; else noZios\">\n <cds-structured-list [condensed]=\"true\">\n <cds-list-header>\n <cds-list-column>{{\n 'case.inspection.zgw.zaakinformatieobjecten.titel' | translate\n }}</cds-list-column>\n <cds-list-column>{{\n 'case.inspection.zgw.zaakinformatieobjecten.registratiedatum' | translate\n }}</cds-list-column>\n <cds-list-column>{{\n 'case.inspection.zgw.zaakinformatieobjecten.url' | translate\n }}</cds-list-column>\n </cds-list-header>\n\n <cds-list-row *ngFor=\"let z of zgw.zaakInformatieObjecten\">\n <cds-list-column>{{ z.titel || '-' }}</cds-list-column>\n <cds-list-column>{{ z.registratiedatum | date: 'medium' }}</cds-list-column>\n <cds-list-column>\n <code>{{ z.informatieobject }}</code>\n <button\n cdsButton=\"ghost\"\n size=\"sm\"\n [iconOnly]=\"true\"\n [attr.aria-label]=\"'case.inspection.zgw.actions.copy' | translate\"\n (click)=\"onCopy(z.informatieobject)\"\n >\n <svg cdsIcon=\"copy\" size=\"16\"></svg>\n </button>\n </cds-list-column>\n </cds-list-row>\n </cds-structured-list>\n </ng-container>\n <ng-template #noZios>\n <p class=\"case-inspection-zgw-tab__empty\">\n {{ 'case.inspection.zgw.zaakinformatieobjecten.empty' | translate }}\n </p>\n </ng-template>\n </cds-accordion-item>\n\n <!-- Besluiten -->\n <cds-accordion-item [title]=\"'case.inspection.zgw.besluiten.title' | translate\">\n <ng-container *ngIf=\"zgw.besluiten.length; else noBesluiten\">\n <cds-structured-list [condensed]=\"true\">\n <cds-list-header>\n <cds-list-column>{{\n 'case.inspection.zgw.besluiten.url' | translate\n }}</cds-list-column>\n </cds-list-header>\n\n <cds-list-row *ngFor=\"let b of zgw.besluiten\">\n <cds-list-column>\n <code>{{ b.besluit }}</code>\n <button\n cdsButton=\"ghost\"\n size=\"sm\"\n [iconOnly]=\"true\"\n [attr.aria-label]=\"'case.inspection.zgw.actions.copy' | translate\"\n (click)=\"onCopy(b.besluit)\"\n >\n <svg cdsIcon=\"copy\" size=\"16\"></svg>\n </button>\n </cds-list-column>\n </cds-list-row>\n </cds-structured-list>\n </ng-container>\n <ng-template #noBesluiten>\n <p class=\"case-inspection-zgw-tab__empty\">\n {{ 'case.inspection.zgw.besluiten.empty' | translate }}\n </p>\n </ng-template>\n </cds-accordion-item>\n\n <!-- Zaakdetails sync object -->\n <cds-accordion-item\n *ngIf=\"$showZaakdetails()\"\n [title]=\"'case.inspection.zgw.zaakdetails.title' | translate\"\n >\n <ng-container *ngIf=\"$zaakdetails() as zd\">\n <dl class=\"case-inspection-zgw-tab__list\" *ngIf=\"zd.syncConfig as cfg\">\n <dt>{{ 'case.inspection.zgw.zaakdetails.caseDefinitionKey' | translate }}</dt>\n <dd>{{ cfg.caseDefinitionKey }}:{{ cfg.caseDefinitionVersionTag }}</dd>\n\n <dt>{{ 'case.inspection.zgw.zaakdetails.objectManagementTitle' | translate }}</dt>\n <dd>{{ cfg.objectManagementTitle || '-' }}</dd>\n\n <dt>{{ 'case.inspection.zgw.zaakdetails.enabled' | translate }}</dt>\n <dd>\n <cds-tag size=\"sm\" [type]=\"cfg.enabled ? 'green' : 'cool-gray'\">\n {{\n (cfg.enabled ? 'case.inspection.zgw.yes' : 'case.inspection.zgw.no') | translate\n }}\n </cds-tag>\n </dd>\n </dl>\n\n <p *ngIf=\"!zd.syncConfig\" class=\"case-inspection-zgw-tab__empty\">\n {{ 'case.inspection.zgw.zaakdetails.notConfigured' | translate }}\n </p>\n\n <dl class=\"case-inspection-zgw-tab__list\" *ngIf=\"zd.zaakdetailsObject as zo\">\n <dt>{{ 'case.inspection.zgw.zaakdetails.objectUrl' | translate }}</dt>\n <dd>\n <code>{{ zo.objectUrl }}</code>\n <button\n cdsButton=\"ghost\"\n size=\"sm\"\n [iconOnly]=\"true\"\n [attr.aria-label]=\"'case.inspection.zgw.actions.copy' | translate\"\n (click)=\"onCopy(zo.objectUrl)\"\n >\n <svg cdsIcon=\"copy\" size=\"16\"></svg>\n </button>\n </dd>\n\n <dt>{{ 'case.inspection.zgw.zaakdetails.linkedToZaak' | translate }}</dt>\n <dd>\n <cds-tag size=\"sm\" [type]=\"zo.linkedToZaak ? 'green' : 'cool-gray'\">\n {{\n (zo.linkedToZaak ? 'case.inspection.zgw.yes' : 'case.inspection.zgw.no')\n | translate\n }}\n </cds-tag>\n </dd>\n </dl>\n\n <ng-container *ngIf=\"zd.zaakdetailsObject\">\n <button\n *ngIf=\"!$zaakdetailsContent()\"\n cdsButton=\"tertiary\"\n size=\"sm\"\n (click)=\"onResolveZaakdetailsContent()\"\n >\n {{ 'case.inspection.zgw.actions.viewLatestContent' | translate }}\n </button>\n\n <p *ngIf=\"$zaakdetailsContent() === 'loading'\">\n {{ 'case.inspection.zgw.zaakdetails.contentLoading' | translate }}\n </p>\n\n <ng-container *ngIf=\"$zaakdetailsContent() as content\">\n <ng-container *ngIf=\"content !== 'loading'\">\n <cds-inline-notification\n *ngIf=\"!content.resolved\"\n [notificationObj]=\"{\n type: 'info',\n title: 'case.inspection.zgw.zaakdetails.contentNotResolved' | translate,\n message: content.message,\n showClose: false,\n lowContrast: true,\n }\"\n ></cds-inline-notification>\n\n <valtimo-json-editor\n *ngIf=\"content.resolved && $zaakdetailsContentModel() as model\"\n [model]=\"model\"\n [showEditButton]=\"false\"\n [heightPx]=\"320\"\n ></valtimo-json-editor>\n </ng-container>\n </ng-container>\n </ng-container>\n </ng-container>\n </cds-accordion-item>\n\n <!-- Raw zaak JSON -->\n <cds-accordion-item [title]=\"'case.inspection.zgw.rawJson.title' | translate\">\n <valtimo-json-editor\n *ngIf=\"$rawZaakModel() as model\"\n [model]=\"model\"\n [showEditButton]=\"false\"\n [heightPx]=\"500\"\n ></valtimo-json-editor>\n </cds-accordion-item>\n </cds-accordion>\n </ng-container>\n </ng-container>\n</section>\n", styles: [".case-inspection-zgw-tab{display:flex;flex-direction:column;gap:1rem}.case-inspection-zgw-tab__error{color:var(--cds-text-error, #da1e28)}.case-inspection-zgw-tab__empty{color:var(--cds-text-secondary, #525252);font-style:italic}.case-inspection-zgw-tab__warnings{margin-bottom:.5rem}.case-inspection-zgw-tab__warning-list{margin:0;padding-left:1.25rem;list-style:disc;font-size:.875rem;color:var(--cds-text-secondary, #525252)}.case-inspection-zgw-tab__list{display:grid;grid-template-columns:minmax(180px,max-content) 1fr;column-gap:1rem;margin:0;font-size:.875rem}.case-inspection-zgw-tab__list dt,.case-inspection-zgw-tab__list dd{min-height:2rem;display:flex;align-items:center;margin:0}.case-inspection-zgw-tab__list dt{font-weight:600}.case-inspection-zgw-tab__list dd{gap:.25rem;word-break:break-all}.case-inspection-zgw-tab__list code{font-size:.85rem}.case-inspection-zgw-tab__cards{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:1rem}.case-inspection-zgw-tab__card{border:1px solid var(--cds-border-subtle, #e0e0e0);padding:1rem;display:flex;flex-direction:column;gap:.75rem}:host ::ng-deep cds-accordion{border-left:1px solid var(--cds-border-subtle);border-right:1px solid var(--cds-border-subtle)}\n/*!\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
5589
+ }], ctorParameters: () => [{ type: ZgwCaseInspectionService }, { type: i6.IconService }], propDecorators: { documentId: [{
5590
+ type: Input
5591
+ }] } });
5592
+
5409
5593
  /*
5410
5594
  * Copyright 2015-2026 Ritense BV, the Netherlands.
5411
5595
  *
@@ -5448,6 +5632,10 @@ class ZgwModule {
5448
5632
  provide: ZGW_OBJECT_TYPE_COMPONENT_TOKEN,
5449
5633
  useValue: CaseDetailTabObjectTypeComponent,
5450
5634
  },
5635
+ {
5636
+ provide: ZGW_CASE_INSPECTION_TAB_TOKEN,
5637
+ useValue: CaseInspectionZgwTabComponent,
5638
+ },
5451
5639
  {
5452
5640
  provide: ZGW_DOCUMENTEN_API_DOCUMENTS_COMPONENT_TOKEN,
5453
5641
  useValue: CaseDetailTabDocumentenApiDocumentsComponent,
@@ -5499,6 +5687,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
5499
5687
  provide: ZGW_OBJECT_TYPE_COMPONENT_TOKEN,
5500
5688
  useValue: CaseDetailTabObjectTypeComponent,
5501
5689
  },
5690
+ {
5691
+ provide: ZGW_CASE_INSPECTION_TAB_TOKEN,
5692
+ useValue: CaseInspectionZgwTabComponent,
5693
+ },
5502
5694
  {
5503
5695
  provide: ZGW_DOCUMENTEN_API_DOCUMENTS_COMPONENT_TOKEN,
5504
5696
  useValue: CaseDetailTabDocumentenApiDocumentsComponent,