@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.
- package/fesm2022/valtimo-plugin.mjs +516 -99
- package/fesm2022/valtimo-plugin.mjs.map +1 -1
- package/lib/plugins/zaken-api/components/create-zaak/create-zaak-configuration.component.d.ts +22 -13
- package/lib/plugins/zaken-api/components/create-zaak/create-zaak-configuration.component.d.ts.map +1 -1
- package/lib/plugins/zaken-api/components/patch-zaak/patch-zaak-configuration.component.d.ts +23 -16
- package/lib/plugins/zaken-api/components/patch-zaak/patch-zaak-configuration.component.d.ts.map +1 -1
- package/lib/plugins/zaken-api/models/archive-nomination-types.d.ts +2 -0
- package/lib/plugins/zaken-api/models/archive-nomination-types.d.ts.map +1 -0
- package/lib/plugins/zaken-api/models/archive-status-types.d.ts +2 -0
- package/lib/plugins/zaken-api/models/archive-status-types.d.ts.map +1 -0
- package/lib/plugins/zaken-api/models/confidentiality-types.d.ts +2 -0
- package/lib/plugins/zaken-api/models/confidentiality-types.d.ts.map +1 -0
- package/lib/plugins/zaken-api/models/config.d.ts +61 -14
- package/lib/plugins/zaken-api/models/config.d.ts.map +1 -1
- package/lib/plugins/zaken-api/models/create-zaak-properties.d.ts +1 -1
- package/lib/plugins/zaken-api/models/create-zaak-properties.d.ts.map +1 -1
- package/lib/plugins/zaken-api/models/patch-zaak-properties.d.ts +1 -1
- package/lib/plugins/zaken-api/models/patch-zaak-properties.d.ts.map +1 -1
- package/lib/plugins/zaken-api/models/payment-indication-types.d.ts.map +1 -1
- package/lib/plugins/zaken-api/zaken-api-plugin.specification.d.ts.map +1 -1
- 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-
|
|
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
|
-
'
|
|
4479
|
+
'extensionDuration',
|
|
4480
|
+
'extensionReason',
|
|
4470
4481
|
'finalDeliveryDate',
|
|
4471
|
-
'
|
|
4472
|
-
'
|
|
4473
|
-
'
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
4607
|
-
|
|
4608
|
-
|
|
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
|
-
|
|
4611
|
-
|
|
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
|
-
|
|
4616
|
-
|
|
4617
|
-
|
|
4618
|
-
|
|
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
|
-
|
|
4621
|
-
|
|
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
|
-
|
|
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.
|
|
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-
|
|
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
|
-
'
|
|
5487
|
-
'
|
|
5743
|
+
'extensionDuration',
|
|
5744
|
+
'extensionReason',
|
|
5488
5745
|
'finalDeliveryDate',
|
|
5489
|
-
'
|
|
5490
|
-
'
|
|
5491
|
-
'communicationChannelName',
|
|
5492
|
-
'paymentIndication',
|
|
5746
|
+
'identification',
|
|
5747
|
+
'lastOpenedDate',
|
|
5493
5748
|
'lastPaymentDate',
|
|
5494
|
-
'caseGeometryType',
|
|
5495
|
-
'caseGeometryCoordinates',
|
|
5496
5749
|
'mainCase',
|
|
5497
|
-
'
|
|
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.
|
|
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.
|
|
5524
|
-
this.
|
|
5525
|
-
this.
|
|
5526
|
-
|
|
5527
|
-
|
|
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.
|
|
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
|
-
|
|
5547
|
-
|
|
5548
|
-
formValue
|
|
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.
|
|
5554
|
-
|
|
5555
|
-
|
|
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
|
-
|
|
5558
|
-
if (
|
|
5559
|
-
this.addProperty(
|
|
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.
|
|
5564
|
-
|
|
5565
|
-
|
|
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
|
-
|
|
5568
|
-
if (
|
|
5569
|
-
this.removeProperty(
|
|
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
|
-
|
|
5576
|
-
|
|
5577
|
-
|
|
5578
|
-
|
|
5579
|
-
|
|
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
|
-
|
|
5582
|
-
this.
|
|
5583
|
-
if (
|
|
5584
|
-
|
|
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('
|
|
5940
|
+
if (property.toLowerCase().includes('date')) {
|
|
5604
5941
|
return 'dateformatTooltip';
|
|
5605
5942
|
}
|
|
5606
|
-
|
|
5607
|
-
return
|
|
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
|
|
5614
|
-
return
|
|
5615
|
-
case
|
|
5616
|
-
return
|
|
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(
|
|
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
|
-
|
|
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
|
|
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
|
|
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',
|