@valtimo/plugin 13.29.0 → 13.31.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.
Files changed (21) hide show
  1. package/fesm2022/valtimo-plugin.mjs +516 -99
  2. package/fesm2022/valtimo-plugin.mjs.map +1 -1
  3. package/lib/plugins/zaken-api/components/create-zaak/create-zaak-configuration.component.d.ts +22 -13
  4. package/lib/plugins/zaken-api/components/create-zaak/create-zaak-configuration.component.d.ts.map +1 -1
  5. package/lib/plugins/zaken-api/components/patch-zaak/patch-zaak-configuration.component.d.ts +23 -16
  6. package/lib/plugins/zaken-api/components/patch-zaak/patch-zaak-configuration.component.d.ts.map +1 -1
  7. package/lib/plugins/zaken-api/models/archive-nomination-types.d.ts +2 -0
  8. package/lib/plugins/zaken-api/models/archive-nomination-types.d.ts.map +1 -0
  9. package/lib/plugins/zaken-api/models/archive-status-types.d.ts +2 -0
  10. package/lib/plugins/zaken-api/models/archive-status-types.d.ts.map +1 -0
  11. package/lib/plugins/zaken-api/models/confidentiality-types.d.ts +2 -0
  12. package/lib/plugins/zaken-api/models/confidentiality-types.d.ts.map +1 -0
  13. package/lib/plugins/zaken-api/models/config.d.ts +61 -14
  14. package/lib/plugins/zaken-api/models/config.d.ts.map +1 -1
  15. package/lib/plugins/zaken-api/models/create-zaak-properties.d.ts +1 -1
  16. package/lib/plugins/zaken-api/models/create-zaak-properties.d.ts.map +1 -1
  17. package/lib/plugins/zaken-api/models/patch-zaak-properties.d.ts +1 -1
  18. package/lib/plugins/zaken-api/models/patch-zaak-properties.d.ts.map +1 -1
  19. package/lib/plugins/zaken-api/models/payment-indication-types.d.ts.map +1 -1
  20. package/lib/plugins/zaken-api/zaken-api-plugin.specification.d.ts.map +1 -1
  21. package/package.json +1 -1
@@ -4449,7 +4449,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
4449
4449
  }] } });
4450
4450
 
4451
4451
  /*
4452
- * Copyright 2015-2025 Ritense BV, the Netherlands.
4452
+ * Copyright 2015-2026 Ritense BV, the Netherlands.
4453
4453
  *
4454
4454
  * Licensed under EUPL, Version 1.2 (the "License");
4455
4455
  * you may not use this file except in compliance with the License.
@@ -4464,15 +4464,41 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
4464
4464
  * limitations under the License.
4465
4465
  */
4466
4466
  const CreateZaakExtraPropertyOptions = [
4467
+ 'archiveActionDate',
4468
+ 'archiveNomination',
4469
+ 'archiveStatus',
4470
+ 'caseGeometryCoordinates',
4471
+ 'caseGeometryType',
4472
+ 'characteristics',
4473
+ 'commissioningOrganisation',
4474
+ 'communicationChannel',
4475
+ 'communicationChannelName',
4476
+ 'confidentiality',
4467
4477
  'description',
4468
4478
  'explanation',
4469
- 'plannedEndDate',
4479
+ 'extensionDuration',
4480
+ 'extensionReason',
4470
4481
  'finalDeliveryDate',
4471
- 'communicationChannel',
4472
- 'paymentIndication',
4473
- 'caseGeometryType',
4474
- 'caseGeometryCoordinates',
4482
+ 'identification',
4483
+ 'lastOpenedDate',
4484
+ 'lastPaymentDate',
4475
4485
  'mainCase',
4486
+ 'paymentIndication',
4487
+ 'plannedEndDate',
4488
+ 'processObjectCategory',
4489
+ 'processObjectDateAttribute',
4490
+ 'processObjectIdentification',
4491
+ 'processObjectObjectType',
4492
+ 'processObjectRegistration',
4493
+ 'productsAndServices',
4494
+ 'publicationDate',
4495
+ 'registrationDate',
4496
+ 'relatedCases',
4497
+ 'relevantOtherCases',
4498
+ 'selectionListClass',
4499
+ 'startDateRetentionPeriod',
4500
+ 'suspensionIndication',
4501
+ 'suspensionReason',
4476
4502
  ];
4477
4503
 
4478
4504
  const GEOMETRY_TYPES = [
@@ -4485,7 +4511,95 @@ const GEOMETRY_TYPES = [
4485
4511
  'MultiPolygon',
4486
4512
  ];
4487
4513
 
4488
- const PAYMENT_INDICATION_TYPES = ['nvt', 'nog_niet', 'gedeeltelijk', 'geheel'];
4514
+ /*
4515
+ * Copyright 2015-2026 Ritense BV, the Netherlands.
4516
+ *
4517
+ * Licensed under EUPL, Version 1.2 (the "License");
4518
+ * you may not use this file except in compliance with the License.
4519
+ * You may obtain a copy of the License at
4520
+ *
4521
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
4522
+ *
4523
+ * Unless required by applicable law or agreed to in writing, software
4524
+ * distributed under the License is distributed on an "AS IS" basis,
4525
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
4526
+ * See the License for the specific language governing permissions and
4527
+ * limitations under the License.
4528
+ */
4529
+ const PAYMENT_INDICATION_TYPES = [
4530
+ 'nvt',
4531
+ 'gefactureerd',
4532
+ 'gecrediteerd',
4533
+ 'betaald',
4534
+ 'nog_niet', // Deprecated
4535
+ 'gedeeltelijk', // Deprecated
4536
+ 'geheel', // Deprecated
4537
+ ];
4538
+
4539
+ /*
4540
+ * Copyright 2015-2026 Ritense BV, the Netherlands.
4541
+ *
4542
+ * Licensed under EUPL, Version 1.2 (the "License");
4543
+ * you may not use this file except in compliance with the License.
4544
+ * You may obtain a copy of the License at
4545
+ *
4546
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
4547
+ *
4548
+ * Unless required by applicable law or agreed to in writing, software
4549
+ * distributed under the License is distributed on an "AS IS" basis,
4550
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
4551
+ * See the License for the specific language governing permissions and
4552
+ * limitations under the License.
4553
+ */
4554
+ const CONFIDENTIALITY_TYPES = [
4555
+ 'openbaar',
4556
+ 'beperkt_openbaar',
4557
+ 'intern',
4558
+ 'zaakvertrouwelijk',
4559
+ 'vertrouwelijk',
4560
+ 'confidentieel',
4561
+ 'geheim',
4562
+ 'zeer_geheim',
4563
+ ];
4564
+
4565
+ /*
4566
+ * Copyright 2015-2026 Ritense BV, the Netherlands.
4567
+ *
4568
+ * Licensed under EUPL, Version 1.2 (the "License");
4569
+ * you may not use this file except in compliance with the License.
4570
+ * You may obtain a copy of the License at
4571
+ *
4572
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
4573
+ *
4574
+ * Unless required by applicable law or agreed to in writing, software
4575
+ * distributed under the License is distributed on an "AS IS" basis,
4576
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
4577
+ * See the License for the specific language governing permissions and
4578
+ * limitations under the License.
4579
+ */
4580
+ const ARCHIVE_NOMINATION_TYPES = ['blijvend_bewaren', 'vernietigen'];
4581
+
4582
+ /*
4583
+ * Copyright 2015-2026 Ritense BV, the Netherlands.
4584
+ *
4585
+ * Licensed under EUPL, Version 1.2 (the "License");
4586
+ * you may not use this file except in compliance with the License.
4587
+ * You may obtain a copy of the License at
4588
+ *
4589
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
4590
+ *
4591
+ * Unless required by applicable law or agreed to in writing, software
4592
+ * distributed under the License is distributed on an "AS IS" basis,
4593
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
4594
+ * See the License for the specific language governing permissions and
4595
+ * limitations under the License.
4596
+ */
4597
+ const ARCHIVE_STATUS_TYPES = [
4598
+ 'nog_te_archiveren',
4599
+ 'gearchiveerd',
4600
+ 'gearchiveerd_procestermijn_onbekend',
4601
+ 'overgedragen',
4602
+ ];
4489
4603
 
4490
4604
  /*
4491
4605
  * Copyright 2015-2026 Ritense BV, the Netherlands.
@@ -4510,12 +4624,50 @@ class CreateZaakConfigurationComponent {
4510
4624
  this.iconService = iconService;
4511
4625
  this.valid = new EventEmitter();
4512
4626
  this.configuration = new EventEmitter();
4513
- this.propertyOptions = Object.values(CreateZaakExtraPropertyOptions);
4627
+ this.LINKED_FIELD_GROUPS = {
4628
+ caseGeometryType: ['caseGeometryCoordinates'],
4629
+ verlenging: ['extensionReason', 'extensionDuration'],
4630
+ opschorting: ['suspensionIndication', 'suspensionReason'],
4631
+ processObject: [
4632
+ 'processObjectDateAttribute',
4633
+ 'processObjectIdentification',
4634
+ 'processObjectObjectType',
4635
+ 'processObjectRegistration',
4636
+ ],
4637
+ };
4638
+ this.GROUP_TRIGGERS = new Set(['verlenging', 'opschorting', 'processObject']);
4639
+ this._allLinkedFollowers = Object.values(this.LINKED_FIELD_GROUPS).flat();
4640
+ this.menuPropertyOptions = [
4641
+ ...CreateZaakExtraPropertyOptions.filter(p => !this._allLinkedFollowers.includes(p)),
4642
+ ...Object.keys(this.LINKED_FIELD_GROUPS).filter(k => this.GROUP_TRIGGERS.has(k)),
4643
+ ];
4514
4644
  this.propertyList = [];
4515
- this.geometryTypes = GEOMETRY_TYPES;
4516
- this.paymentIndicationTypes = PAYMENT_INDICATION_TYPES;
4517
4645
  this.pluginId$ = new BehaviorSubject('');
4518
4646
  this.selectedInputOption$ = new BehaviorSubject('selection');
4647
+ this._propertyListChanged$ = new BehaviorSubject(undefined);
4648
+ this.sortedPropertyList$ = combineLatest([
4649
+ this.pluginId$.pipe(filter(Boolean)),
4650
+ this._propertyListChanged$,
4651
+ ]).pipe(switchMap(([pluginId]) => {
4652
+ if (this.propertyList.length === 0)
4653
+ return of([]);
4654
+ return combineLatest(this.propertyList.map(p => this.pluginTranslatePipe.transform(p.translationKey, pluginId).pipe(map$1(label => ({ key: p.name, label }))))).pipe(map$1(labeledItems => {
4655
+ const labelMap = new Map(labeledItems.map(i => [i.key, i.label]));
4656
+ return this.sortPropertyListByLabel(this.propertyList, labelMap);
4657
+ }));
4658
+ }));
4659
+ this.sortedPropertyListGroups$ = this.sortedPropertyList$.pipe(map$1(list => {
4660
+ const groups = [];
4661
+ for (const property of list) {
4662
+ if (!this.isLinkedFollower(property.name)) {
4663
+ groups.push([property]);
4664
+ }
4665
+ else {
4666
+ groups[groups.length - 1].push(property);
4667
+ }
4668
+ }
4669
+ return groups;
4670
+ }));
4519
4671
  this.loading$ = new BehaviorSubject(true);
4520
4672
  this.inputTypeOptions$ = this.pluginId$.pipe(filter(pluginId => !!pluginId), switchMap(pluginId => combineLatest([
4521
4673
  this.pluginTranslatePipe.transform('selection', pluginId),
@@ -4524,6 +4676,7 @@ class CreateZaakConfigurationComponent {
4524
4676
  { value: 'selection', title: selectionTranslation },
4525
4677
  { value: 'text', title: textTranslation },
4526
4678
  ]));
4679
+ this.sortedMenuPropertyOptions$ = this.pluginId$.pipe(filter(pluginId => !!pluginId), switchMap(pluginId => combineLatest(this.menuPropertyOptions.map(p => this.pluginTranslatePipe.transform(this.translationKeyFor(p), pluginId).pipe(map$1(label => ({ key: p, label })))))), map$1(items => [...items].sort((a, b) => a.label.localeCompare(b.label)).map(item => item.key)));
4527
4680
  this.zaakTypeItems$ = this.modalService.modalData$.pipe(switchMap(() => this.context$), tap$1(([context]) => {
4528
4681
  if (context === 'independent' || context === 'buildingBlock') {
4529
4682
  this.selectedInputOption$.next('text');
@@ -4555,22 +4708,29 @@ class CreateZaakConfigurationComponent {
4555
4708
  }), tap$1(() => {
4556
4709
  this.loading$.next(false);
4557
4710
  }));
4558
- this.CASE_GEOMETRY_TYPE = 'caseGeometryType';
4559
4711
  this.CASE_GEOMETRY_COORDINATES = 'caseGeometryCoordinates';
4560
- this.PAYMENT_INDICATION_TYPE = 'paymentIndication';
4561
4712
  this._formValue$ = new BehaviorSubject(null);
4562
4713
  this._properties = new Map();
4563
4714
  this._valid$ = new BehaviorSubject(false);
4564
4715
  this.iconService.registerAll([Add16, TrashCan16]);
4565
4716
  }
4566
4717
  ngOnInit() {
4718
+ this.pluginId$.next(this.pluginId);
4567
4719
  this.openSaveSubscription();
4568
4720
  this.prefillConfiguration$.pipe(take(1)).subscribe(prefill => {
4569
- CreateZaakExtraPropertyOptions.filter(property => prefill && !!prefill[property]).forEach(property => this.addProperty(property));
4721
+ if (!prefill)
4722
+ return;
4723
+ for (const [trigger, followers] of Object.entries(this.LINKED_FIELD_GROUPS)) {
4724
+ if (this.GROUP_TRIGGERS.has(trigger) && followers.some(f => !!prefill[f])) {
4725
+ this.addProperty(trigger);
4726
+ }
4727
+ }
4728
+ const allFollowers = Object.values(this.LINKED_FIELD_GROUPS).flat();
4729
+ CreateZaakExtraPropertyOptions.filter(p => !allFollowers.includes(p) && !!prefill[p]).forEach(p => this.addProperty(p));
4570
4730
  });
4571
4731
  }
4572
4732
  ngOnDestroy() {
4573
- this.saveSubscription?.unsubscribe();
4733
+ this._saveSubscription?.unsubscribe();
4574
4734
  }
4575
4735
  onFormValueChanged(formValue) {
4576
4736
  const inputTypeZaakTypeToggle = formValue?.inputTypeZaakTypeToggle;
@@ -4596,33 +4756,56 @@ class CreateZaakConfigurationComponent {
4596
4756
  prefillValueFor(property, prefill) {
4597
4757
  return prefill !== null ? (prefill?.[property] ?? null) : null;
4598
4758
  }
4599
- translationKeyFor(property) {
4600
- return property === 'description' ? 'beschrijving' : property;
4601
- }
4602
- translationKeyForPropertyList(property) {
4603
- return property === this.CASE_GEOMETRY_TYPE ? 'caseGeometry' : this.translationKeyFor(property);
4604
- }
4605
4759
  addProperty(property) {
4606
- // only add the property to the list if it is not in the list
4607
- if (this.propertyList.indexOf(property) === -1) {
4608
- this.propertyList.push(property);
4760
+ if (!this.GROUP_TRIGGERS.has(property)) {
4761
+ if (!this.hasPropertyBeenAdded(property)) {
4762
+ this.propertyList.push(this.propertyFormFieldFor(property));
4763
+ this.onPropertyChanged(property, undefined);
4764
+ }
4609
4765
  }
4610
- if (property === this.CASE_GEOMETRY_TYPE) {
4611
- this.addProperty(this.CASE_GEOMETRY_COORDINATES);
4766
+ const linked = this.LINKED_FIELD_GROUPS[property];
4767
+ if (linked) {
4768
+ linked.forEach(p => this.addProperty(p));
4612
4769
  }
4770
+ this._propertyListChanged$.next();
4613
4771
  }
4614
4772
  removeProperty(property) {
4615
- // only remove the property from the list if it is in the list
4616
- if (this.propertyList.indexOf(property) !== -1) {
4617
- this.propertyList.splice(this.propertyList.indexOf(property), 1);
4618
- this.onPropertyChanged(property, undefined);
4773
+ if (!this.GROUP_TRIGGERS.has(property)) {
4774
+ if (this.hasPropertyBeenAdded(property)) {
4775
+ this.propertyList.splice(this.propertyList.findIndex(item => item.name === property), 1);
4776
+ this.onPropertyChanged(property, undefined);
4777
+ }
4619
4778
  }
4620
- if (property === this.CASE_GEOMETRY_TYPE) {
4621
- this.removeProperty(this.CASE_GEOMETRY_COORDINATES);
4779
+ const linked = this.LINKED_FIELD_GROUPS[property];
4780
+ if (linked) {
4781
+ linked.forEach(p => this.removeProperty(p));
4622
4782
  }
4783
+ this._propertyListChanged$.next();
4623
4784
  }
4624
4785
  hasPropertyBeenAdded(property) {
4625
- return this.propertyList.indexOf(property) !== -1;
4786
+ if (this.GROUP_TRIGGERS.has(property)) {
4787
+ return this.LINKED_FIELD_GROUPS[property]?.some(p => this.hasPropertyBeenAdded(p)) ?? false;
4788
+ }
4789
+ return this.propertyList.findIndex(item => item.name === property) !== -1;
4790
+ }
4791
+ isLinkedFollower(property) {
4792
+ for (const [trigger, followers] of Object.entries(this.LINKED_FIELD_GROUPS)) {
4793
+ if (followers.includes(property)) {
4794
+ if (this.GROUP_TRIGGERS.has(trigger)) {
4795
+ return followers[0] !== property;
4796
+ }
4797
+ return true;
4798
+ }
4799
+ }
4800
+ return false;
4801
+ }
4802
+ groupTriggerFor(property) {
4803
+ for (const [trigger, followers] of Object.entries(this.LINKED_FIELD_GROUPS)) {
4804
+ if (this.GROUP_TRIGGERS.has(trigger) && followers[0] === property) {
4805
+ return trigger;
4806
+ }
4807
+ }
4808
+ return null;
4626
4809
  }
4627
4810
  onPropertyChanged(property, value) {
4628
4811
  this._properties.set(property, value);
@@ -4632,14 +4815,43 @@ class CreateZaakConfigurationComponent {
4632
4815
  this.onFormValueChanged(formValue);
4633
4816
  });
4634
4817
  }
4818
+ translationKeyFor(property) {
4819
+ if (property === 'description')
4820
+ return 'omschrijving';
4821
+ if (property === 'caseGeometryType')
4822
+ return 'caseGeometry';
4823
+ return property;
4824
+ }
4825
+ followersForHead(property) {
4826
+ if (this.LINKED_FIELD_GROUPS[property] && !this.GROUP_TRIGGERS.has(property)) {
4827
+ return this.LINKED_FIELD_GROUPS[property];
4828
+ }
4829
+ for (const [trigger, followers] of Object.entries(this.LINKED_FIELD_GROUPS)) {
4830
+ if (this.GROUP_TRIGGERS.has(trigger) && followers[0] === property) {
4831
+ return followers.slice(1);
4832
+ }
4833
+ }
4834
+ return [];
4835
+ }
4836
+ sortPropertyListByLabel(list, labels) {
4837
+ const propertyMap = new Map(list.map(p => [p.name, p]));
4838
+ const heads = list.filter(p => !this.isLinkedFollower(p.name));
4839
+ heads.sort((a, b) => (labels.get(a.name) ?? '').localeCompare(labels.get(b.name) ?? ''));
4840
+ return heads.flatMap(head => {
4841
+ const followers = this.followersForHead(head.name)
4842
+ .map(n => propertyMap.get(n))
4843
+ .filter((p) => !!p);
4844
+ return [head, ...followers];
4845
+ });
4846
+ }
4635
4847
  handleValid(formValue) {
4636
- const isPropertyInvalid = this.propertyList.some(property => !!!formValue[property]);
4848
+ const isPropertyInvalid = this.propertyList.some(property => !!!formValue[property.name]);
4637
4849
  const valid = !!(formValue.rsin && formValue.zaaktypeUrl) && !isPropertyInvalid;
4638
4850
  this._valid$.next(valid);
4639
4851
  this.valid.emit(valid);
4640
4852
  }
4641
4853
  openSaveSubscription() {
4642
- this.saveSubscription = this.save$?.subscribe(() => {
4854
+ this._saveSubscription = this.save$?.subscribe(() => {
4643
4855
  combineLatest([this._formValue$, this._valid$])
4644
4856
  .pipe(take(1))
4645
4857
  .subscribe(([formValue, valid]) => {
@@ -4649,18 +4861,53 @@ class CreateZaakConfigurationComponent {
4649
4861
  zaaktypeUrl: formValue.zaaktypeUrl,
4650
4862
  manualZaakTypeUrl: formValue.manualZaakTypeUrl,
4651
4863
  };
4652
- this.propertyList.forEach(property => (payload[property] = formValue[property]));
4864
+ this.propertyList.forEach(property => (payload[property.name] = formValue[property.name]));
4653
4865
  this.configuration.emit(payload);
4654
4866
  }
4655
4867
  });
4656
4868
  });
4657
4869
  }
4870
+ propertyFormFieldFor(property) {
4871
+ return {
4872
+ name: property,
4873
+ translationKey: this.translationKeyFor(property),
4874
+ tooltipTranslationKey: this.tooltipTranslationKeyFor(property),
4875
+ presetOptions: this.presetOptionsForProperty(property),
4876
+ };
4877
+ }
4878
+ tooltipTranslationKeyFor(property) {
4879
+ if (property.toLowerCase().includes('date')) {
4880
+ return 'dateformatTooltip';
4881
+ }
4882
+ if (property === this.CASE_GEOMETRY_COORDINATES) {
4883
+ return 'caseGeometryCoordinatesTooltip';
4884
+ }
4885
+ return null;
4886
+ }
4887
+ presetOptionsForProperty(property) {
4888
+ switch (property) {
4889
+ case 'caseGeometryType':
4890
+ return GEOMETRY_TYPES;
4891
+ case 'paymentIndication':
4892
+ return PAYMENT_INDICATION_TYPES;
4893
+ case 'confidentiality':
4894
+ return CONFIDENTIALITY_TYPES;
4895
+ case 'archiveNomination':
4896
+ return ARCHIVE_NOMINATION_TYPES;
4897
+ case 'archiveStatus':
4898
+ return ARCHIVE_STATUS_TYPES;
4899
+ case 'suspensionIndication':
4900
+ return ['true', 'false'];
4901
+ default:
4902
+ return [];
4903
+ }
4904
+ }
4658
4905
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CreateZaakConfigurationComponent, deps: [{ token: i1$4.OpenZaakService }, { token: i2$2.ModalService }, { token: PluginTranslatePipe }, { token: i1$3.IconService }], target: i0.ɵɵFactoryTarget.Component }); }
4659
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: CreateZaakConfigurationComponent, isStandalone: false, selector: "valtimo-create-zaak-configuration", inputs: { context$: "context$", disabled$: "disabled$", pluginId: "pluginId", save$: "save$", prefillConfiguration$: "prefillConfiguration$" }, outputs: { valid: "valid", configuration: "configuration" }, providers: [PluginTranslatePipe], 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 context: context$ | async,\n disabled: disabled$ | async,\n loading: loading$ | async,\n prefill: prefillConfiguration$ ? (prefillConfiguration$ | async) : null,\n selectedInputOption: selectedInputOption$ | async,\n zaakTypeSelectItems: zaakTypeItems$ | async,\n } as obs\"\n>\n @if (obs.loading) {\n <cds-loading></cds-loading>\n } @else {\n <v-paragraph [margin]=\"true\" [italic]=\"true\">\n {{ 'createZaakInformation' | pluginTranslate: pluginId | async }}\n </v-paragraph>\n\n <v-form (valueChange)=\"onFormValueChanged($event)\">\n <v-input\n name=\"rsin\"\n [title]=\"'rsin' | pluginTranslate: pluginId | async\"\n [tooltip]=\"'rsinTooltip' | pluginTranslate: pluginId | async\"\n [defaultValue]=\"obs.prefill?.rsin\"\n [disabled]=\"obs.disabled\"\n [required]=\"true\"\n [trim]=\"true\"\n [margin]=\"true\"\n [widthPx]=\"350\"\n >\n </v-input>\n\n <v-radio\n *ngIf=\"obs?.context?.[0] === 'case'\"\n name=\"inputTypeZaakTypeToggle\"\n [title]=\"'inputTypeZaakTypeToggle' | pluginTranslate: pluginId | async\"\n [defaultValue]=\"selectedInputOption$ | async\"\n [radioValues]=\"inputTypeOptions$ | async\"\n [disabled]=\"obs.disabled\"\n [margin]=\"true\"\n >\n </v-radio>\n\n <v-input\n *ngIf=\"obs.selectedInputOption === 'text'\"\n name=\"zaaktypeUrl\"\n [title]=\"'zaakTypeUrl' | pluginTranslate: pluginId | async\"\n [tooltip]=\"'zaakTypeTooltip' | pluginTranslate: pluginId | async\"\n [defaultValue]=\"obs.prefill?.zaaktypeUrl\"\n [disabled]=\"obs.disabled || obs.selectedInputOption === 'selection'\"\n [required]=\"true\"\n [trim]=\"true\"\n [margin]=\"true\"\n [widthPx]=\"700\"\n >\n </v-input>\n\n <v-select\n *ngIf=\"obs.selectedInputOption === 'selection'\"\n name=\"zaaktypeUrl\"\n [title]=\"'zaakType' | pluginTranslate: pluginId | async\"\n [tooltip]=\"'zaakTypeSelectTooltip' | pluginTranslate: pluginId | async\"\n [required]=\"true\"\n [items]=\"obs.zaakTypeSelectItems\"\n [loading]=\"!obs.zaakTypeSelectItems\"\n [disabled]=\"\n obs.disabled ||\n obs.selectedInputOption === 'text' ||\n oneSelectItem(obs.zaakTypeSelectItems)\n \"\n [margin]=\"true\"\n [defaultSelectionId]=\"\n (selectItemsIncludeId(obs.zaakTypeSelectItems, obs.prefill?.zaaktypeUrl) &&\n obs.prefill?.zaaktypeUrl) ||\n (oneSelectItem(obs.zaakTypeSelectItems) && obs.zaakTypeSelectItems[0].id)\n \"\n [widthInPx]=\"350\"\n ></v-select>\n\n <div class=\"property-row\">\n <div class=\"property-input-col\">\n <v-overflow-menu placement=\"bottom-start\" class=\"add-button\">\n <button overflowTrigger cdsButton=\"primary\" [size]=\"'md'\">\n {{ 'addZaakProperty' | pluginTranslate: pluginId | async }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n\n @for (propertyOption of propertyOptions; track propertyOption) {\n @if (propertyOption !== CASE_GEOMETRY_COORDINATES && !hasPropertyBeenAdded(propertyOption)) {\n <v-overflow-menu-option (selected)=\"addProperty(propertyOption)\">\n {{ translationKeyForPropertyList(propertyOption) | pluginTranslate: pluginId | async }}\n </v-overflow-menu-option>\n }\n }\n </v-overflow-menu>\n </div>\n </div>\n\n @for (property of propertyList; track property) {\n <div class=\"property-row\">\n <div class=\"property-input-col\">\n @switch (property) {\n @case (CASE_GEOMETRY_TYPE) {\n <v-input\n [name]=\"CASE_GEOMETRY_TYPE\"\n [title]=\"\n translationKeyFor(CASE_GEOMETRY_TYPE) | pluginTranslate: pluginId | async\n \"\n [defaultValue]=\"prefillValueFor(CASE_GEOMETRY_TYPE, obs.prefill)\"\n (valueChange)=\"onPropertyChanged(CASE_GEOMETRY_TYPE, $event)\"\n [required]=\"true\"\n [margin]=\"true\"\n [presetOptions]=\"geometryTypes\"\n />\n }\n @case (CASE_GEOMETRY_COORDINATES) {\n <v-input\n [name]=\"CASE_GEOMETRY_COORDINATES\"\n [title]=\"\n translationKeyFor(CASE_GEOMETRY_COORDINATES) | pluginTranslate: pluginId | async\n \"\n [tooltip]=\"translationKeyFor(`${CASE_GEOMETRY_COORDINATES}Tooltip`) | pluginTranslate: pluginId | async\"\n [defaultValue]=\"prefillValueFor(CASE_GEOMETRY_COORDINATES, obs.prefill)\"\n (valueChange)=\"onPropertyChanged(CASE_GEOMETRY_COORDINATES, $event)\"\n [required]=\"true\"\n [margin]=\"true\"\n />\n }\n @default {\n <v-input\n [name]=\"property\"\n [title]=\"translationKeyFor(property) | pluginTranslate: pluginId | async\"\n [tooltip]=\"\n property.includes('Date')\n ? ('dateformatTooltip' | pluginTranslate: pluginId | async)\n : null\n \"\n [defaultValue]=\"prefillValueFor(property, obs.prefill)\"\n (valueChange)=\"onPropertyChanged(property, $event)\"\n [required]=\"true\"\n [margin]=\"true\"\n [trim]=\"true\"\n [presetOptions]=\"\n property === PAYMENT_INDICATION_TYPE ? paymentIndicationTypes : []\n \"\n />\n }\n }\n </div>\n\n <div class=\"property-delete-col\">\n @if (property !== CASE_GEOMETRY_COORDINATES) {\n <button class=\"btn btn-space delete-button\" (click)=\"removeProperty(property)\">\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n }\n </div>\n </div>\n }\n </v-form>\n }\n</ng-container>\n\n", styles: [".loading-container{display:flex;flex-direction:row;justify-content:center;height:100%;width:100%;align-items:center}button.delete-button{height:46px;width:46px;margin-top:20px}button.delete-button:hover{background-color:#e12717}button.add-button{margin-block-end:var(--v-input-margin)}.property-input{display:flex}.property-input v-input,.property-input cds-date-picker-input{flex-grow:1}.property-input button{height:46px;width:46px;margin:16px}div.property-row{width:100%;display:grid;grid-template-columns:92% 8%}div.property-row>*{box-sizing:border-box;min-width:0}div.property-delete-col{margin-left:auto}\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: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$2.FormComponent, selector: "v-form", inputs: ["className"], outputs: ["valueChange"] }, { kind: "component", type: i2$2.InputComponent, selector: "v-input", inputs: ["name", "type", "title", "titleTranslationKey", "defaultValue", "widthPx", "fullWidth", "margin", "smallMargin", "disabled", "step", "min", "maxLength", "tooltip", "required", "hideNumberSpinBox", "smallLabel", "rows", "clear$", "carbonTheme", "placeholder", "dataTestId", "trim", "presetsTitle", "presetOptions"], outputs: ["valueChange"] }, { kind: "component", type: i2$2.SelectComponent, selector: "v-select", inputs: ["items", "defaultSelection", "defaultSelectionId", "defaultSelectionIds", "disabled", "dropUp", "invalid", "multiple", "margin", "widthInPx", "notFoundText", "clearAllText", "clearText", "clearable", "name", "title", "titleTranslationKey", "clearSelectionSubject$", "tooltip", "required", "loading", "loadingText", "placeholder", "smallMargin", "carbonTheme", "appendInline", "warn", "warnText", "dataTestId"], outputs: ["selectedChange"] }, { kind: "component", type: i2$2.ParagraphComponent, selector: "v-paragraph", inputs: ["center", "fullWidth", "margin", "italic", "loading", "dataTestId"] }, { kind: "component", type: i2$2.RadioComponent, selector: "v-radio", inputs: ["name", "title", "titleTranslationKey", "defaultValue", "widthPx", "fullWidth", "margin", "smallMargin", "disabled", "tooltip", "required", "smallLabel", "rows", "clear$", "radioValues"], outputs: ["valueChange"] }, { kind: "component", type: i1$3.Loading, selector: "cds-loading, ibm-loading", inputs: ["title", "isActive", "size", "overlay"] }, { kind: "directive", type: i1$3.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "component", type: i2$2.OverflowMenuComponent, selector: "v-overflow-menu", inputs: ["open", "placement", "menuWidth", "offsetX", "offsetY", "closeOnSelect", "useHostAsReference", "portalToBody"], outputs: ["openChange"] }, { kind: "component", type: i2$2.OverflowMenuOptionComponent, selector: "v-overflow-menu-option", inputs: ["disabled", "type", "testId", "optionId"], outputs: ["selected"] }, { kind: "directive", type: i1$3.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: PluginTranslatePipe, name: "pluginTranslate" }] }); }
4906
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: CreateZaakConfigurationComponent, isStandalone: false, selector: "valtimo-create-zaak-configuration", inputs: { context$: "context$", disabled$: "disabled$", pluginId: "pluginId", save$: "save$", prefillConfiguration$: "prefillConfiguration$" }, outputs: { valid: "valid", configuration: "configuration" }, providers: [PluginTranslatePipe], 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<ng-container\n *ngIf=\"{\n context: context$ | async,\n disabled: disabled$ | async,\n loading: loading$ | async,\n prefill: prefillConfiguration$ ? (prefillConfiguration$ | async) : null,\n selectedInputOption: selectedInputOption$ | async,\n zaakTypeSelectItems: zaakTypeItems$ | async,\n } as obs\"\n>\n @if (obs.loading) {\n <cds-loading></cds-loading>\n } @else {\n <v-paragraph [margin]=\"true\" [italic]=\"true\">\n {{ 'createZaakInformation' | pluginTranslate: pluginId | async }}\n </v-paragraph>\n\n <v-form (valueChange)=\"onFormValueChanged($event)\">\n <v-input\n name=\"rsin\"\n [title]=\"'rsin' | pluginTranslate: pluginId | async\"\n [tooltip]=\"'rsinTooltip' | pluginTranslate: pluginId | async\"\n [defaultValue]=\"obs.prefill?.rsin\"\n [disabled]=\"obs.disabled\"\n [required]=\"true\"\n [trim]=\"true\"\n [margin]=\"true\"\n [widthPx]=\"350\"\n >\n </v-input>\n\n <v-radio\n *ngIf=\"obs?.context?.[0] === 'case'\"\n name=\"inputTypeZaakTypeToggle\"\n [title]=\"'inputTypeZaakTypeToggle' | pluginTranslate: pluginId | async\"\n [defaultValue]=\"selectedInputOption$ | async\"\n [radioValues]=\"inputTypeOptions$ | async\"\n [disabled]=\"obs.disabled\"\n [margin]=\"true\"\n >\n </v-radio>\n\n <v-input\n *ngIf=\"obs.selectedInputOption === 'text'\"\n name=\"zaaktypeUrl\"\n [title]=\"'zaakTypeUrl' | pluginTranslate: pluginId | async\"\n [tooltip]=\"'zaakTypeTooltip' | pluginTranslate: pluginId | async\"\n [defaultValue]=\"obs.prefill?.zaaktypeUrl\"\n [disabled]=\"obs.disabled || obs.selectedInputOption === 'selection'\"\n [required]=\"true\"\n [trim]=\"true\"\n [margin]=\"true\"\n [widthPx]=\"700\"\n >\n </v-input>\n\n <v-select\n *ngIf=\"obs.selectedInputOption === 'selection'\"\n name=\"zaaktypeUrl\"\n [title]=\"'zaakType' | pluginTranslate: pluginId | async\"\n [tooltip]=\"'zaakTypeSelectTooltip' | pluginTranslate: pluginId | async\"\n [required]=\"true\"\n [items]=\"obs.zaakTypeSelectItems\"\n [loading]=\"!obs.zaakTypeSelectItems\"\n [disabled]=\"\n obs.disabled ||\n obs.selectedInputOption === 'text' ||\n oneSelectItem(obs.zaakTypeSelectItems)\n \"\n [margin]=\"true\"\n [defaultSelectionId]=\"\n (selectItemsIncludeId(obs.zaakTypeSelectItems, obs.prefill?.zaaktypeUrl) &&\n obs.prefill?.zaaktypeUrl) ||\n (oneSelectItem(obs.zaakTypeSelectItems) && obs.zaakTypeSelectItems[0].id)\n \"\n [widthInPx]=\"350\"\n ></v-select>\n </v-form>\n\n <div class=\"row\">\n <div class=\"col-12\">\n <v-overflow-menu placement=\"bottom-start\" class=\"add-button\">\n <button overflowTrigger cdsButton=\"primary\" [size]=\"'md'\">\n {{ 'addZaakProperty' | pluginTranslate: pluginId | async }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n\n @for (propertyOption of sortedMenuPropertyOptions$ | async; track propertyOption) {\n @if (!hasPropertyBeenAdded(propertyOption)) {\n <v-overflow-menu-option (selected)=\"addProperty(propertyOption)\">\n {{ translationKeyFor(propertyOption) | pluginTranslate: pluginId | async }}\n </v-overflow-menu-option>\n }\n }\n </v-overflow-menu>\n </div>\n </div>\n\n <v-form (valueChange)=\"onFormValueChanged($event)\">\n @for (group of (sortedPropertyListGroups$ | async) ?? []; track group[0].name) {\n <div [class.property-group]=\"group.length > 1\">\n @for (property of group; track property.name) {\n <div class=\"row\">\n <div class=\"col-11\">\n <v-input\n [name]=\"property.name\"\n [title]=\"property.translationKey | pluginTranslate: pluginId | async\"\n [tooltip]=\"\n property.tooltipTranslationKey !== null\n ? (property.tooltipTranslationKey | pluginTranslate: pluginId | async)\n : null\n \"\n [defaultValue]=\"prefillValueFor(property.name, obs.prefill)\"\n (valueChange)=\"onPropertyChanged(property.name, $event)\"\n [required]=\"true\"\n [margin]=\"true\"\n [trim]=\"true\"\n [presetOptions]=\"property.presetOptions\"\n />\n </div>\n <div class=\"col-1\">\n @if (!isLinkedFollower(property.name)) {\n <button class=\"btn btn-space delete-button\" (click)=\"removeProperty(groupTriggerFor(property.name) ?? property.name)\">\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n }\n </div>\n </div>\n }\n </div>\n }\n </v-form>\n }\n</ng-container>\n", styles: [".property-group{background:var(--cds-layer-02);padding:1rem;margin-block-end:var(--v-input-margin)}:host ::ng-deep .property-group>.row:last-child .v-input--margin{margin-block-end:0}:host ::ng-deep .property-group .cds--text-input,:host ::ng-deep .property-group .cds--list-box__field{background-color:#fff}button.delete-button{height:46px;width:46px;margin-top:20px}button.delete-button:hover{background-color:#e12717}.property-group button.delete-button{background-color:#fff}.property-group button.delete-button:hover{background-color:#e12717}.add-button{margin-block-end:var(--v-input-margin)}:host ::ng-deep .add-button .v-overflow-menu__pane{max-height:40vh;overflow-y:auto}\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: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$2.FormComponent, selector: "v-form", inputs: ["className"], outputs: ["valueChange"] }, { kind: "component", type: i2$2.InputComponent, selector: "v-input", inputs: ["name", "type", "title", "titleTranslationKey", "defaultValue", "widthPx", "fullWidth", "margin", "smallMargin", "disabled", "step", "min", "maxLength", "tooltip", "required", "hideNumberSpinBox", "smallLabel", "rows", "clear$", "carbonTheme", "placeholder", "dataTestId", "trim", "presetsTitle", "presetOptions"], outputs: ["valueChange"] }, { kind: "component", type: i2$2.SelectComponent, selector: "v-select", inputs: ["items", "defaultSelection", "defaultSelectionId", "defaultSelectionIds", "disabled", "dropUp", "invalid", "multiple", "margin", "widthInPx", "notFoundText", "clearAllText", "clearText", "clearable", "name", "title", "titleTranslationKey", "clearSelectionSubject$", "tooltip", "required", "loading", "loadingText", "placeholder", "smallMargin", "carbonTheme", "appendInline", "warn", "warnText", "dataTestId"], outputs: ["selectedChange"] }, { kind: "component", type: i2$2.ParagraphComponent, selector: "v-paragraph", inputs: ["center", "fullWidth", "margin", "italic", "loading", "dataTestId"] }, { kind: "component", type: i2$2.RadioComponent, selector: "v-radio", inputs: ["name", "title", "titleTranslationKey", "defaultValue", "widthPx", "fullWidth", "margin", "smallMargin", "disabled", "tooltip", "required", "smallLabel", "rows", "clear$", "radioValues"], outputs: ["valueChange"] }, { kind: "component", type: i1$3.Loading, selector: "cds-loading, ibm-loading", inputs: ["title", "isActive", "size", "overlay"] }, { kind: "directive", type: i1$3.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "component", type: i2$2.OverflowMenuComponent, selector: "v-overflow-menu", inputs: ["open", "placement", "menuWidth", "offsetX", "offsetY", "closeOnSelect", "useHostAsReference", "portalToBody"], outputs: ["openChange"] }, { kind: "component", type: i2$2.OverflowMenuOptionComponent, selector: "v-overflow-menu-option", inputs: ["disabled", "type", "testId", "optionId"], outputs: ["selected"] }, { kind: "directive", type: i1$3.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: PluginTranslatePipe, name: "pluginTranslate" }] }); }
4660
4907
  }
4661
4908
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CreateZaakConfigurationComponent, decorators: [{
4662
4909
  type: Component,
4663
- args: [{ standalone: false, selector: 'valtimo-create-zaak-configuration', providers: [PluginTranslatePipe], 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 context: context$ | async,\n disabled: disabled$ | async,\n loading: loading$ | async,\n prefill: prefillConfiguration$ ? (prefillConfiguration$ | async) : null,\n selectedInputOption: selectedInputOption$ | async,\n zaakTypeSelectItems: zaakTypeItems$ | async,\n } as obs\"\n>\n @if (obs.loading) {\n <cds-loading></cds-loading>\n } @else {\n <v-paragraph [margin]=\"true\" [italic]=\"true\">\n {{ 'createZaakInformation' | pluginTranslate: pluginId | async }}\n </v-paragraph>\n\n <v-form (valueChange)=\"onFormValueChanged($event)\">\n <v-input\n name=\"rsin\"\n [title]=\"'rsin' | pluginTranslate: pluginId | async\"\n [tooltip]=\"'rsinTooltip' | pluginTranslate: pluginId | async\"\n [defaultValue]=\"obs.prefill?.rsin\"\n [disabled]=\"obs.disabled\"\n [required]=\"true\"\n [trim]=\"true\"\n [margin]=\"true\"\n [widthPx]=\"350\"\n >\n </v-input>\n\n <v-radio\n *ngIf=\"obs?.context?.[0] === 'case'\"\n name=\"inputTypeZaakTypeToggle\"\n [title]=\"'inputTypeZaakTypeToggle' | pluginTranslate: pluginId | async\"\n [defaultValue]=\"selectedInputOption$ | async\"\n [radioValues]=\"inputTypeOptions$ | async\"\n [disabled]=\"obs.disabled\"\n [margin]=\"true\"\n >\n </v-radio>\n\n <v-input\n *ngIf=\"obs.selectedInputOption === 'text'\"\n name=\"zaaktypeUrl\"\n [title]=\"'zaakTypeUrl' | pluginTranslate: pluginId | async\"\n [tooltip]=\"'zaakTypeTooltip' | pluginTranslate: pluginId | async\"\n [defaultValue]=\"obs.prefill?.zaaktypeUrl\"\n [disabled]=\"obs.disabled || obs.selectedInputOption === 'selection'\"\n [required]=\"true\"\n [trim]=\"true\"\n [margin]=\"true\"\n [widthPx]=\"700\"\n >\n </v-input>\n\n <v-select\n *ngIf=\"obs.selectedInputOption === 'selection'\"\n name=\"zaaktypeUrl\"\n [title]=\"'zaakType' | pluginTranslate: pluginId | async\"\n [tooltip]=\"'zaakTypeSelectTooltip' | pluginTranslate: pluginId | async\"\n [required]=\"true\"\n [items]=\"obs.zaakTypeSelectItems\"\n [loading]=\"!obs.zaakTypeSelectItems\"\n [disabled]=\"\n obs.disabled ||\n obs.selectedInputOption === 'text' ||\n oneSelectItem(obs.zaakTypeSelectItems)\n \"\n [margin]=\"true\"\n [defaultSelectionId]=\"\n (selectItemsIncludeId(obs.zaakTypeSelectItems, obs.prefill?.zaaktypeUrl) &&\n obs.prefill?.zaaktypeUrl) ||\n (oneSelectItem(obs.zaakTypeSelectItems) && obs.zaakTypeSelectItems[0].id)\n \"\n [widthInPx]=\"350\"\n ></v-select>\n\n <div class=\"property-row\">\n <div class=\"property-input-col\">\n <v-overflow-menu placement=\"bottom-start\" class=\"add-button\">\n <button overflowTrigger cdsButton=\"primary\" [size]=\"'md'\">\n {{ 'addZaakProperty' | pluginTranslate: pluginId | async }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n\n @for (propertyOption of propertyOptions; track propertyOption) {\n @if (propertyOption !== CASE_GEOMETRY_COORDINATES && !hasPropertyBeenAdded(propertyOption)) {\n <v-overflow-menu-option (selected)=\"addProperty(propertyOption)\">\n {{ translationKeyForPropertyList(propertyOption) | pluginTranslate: pluginId | async }}\n </v-overflow-menu-option>\n }\n }\n </v-overflow-menu>\n </div>\n </div>\n\n @for (property of propertyList; track property) {\n <div class=\"property-row\">\n <div class=\"property-input-col\">\n @switch (property) {\n @case (CASE_GEOMETRY_TYPE) {\n <v-input\n [name]=\"CASE_GEOMETRY_TYPE\"\n [title]=\"\n translationKeyFor(CASE_GEOMETRY_TYPE) | pluginTranslate: pluginId | async\n \"\n [defaultValue]=\"prefillValueFor(CASE_GEOMETRY_TYPE, obs.prefill)\"\n (valueChange)=\"onPropertyChanged(CASE_GEOMETRY_TYPE, $event)\"\n [required]=\"true\"\n [margin]=\"true\"\n [presetOptions]=\"geometryTypes\"\n />\n }\n @case (CASE_GEOMETRY_COORDINATES) {\n <v-input\n [name]=\"CASE_GEOMETRY_COORDINATES\"\n [title]=\"\n translationKeyFor(CASE_GEOMETRY_COORDINATES) | pluginTranslate: pluginId | async\n \"\n [tooltip]=\"translationKeyFor(`${CASE_GEOMETRY_COORDINATES}Tooltip`) | pluginTranslate: pluginId | async\"\n [defaultValue]=\"prefillValueFor(CASE_GEOMETRY_COORDINATES, obs.prefill)\"\n (valueChange)=\"onPropertyChanged(CASE_GEOMETRY_COORDINATES, $event)\"\n [required]=\"true\"\n [margin]=\"true\"\n />\n }\n @default {\n <v-input\n [name]=\"property\"\n [title]=\"translationKeyFor(property) | pluginTranslate: pluginId | async\"\n [tooltip]=\"\n property.includes('Date')\n ? ('dateformatTooltip' | pluginTranslate: pluginId | async)\n : null\n \"\n [defaultValue]=\"prefillValueFor(property, obs.prefill)\"\n (valueChange)=\"onPropertyChanged(property, $event)\"\n [required]=\"true\"\n [margin]=\"true\"\n [trim]=\"true\"\n [presetOptions]=\"\n property === PAYMENT_INDICATION_TYPE ? paymentIndicationTypes : []\n \"\n />\n }\n }\n </div>\n\n <div class=\"property-delete-col\">\n @if (property !== CASE_GEOMETRY_COORDINATES) {\n <button class=\"btn btn-space delete-button\" (click)=\"removeProperty(property)\">\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n }\n </div>\n </div>\n }\n </v-form>\n }\n</ng-container>\n\n", styles: [".loading-container{display:flex;flex-direction:row;justify-content:center;height:100%;width:100%;align-items:center}button.delete-button{height:46px;width:46px;margin-top:20px}button.delete-button:hover{background-color:#e12717}button.add-button{margin-block-end:var(--v-input-margin)}.property-input{display:flex}.property-input v-input,.property-input cds-date-picker-input{flex-grow:1}.property-input button{height:46px;width:46px;margin:16px}div.property-row{width:100%;display:grid;grid-template-columns:92% 8%}div.property-row>*{box-sizing:border-box;min-width:0}div.property-delete-col{margin-left:auto}\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"] }]
4910
+ args: [{ standalone: false, selector: 'valtimo-create-zaak-configuration', providers: [PluginTranslatePipe], 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<ng-container\n *ngIf=\"{\n context: context$ | async,\n disabled: disabled$ | async,\n loading: loading$ | async,\n prefill: prefillConfiguration$ ? (prefillConfiguration$ | async) : null,\n selectedInputOption: selectedInputOption$ | async,\n zaakTypeSelectItems: zaakTypeItems$ | async,\n } as obs\"\n>\n @if (obs.loading) {\n <cds-loading></cds-loading>\n } @else {\n <v-paragraph [margin]=\"true\" [italic]=\"true\">\n {{ 'createZaakInformation' | pluginTranslate: pluginId | async }}\n </v-paragraph>\n\n <v-form (valueChange)=\"onFormValueChanged($event)\">\n <v-input\n name=\"rsin\"\n [title]=\"'rsin' | pluginTranslate: pluginId | async\"\n [tooltip]=\"'rsinTooltip' | pluginTranslate: pluginId | async\"\n [defaultValue]=\"obs.prefill?.rsin\"\n [disabled]=\"obs.disabled\"\n [required]=\"true\"\n [trim]=\"true\"\n [margin]=\"true\"\n [widthPx]=\"350\"\n >\n </v-input>\n\n <v-radio\n *ngIf=\"obs?.context?.[0] === 'case'\"\n name=\"inputTypeZaakTypeToggle\"\n [title]=\"'inputTypeZaakTypeToggle' | pluginTranslate: pluginId | async\"\n [defaultValue]=\"selectedInputOption$ | async\"\n [radioValues]=\"inputTypeOptions$ | async\"\n [disabled]=\"obs.disabled\"\n [margin]=\"true\"\n >\n </v-radio>\n\n <v-input\n *ngIf=\"obs.selectedInputOption === 'text'\"\n name=\"zaaktypeUrl\"\n [title]=\"'zaakTypeUrl' | pluginTranslate: pluginId | async\"\n [tooltip]=\"'zaakTypeTooltip' | pluginTranslate: pluginId | async\"\n [defaultValue]=\"obs.prefill?.zaaktypeUrl\"\n [disabled]=\"obs.disabled || obs.selectedInputOption === 'selection'\"\n [required]=\"true\"\n [trim]=\"true\"\n [margin]=\"true\"\n [widthPx]=\"700\"\n >\n </v-input>\n\n <v-select\n *ngIf=\"obs.selectedInputOption === 'selection'\"\n name=\"zaaktypeUrl\"\n [title]=\"'zaakType' | pluginTranslate: pluginId | async\"\n [tooltip]=\"'zaakTypeSelectTooltip' | pluginTranslate: pluginId | async\"\n [required]=\"true\"\n [items]=\"obs.zaakTypeSelectItems\"\n [loading]=\"!obs.zaakTypeSelectItems\"\n [disabled]=\"\n obs.disabled ||\n obs.selectedInputOption === 'text' ||\n oneSelectItem(obs.zaakTypeSelectItems)\n \"\n [margin]=\"true\"\n [defaultSelectionId]=\"\n (selectItemsIncludeId(obs.zaakTypeSelectItems, obs.prefill?.zaaktypeUrl) &&\n obs.prefill?.zaaktypeUrl) ||\n (oneSelectItem(obs.zaakTypeSelectItems) && obs.zaakTypeSelectItems[0].id)\n \"\n [widthInPx]=\"350\"\n ></v-select>\n </v-form>\n\n <div class=\"row\">\n <div class=\"col-12\">\n <v-overflow-menu placement=\"bottom-start\" class=\"add-button\">\n <button overflowTrigger cdsButton=\"primary\" [size]=\"'md'\">\n {{ 'addZaakProperty' | pluginTranslate: pluginId | async }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n\n @for (propertyOption of sortedMenuPropertyOptions$ | async; track propertyOption) {\n @if (!hasPropertyBeenAdded(propertyOption)) {\n <v-overflow-menu-option (selected)=\"addProperty(propertyOption)\">\n {{ translationKeyFor(propertyOption) | pluginTranslate: pluginId | async }}\n </v-overflow-menu-option>\n }\n }\n </v-overflow-menu>\n </div>\n </div>\n\n <v-form (valueChange)=\"onFormValueChanged($event)\">\n @for (group of (sortedPropertyListGroups$ | async) ?? []; track group[0].name) {\n <div [class.property-group]=\"group.length > 1\">\n @for (property of group; track property.name) {\n <div class=\"row\">\n <div class=\"col-11\">\n <v-input\n [name]=\"property.name\"\n [title]=\"property.translationKey | pluginTranslate: pluginId | async\"\n [tooltip]=\"\n property.tooltipTranslationKey !== null\n ? (property.tooltipTranslationKey | pluginTranslate: pluginId | async)\n : null\n \"\n [defaultValue]=\"prefillValueFor(property.name, obs.prefill)\"\n (valueChange)=\"onPropertyChanged(property.name, $event)\"\n [required]=\"true\"\n [margin]=\"true\"\n [trim]=\"true\"\n [presetOptions]=\"property.presetOptions\"\n />\n </div>\n <div class=\"col-1\">\n @if (!isLinkedFollower(property.name)) {\n <button class=\"btn btn-space delete-button\" (click)=\"removeProperty(groupTriggerFor(property.name) ?? property.name)\">\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n }\n </div>\n </div>\n }\n </div>\n }\n </v-form>\n }\n</ng-container>\n", styles: [".property-group{background:var(--cds-layer-02);padding:1rem;margin-block-end:var(--v-input-margin)}:host ::ng-deep .property-group>.row:last-child .v-input--margin{margin-block-end:0}:host ::ng-deep .property-group .cds--text-input,:host ::ng-deep .property-group .cds--list-box__field{background-color:#fff}button.delete-button{height:46px;width:46px;margin-top:20px}button.delete-button:hover{background-color:#e12717}.property-group button.delete-button{background-color:#fff}.property-group button.delete-button:hover{background-color:#e12717}.add-button{margin-block-end:var(--v-input-margin)}:host ::ng-deep .add-button .v-overflow-menu__pane{max-height:40vh;overflow-y:auto}\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"] }]
4664
4911
  }], ctorParameters: () => [{ type: i1$4.OpenZaakService }, { type: i2$2.ModalService }, { type: PluginTranslatePipe }, { type: i1$3.IconService }], propDecorators: { context$: [{
4665
4912
  type: Input
4666
4913
  }], disabled$: [{
@@ -5481,21 +5728,42 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
5481
5728
  * limitations under the License.
5482
5729
  */
5483
5730
  const PatchZaakPropertyOptions = [
5731
+ 'archiveActionDate',
5732
+ 'archiveNomination',
5733
+ 'archiveStatus',
5734
+ 'caseGeometryCoordinates',
5735
+ 'caseGeometryType',
5736
+ 'characteristics',
5737
+ 'commissioningOrganisation',
5738
+ 'communicationChannel',
5739
+ 'communicationChannelName',
5740
+ 'confidentiality',
5484
5741
  'description',
5485
5742
  'explanation',
5486
- 'startDate',
5487
- 'plannedEndDate',
5743
+ 'extensionDuration',
5744
+ 'extensionReason',
5488
5745
  'finalDeliveryDate',
5489
- 'publicationDate',
5490
- 'communicationChannel',
5491
- 'communicationChannelName',
5492
- 'paymentIndication',
5746
+ 'identification',
5747
+ 'lastOpenedDate',
5493
5748
  'lastPaymentDate',
5494
- 'caseGeometryType',
5495
- 'caseGeometryCoordinates',
5496
5749
  'mainCase',
5497
- 'archiveActionDate',
5750
+ 'paymentIndication',
5751
+ 'plannedEndDate',
5752
+ 'processObjectCategory',
5753
+ 'processObjectDateAttribute',
5754
+ 'processObjectIdentification',
5755
+ 'processObjectObjectType',
5756
+ 'processObjectRegistration',
5757
+ 'productsAndServices',
5758
+ 'publicationDate',
5759
+ 'registrationDate',
5760
+ 'relatedCases',
5761
+ 'relevantOtherCases',
5762
+ 'selectionListClass',
5763
+ 'startDate',
5498
5764
  'startDateRetentionPeriod',
5765
+ 'suspensionIndication',
5766
+ 'suspensionReason',
5499
5767
  ];
5500
5768
 
5501
5769
  /*
@@ -5514,79 +5782,151 @@ const PatchZaakPropertyOptions = [
5514
5782
  * limitations under the License.
5515
5783
  */
5516
5784
  class PatchZaakConfigurationComponent {
5517
- constructor(iconService) {
5785
+ constructor(iconService, pluginTranslatePipe) {
5518
5786
  this.iconService = iconService;
5787
+ this.pluginTranslatePipe = pluginTranslatePipe;
5519
5788
  this.valid = new EventEmitter();
5520
5789
  this.configuration = new EventEmitter();
5521
- this.propertyOptions = Object.values(PatchZaakPropertyOptions);
5790
+ this.LINKED_FIELD_GROUPS = {
5791
+ caseGeometryType: ['caseGeometryCoordinates'],
5792
+ verlenging: ['extensionReason', 'extensionDuration'],
5793
+ opschorting: ['suspensionIndication', 'suspensionReason'],
5794
+ processObject: [
5795
+ 'processObjectDateAttribute',
5796
+ 'processObjectIdentification',
5797
+ 'processObjectObjectType',
5798
+ 'processObjectRegistration',
5799
+ ],
5800
+ };
5801
+ this.GROUP_TRIGGERS = new Set(['verlenging', 'opschorting', 'processObject']);
5802
+ this._allLinkedFollowers = Object.values(this.LINKED_FIELD_GROUPS).flat();
5803
+ this.menuPropertyOptions = [
5804
+ ...PatchZaakPropertyOptions.filter(p => !this._allLinkedFollowers.includes(p)),
5805
+ ...Object.keys(this.LINKED_FIELD_GROUPS).filter(k => this.GROUP_TRIGGERS.has(k)),
5806
+ ];
5522
5807
  this.propertyList = [];
5523
- this.geometryTypes = GEOMETRY_TYPES;
5524
- this.paymentIndicationTypes = PAYMENT_INDICATION_TYPES;
5525
- this.CASE_GEOMETRY_TYPE = 'caseGeometryType';
5526
- this.CASE_GEOMETRY_COORDINATES = 'caseGeometryCoordinates';
5527
- this.PAYMENT_INDICATION_TYPE = 'paymentIndication';
5808
+ this.pluginId$ = new BehaviorSubject('');
5809
+ this._propertyListChanged$ = new BehaviorSubject(undefined);
5810
+ this.sortedPropertyList$ = combineLatest([
5811
+ this.pluginId$.pipe(filter(Boolean)),
5812
+ this._propertyListChanged$,
5813
+ ]).pipe(switchMap(([pluginId]) => {
5814
+ if (this.propertyList.length === 0)
5815
+ return of([]);
5816
+ return combineLatest(this.propertyList.map(p => this.pluginTranslatePipe.transform(p.translationKey, pluginId).pipe(map$1(label => ({ key: p.name, label }))))).pipe(map$1(labeledItems => {
5817
+ const labelMap = new Map(labeledItems.map(i => [i.key, i.label]));
5818
+ return this.sortPropertyListByLabel(this.propertyList, labelMap);
5819
+ }));
5820
+ }));
5821
+ this.sortedPropertyListGroups$ = this.sortedPropertyList$.pipe(map$1(list => {
5822
+ const groups = [];
5823
+ for (const property of list) {
5824
+ if (!this.isLinkedFollower(property.name)) {
5825
+ groups.push([property]);
5826
+ }
5827
+ else {
5828
+ groups[groups.length - 1].push(property);
5829
+ }
5830
+ }
5831
+ return groups;
5832
+ }));
5833
+ this.sortedMenuPropertyOptions$ = this.pluginId$.pipe(filter(pluginId => !!pluginId), switchMap(pluginId => combineLatest(this.menuPropertyOptions.map(p => this.pluginTranslatePipe.transform(this.translationKeyFor(p), pluginId).pipe(map$1(label => ({ key: p, label })))))), map$1(items => [...items].sort((a, b) => a.label.localeCompare(b.label)).map(item => item.key)));
5528
5834
  this._formValue$ = new BehaviorSubject({});
5529
5835
  this._properties = new Map();
5530
5836
  this._valid$ = new BehaviorSubject(false);
5531
5837
  this.iconService.registerAll([Add16, TrashCan16]);
5532
5838
  }
5533
5839
  ngOnInit() {
5534
- this.initPropertyList();
5840
+ this.pluginId$.next(this.pluginId);
5535
5841
  this.openSaveSubscription();
5842
+ this.prefillConfiguration$
5843
+ .pipe(filter((prefill) => !!prefill), take(1))
5844
+ .subscribe(prefill => {
5845
+ for (const [trigger, followers] of Object.entries(this.LINKED_FIELD_GROUPS)) {
5846
+ if (this.GROUP_TRIGGERS.has(trigger) && followers.some(f => !!prefill[f])) {
5847
+ this.addProperty(trigger);
5848
+ }
5849
+ }
5850
+ const allFollowers = Object.values(this.LINKED_FIELD_GROUPS).flat();
5851
+ PatchZaakPropertyOptions.filter(p => !allFollowers.includes(p) && !!prefill[p]).forEach(p => this.addProperty(p));
5852
+ });
5536
5853
  }
5537
5854
  ngOnDestroy() {
5538
5855
  this._saveSubscription?.unsubscribe();
5539
5856
  }
5540
5857
  onFormValueChanged(formValue) {
5858
+ this._properties.forEach((value, key) => (formValue[key] = value));
5541
5859
  this._formValue$.next(formValue);
5542
5860
  this.handleValid(formValue);
5543
5861
  }
5544
5862
  onPropertyChanged(property, value) {
5545
5863
  this._properties.set(property, value);
5546
- const formValue = this._formValue$.value;
5547
- this._properties.forEach((value, key) => {
5548
- formValue[key] = value;
5864
+ this._formValue$
5865
+ .pipe(take(1))
5866
+ .subscribe(formValue => {
5867
+ this.onFormValueChanged(formValue);
5549
5868
  });
5550
- this.onFormValueChanged(formValue);
5551
5869
  }
5552
5870
  addProperty(property) {
5553
- if (!this.hasPropertyBeenAdded(property)) {
5554
- this.propertyList.push(this.propertyFormFieldFor(property));
5555
- this.onPropertyChanged(property, undefined);
5871
+ if (!this.GROUP_TRIGGERS.has(property)) {
5872
+ if (!this.hasPropertyBeenAdded(property)) {
5873
+ this.propertyList.push(this.propertyFormFieldFor(property));
5874
+ this.onPropertyChanged(property, undefined);
5875
+ }
5556
5876
  }
5557
- // add linked field coordinates
5558
- if (property === this.CASE_GEOMETRY_TYPE) {
5559
- this.addProperty(this.CASE_GEOMETRY_COORDINATES);
5877
+ const linked = this.LINKED_FIELD_GROUPS[property];
5878
+ if (linked) {
5879
+ linked.forEach(p => this.addProperty(p));
5560
5880
  }
5881
+ this._propertyListChanged$.next();
5561
5882
  }
5562
5883
  removeProperty(property) {
5563
- if (this.hasPropertyBeenAdded(property)) {
5564
- this.propertyList.splice(this.propertyList.findIndex(item => item.name === property), 1);
5565
- this.onPropertyChanged(property, undefined);
5884
+ if (!this.GROUP_TRIGGERS.has(property)) {
5885
+ if (this.hasPropertyBeenAdded(property)) {
5886
+ this.propertyList.splice(this.propertyList.findIndex(item => item.name === property), 1);
5887
+ this.onPropertyChanged(property, undefined);
5888
+ }
5566
5889
  }
5567
- // remove linked field coordinates
5568
- if (property === this.CASE_GEOMETRY_TYPE) {
5569
- this.removeProperty(this.CASE_GEOMETRY_COORDINATES);
5890
+ const linked = this.LINKED_FIELD_GROUPS[property];
5891
+ if (linked) {
5892
+ linked.forEach(p => this.removeProperty(p));
5570
5893
  }
5894
+ this._propertyListChanged$.next();
5571
5895
  }
5572
5896
  hasPropertyBeenAdded(property) {
5897
+ if (this.GROUP_TRIGGERS.has(property)) {
5898
+ return this.LINKED_FIELD_GROUPS[property]?.some(p => this.hasPropertyBeenAdded(p)) ?? false;
5899
+ }
5573
5900
  return this.propertyList.findIndex(item => item.name === property) !== -1;
5574
5901
  }
5575
- prefillValueFor(property, prefill) {
5576
- return prefill != null ? prefill[property] : null;
5577
- }
5578
- translationKeyForPropertyList(property) {
5579
- return property === this.CASE_GEOMETRY_TYPE ? 'caseGeometry' : this.translationKeyFor(property);
5902
+ isLinkedFollower(property) {
5903
+ for (const [trigger, followers] of Object.entries(this.LINKED_FIELD_GROUPS)) {
5904
+ if (followers.includes(property)) {
5905
+ if (this.GROUP_TRIGGERS.has(trigger)) {
5906
+ return followers[0] !== property;
5907
+ }
5908
+ return true;
5909
+ }
5910
+ }
5911
+ return false;
5580
5912
  }
5581
- initPropertyList() {
5582
- this.prefillConfiguration$.pipe(take(1)).subscribe(prefill => {
5583
- if (prefill) {
5584
- PatchZaakPropertyOptions.forEach(property => {
5585
- if (!!prefill[property])
5586
- this.addProperty(property);
5587
- });
5913
+ groupTriggerFor(property) {
5914
+ for (const [trigger, followers] of Object.entries(this.LINKED_FIELD_GROUPS)) {
5915
+ if (this.GROUP_TRIGGERS.has(trigger) && followers[0] === property) {
5916
+ return trigger;
5588
5917
  }
5589
- });
5918
+ }
5919
+ return null;
5920
+ }
5921
+ prefillValueFor(property, prefill) {
5922
+ return prefill != null ? (prefill[property] ?? null) : null;
5923
+ }
5924
+ translationKeyFor(property) {
5925
+ if (property === 'description')
5926
+ return 'omschrijving';
5927
+ if (property === 'caseGeometryType')
5928
+ return 'caseGeometry';
5929
+ return property;
5590
5930
  }
5591
5931
  propertyFormFieldFor(property) {
5592
5932
  return {
@@ -5596,28 +5936,55 @@ class PatchZaakConfigurationComponent {
5596
5936
  presetOptions: this.presetOptionsForProperty(property),
5597
5937
  };
5598
5938
  }
5599
- translationKeyFor(property) {
5600
- return property === 'description' ? 'omschrijving' : property;
5601
- }
5602
5939
  tooltipTranslationKeyFor(property) {
5603
- if (property.includes('Date')) {
5940
+ if (property.toLowerCase().includes('date')) {
5604
5941
  return 'dateformatTooltip';
5605
5942
  }
5606
- else if (property === this.CASE_GEOMETRY_COORDINATES) {
5607
- return `${property}Tooltip`;
5943
+ if (property === 'caseGeometryCoordinates') {
5944
+ return 'caseGeometryCoordinatesTooltip';
5608
5945
  }
5609
5946
  return null;
5610
5947
  }
5611
5948
  presetOptionsForProperty(property) {
5612
5949
  switch (property) {
5613
- case this.CASE_GEOMETRY_TYPE:
5614
- return this.geometryTypes;
5615
- case this.PAYMENT_INDICATION_TYPE:
5616
- return this.paymentIndicationTypes;
5950
+ case 'caseGeometryType':
5951
+ return GEOMETRY_TYPES;
5952
+ case 'paymentIndication':
5953
+ return PAYMENT_INDICATION_TYPES;
5954
+ case 'confidentiality':
5955
+ return CONFIDENTIALITY_TYPES;
5956
+ case 'archiveNomination':
5957
+ return ARCHIVE_NOMINATION_TYPES;
5958
+ case 'archiveStatus':
5959
+ return ARCHIVE_STATUS_TYPES;
5960
+ case 'suspensionIndication':
5961
+ return ['true', 'false'];
5617
5962
  default:
5618
5963
  return [];
5619
5964
  }
5620
5965
  }
5966
+ followersForHead(property) {
5967
+ if (this.LINKED_FIELD_GROUPS[property] && !this.GROUP_TRIGGERS.has(property)) {
5968
+ return this.LINKED_FIELD_GROUPS[property];
5969
+ }
5970
+ for (const [trigger, followers] of Object.entries(this.LINKED_FIELD_GROUPS)) {
5971
+ if (this.GROUP_TRIGGERS.has(trigger) && followers[0] === property) {
5972
+ return followers.slice(1);
5973
+ }
5974
+ }
5975
+ return [];
5976
+ }
5977
+ sortPropertyListByLabel(list, labels) {
5978
+ const propertyMap = new Map(list.map(p => [p.name, p]));
5979
+ const heads = list.filter(p => !this.isLinkedFollower(p.name));
5980
+ heads.sort((a, b) => (labels.get(a.name) ?? '').localeCompare(labels.get(b.name) ?? ''));
5981
+ return heads.flatMap(head => {
5982
+ const followers = this.followersForHead(head.name)
5983
+ .map(n => propertyMap.get(n))
5984
+ .filter((p) => !!p);
5985
+ return [head, ...followers];
5986
+ });
5987
+ }
5621
5988
  handleValid(formValue) {
5622
5989
  const isPropertyInvalid = this.propertyList.some(property => !!!formValue[property.name]);
5623
5990
  const valid = !isPropertyInvalid;
@@ -5625,23 +5992,25 @@ class PatchZaakConfigurationComponent {
5625
5992
  this.valid.emit(valid);
5626
5993
  }
5627
5994
  openSaveSubscription() {
5628
- this._saveSubscription = this.save$?.subscribe(save => {
5995
+ this._saveSubscription = this.save$?.subscribe(() => {
5629
5996
  combineLatest([this._formValue$, this._valid$])
5630
5997
  .pipe(take(1))
5631
5998
  .subscribe(([formValue, valid]) => {
5632
5999
  if (valid) {
5633
- this.configuration.emit(formValue);
6000
+ const payload = {};
6001
+ this.propertyList.forEach(property => (payload[property.name] = formValue[property.name]));
6002
+ this.configuration.emit(payload);
5634
6003
  }
5635
6004
  });
5636
6005
  });
5637
6006
  }
5638
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: PatchZaakConfigurationComponent, deps: [{ token: i1$3.IconService }], target: i0.ɵɵFactoryTarget.Component }); }
5639
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: PatchZaakConfigurationComponent, isStandalone: false, selector: "valtimo-patch-zaak-configuration", inputs: { disabled$: "disabled$", pluginId: "pluginId", save$: "save$", prefillConfiguration$: "prefillConfiguration$" }, outputs: { valid: "valid", configuration: "configuration" }, ngImport: i0, template: "<ng-container\n *ngIf=\"{\n disabled: disabled$ | async,\n prefill: prefillConfiguration$ ? (prefillConfiguration$ | async) : null,\n } as obs\"\n>\n <v-paragraph [margin]=\"true\" [italic]=\"true\">\n {{ 'patchZaakInformation' | pluginTranslate: pluginId | async }}\n </v-paragraph>\n\n <div class=\"row\">\n <div class=\"col-12\">\n <v-overflow-menu placement=\"bottom-start\" class=\"add-button\">\n <button overflowTrigger cdsButton=\"primary\" [size]=\"'md'\">\n {{ 'addPatchZaakProperty' | pluginTranslate: pluginId | async }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n\n @for (propertyOption of propertyOptions; track propertyOption) {\n @if (propertyOption !== CASE_GEOMETRY_COORDINATES) {\n <v-overflow-menu-option\n *ngIf=\"!hasPropertyBeenAdded(propertyOption)\"\n (selected)=\"addProperty(propertyOption)\"\n >\n {{ translationKeyForPropertyList(propertyOption) | pluginTranslate: pluginId | async }}\n </v-overflow-menu-option>\n }\n }\n </v-overflow-menu>\n </div>\n </div>\n\n <v-form (valueChange)=\"onFormValueChanged($event)\">\n @for (property of propertyList; track property) {\n <div class=\"row\">\n <div class=\"col-11\">\n <v-input\n [name]=\"property.name\"\n [title]=\"property.translationKey | pluginTranslate: pluginId | async\"\n [tooltip]=\"\n property.tooltipTranslationKey !== null\n ? (property.tooltipTranslationKey | pluginTranslate: pluginId | async)\n : null\n \"\n [required]=\"true\"\n [defaultValue]=\"prefillValueFor(property.name, obs.prefill)\"\n [margin]=\"true\"\n [presetOptions]=\"property.presetOptions\"\n (valueChange)=\"onPropertyChanged(property.name, $event)\"\n />\n </div>\n <div class=\"col-1\">\n @if (property.name !== CASE_GEOMETRY_COORDINATES) {\n <button class=\"btn btn-space delete-button\" (click)=\"removeProperty(property.name)\">\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n }\n </div>\n </div>\n }\n </v-form>\n</ng-container>\n\n", styles: ["button.delete-button{height:46px;width:46px;margin-top:20px}button.delete-button:hover{background-color:#e12717}button.add-button{margin-block-end:var(--v-input-margin)}\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: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$2.FormComponent, selector: "v-form", inputs: ["className"], outputs: ["valueChange"] }, { kind: "component", type: i2$2.InputComponent, selector: "v-input", inputs: ["name", "type", "title", "titleTranslationKey", "defaultValue", "widthPx", "fullWidth", "margin", "smallMargin", "disabled", "step", "min", "maxLength", "tooltip", "required", "hideNumberSpinBox", "smallLabel", "rows", "clear$", "carbonTheme", "placeholder", "dataTestId", "trim", "presetsTitle", "presetOptions"], outputs: ["valueChange"] }, { kind: "component", type: i2$2.ParagraphComponent, selector: "v-paragraph", inputs: ["center", "fullWidth", "margin", "italic", "loading", "dataTestId"] }, { kind: "directive", type: i1$3.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "component", type: i2$2.OverflowMenuComponent, selector: "v-overflow-menu", inputs: ["open", "placement", "menuWidth", "offsetX", "offsetY", "closeOnSelect", "useHostAsReference", "portalToBody"], outputs: ["openChange"] }, { kind: "component", type: i2$2.OverflowMenuOptionComponent, selector: "v-overflow-menu-option", inputs: ["disabled", "type", "testId", "optionId"], outputs: ["selected"] }, { kind: "directive", type: i1$3.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: PluginTranslatePipe, name: "pluginTranslate" }] }); }
6007
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: PatchZaakConfigurationComponent, deps: [{ token: i1$3.IconService }, { token: PluginTranslatePipe }], target: i0.ɵɵFactoryTarget.Component }); }
6008
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: PatchZaakConfigurationComponent, isStandalone: false, selector: "valtimo-patch-zaak-configuration", inputs: { disabled$: "disabled$", pluginId: "pluginId", save$: "save$", prefillConfiguration$: "prefillConfiguration$" }, outputs: { valid: "valid", configuration: "configuration" }, providers: [PluginTranslatePipe], ngImport: i0, template: "<ng-container\n *ngIf=\"{\n disabled: disabled$ | async,\n prefill: prefillConfiguration$ ? (prefillConfiguration$ | async) : null,\n } as obs\"\n>\n <v-paragraph [margin]=\"true\" [italic]=\"true\">\n {{ 'patchZaakInformation' | pluginTranslate: pluginId | async }}\n </v-paragraph>\n\n <div class=\"row\">\n <div class=\"col-12\">\n <v-overflow-menu placement=\"bottom-start\" class=\"add-button\">\n <button overflowTrigger cdsButton=\"primary\" [size]=\"'md'\">\n {{ 'addPatchZaakProperty' | pluginTranslate: pluginId | async }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n\n @for (propertyOption of sortedMenuPropertyOptions$ | async; track propertyOption) {\n @if (!hasPropertyBeenAdded(propertyOption)) {\n <v-overflow-menu-option (selected)=\"addProperty(propertyOption)\">\n {{ translationKeyFor(propertyOption) | pluginTranslate: pluginId | async }}\n </v-overflow-menu-option>\n }\n }\n </v-overflow-menu>\n </div>\n </div>\n\n <v-form (valueChange)=\"onFormValueChanged($event)\">\n @for (group of (sortedPropertyListGroups$ | async) ?? []; track group[0].name) {\n <div [class.property-group]=\"group.length > 1\">\n @for (property of group; track property.name) {\n <div class=\"row\">\n <div class=\"col-11\">\n <v-input\n [name]=\"property.name\"\n [title]=\"property.translationKey | pluginTranslate: pluginId | async\"\n [tooltip]=\"\n property.tooltipTranslationKey !== null\n ? (property.tooltipTranslationKey | pluginTranslate: pluginId | async)\n : null\n \"\n [required]=\"true\"\n [defaultValue]=\"prefillValueFor(property.name, obs.prefill)\"\n [margin]=\"true\"\n [presetOptions]=\"property.presetOptions\"\n (valueChange)=\"onPropertyChanged(property.name, $event)\"\n />\n </div>\n <div class=\"col-1\">\n @if (!isLinkedFollower(property.name)) {\n <button\n class=\"btn btn-space delete-button\"\n (click)=\"removeProperty(groupTriggerFor(property.name) ?? property.name)\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n }\n </div>\n </div>\n }\n </div>\n }\n </v-form>\n</ng-container>\n", styles: [".property-group{background:var(--cds-layer-02);padding:1rem;margin-block-end:var(--v-input-margin)}:host ::ng-deep .property-group>.row:last-child .v-input--margin{margin-block-end:0}:host ::ng-deep .property-group .cds--text-input,:host ::ng-deep .property-group .cds--list-box__field{background-color:#fff}button.delete-button{height:46px;width:46px;margin-top:20px}button.delete-button:hover{background-color:#e12717}.property-group button.delete-button{background-color:#fff}.property-group button.delete-button:hover{background-color:#e12717}.add-button{margin-block-end:var(--v-input-margin)}\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: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$2.FormComponent, selector: "v-form", inputs: ["className"], outputs: ["valueChange"] }, { kind: "component", type: i2$2.InputComponent, selector: "v-input", inputs: ["name", "type", "title", "titleTranslationKey", "defaultValue", "widthPx", "fullWidth", "margin", "smallMargin", "disabled", "step", "min", "maxLength", "tooltip", "required", "hideNumberSpinBox", "smallLabel", "rows", "clear$", "carbonTheme", "placeholder", "dataTestId", "trim", "presetsTitle", "presetOptions"], outputs: ["valueChange"] }, { kind: "component", type: i2$2.ParagraphComponent, selector: "v-paragraph", inputs: ["center", "fullWidth", "margin", "italic", "loading", "dataTestId"] }, { kind: "directive", type: i1$3.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "component", type: i2$2.OverflowMenuComponent, selector: "v-overflow-menu", inputs: ["open", "placement", "menuWidth", "offsetX", "offsetY", "closeOnSelect", "useHostAsReference", "portalToBody"], outputs: ["openChange"] }, { kind: "component", type: i2$2.OverflowMenuOptionComponent, selector: "v-overflow-menu-option", inputs: ["disabled", "type", "testId", "optionId"], outputs: ["selected"] }, { kind: "directive", type: i1$3.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: PluginTranslatePipe, name: "pluginTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
5640
6009
  }
5641
6010
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: PatchZaakConfigurationComponent, decorators: [{
5642
6011
  type: Component,
5643
- args: [{ standalone: false, selector: 'valtimo-patch-zaak-configuration', template: "<ng-container\n *ngIf=\"{\n disabled: disabled$ | async,\n prefill: prefillConfiguration$ ? (prefillConfiguration$ | async) : null,\n } as obs\"\n>\n <v-paragraph [margin]=\"true\" [italic]=\"true\">\n {{ 'patchZaakInformation' | pluginTranslate: pluginId | async }}\n </v-paragraph>\n\n <div class=\"row\">\n <div class=\"col-12\">\n <v-overflow-menu placement=\"bottom-start\" class=\"add-button\">\n <button overflowTrigger cdsButton=\"primary\" [size]=\"'md'\">\n {{ 'addPatchZaakProperty' | pluginTranslate: pluginId | async }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n\n @for (propertyOption of propertyOptions; track propertyOption) {\n @if (propertyOption !== CASE_GEOMETRY_COORDINATES) {\n <v-overflow-menu-option\n *ngIf=\"!hasPropertyBeenAdded(propertyOption)\"\n (selected)=\"addProperty(propertyOption)\"\n >\n {{ translationKeyForPropertyList(propertyOption) | pluginTranslate: pluginId | async }}\n </v-overflow-menu-option>\n }\n }\n </v-overflow-menu>\n </div>\n </div>\n\n <v-form (valueChange)=\"onFormValueChanged($event)\">\n @for (property of propertyList; track property) {\n <div class=\"row\">\n <div class=\"col-11\">\n <v-input\n [name]=\"property.name\"\n [title]=\"property.translationKey | pluginTranslate: pluginId | async\"\n [tooltip]=\"\n property.tooltipTranslationKey !== null\n ? (property.tooltipTranslationKey | pluginTranslate: pluginId | async)\n : null\n \"\n [required]=\"true\"\n [defaultValue]=\"prefillValueFor(property.name, obs.prefill)\"\n [margin]=\"true\"\n [presetOptions]=\"property.presetOptions\"\n (valueChange)=\"onPropertyChanged(property.name, $event)\"\n />\n </div>\n <div class=\"col-1\">\n @if (property.name !== CASE_GEOMETRY_COORDINATES) {\n <button class=\"btn btn-space delete-button\" (click)=\"removeProperty(property.name)\">\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n }\n </div>\n </div>\n }\n </v-form>\n</ng-container>\n\n", styles: ["button.delete-button{height:46px;width:46px;margin-top:20px}button.delete-button:hover{background-color:#e12717}button.add-button{margin-block-end:var(--v-input-margin)}\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"] }]
5644
- }], ctorParameters: () => [{ type: i1$3.IconService }], propDecorators: { disabled$: [{
6012
+ args: [{ standalone: false, selector: 'valtimo-patch-zaak-configuration', providers: [PluginTranslatePipe], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container\n *ngIf=\"{\n disabled: disabled$ | async,\n prefill: prefillConfiguration$ ? (prefillConfiguration$ | async) : null,\n } as obs\"\n>\n <v-paragraph [margin]=\"true\" [italic]=\"true\">\n {{ 'patchZaakInformation' | pluginTranslate: pluginId | async }}\n </v-paragraph>\n\n <div class=\"row\">\n <div class=\"col-12\">\n <v-overflow-menu placement=\"bottom-start\" class=\"add-button\">\n <button overflowTrigger cdsButton=\"primary\" [size]=\"'md'\">\n {{ 'addPatchZaakProperty' | pluginTranslate: pluginId | async }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n\n @for (propertyOption of sortedMenuPropertyOptions$ | async; track propertyOption) {\n @if (!hasPropertyBeenAdded(propertyOption)) {\n <v-overflow-menu-option (selected)=\"addProperty(propertyOption)\">\n {{ translationKeyFor(propertyOption) | pluginTranslate: pluginId | async }}\n </v-overflow-menu-option>\n }\n }\n </v-overflow-menu>\n </div>\n </div>\n\n <v-form (valueChange)=\"onFormValueChanged($event)\">\n @for (group of (sortedPropertyListGroups$ | async) ?? []; track group[0].name) {\n <div [class.property-group]=\"group.length > 1\">\n @for (property of group; track property.name) {\n <div class=\"row\">\n <div class=\"col-11\">\n <v-input\n [name]=\"property.name\"\n [title]=\"property.translationKey | pluginTranslate: pluginId | async\"\n [tooltip]=\"\n property.tooltipTranslationKey !== null\n ? (property.tooltipTranslationKey | pluginTranslate: pluginId | async)\n : null\n \"\n [required]=\"true\"\n [defaultValue]=\"prefillValueFor(property.name, obs.prefill)\"\n [margin]=\"true\"\n [presetOptions]=\"property.presetOptions\"\n (valueChange)=\"onPropertyChanged(property.name, $event)\"\n />\n </div>\n <div class=\"col-1\">\n @if (!isLinkedFollower(property.name)) {\n <button\n class=\"btn btn-space delete-button\"\n (click)=\"removeProperty(groupTriggerFor(property.name) ?? property.name)\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n }\n </div>\n </div>\n }\n </div>\n }\n </v-form>\n</ng-container>\n", styles: [".property-group{background:var(--cds-layer-02);padding:1rem;margin-block-end:var(--v-input-margin)}:host ::ng-deep .property-group>.row:last-child .v-input--margin{margin-block-end:0}:host ::ng-deep .property-group .cds--text-input,:host ::ng-deep .property-group .cds--list-box__field{background-color:#fff}button.delete-button{height:46px;width:46px;margin-top:20px}button.delete-button:hover{background-color:#e12717}.property-group button.delete-button{background-color:#fff}.property-group button.delete-button:hover{background-color:#e12717}.add-button{margin-block-end:var(--v-input-margin)}\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"] }]
6013
+ }], ctorParameters: () => [{ type: i1$3.IconService }, { type: PluginTranslatePipe }], propDecorators: { disabled$: [{
5645
6014
  type: Input
5646
6015
  }], pluginId: [{
5647
6016
  type: Input
@@ -6546,6 +6915,30 @@ const zakenApiPluginSpecification = {
6546
6915
  mainCase: 'Hoofdzaak',
6547
6916
  archiveActionDate: 'Archief actiedatum',
6548
6917
  startDateRetentionPeriod: 'Startdatum bewaartermijn',
6918
+ identification: 'Identificatie (zaak)',
6919
+ registrationDate: 'Registratiedatum',
6920
+ confidentiality: 'Vertrouwelijkheid',
6921
+ productsAndServices: 'Producten of diensten (JSON)',
6922
+ selectionListClass: 'Selectielijstklasse',
6923
+ verlenging: 'Verlenging',
6924
+ extensionReason: 'Verlengingsreden',
6925
+ extensionDuration: 'Verlengingsduur',
6926
+ opschorting: 'Opschorting',
6927
+ suspensionIndication: 'Opschorting indicatie',
6928
+ suspensionReason: 'Opschorting reden',
6929
+ relevantOtherCases: 'Relevante andere zaken (JSON)',
6930
+ relatedCases: 'Gerelateerde zaken (JSON)',
6931
+ characteristics: 'Kenmerken (JSON)',
6932
+ archiveNomination: 'Archiefnominatie',
6933
+ archiveStatus: 'Archiefstatus',
6934
+ commissioningOrganisation: 'Opdrachtgevende organisatie',
6935
+ processObjectCategory: 'Processobjectaard',
6936
+ processObject: 'Processobject',
6937
+ processObjectDateAttribute: 'Processobject datumkenmerk',
6938
+ processObjectIdentification: 'Processobject identificatie',
6939
+ processObjectObjectType: 'Processobject objecttype',
6940
+ processObjectRegistration: 'Processobject registratie',
6941
+ lastOpenedDate: 'Laatste geopend datum',
6549
6942
  zaakObjectObjectUrl: 'Object URL',
6550
6943
  zaakObjectObjectUrlTooltip: 'URL-referentie naar de resource die het OBJECT beschrijft.',
6551
6944
  objectType: 'Object Type',
@@ -6745,6 +7138,30 @@ const zakenApiPluginSpecification = {
6745
7138
  mainCase: 'Main case',
6746
7139
  archiveActionDate: 'Archive action date',
6747
7140
  startDateRetentionPeriod: 'Start date of retention period',
7141
+ identification: 'Identification (zaak)',
7142
+ registrationDate: 'Registration date',
7143
+ confidentiality: 'Confidentiality',
7144
+ productsAndServices: 'Products and services (JSON)',
7145
+ selectionListClass: 'Selection list class',
7146
+ verlenging: 'Extension',
7147
+ extensionReason: 'Extension reason',
7148
+ extensionDuration: 'Extension duration',
7149
+ opschorting: 'Suspension',
7150
+ suspensionIndication: 'Suspension indication',
7151
+ suspensionReason: 'Suspension reason',
7152
+ relevantOtherCases: 'Relevant other cases (JSON)',
7153
+ relatedCases: 'Related cases (JSON)',
7154
+ characteristics: 'Characteristics (JSON)',
7155
+ archiveNomination: 'Archive nomination',
7156
+ archiveStatus: 'Archive status',
7157
+ commissioningOrganisation: 'Commissioning organisation',
7158
+ processObjectCategory: 'Process object category',
7159
+ processObject: 'Process object',
7160
+ processObjectDateAttribute: 'Process object date attribute',
7161
+ processObjectIdentification: 'Process object identification',
7162
+ processObjectObjectType: 'Process object type',
7163
+ processObjectRegistration: 'Process object registration',
7164
+ lastOpenedDate: 'Last opened date',
6748
7165
  zaakObjectObjectUrl: 'Object URL',
6749
7166
  zaakObjectObjectUrlTooltip: 'URL reference to the resource that describes the OBJECT.',
6750
7167
  objectType: 'Object Type',