@valtimo/layout 13.2.1 → 13.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/img/emptystate-empty.svg +0 -0
- package/assets/img/emptystate-error.svg +0 -0
- package/assets/img/emptystate-error404.svg +0 -0
- package/assets/img/emptystate-no-result.svg +0 -0
- package/assets/img/emptystate-not-authorised.svg +0 -0
- package/assets/img/emptystate-success.svg +0 -0
- package/fesm2022/valtimo-layout.mjs +1053 -501
- package/fesm2022/valtimo-layout.mjs.map +1 -1
- package/lib/components/index.d.ts +1 -0
- package/lib/components/index.d.ts.map +1 -1
- package/lib/components/widget-container/widget-container.component.d.ts +4 -0
- package/lib/components/widget-container/widget-container.component.d.ts.map +1 -1
- package/lib/components/widget-custom/widget-custom.component.d.ts +1 -1
- package/lib/components/widget-custom/widget-custom.component.d.ts.map +1 -1
- package/lib/components/widget-field/widget-field.component.d.ts +4 -2
- package/lib/components/widget-field/widget-field.component.d.ts.map +1 -1
- package/lib/components/widget-formio/widget-formio.component.d.ts +11 -3
- package/lib/components/widget-formio/widget-formio.component.d.ts.map +1 -1
- package/lib/components/widget-interactive-table/index.d.ts +2 -0
- package/lib/components/widget-interactive-table/index.d.ts.map +1 -0
- package/lib/components/widget-interactive-table/widget-interactive-table.component.d.ts +37 -0
- package/lib/components/widget-interactive-table/widget-interactive-table.component.d.ts.map +1 -0
- package/lib/components/widget-management/management/widget-management.component.d.ts +8 -2
- package/lib/components/widget-management/management/widget-management.component.d.ts.map +1 -1
- package/lib/components/widget-management/management-content/fields/widget-management-fields.component.d.ts +2 -0
- package/lib/components/widget-management/management-content/fields/widget-management-fields.component.d.ts.map +1 -1
- package/lib/components/widget-management/management-content/interactive-table/widget-management-interactive-table.component.d.ts +30 -0
- package/lib/components/widget-management/management-content/interactive-table/widget-management-interactive-table.component.d.ts.map +1 -0
- package/lib/components/widget-management/management-content/table/widget-management-table.component.d.ts +3 -2
- package/lib/components/widget-management/management-content/table/widget-management-table.component.d.ts.map +1 -1
- package/lib/components/widget-management/management-editor/widget-management-editor.component.d.ts +14 -4
- package/lib/components/widget-management/management-editor/widget-management-editor.component.d.ts.map +1 -1
- package/lib/components/widget-management/management-wizard/steps/widget-wizard-content-step/widget-wizard-content-step.component.d.ts +2 -1
- package/lib/components/widget-management/management-wizard/steps/widget-wizard-content-step/widget-wizard-content-step.component.d.ts.map +1 -1
- package/lib/components/widget-management/management-wizard/widget-management-wizard.component.d.ts +28 -9
- package/lib/components/widget-management/management-wizard/widget-management-wizard.component.d.ts.map +1 -1
- package/lib/constants/widget.constants.d.ts.map +1 -1
- package/lib/interfaces/widget-content-component.interface.d.ts +1 -0
- package/lib/interfaces/widget-content-component.interface.d.ts.map +1 -1
- package/lib/layout.module.d.ts +2 -1
- package/lib/layout.module.d.ts.map +1 -1
- package/lib/models/widget-content.model.d.ts +7 -3
- package/lib/models/widget-content.model.d.ts.map +1 -1
- package/lib/models/widget-editor.model.d.ts.map +1 -1
- package/lib/models/widget-wizard.model.d.ts +7 -2
- package/lib/models/widget-wizard.model.d.ts.map +1 -1
- package/lib/models/widget.model.d.ts +15 -4
- package/lib/models/widget.model.d.ts.map +1 -1
- package/lib/services/index.d.ts +0 -1
- package/lib/services/index.d.ts.map +1 -1
- package/lib/services/widget-layout.service.d.ts +1 -1
- package/lib/services/widget-layout.service.d.ts.map +1 -1
- package/lib/services/widget-wizard.service.d.ts +9 -1
- package/lib/services/widget-wizard.service.d.ts.map +1 -1
- package/package.json +1 -1
- package/public_api.d.ts +1 -0
- package/public_api.d.ts.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"valtimo-layout.mjs","sources":["../../../../projects/valtimo/layout/src/lib/services/layout.service.ts","../../../../projects/valtimo/layout/src/lib/constants/custom-widget-token.ts","../../../../projects/valtimo/layout/src/lib/models/widget-content.model.ts","../../../../projects/valtimo/layout/src/lib/models/widget-display.model.ts","../../../../projects/valtimo/layout/src/lib/models/widget.model.ts","../../../../projects/valtimo/layout/src/lib/models/widget-editor.model.ts","../../../../projects/valtimo/layout/src/lib/components/widget-management/management-content/fields/column/widget-management-fields-column.component.ts","../../../../projects/valtimo/layout/src/lib/components/widget-management/management-content/fields/column/widget-management-fields-column.component.html","../../../../projects/valtimo/layout/src/lib/components/widget-management/management-content/fields/widget-management-fields.component.ts","../../../../projects/valtimo/layout/src/lib/components/widget-management/management-content/fields/widget-management-fields.component.html","../../../../projects/valtimo/layout/src/lib/components/widget-management/management-content/table/widget-management-table.component.ts","../../../../projects/valtimo/layout/src/lib/components/widget-management/management-content/table/widget-management-table.component.html","../../../../projects/valtimo/layout/src/lib/components/widget-management/management-content/collection/widget-management-collection.component.ts","../../../../projects/valtimo/layout/src/lib/components/widget-management/management-content/collection/widget-management-collection.component.html","../../../../projects/valtimo/layout/src/lib/components/widget-management/management-content/custom/widget-management-custom.component.ts","../../../../projects/valtimo/layout/src/lib/components/widget-management/management-content/custom/widget-management-custom.component.html","../../../../projects/valtimo/layout/src/lib/components/widget-management/management-content/index.ts","../../../../projects/valtimo/layout/src/lib/models/widget-wizard.model.ts","../../../../projects/valtimo/layout/src/lib/models/index.ts","../../../../projects/valtimo/layout/src/lib/components/layout-public/layout-public.component.ts","../../../../projects/valtimo/layout/src/lib/components/layout-public/layout-public.component.html","../../../../projects/valtimo/layout/src/lib/components/layout-internal/layout-internal.component.ts","../../../../projects/valtimo/layout/src/lib/components/layout-internal/layout-internal.component.html","../../../../projects/valtimo/layout/src/lib/components/layout/layout.component.ts","../../../../projects/valtimo/layout/src/lib/components/layout/layout.component.html","../../../../projects/valtimo/layout/src/lib/components/layout/index.ts","../../../../projects/valtimo/layout/src/lib/components/layout-internal/index.ts","../../../../projects/valtimo/layout/src/lib/components/layout-public/index.ts","../../../../projects/valtimo/layout/src/lib/components/widget-field/widget-field.component.ts","../../../../projects/valtimo/layout/src/lib/components/widget-field/widget-field.component.html","../../../../projects/valtimo/layout/src/lib/components/widget-field/index.ts","../../../../projects/valtimo/layout/src/lib/components/translation-management/translation-management.component.ts","../../../../projects/valtimo/layout/src/lib/components/translation-management/translation-management.component.html","../../../../projects/valtimo/layout/src/lib/components/translation-management/index.ts","../../../../projects/valtimo/layout/src/lib/components/widget-formio/widget-formio.component.ts","../../../../projects/valtimo/layout/src/lib/components/widget-formio/widget-formio.component.html","../../../../projects/valtimo/layout/src/lib/components/widget-formio/index.ts","../../../../projects/valtimo/layout/src/lib/components/widget-collection/widget-collection.component.ts","../../../../projects/valtimo/layout/src/lib/components/widget-collection/widget-collection.component.html","../../../../projects/valtimo/layout/src/lib/components/widget-collection/index.ts","../../../../projects/valtimo/layout/src/lib/components/widget-table/widget-table.component.ts","../../../../projects/valtimo/layout/src/lib/components/widget-table/widget-table.component.html","../../../../projects/valtimo/layout/src/lib/components/widget-table/index.ts","../../../../projects/valtimo/layout/src/lib/components/widget-custom/widget-custom.component.ts","../../../../projects/valtimo/layout/src/lib/components/widget-custom/widget-custom.component.html","../../../../projects/valtimo/layout/src/lib/components/widget-custom/index.ts","../../../../projects/valtimo/layout/src/lib/components/widget-block/widget-block.component.ts","../../../../projects/valtimo/layout/src/lib/components/widget-block/widget-block.component.html","../../../../projects/valtimo/layout/src/lib/components/widget-block/index.ts","../../../../projects/valtimo/layout/src/lib/components/widget-container/widget-container.component.ts","../../../../projects/valtimo/layout/src/lib/components/widget-container/widget-container.component.html","../../../../projects/valtimo/layout/src/lib/components/widget-container/index.ts","../../../../projects/valtimo/layout/src/lib/components/widget-management/management-wizard/steps/widget-wizard-content-step/widget-wizard-content-step.component.ts","../../../../projects/valtimo/layout/src/lib/components/widget-management/management-wizard/steps/widget-wizard-content-step/widget-wizard-content-step.component.html","../../../../projects/valtimo/layout/src/lib/components/widget-management/management-wizard/steps/widget-wizard-style-step/widget-wizard-style-step.component.ts","../../../../projects/valtimo/layout/src/lib/components/widget-management/management-wizard/steps/widget-wizard-style-step/widget-wizard-style-step.component.html","../../../../projects/valtimo/layout/src/lib/components/widget-management/management-wizard/steps/widget-wizard-type-step/widget-wizard-type-step.component.ts","../../../../projects/valtimo/layout/src/lib/components/widget-management/management-wizard/steps/widget-wizard-type-step/widget-wizard-type-step.component.html","../../../../projects/valtimo/layout/src/lib/components/widget-management/management-wizard/steps/widget-wizard-width-step/widget-wizard-width-step.component.ts","../../../../projects/valtimo/layout/src/lib/components/widget-management/management-wizard/steps/widget-wizard-width-step/widget-wizard-width-step.component.html","../../../../projects/valtimo/layout/src/lib/components/widget-management/management-wizard/steps/index.ts","../../../../projects/valtimo/layout/src/lib/components/widget-management/management-wizard/widget-management-wizard.component.ts","../../../../projects/valtimo/layout/src/lib/components/widget-management/management-wizard/widget-management-wizard.component.html","../../../../projects/valtimo/layout/src/lib/components/widget-management/management-editor/widget-management-editor.component.ts","../../../../projects/valtimo/layout/src/lib/components/widget-management/management-editor/widget-management-editor.component.html","../../../../projects/valtimo/layout/src/lib/components/widget-management/management/widget-management.component.ts","../../../../projects/valtimo/layout/src/lib/components/widget-management/management/widget-management.component.html","../../../../projects/valtimo/layout/src/lib/components/widget-management/index.ts","../../../../projects/valtimo/layout/src/lib/components/index.ts","../../../../projects/valtimo/layout/src/lib/constants/widget.constants.ts","../../../../projects/valtimo/layout/src/lib/constants/widget-management.constants.ts","../../../../projects/valtimo/layout/src/lib/constants/index.ts","../../../../projects/valtimo/layout/src/lib/services/widget-layout.service.ts","../../../../projects/valtimo/layout/src/lib/services/widget-fields.service.ts","../../../../projects/valtimo/layout/src/lib/services/widget-wizard.service.ts","../../../../projects/valtimo/layout/src/lib/services/index.ts","../../../../projects/valtimo/layout/src/lib/layout.module.ts","../../../../projects/valtimo/layout/src/lib/translation-management-routing.module.ts","../../../../projects/valtimo/layout/src/lib/translation-management.module.ts","../../../../projects/valtimo/layout/src/lib/interfaces/widget-content-component.interface.ts","../../../../projects/valtimo/layout/src/lib/interfaces/index.ts","../../../../projects/valtimo/layout/src/public_api.ts","../../../../projects/valtimo/layout/src/valtimo-layout.ts"],"sourcesContent":["/*\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\nimport {Injectable} from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LayoutService {\n private fullscreen = false;\n\n constructor() {}\n\n public get isFullscreen() {\n return this.fullscreen;\n }\n\n public toggleFullscreen() {\n this.fullscreen = !this.fullscreen;\n }\n}\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\nimport {InjectionToken} from '@angular/core';\nimport {CustomWidgetConfig} from '../models';\n\nconst CUSTOM_WIDGET_TOKEN = new InjectionToken<CustomWidgetConfig>(\n 'Specify a component to display per configured custom widget component key.'\n);\n\nexport {CUSTOM_WIDGET_TOKEN};\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\nimport {WidgetDisplayType} from './widget-display.model';\nimport {FieldsWidgetValue} from './widget.model';\n\ninterface WidgetFieldsContent {\n columns: FieldsWidgetValue[][];\n}\n\ntype CollectionWidgetFieldWidth = 'full' | 'half';\n\ninterface CollectionWidgetField {\n key: string;\n title: string;\n value: string;\n width: CollectionWidgetFieldWidth;\n displayProperties?: WidgetDisplayType;\n}\n\ninterface CollectionWidgetTitle {\n value: string;\n displayProperties?: WidgetDisplayType;\n}\n\ninterface WidgetCollectionContent {\n collection: string;\n defaultPageSize: number;\n title: CollectionWidgetTitle;\n fields: CollectionWidgetField[];\n}\n\ninterface CollectionWidgetResolvedField {\n key: string;\n title: string;\n value: string;\n width: CollectionWidgetFieldWidth;\n hideWhenEmpty: boolean;\n}\n\ninterface CollectionWidgetCardData {\n title: string;\n fields: {[key: string]: string};\n hidden?: boolean;\n}\n\ninterface WidgetTableContent {\n columns: FieldsWidgetValue[];\n collection: string;\n firstColumnAsTitle: boolean;\n defaultPageSize: number;\n}\n\ninterface WidgetCustomContent {\n componentKey: string;\n}\n\ninterface WidgetFormioContent {\n formDefinitionName: string;\n}\n\ntype WidgetContentProperties =\n | WidgetFieldsContent\n | WidgetTableContent\n | WidgetCustomContent\n | WidgetFormioContent\n | WidgetCollectionContent;\n\nexport {\n WidgetContentProperties,\n WidgetCustomContent,\n WidgetFieldsContent,\n WidgetFormioContent,\n WidgetTableContent,\n WidgetCollectionContent,\n CollectionWidgetField,\n CollectionWidgetFieldWidth,\n CollectionWidgetResolvedField,\n CollectionWidgetTitle,\n CollectionWidgetCardData,\n};\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\nenum WidgetDisplayTypeKey {\n TEXT = 'text',\n BOOLEAN = 'boolean',\n CURRENCY = 'currency',\n DATE = 'date',\n DATE_TIME = 'datetime',\n ENUM = 'enum',\n NUMBER = 'number',\n PERCENT = 'percent',\n LINK = 'link',\n}\n\ninterface WidgetTextDisplayType {\n type: WidgetDisplayTypeKey.TEXT;\n ellipsisCharacterLimit: number;\n hideWhenEmpty: boolean;\n}\n\ninterface WidgetBooleanDisplayType {\n type: WidgetDisplayTypeKey.BOOLEAN;\n hideWhenEmpty: boolean;\n}\n\ninterface WidgetCurrencyDisplayType {\n type: WidgetDisplayTypeKey.CURRENCY;\n currencyCode?: string;\n display?: string;\n digitsInfo?: string;\n hideWhenEmpty: boolean;\n}\n\ninterface WidgetDateDisplayType {\n type: WidgetDisplayTypeKey.DATE;\n format?: string;\n hideWhenEmpty: boolean;\n}\n\ninterface WidgetDateTimeDisplayType {\n type: WidgetDisplayTypeKey.DATE_TIME;\n format?: string;\n hideWhenEmpty: boolean;\n}\n\ninterface WidgetEnumDisplayType {\n type: WidgetDisplayTypeKey.ENUM;\n values: {\n [key: string]: string;\n };\n hideWhenEmpty: boolean;\n}\n\ninterface WidgetNumberDisplayType {\n type: WidgetDisplayTypeKey.NUMBER;\n digitsInfo?: string;\n hideWhenEmpty: boolean;\n}\n\ninterface WidgetPercentDisplayType {\n type: WidgetDisplayTypeKey.PERCENT;\n digitsInfo?: string;\n hideWhenEmpty: boolean;\n}\n\ninterface WidgetLinkDisplayType {\n type: WidgetDisplayTypeKey.LINK;\n linkText?: string;\n hideWhenEmpty: boolean;\n}\n\ntype WidgetDisplayType =\n | WidgetTextDisplayType\n | WidgetBooleanDisplayType\n | WidgetCurrencyDisplayType\n | WidgetDateDisplayType\n | WidgetDateTimeDisplayType\n | WidgetEnumDisplayType\n | WidgetNumberDisplayType\n | WidgetPercentDisplayType\n | WidgetLinkDisplayType;\n\nexport {\n WidgetBooleanDisplayType,\n WidgetCurrencyDisplayType,\n WidgetDateDisplayType,\n WidgetDateTimeDisplayType,\n WidgetDisplayType,\n WidgetDisplayTypeKey,\n WidgetEnumDisplayType,\n WidgetNumberDisplayType,\n WidgetPercentDisplayType,\n WidgetTextDisplayType,\n WidgetLinkDisplayType,\n};\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 */\nimport {Type} from '@angular/core';\nimport {\n WidgetCollectionContent,\n WidgetContentProperties,\n WidgetCustomContent,\n WidgetFieldsContent,\n WidgetTableContent,\n} from './widget-content.model';\nimport {WidgetDisplayType} from './widget-display.model';\n\nenum WidgetType {\n FIELDS = 'fields',\n TABLE = 'table',\n CUSTOM = 'custom',\n COLLECTION = 'collection',\n FORMIO = 'formio',\n}\n\ntype WidgetWidth = 1 | 2 | 3 | 4;\ntype CollectionFieldWidth = 'half' | 'full';\n\ninterface WidgetAction {\n name?: string;\n processDefinitionKey: string;\n}\n\ninterface BasicWidget {\n type: WidgetType;\n title: string;\n width: WidgetWidth;\n highContrast: boolean;\n key: string;\n properties: WidgetContentProperties;\n actions?: WidgetAction[];\n}\n\ninterface FieldsWidgetValue {\n key: string;\n title: string;\n value: string;\n ellipsisCharacterLimit?: number;\n displayProperties?: WidgetDisplayType;\n}\n\ninterface FieldsWidget extends BasicWidget {\n type: WidgetType.FIELDS;\n properties: WidgetFieldsContent;\n}\n\ninterface CollectionWidget extends BasicWidget {\n type: WidgetType.COLLECTION;\n properties: WidgetCollectionContent;\n}\n\ninterface TableWidget extends BasicWidget {\n type: WidgetType.TABLE;\n properties: WidgetTableContent;\n}\n\ninterface CustomWidget extends BasicWidget {\n type: WidgetType.CUSTOM;\n properties: WidgetCustomContent;\n}\n\ninterface FormioWidget extends BasicWidget {\n type: WidgetType.FORMIO;\n properties: {\n formDefinitionName: string;\n };\n}\n\ntype Widget = FieldsWidget | CollectionWidget | CustomWidget | TableWidget | FormioWidget;\n\ntype WidgetWithUuid = Widget & {\n uuid: string;\n};\n\ntype FormioWidgetWidgetWithUuid = FormioWidget & {\n uuid: string;\n};\n\ninterface WidgetWidthsPx {\n [uuid: string]: number;\n}\n\ninterface WidgetContentHeightsPx {\n [uuid: string]: number;\n}\n\ninterface WidgetContentHeightsPxWithContainerWidth {\n [uuid: string]: {\n containerWidth: number;\n height: number;\n };\n}\n\ninterface WidgetConfigurationBin {\n configurationKey: string;\n width: number;\n height: number;\n}\n\ninterface WidgetPackResultItem {\n width: number;\n height: number;\n x: number;\n y: number;\n item: WidgetConfigurationBin;\n}\n\ninterface WidgetPackResult {\n height: number;\n width: number;\n items: WidgetPackResultItem[];\n}\n\ninterface MaxRectsResult extends WidgetConfigurationBin {\n x: number;\n y: number;\n}\n\ninterface WidgetPackResultItemsByRow {\n [rowY: string]: WidgetPackResultItem[];\n}\n\ninterface WidgetXY {\n x: number;\n y: number;\n}\n\ninterface CustomWidgetConfig {\n [componentKey: string]: Type<any>;\n}\n\ntype WidgetComponentMap = Record<WidgetType, Type<any>>;\n\nexport {\n BasicWidget,\n Widget,\n WidgetAction,\n WidgetConfigurationBin,\n WidgetContentHeightsPx,\n WidgetContentHeightsPxWithContainerWidth,\n WidgetPackResult,\n // WidgetsRes,\n WidgetType,\n WidgetWidth,\n WidgetWidthsPx,\n WidgetWithUuid,\n WidgetXY,\n CollectionFieldWidth,\n FieldsWidget,\n FieldsWidgetValue,\n CollectionWidget,\n CustomWidgetConfig,\n CustomWidget,\n TableWidget,\n WidgetPackResultItem,\n WidgetPackResultItemsByRow,\n FormioWidgetWidgetWithUuid,\n MaxRectsResult,\n WidgetComponentMap,\n};\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\nimport {TagType} from 'carbon-components-angular';\nimport {WidgetType} from './widget.model';\n\nenum WidgetManagementTab {\n VISUAL = 'visual',\n JSON = 'json',\n}\n\nconst WidgetTypeTags: {[key: string]: TagType} = {\n [WidgetType.COLLECTION]: 'teal',\n [WidgetType.CUSTOM]: 'magenta',\n [WidgetType.FIELDS]: 'blue',\n [WidgetType.FORMIO]: 'green',\n [WidgetType.TABLE]: 'purple',\n};\n\nexport {WidgetManagementTab, WidgetTypeTags};\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 */\nimport {CommonModule} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n EventEmitter,\n HostBinding,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Signal,\n TemplateRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport {\n AbstractControl,\n FormArray,\n FormBuilder,\n FormGroup,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport {TrashCan16} from '@carbon/icons';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {\n CdsThemeService,\n CurrentCarbonTheme,\n InputLabelModule,\n ValuePathItem,\n ValuePathSelectorComponent,\n ValuePathSelectorPrefix,\n} from '@valtimo/components';\nimport {\n AccordionModule,\n ButtonModule,\n CheckboxModule,\n Dropdown,\n DropdownModule,\n IconModule,\n IconService,\n InputModule,\n ListItem,\n} from 'carbon-components-angular';\nimport {debounceTime, Observable, Subscription} from 'rxjs';\nimport {WidgetFieldsService, WidgetWizardService} from '../../../../../services';\nimport {\n FieldsWidgetValue,\n WidgetCurrencyDisplayType,\n WidgetDateDisplayType,\n WidgetDateTimeDisplayType,\n WidgetDisplayTypeKey,\n WidgetEnumDisplayType,\n WidgetNumberDisplayType,\n WidgetTextDisplayType,\n WidgetType,\n WidgetLinkDisplayType,\n} from '../../../../../models';\n\n@Component({\n selector: 'valtimo-widget-management-fields-column',\n templateUrl: './widget-management-fields-column.component.html',\n styleUrls: ['./widget-management-fields-column.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n ButtonModule,\n DropdownModule,\n InputModule,\n ReactiveFormsModule,\n IconModule,\n AccordionModule,\n InputLabelModule,\n ValuePathSelectorComponent,\n CheckboxModule,\n ],\n})\nexport class WidgetManagementFieldsColumnComponent implements OnInit, OnDestroy {\n @HostBinding('class') public readonly class = 'valtimo-widget-management-field-column';\n @Input({required: true}) public columnData: FieldsWidgetValue[];\n @Input() public addTranslateKey = 'widgetTabManagement.content.fields.add';\n @Input() public fieldWidthDropdown?: TemplateRef<Dropdown>;\n @Input() public selectedCollection?: ValuePathItem;\n @Input() public showHideWhenEmptyCheckbox = false;\n\n @Output() public columnUpdateEvent = new EventEmitter<{\n data: FieldsWidgetValue[];\n valid: boolean;\n }>();\n\n public readonly ValuePathSelectorPrefix = ValuePathSelectorPrefix;\n\n public formGroup = this.fb.group({\n rows: this.fb.array<any>([]),\n });\n\n public get formRows(): FormArray | undefined {\n if (!this.formGroup.get('rows')) return undefined;\n\n return this.formGroup.get('rows') as FormArray;\n }\n\n public displayTypeItems: ListItem[] = this.widgetFieldsService.displayTypeItems;\n\n public getDisplayItemsSelected(row: AbstractControl): ListItem[] {\n return this.widgetFieldsService.getDisplayItemsSelected(row);\n }\n\n public readonly WidgetDisplayTypeKey = WidgetDisplayTypeKey;\n public readonly $widgetType: Signal<WidgetType> = computed(\n () => this.widgetWizardService.$selectedWidget()?.type ?? WidgetType.FIELDS\n );\n public readonly $isFieldWidget: Signal<boolean> = computed(\n () => this.$widgetType() === WidgetType.FIELDS\n );\n\n public readonly inputTheme$: Observable<CurrentCarbonTheme> = this.cdsThemeService.currentTheme$;\n\n private _subscriptions = new Subscription();\n\n constructor(\n private readonly cdsThemeService: CdsThemeService,\n private readonly cdr: ChangeDetectorRef,\n private readonly fb: FormBuilder,\n private readonly iconService: IconService,\n private readonly translateService: TranslateService,\n private readonly widgetFieldsService: WidgetFieldsService,\n private readonly widgetWizardService: WidgetWizardService\n ) {\n this.iconService.register(TrashCan16);\n }\n\n public ngOnInit(): void {\n this.initForm();\n this.openFormSubscription();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n this.formGroup.reset();\n }\n\n public addField(): void {\n if (!this.formRows) return;\n\n this.formRows.push(\n this.fb.group({\n type: this.fb.control<ListItem>({content: '', selected: false}, [\n Validators.required,\n this.typeSelectValidator,\n ]),\n title: this.fb.control<string>('', Validators.required),\n content: this.fb.control<string>('', Validators.required),\n ellipsisCharacterLimit: this.fb.control<number | null>(\n null,\n Validators.pattern('[1-9][0-9]*')\n ),\n hideWhenEmpty: this.fb.control<boolean>(false),\n })\n );\n }\n\n public onDeleteRowClick(event: Event, formArray: FormArray, index: number): void {\n event.stopImmediatePropagation();\n if (!formArray) return;\n\n formArray.removeAt(index);\n }\n\n public onTypeSelected(formRow: FormGroup, event: {item: ListItem}): void {\n this.widgetFieldsService.onDisplayTypeSelected(\n ['title', 'content', 'type', 'hideWhenEmpty'],\n formRow,\n event\n );\n }\n\n public onAddEnumValueClick(valuesFormArray: FormArray): void {\n valuesFormArray.push(\n this.fb.group({\n key: this.fb.control('', Validators.required),\n value: this.fb.control('', Validators.required),\n })\n );\n }\n\n private typeSelectValidator(control: AbstractControl): null | {[key: string]: string} {\n const controlValue: ListItem | undefined = control.value;\n if (!controlValue || !controlValue.selected) return {error: 'Type is not selected'};\n\n return null;\n }\n\n private getRowForm(row: FieldsWidgetValue): FormGroup {\n return this.fb.group({\n type: this.fb.control<ListItem>(\n {\n content: this.translateService.instant(\n this.translateService.instant(\n `widgetTabManagement.content.displayType.${row.displayProperties?.type ?? WidgetDisplayTypeKey.TEXT}`\n )\n ),\n id: row.displayProperties?.type ?? WidgetDisplayTypeKey.TEXT,\n selected: true,\n },\n Validators.required\n ),\n title: this.fb.control<string>(row.title, Validators.required),\n content: this.fb.control<string>(row.value, Validators.required),\n ...((!row.displayProperties || row.displayProperties?.type === WidgetDisplayTypeKey.TEXT) && {\n ellipsisCharacterLimit: this.fb.control<number | null>(\n (row.displayProperties as WidgetTextDisplayType)?.ellipsisCharacterLimit ?? null,\n Validators.pattern('[1-9][0-9]*')\n ),\n }),\n hideWhenEmpty: this.fb.control(\n (row.displayProperties as WidgetTextDisplayType)?.hideWhenEmpty ?? false\n ),\n ...([WidgetDisplayTypeKey.NUMBER, WidgetDisplayTypeKey.PERCENT].includes(\n row.displayProperties?.type as WidgetDisplayTypeKey\n ) && {\n digitsInfo: this.fb.control<string>(\n (row.displayProperties as WidgetNumberDisplayType).digitsInfo ?? ''\n ),\n }),\n ...(row.displayProperties?.type === WidgetDisplayTypeKey.CURRENCY && {\n digitsInfo: this.fb.control<string>(\n (row.displayProperties as WidgetCurrencyDisplayType).digitsInfo ?? ''\n ),\n currencyCode: this.fb.control<string>(\n (row.displayProperties as WidgetCurrencyDisplayType).currencyCode ?? ''\n ),\n display: this.fb.control<string>(\n (row.displayProperties as WidgetCurrencyDisplayType).display ?? ''\n ),\n }),\n ...(row.displayProperties?.type === WidgetDisplayTypeKey.DATE && {\n format: this.fb.control<string>(\n (row.displayProperties as WidgetDateDisplayType).format ?? ''\n ),\n }),\n ...(row.displayProperties?.type === WidgetDisplayTypeKey.DATE_TIME && {\n format: this.fb.control<string>(\n (row.displayProperties as WidgetDateTimeDisplayType).format ?? ''\n ),\n }),\n ...(row.displayProperties?.type === WidgetDisplayTypeKey.LINK && {\n linkText: this.fb.control<string>(\n (row.displayProperties as WidgetLinkDisplayType).linkText ?? ''\n ),\n }),\n ...(row.displayProperties?.type === WidgetDisplayTypeKey.ENUM && {\n values: this.fb.array(\n Object.entries((row.displayProperties as WidgetEnumDisplayType).values).map(\n ([key, value]) =>\n this.fb.group({\n key: this.fb.control<string>(key, Validators.required),\n value: this.fb.control<string>(value as string, Validators.required),\n })\n )\n ),\n }),\n });\n }\n\n private initForm(): void {\n if (!this.columnData) {\n this.addField();\n return;\n }\n\n const rowsControl = this.formGroup.get('rows') as FormArray;\n if (!rowsControl) return;\n\n this.columnData.forEach((row: FieldsWidgetValue) => {\n rowsControl.push(this.getRowForm(row), {emitEvent: false});\n });\n\n this.columnUpdateEvent.emit({data: this.columnData, valid: true});\n this.cdr.detectChanges();\n }\n\n private openFormSubscription(): void {\n this._subscriptions.add(\n this.formRows?.valueChanges.pipe(debounceTime(100)).subscribe((rows: any) => {\n const mappedRows: FieldsWidgetValue[] = rows.map((row: any | null) => ({\n key: row.title.replace(/\\W+/g, '-').replace(/\\-$/, '').toLowerCase(),\n title: row.title,\n value: row.content,\n ...(!!row?.type.id && {\n displayProperties: {\n type: row.type.id,\n ...(!!row?.ellipsisCharacterLimit && {\n ellipsisCharacterLimit: row.ellipsisCharacterLimit,\n }),\n ...(!!row?.hideWhenEmpty && {hideWhenEmpty: row.hideWhenEmpty}),\n ...(!!row?.currencyCode && {currencyCode: row.currencyCode}),\n ...(!!row?.display && {display: row.display}),\n ...(!!row?.digitsInfo && {digitsInfo: row.digitsInfo}),\n ...(!!row?.linkText && {linkText: row.linkText}),\n ...(!!row?.format && {format: row.format}),\n ...(!!row?.values && {\n values: row.values?.reduce((acc, curr) => ({...acc, [curr.key]: curr.value}), {}),\n }),\n },\n }),\n }));\n this.columnUpdateEvent.emit({data: mappedRows, valid: this.formGroup.valid});\n })\n );\n }\n}\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<form\n *ngIf=\"inputTheme$ | async as inputTheme\"\n class=\"valtimo-widget-management-field-column\"\n [formGroup]=\"formGroup\"\n>\n <cds-accordion formArrayName=\"rows\" align=\"start\" size=\"sm\">\n @for (formRow of formRows.controls; track $index) {\n <cds-accordion-item\n [title]=\"fieldTitle\"\n [context]=\"{count: $count, index: $index, title: formRow.get('title')?.value}\"\n [expanded]=\"$index === 0\"\n class=\"valtimo-widget-management-field-column__item\"\n >\n <form [formGroup]=\"formRow\" class=\"valtimo-widget-management-field-column__container\">\n <div\n class=\"valtimo-widget-management-field-column__content\"\n [class.valtimo-widget-management-field-column__content--collection]=\"\n !!fieldWidthDropdown\n \"\n >\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.title' | translate\"\n [tooltip]=\"\n 'widgetTabManagement.content.' + $widgetType() + '.titleTooltip' | translate\n \"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"inputTheme\"\n [placeholder]=\"'widgetTabManagement.content.fields.titlePlaceholder' | translate\"\n type=\"text\"\n formControlName=\"title\"\n />\n </cds-text-label>\n\n <cds-dropdown\n [attr.data-carbon-theme]=\"inputTheme\"\n [label]=\"'widgetTabManagement.content.fields.type' | translate\"\n [dropUp]=\"false\"\n [placeholder]=\"'widgetTabManagement.content.fields.typePlaceholder' | translate\"\n (selected)=\"onTypeSelected(formRow, $event)\"\n formControlName=\"type\"\n >\n <cds-dropdown-list [items]=\"getDisplayItemsSelected(formRow)\"></cds-dropdown-list>\n </cds-dropdown>\n\n <ng-container\n *ngTemplateOutlet=\"fieldWidthDropdown; context: {index: $index}\"\n ></ng-container>\n\n <div class=\"valtimo-widget-management-field-column__path-selector\">\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.value' | translate\"\n [tooltip]=\"\n 'widgetTabManagement.content.' + $widgetType() + '.valueTooltip' | translate\n \"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"inputTheme\"\n [placeholder]=\"'widgetTabManagement.content.fields.value' | translate\"\n type=\"text\"\n formControlName=\"content\"\n />\n <!-- TODO: Implement when selector is up and parameterise -->\n <!-- <valtimo-value-path-selector\n formControlName=\"content\"\n [caseDefinitionKey]=\"params?.caseDefinitionKey\"\n [caseDefinitionVersionTag]=\"params?.caseDefinitionVersionTag\"\n [parentItem]=\"selectedCollection\"\n ></valtimo-value-path-selector> -->\n </div>\n </div>\n\n <div class=\"valtimo-widget-management-field-column__options\">\n @switch (formRow.get('type').value.id) {\n @case (WidgetDisplayTypeKey.CURRENCY) {\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.currencyCode' | translate\"\n [tooltip]=\"'widgetTabManagement.content.fields.currencyCodeTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"inputTheme\"\n [placeholder]=\"\n 'widgetTabManagement.content.fields.currencyCodePlaceholder' | translate\n \"\n type=\"text\"\n formControlName=\"currencyCode\"\n />\n </cds-text-label>\n\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.display' | translate\"\n [tooltip]=\"'widgetTabManagement.content.fields.displayTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"inputTheme\"\n [placeholder]=\"\n 'widgetTabManagement.content.fields.displayPlaceholder' | translate\n \"\n type=\"text\"\n formControlName=\"display\"\n />\n </cds-text-label>\n\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.digitsInfo' | translate\"\n tooltip=\"{{\n 'widgetTabManagement.content.fields.digitsInfoTooltip'\n | translate: {minFractionDigits: 2, maxFractionDigits: 2}\n }}\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"inputTheme\"\n [placeholder]=\"\n 'widgetTabManagement.content.fields.digitsInfoPlaceholder' | translate\n \"\n type=\"text\"\n formControlName=\"digitsInfo\"\n />\n </cds-text-label>\n }\n @case (WidgetDisplayTypeKey.DATE) {\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.format' | translate\"\n [tooltip]=\"'widgetTabManagement.content.fields.dateFormatTooltip' | translate\"\n ></v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"inputTheme\"\n [placeholder]=\"\n 'widgetTabManagement.content.fields.formatPlaceholder' | translate\n \"\n type=\"text\"\n formControlName=\"format\"\n />\n </cds-text-label>\n }\n @case (WidgetDisplayTypeKey.DATE_TIME) {\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.format' | translate\"\n [tooltip]=\"\n 'widgetTabManagement.content.fields.dateTimeFormatTooltip' | translate\n \"\n ></v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"inputTheme\"\n [placeholder]=\"\n 'widgetTabManagement.content.fields.formatPlaceholder' | translate\n \"\n type=\"text\"\n formControlName=\"format\"\n />\n </cds-text-label>\n }\n @case (WidgetDisplayTypeKey.ENUM) {\n <div class=\"valtimo-widget-management-field-column__enum\" formArrayName=\"values\">\n @for (rowValue of formRow.get('values')?.controls; track $index) {\n <form\n [formGroup]=\"rowValue\"\n class=\"valtimo-widget-management-field-column__enum-form\"\n >\n <cds-text-label>\n <v-input-label\n *ngIf=\"$index === 0\"\n [title]=\"'widgetTabManagement.content.fields.enumValue' | translate\"\n [tooltip]=\"\n 'widgetTabManagement.content.fields.enumValueTooltip' | translate\n \"\n ></v-input-label>\n\n <input\n [attr.data-carbon-theme]=\"inputTheme\"\n cdsText\n [placeholder]=\"'widgetTabManagement.content.fields.enumValue' | translate\"\n type=\"text\"\n formControlName=\"key\"\n />\n </cds-text-label>\n\n <cds-text-label>\n <v-input-label\n *ngIf=\"$index === 0\"\n [title]=\"'widgetTabManagement.content.fields.enumDisplay' | translate\"\n [tooltip]=\"\n 'widgetTabManagement.content.fields.enumDisplayTooltip' | translate\n \"\n ></v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"inputTheme\"\n [placeholder]=\"\n 'widgetTabManagement.content.fields.enumDisplay' | translate\n \"\n type=\"text\"\n formControlName=\"value\"\n />\n </cds-text-label>\n\n <button\n cdsButton=\"danger--ghost\"\n [disabled]=\"$count === 1\"\n [iconOnly]=\"true\"\n class=\"valtimo-widget-management-field-column__delete-button enum\"\n (click)=\"onDeleteRowClick($event, formRow.get('values'), $index)\"\n >\n <svg cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n </form>\n }\n\n <button\n cdsButton=\"primary\"\n size=\"sm\"\n (click)=\"onAddEnumValueClick(formRow.get('values'))\"\n >\n {{ 'widgetTabManagement.content.fields.addEnum' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n </div>\n }\n @case (WidgetDisplayTypeKey.NUMBER) {\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.digitsInfo' | translate\"\n tooltip=\"{{\n 'widgetTabManagement.content.fields.digitsInfoTooltip'\n | translate\n : {\n minFractionDigits: 0,\n maxFractionDigits: 3,\n }\n }}\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"inputTheme\"\n [placeholder]=\"'widgetTabManagement.content.fields.digitsInfo' | translate\"\n type=\"text\"\n formControlName=\"digitsInfo\"\n />\n </cds-text-label>\n }\n @case (WidgetDisplayTypeKey.PERCENT) {\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.digitsInfo' | translate\"\n tooltip=\"{{\n 'widgetTabManagement.content.fields.digitsInfoTooltip'\n | translate\n : {\n minFractionDigits: 0,\n maxFractionDigits: 0,\n }\n }}\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"inputTheme\"\n [placeholder]=\"'widgetTabManagement.content.fields.digitsInfo' | translate\"\n type=\"text\"\n formControlName=\"digitsInfo\"\n />\n </cds-text-label>\n }\n @case (WidgetDisplayTypeKey.LINK) {\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.linkText' | translate\"\n [tooltip]=\"'widgetTabManagement.content.fields.linkTextTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"inputTheme\"\n [placeholder]=\"\n 'widgetTabManagement.content.fields.linkTextPlaceholder' | translate\n \"\n type=\"text\"\n formControlName=\"linkText\"\n />\n </cds-text-label>\n }\n }\n\n <cds-text-label\n *ngIf=\"formRow.get('type').value.id === WidgetDisplayTypeKey.TEXT && $isFieldWidget()\"\n >\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.ellipsisCharacterLimit' | translate\"\n tooltip=\"{{\n 'widgetTabManagement.content.fields.ellipsisCharacterLimitTooltip' | translate\n }}\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"inputTheme\"\n [placeholder]=\"\n 'widgetTabManagement.content.fields.ellipsisCharacterLimitPlaceholder' | translate\n \"\n type=\"text\"\n formControlName=\"ellipsisCharacterLimit\"\n />\n </cds-text-label>\n\n <cds-checkbox *ngIf=\"showHideWhenEmptyCheckbox\" formControlName=\"hideWhenEmpty\">\n {{ 'widgetTabManagement.content.hideWhenEmpty' | translate }}\n </cds-checkbox>\n </div>\n </form>\n </cds-accordion-item>\n }\n </cds-accordion>\n\n <button cdsButton=\"primary\" size=\"sm\" (click)=\"addField()\">\n {{ addTranslateKey | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n</form>\n\n<ng-template #fieldTitle let-count=\"count\" let-index=\"index\" let-title=\"title\">\n <div class=\"valtimo-widget-management-field-column__title\">\n {{ title || ('widgetTabManagement.content.fields.titlePlaceholder' | translate) }}\n\n <button\n cdsButton=\"danger\"\n [disabled]=\"count === 1\"\n [iconOnly]=\"true\"\n (click)=\"onDeleteRowClick($event, formRows, index)\"\n class=\"valtimo-widget-management-field-column__delete-button\"\n >\n <svg cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n </div>\n</ng-template>\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 */\nimport {CommonModule} from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n EventEmitter,\n HostBinding,\n OnDestroy,\n OnInit,\n Output,\n signal,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {FormBuilder, ReactiveFormsModule, Validators} from '@angular/forms';\nimport {ActivatedRoute} from '@angular/router';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {\n CARBON_THEME,\n CdsThemeService,\n CurrentCarbonTheme,\n InputLabelModule,\n} from '@valtimo/components';\nimport {ButtonModule, IconModule, InputModule, Tab, TabsModule} from 'carbon-components-angular';\nimport {debounceTime, map, Subscription} from 'rxjs';\nimport {WidgetManagementFieldsColumnComponent} from './column/widget-management-fields-column.component';\nimport {IWidgetContentComponent} from '../../../../interfaces';\nimport {WidgetWizardService} from '../../../../services';\nimport {FieldsWidgetValue, WidgetFieldsContent} from '../../../../models';\n\n@Component({\n templateUrl: './widget-management-fields.component.html',\n styleUrl: './widget-management-fields.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n InputModule,\n TabsModule,\n IconModule,\n ReactiveFormsModule,\n ButtonModule,\n WidgetManagementFieldsColumnComponent,\n // CaseManagementWidgetProcessSelectorComponent,\n InputLabelModule,\n ],\n})\nexport class WidgetManagementFieldsComponent\n implements IWidgetContentComponent, OnDestroy, OnInit, AfterViewInit\n{\n @HostBinding('class') public readonly class = 'valtimo-widget-management-fields';\n @Output() public readonly changeValidEvent = new EventEmitter<boolean>();\n @ViewChild(Tab) private readonly _tab: Tab;\n\n public form = this.fb.group({\n widgetTitle: this.fb.control(this.widgetWizardService.$widgetTitle(), Validators.required),\n });\n\n public readonly $columns = signal<null[]>([null]);\n public readonly $widgetWidth = this.widgetWizardService.$widgetWidth();\n public readonly selectedTabIndex = -1;\n public readonly theme$ = this.cdsThemeService.currentTheme$.pipe(\n map((theme: CurrentCarbonTheme) =>\n theme === CurrentCarbonTheme.G10 ? CARBON_THEME.WHITE : CARBON_THEME.G90\n )\n );\n public readonly $selectedWidgetContent = computed(() =>\n (this.widgetWizardService.$widgetContent() as WidgetFieldsContent)?.columns.reduce(\n (acc, curr, index) => ({\n ...acc,\n [index]: curr,\n }),\n {}\n )\n );\n public readonly activeTab = signal<number>(0);\n\n private readonly _subscriptions = new Subscription();\n private readonly _contentValid = signal<boolean>(false);\n\n constructor(\n private readonly cdsThemeService: CdsThemeService,\n private readonly fb: FormBuilder,\n private readonly route: ActivatedRoute,\n private readonly widgetWizardService: WidgetWizardService\n ) {}\n\n public ngOnInit(): void {\n this._subscriptions.add(\n this.form.valueChanges.pipe(debounceTime(100)).subscribe(formValue => {\n this.widgetWizardService.$widgetTitle.set(formValue.widgetTitle ?? '');\n this.changeValidEvent.emit(this.form.valid && this._contentValid());\n })\n );\n const widgetContent = (this.widgetWizardService.$widgetContent() as WidgetFieldsContent)\n ?.columns;\n if (!widgetContent) return;\n\n this.$columns.set(Object.keys(widgetContent).map(() => null));\n }\n\n public ngAfterViewInit(): void {\n this._tab.tabIndex = -1;\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n this.changeValidEvent.emit(false);\n this.form.reset();\n this._contentValid.set(false);\n }\n\n public onAddColumnClick(): void {\n this.$columns.update(value => [...value, null]);\n this.activeTab.set(this.$columns().length - 1);\n this.changeValidEvent.emit(false);\n }\n\n public onTabSelected(index: number): void {\n this.activeTab.set(index);\n }\n\n public onDeleteColumnClick(index: number): void {\n this.widgetWizardService.$widgetContent.update(content => {\n if (!content) return null;\n\n const widgetContent = content as WidgetFieldsContent;\n\n let tempIndex = index;\n let tempContent = {...widgetContent};\n while (tempIndex < this.$columns().length - 1) {\n tempContent.columns[tempIndex] = tempContent.columns[tempIndex + 1];\n tempIndex++;\n }\n tempContent.columns.splice(tempIndex, 1);\n\n return tempContent;\n });\n\n this.$columns.update((columns: null[]) => {\n const temp = columns;\n temp.splice(index, 1);\n\n return temp;\n });\n\n if (this.activeTab() !== index) return;\n\n this.activeTab.set(-1);\n }\n\n public onColumnUpdateEvent(\n event: {\n data: FieldsWidgetValue[];\n valid: boolean;\n },\n columnIndex: number\n ): void {\n this.widgetWizardService.$widgetContent.update(content => {\n if (!content) return {columns: [event.data]};\n\n const columns = (content as WidgetFieldsContent)?.columns.map((column, index) =>\n index === columnIndex ? event.data : column\n );\n return {\n columns: columnIndex > columns.length - 1 ? [...columns, event.data] : columns,\n };\n });\n this._contentValid.set(event.valid);\n this.changeValidEvent.emit(event.valid && this.form.valid);\n }\n}\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\n<p>{{ 'widgetTabManagement.content.description' | translate }}</p>\n\n<form [formGroup]=\"form\">\n <cds-text-label\n [attr.data-carbon-theme]=\"theme$ | async\"\n class=\"valtimo-widget-management-fields__input\"\n >\n <v-input-label\n [title]=\"'widgetTabManagement.content.widgetTitle' | translate\"\n [tooltip]=\"'widgetTabManagement.content.widgetTitleTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n formControlName=\"widgetTitle\"\n cdsText\n [placeholder]=\"'widgetTabManagement.content.widgetTitlePlaceholder' | translate\"\n type=\"text\"\n />\n </cds-text-label>\n</form>\n\n<!-- For projecting elements such as process selector in case widgets -->\n<ng-content></ng-content>\n\n<cds-tabs type=\"contained\">\n @for (column of $columns(); track $index) {\n <cds-tab\n [active]=\"activeTab() === $index\"\n [heading]=\"columnHeading\"\n [context]=\"{index: $index, count: $count}\"\n (selected)=\"onTabSelected($index)\"\n >\n <valtimo-widget-management-fields-column\n *ngIf=\"activeTab() === $index\"\n [isFieldWidget]=\"true\"\n [columnData]=\"$selectedWidgetContent()?.[$index]\"\n [showHideWhenEmptyCheckbox]=\"true\"\n (columnUpdateEvent)=\"onColumnUpdateEvent($event, $index)\"\n ></valtimo-widget-management-fields-column>\n </cds-tab>\n }\n\n <cds-tab\n *ngIf=\"$columns().length < $widgetWidth\"\n [heading]=\"addColumn\"\n [id]=\"'addColumn'\"\n class=\"valtimo-widget-management-fields__add\"\n ></cds-tab>\n</cds-tabs>\n\n<ng-template #addColumn>\n <button\n cdsButton=\"ghost\"\n [iconOnly]=\"true\"\n (click)=\"$event.stopImmediatePropagation(); onAddColumnClick()\"\n >\n <svg cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n</ng-template>\n\n<ng-template #columnHeading let-data>\n <div class=\"valtimo-widget-management-fields__heading\">\n {{ 'widgetTabManagement.content.column' | translate: {number: data.index + 1} }}\n\n <button\n cdsButton=\"ghost\"\n [disabled]=\"data.count === 1\"\n [iconOnly]=\"true\"\n size=\"sm\"\n (click)=\"onDeleteColumnClick(data.index)\"\n >\n <svg cdsIcon=\"close\" size=\"16\"></svg>\n </button>\n </div>\n</ng-template>\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 */\nimport {CommonModule} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n EventEmitter,\n HostBinding,\n OnDestroy,\n OnInit,\n Output,\n signal,\n ViewEncapsulation,\n WritableSignal,\n} from '@angular/core';\nimport {FormBuilder, FormGroup, ReactiveFormsModule, Validators} from '@angular/forms';\nimport {ActivatedRoute} from '@angular/router';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {\n CARBON_THEME,\n CdsThemeService,\n CurrentCarbonTheme,\n InputLabelModule,\n ValuePathItem,\n ValuePathSelectorPrefix,\n ValuePathType,\n} from '@valtimo/components';\nimport {ButtonModule, InputModule, ToggleModule} from 'carbon-components-angular';\nimport {BehaviorSubject, debounceTime, map, Observable, Subscription} from 'rxjs';\nimport {IWidgetContentComponent} from '../../../../interfaces';\nimport {WidgetWizardService} from '../../../../services';\nimport {WidgetManagementFieldsColumnComponent} from '../fields/column/widget-management-fields-column.component';\nimport {FieldsWidgetValue, WidgetContentProperties, WidgetTableContent} from '../../../../models';\n\n@Component({\n templateUrl: './widget-management-table.component.html',\n styleUrl: './widget-management-table.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n encapsulation: ViewEncapsulation.None,\n imports: [\n CommonModule,\n TranslateModule,\n WidgetManagementFieldsColumnComponent,\n ReactiveFormsModule,\n InputModule,\n ToggleModule,\n ButtonModule,\n InputLabelModule,\n ],\n})\nexport class WidgetManagementTableComponent implements IWidgetContentComponent, OnInit, OnDestroy {\n @HostBinding('class') public readonly class = 'valtimo-widget-management-table';\n @Output() public readonly changeValidEvent = new EventEmitter<boolean>();\n\n public readonly form: FormGroup = this.fb.group({\n title: this.fb.control<string>(\n this.widgetWizardService.$widgetTitle() ?? '',\n Validators.required\n ),\n collection: this.fb.control<string>(\n (this.widgetWizardService.$widgetContent() as WidgetTableContent)?.collection ?? '',\n Validators.required\n ),\n defaultPageSize: this.fb.control<number>(\n (this.widgetWizardService.$widgetContent() as WidgetTableContent)?.defaultPageSize ?? 5,\n Validators.required\n ),\n });\n\n public readonly theme$: Observable<CARBON_THEME> = this.cdsThemeService.currentTheme$.pipe(\n map((currentTheme: CurrentCarbonTheme) =>\n currentTheme === CurrentCarbonTheme.G10 ? CARBON_THEME.WHITE : CARBON_THEME.G90\n )\n );\n\n public readonly $content = this.widgetWizardService\n .$widgetContent as WritableSignal<WidgetTableContent>;\n public readonly $checked = computed(\n () =>\n (this.widgetWizardService.$widgetContent() as WidgetTableContent)?.firstColumnAsTitle || false\n );\n\n public readonly selectedCollection$ = new BehaviorSubject<ValuePathItem | null>(null);\n\n public readonly ValuePathSelectorPrefix = ValuePathSelectorPrefix;\n public readonly ValuePathType = ValuePathType;\n\n private readonly _contentValid = signal<boolean>(this.widgetWizardService.$editMode());\n private readonly _subscriptions = new Subscription();\n\n constructor(\n private readonly cdsThemeService: CdsThemeService,\n private readonly fb: FormBuilder,\n private readonly widgetWizardService: WidgetWizardService,\n private readonly route: ActivatedRoute\n ) {}\n\n public ngOnInit(): void {\n this._subscriptions.add(\n this.form.valueChanges.pipe(debounceTime(500)).subscribe(value => {\n this.widgetWizardService.$widgetTitle.set(value?.title ?? '');\n\n this.widgetWizardService.$widgetContent.update(\n (content: WidgetContentProperties | null) =>\n ({\n ...content,\n collection: value?.collection || '',\n defaultPageSize: value?.defaultPageSize || 5,\n }) as WidgetTableContent\n );\n\n this.changeValidEvent.emit(this.form.valid && this._contentValid());\n })\n );\n }\n\n public ngOnDestroy(): void {\n this._contentValid.set(false);\n this._subscriptions.unsubscribe();\n this.changeValidEvent.emit(false);\n this.form.reset();\n }\n\n public onColumnUpdateEvent(event: {data: FieldsWidgetValue[]; valid: boolean}): void {\n const {data, valid} = event;\n this.widgetWizardService.$widgetContent.update(\n (content: WidgetContentProperties | null) =>\n ({...content, columns: data}) as WidgetTableContent\n );\n this._contentValid.set(valid);\n this.changeValidEvent.emit(valid && this.form.valid);\n }\n\n public onCheckedChange(firstColumnAsTitle: boolean): void {\n this.widgetWizardService.$widgetContent.update(\n (content: WidgetContentProperties | null) =>\n ({...content, firstColumnAsTitle}) as WidgetTableContent\n );\n }\n\n public onCollectionSelected(item: ValuePathItem): void {\n this.selectedCollection$.next(item);\n }\n}\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\n<form\n *ngIf=\"theme$ | async as theme\"\n [formGroup]=\"form\"\n class=\"valtimo-widget-management-table__form\"\n>\n <cds-text-label [attr.data-carbon-theme]=\"theme\">\n <v-input-label\n [title]=\"'widgetTabManagement.content.widgetTitle' | translate\"\n [tooltip]=\"'widgetTabManagement.content.widgetTitleTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n formControlName=\"title\"\n cdsText\n [placeholder]=\"'widgetTabManagement.content.widgetTitlePlaceholder' | translate\"\n type=\"text\"\n />\n </cds-text-label>\n\n <cds-text-label [attr.data-carbon-theme]=\"theme\">\n <v-input-label\n [title]=\"'widgetTabManagement.content.table.defaultPageSize' | translate\"\n [tooltip]=\"'widgetTabManagement.content.table.defaultPageSizeTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n formControlName=\"defaultPageSize\"\n cdsText\n [placeholder]=\"'widgetTabManagement.content.table.defaultPageSizePlaceholder' | translate\"\n type=\"text\"\n />\n </cds-text-label>\n\n <div class=\"valtimo-widget-management-table__path-selector\">\n <v-input-label\n [title]=\"'widgetTabManagement.content.table.collection' | translate\"\n [tooltip]=\"'widgetTabManagement.content.table.collectionTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n formControlName=\"collection\"\n cdsText\n [attr.data-carbon-theme]=\"theme\"\n [placeholder]=\"'widgetTabManagement.content.table.collection' | translate\"\n type=\"text\"\n />\n\n <!-- TODO: Implement to work for case as well -->\n\n <!-- <valtimo-value-path-selector\n formControlName=\"collection\"\n [attr.data-carbon-theme]=\"obs.theme\"\n [caseDefinitionKey]=\"obs.params?.caseDefinitionKey\"\n [caseDefinitionVersionTag]=\"obs.params?.caseDefinitionVersionTag\"\n [type]=\"ValuePathType.COLLECTION\"\n (collectionSelected)=\"onCollectionSelected($event)\"\n ></valtimo-value-path-selector> -->\n </div>\n</form>\n\n<!-- For projecting elements such as process selector in case widgets -->\n<ng-content></ng-content>\n\n<span class=\"valtimo-widget-management-table__subtitle\">\n {{ 'widgetTabManagement.content.table.columns' | translate }}\n</span>\n\n<valtimo-widget-management-fields-column\n [addTranslateKey]=\"'widgetTabManagement.content.table.addColumn'\"\n [columnData]=\"$content()?.columns\"\n (columnUpdateEvent)=\"onColumnUpdateEvent($event)\"\n></valtimo-widget-management-fields-column>\n<!-- TODO: Implement to work for case as well -->\n<!-- [selectedCollection]=\"selectedCollection$ | async\" -->\n\n<section class=\"valtimo-widget-management-table__toggle\">\n <span class=\"valtimo-widget-management-table__subtitle\">\n {{ 'widgetTabManagement.content.table.options' | translate }}\n </span>\n\n <cds-toggle\n [checked]=\"$checked()\"\n [label]=\"'widgetTabManagement.content.table.firstColumnAsTitle' | translate\"\n [onText]=\"'interface.yes' | translate\"\n [offText]=\"'interface.no' | translate\"\n (checkedChange)=\"onCheckedChange($event)\"\n ></cds-toggle>\n</section>\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\nimport {CommonModule} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostBinding,\n OnDestroy,\n OnInit,\n Output,\n signal,\n ViewEncapsulation,\n WritableSignal,\n} from '@angular/core';\nimport {\n AbstractControl,\n FormArray,\n FormBuilder,\n FormGroup,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport {ActivatedRoute} from '@angular/router';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\n\nimport {\n CARBON_THEME,\n CdsThemeService,\n CurrentCarbonTheme,\n InputLabelModule,\n ValuePathItem,\n ValuePathSelectorComponent,\n ValuePathSelectorPrefix,\n ValuePathType,\n} from '@valtimo/components';\nimport {\n ButtonModule,\n DropdownModule,\n IconModule,\n InputModule,\n ListItem,\n} from 'carbon-components-angular';\nimport {BehaviorSubject, debounceTime, map, Observable, Subscription} from 'rxjs';\nimport {WidgetManagementFieldsColumnComponent} from '../fields/column/widget-management-fields-column.component';\nimport {IWidgetContentComponent} from '../../../../interfaces';\nimport {WidgetFieldsService, WidgetWizardService} from '../../../../services';\nimport {\n CollectionFieldWidth,\n FieldsWidgetValue,\n WidgetCollectionContent,\n WidgetContentProperties,\n WidgetCurrencyDisplayType,\n WidgetDateDisplayType,\n WidgetDateTimeDisplayType,\n WidgetDisplayTypeKey,\n WidgetEnumDisplayType,\n} from '../../../../models';\n\n@Component({\n templateUrl: './widget-management-collection.component.html',\n styleUrl: './widget-management-collection.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n WidgetManagementFieldsColumnComponent,\n ReactiveFormsModule,\n InputModule,\n DropdownModule,\n ButtonModule,\n IconModule,\n InputLabelModule,\n ValuePathSelectorComponent,\n ],\n})\nexport class WidgetManagementCollectionComponent\n implements IWidgetContentComponent, OnInit, OnDestroy\n{\n @HostBinding('class') public readonly class = 'valtimo-widget-management-collection';\n @Output() public readonly changeValidEvent = new EventEmitter<boolean>();\n\n public readonly widgetForm = this.fb.group({\n title: this.fb.control(this.widgetWizardService.$widgetTitle() ?? '', Validators.required),\n defaultPageSize: this.fb.control(\n (this.widgetWizardService.$widgetContent() as WidgetCollectionContent)?.defaultPageSize ?? 5,\n Validators.required\n ),\n collection: this.fb.control(\n (this.widgetWizardService.$widgetContent() as WidgetCollectionContent)?.collection ?? '',\n Validators.required\n ),\n });\n\n public readonly cardForm = this.fb.group<any>({\n value: this.fb.control(\n (this.widgetWizardService.$widgetContent() as WidgetCollectionContent)?.title?.value ?? '',\n Validators.required\n ),\n type: this.fb.control<ListItem>(\n {\n content: this.translateService.instant(\n this.translateService.instant(\n `widgetTabManagement.content.displayType.${(this.widgetWizardService.$widgetContent() as WidgetCollectionContent)?.title?.displayProperties?.type ?? WidgetDisplayTypeKey.TEXT}`\n )\n ),\n id:\n (this.widgetWizardService.$widgetContent() as WidgetCollectionContent)?.title\n ?.displayProperties?.type ?? WidgetDisplayTypeKey.TEXT,\n selected: true,\n },\n Validators.required\n ),\n });\n\n public readonly theme$: Observable<CARBON_THEME> = this.cdsThemeService.currentTheme$.pipe(\n map((theme: CurrentCarbonTheme) =>\n theme === CurrentCarbonTheme.G10 ? CARBON_THEME.WHITE : CARBON_THEME.G90\n )\n );\n\n public readonly ValuePathSelectorPrefix = ValuePathSelectorPrefix;\n public readonly ValuePathType = ValuePathType;\n public readonly WidgetDisplayTypeKey = WidgetDisplayTypeKey;\n public readonly $content = this.widgetWizardService\n .$widgetContent as WritableSignal<WidgetCollectionContent>;\n public readonly displayTypeItems: ListItem[] = this.widgetFieldsService.displayTypeItems;\n\n public readonly selectedCollection$ = new BehaviorSubject<ValuePathItem | null>(null);\n\n public WIDTH_ITEMS: ListItem[] = [\n {\n content: this.translateService.instant('widgetTabManagement.width.fullWidth'),\n id: 'full',\n selected: true,\n },\n {\n content: this.translateService.instant('widgetTabManagement.width.half'),\n id: 'half',\n selected: false,\n },\n ];\n\n private readonly _subscriptions = new Subscription();\n private readonly _$contentValid = signal<boolean>(false);\n\n constructor(\n private readonly cdsThemeService: CdsThemeService,\n private readonly fb: FormBuilder,\n private readonly translateService: TranslateService,\n private readonly widgetFieldsService: WidgetFieldsService,\n private readonly route: ActivatedRoute,\n private readonly widgetWizardService: WidgetWizardService\n ) {}\n\n public ngOnInit(): void {\n this.openWidgetFormSubscription();\n this.openCardFormSubscription();\n this.initForm();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public onAddEnumValueClick(valuesFormArray: FormArray): void {\n valuesFormArray.push(\n this.fb.group({\n key: this.fb.control('', Validators.required),\n value: this.fb.control('', Validators.required),\n })\n );\n }\n\n public getDisplayItemsSelected(control: AbstractControl): ListItem[] {\n return this.widgetFieldsService.getDisplayItemsSelected(control);\n }\n\n public getSelectedWidthItem(fieldIndex: number): ListItem[] {\n const widgetContent: WidgetCollectionContent | null =\n this.widgetWizardService.$widgetContent() as WidgetCollectionContent;\n\n return !widgetContent\n ? this.WIDTH_ITEMS\n : this.WIDTH_ITEMS.map((item: ListItem) => ({\n ...item,\n selected: widgetContent.fields?.[fieldIndex]?.width === item.id,\n }));\n }\n\n public onColumnUpdateEvent(event: {data: FieldsWidgetValue[]; valid: boolean}): void {\n const {data, valid} = event;\n this.widgetWizardService.$widgetContent.update((content: WidgetContentProperties | null) => {\n const existingFields = (content as WidgetCollectionContent)?.fields;\n\n return {\n ...content,\n fields: data.map((item, index) => ({\n ...item,\n width: existingFields?.[index]?.width ?? 'full',\n })),\n } as WidgetCollectionContent;\n });\n this._$contentValid.set(valid);\n this.changeValidEvent.emit(valid && this.widgetForm.valid);\n }\n\n public onDeleteRowClick(formArray: FormArray, index: number): void {\n if (!formArray) return;\n\n formArray.removeAt(index);\n }\n\n public onTypeSelected(formGroup: FormGroup, event: {item: ListItem}): void {\n this.widgetFieldsService.onDisplayTypeSelected(['value', 'type'], formGroup, event);\n }\n\n public onWidthSelected(event: {item: ListItem}, fieldIndex: number): void {\n this.widgetWizardService.$widgetContent.update(\n (content: WidgetContentProperties | null) =>\n ({\n ...content,\n fields: (content as WidgetCollectionContent)?.fields.map(\n (field: FieldsWidgetValue & {width: CollectionFieldWidth}, index: number) =>\n index === fieldIndex ? {...field, width: event.item.id} : field\n ),\n }) as WidgetCollectionContent\n );\n }\n\n public onCollectionSelected(item: ValuePathItem): void {\n this.selectedCollection$.next(item);\n }\n\n private initForm(): void {\n if (!this.widgetWizardService.$widgetContent()) return;\n\n const title = (this.widgetWizardService.$widgetContent() as WidgetCollectionContent).title;\n if (!title) return;\n this.onTypeSelected(this.cardForm, {\n item: {id: title.displayProperties?.type ?? '', content: '', selected: true},\n });\n\n this.cardForm.patchValue(\n {\n ...([\n WidgetDisplayTypeKey.NUMBER,\n WidgetDisplayTypeKey.PERCENT,\n WidgetDisplayTypeKey.CURRENCY,\n ].includes(title.displayProperties?.type as WidgetDisplayTypeKey) && {\n digitsInfo: (title.displayProperties as WidgetCurrencyDisplayType).digitsInfo,\n }),\n ...(title.displayProperties?.type === WidgetDisplayTypeKey.CURRENCY && {\n currencyCode: (title.displayProperties as WidgetCurrencyDisplayType).currencyCode,\n display: (title.displayProperties as WidgetCurrencyDisplayType).display,\n }),\n ...(title.displayProperties?.type === WidgetDisplayTypeKey.DATE && {\n format: (title.displayProperties as WidgetDateDisplayType).format,\n }),\n ...(title.displayProperties?.type === WidgetDisplayTypeKey.DATE_TIME && {\n format: (title.displayProperties as WidgetDateTimeDisplayType).format,\n }),\n ...(title.displayProperties?.type === WidgetDisplayTypeKey.ENUM && {\n values: Object.entries((title.displayProperties as WidgetEnumDisplayType).values).map(\n ([key, value]) => ({key, value})\n ),\n }),\n },\n {emitEvent: false}\n );\n }\n\n private openWidgetFormSubscription(): void {\n this._subscriptions.add(\n this.widgetForm.valueChanges.pipe(debounceTime(500)).subscribe(value => {\n this.widgetWizardService.$widgetTitle.set(value?.title ?? '');\n\n this.widgetWizardService.$widgetContent.update(\n (content: WidgetContentProperties | null) =>\n ({\n ...content,\n collection: value?.collection || '',\n defaultPageSize: value?.defaultPageSize || 5,\n }) as WidgetCollectionContent\n );\n\n this.changeValidEvent.emit(\n this.widgetForm.valid && this.cardForm.valid && this._$contentValid()\n );\n })\n );\n }\n\n private openCardFormSubscription(): void {\n this._subscriptions.add(\n this.cardForm.valueChanges.pipe(debounceTime(500)).subscribe(formValue => {\n let {value, ...displayProperties} = formValue;\n displayProperties = {\n ...displayProperties,\n ...(!!displayProperties.type && {\n type: (displayProperties.type as ListItem).id,\n }),\n ...(!!formValue.values && {\n values: (formValue.values as Array<{[key: string]: string}>)?.reduce(\n (acc, curr) => ({...acc, [curr.key]: curr.value}),\n {}\n ),\n }),\n };\n\n this.widgetWizardService.$widgetContent.update(\n (content: WidgetContentProperties | null) =>\n ({\n ...content,\n title: {\n value,\n ...(displayProperties.type !== WidgetDisplayTypeKey.TEXT && {\n displayProperties,\n }),\n },\n }) as any\n );\n\n this.changeValidEvent.emit(\n this.widgetForm.valid && this.cardForm.valid && this._$contentValid()\n );\n })\n );\n }\n}\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\n<ng-container *ngIf=\"theme$ | async as theme\">\n <form [formGroup]=\"widgetForm\" class=\"valtimo-widget-management-collection__form\">\n <cds-text-label [attr.data-carbon-theme]=\"theme\">\n <v-input-label\n [title]=\"'widgetTabManagement.content.widgetTitle' | translate\"\n [tooltip]=\"'widgetTabManagement.content.widgetTitleTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n formControlName=\"title\"\n cdsText\n [placeholder]=\"'widgetTabManagement.content.widgetTitlePlaceholder' | translate\"\n type=\"text\"\n />\n </cds-text-label>\n\n <cds-text-label [attr.data-carbon-theme]=\"theme\">\n <v-input-label\n [title]=\"'widgetTabManagement.content.collection.defaultPageSize' | translate\"\n [tooltip]=\"'widgetTabManagement.content.collection.defaultPageSizeTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n formControlName=\"defaultPageSize\"\n cdsText\n [placeholder]=\"\n 'widgetTabManagement.content.collection.defaultPageSizePlaceholder' | translate\n \"\n type=\"text\"\n />\n </cds-text-label>\n\n <div class=\"valtimo-widget-management-collection__path-selector\">\n <v-input-label\n [title]=\"'widgetTabManagement.content.collection.collection' | translate\"\n [tooltip]=\"'widgetTabManagement.content.collection.collectionTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n formControlName=\"collection\"\n cdsText\n [attr.data-carbon-theme]=\"theme\"\n [placeholder]=\"'widgetTabManagement.content.collection.collection' | translate\"\n type=\"text\"\n />\n <!-- <valtimo-value-path-selector\n formControlName=\"collection\"\n [attr.data-carbon-theme]=\"theme\"\n [caseDefinitionKey]=\"obs.params?.caseDefinitionKey\"\n [caseDefinitionVersionTag]=\"obs.params?.caseDefinitionVersionTag\"\n [type]=\"ValuePathType.COLLECTION\"\n (collectionSelected)=\"onCollectionSelected($event)\"\n ></valtimo-value-path-selector> -->\n </div>\n </form>\n\n <!-- For injecting things such as process-selector in case widgets -->\n <ng-content></ng-content>\n\n <!-- <valtimo-case-management-widget-process-selector\n [params]=\"params$ | async\"\n ></valtimo-case-management-widget-process-selector> -->\n\n <span class=\"valtimo-widget-management-collection__subtitle\">\n {{ 'widgetTabManagement.content.collection.cardTitle' | translate }}\n </span>\n\n <form [formGroup]=\"cardForm\" class=\"valtimo-widget-management-collection__card\">\n <section class=\"valtimo-widget-management-collection__card-title\">\n <div class=\"valtimo-widget-management-collection__path-selector\">\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.value' | translate\"\n [tooltip]=\"'widgetTabManagement.content.collection.valueTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n formControlName=\"value\"\n cdsText\n [attr.data-carbon-theme]=\"theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.value' | translate\"\n type=\"text\"\n />\n <!-- <valtimo-value-path-selector\n formControlName=\"value\"\n [attr.data-carbon-theme]=\"theme\"\n [caseDefinitionKey]=\"obs.params?.caseDefinitionKey\"\n [caseDefinitionVersionTag]=\"obs.params?.caseDefinitionVersionTag\"\n [parentItem]=\"selectedCollection$ | async\"\n ></valtimo-value-path-selector> -->\n </div>\n\n <cds-dropdown\n [attr.data-carbon-theme]=\"theme\"\n [label]=\"'widgetTabManagement.content.fields.type' | translate\"\n [dropUp]=\"false\"\n [placeholder]=\"'widgetTabManagement.content.fields.typePlaceholder' | translate\"\n (selected)=\"onTypeSelected(cardForm, $event)\"\n formControlName=\"type\"\n >\n <cds-dropdown-list [items]=\"getDisplayItemsSelected(cardForm)\"></cds-dropdown-list>\n </cds-dropdown>\n </section>\n\n <section class=\"valtimo-widget-management-collection__card-options\">\n @switch (cardForm.get('type').value.id) {\n @case (WidgetDisplayTypeKey.CURRENCY) {\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.currencyCode' | translate\"\n [tooltip]=\"'widgetTabManagement.content.fields.currencyCodeTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"theme\"\n [placeholder]=\"\n 'widgetTabManagement.content.fields.currencyCodePlaceholder' | translate\n \"\n type=\"text\"\n formControlName=\"currencyCode\"\n />\n </cds-text-label>\n\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.display' | translate\"\n [tooltip]=\"'widgetTabManagement.content.fields.displayTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.displayPlaceholder' | translate\"\n type=\"text\"\n formControlName=\"display\"\n />\n </cds-text-label>\n\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.digitsInfo' | translate\"\n tooltip=\"{{\n 'widgetTabManagement.content.fields.digitsInfoTooltip'\n | translate: {minFractionDigits: 2, maxFractionDigits: 2}\n }}\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.digitsInfoPlaceholder' | translate\"\n type=\"text\"\n formControlName=\"digitsInfo\"\n />\n </cds-text-label>\n }\n @case (WidgetDisplayTypeKey.DATE) {\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.format' | translate\"\n [tooltip]=\"'widgetTabManagement.content.fields.dateFormatTooltip' | translate\"\n ></v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.formatPlaceholder' | translate\"\n type=\"text\"\n formControlName=\"format\"\n />\n </cds-text-label>\n }\n @case (WidgetDisplayTypeKey.DATE_TIME) {\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.format' | translate\"\n [tooltip]=\"'widgetTabManagement.content.fields.dateTimeFormatTooltip' | translate\"\n ></v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.formatPlaceholder' | translate\"\n type=\"text\"\n formControlName=\"format\"\n />\n </cds-text-label>\n }\n @case (WidgetDisplayTypeKey.ENUM) {\n <div class=\"valtimo-widget-management-collection__enum\" formArrayName=\"values\">\n @for (rowValue of cardForm.get('values')?.controls; track $index) {\n <form [formGroup]=\"rowValue\" class=\"valtimo-widget-management-collection__enum-form\">\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.enumValue' | translate\"\n [tooltip]=\"'widgetTabManagement.content.fields.enumValueTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n [attr.data-carbon-theme]=\"theme\"\n cdsText\n [placeholder]=\"'widgetTabManagement.content.enumValue' | translate\"\n type=\"text\"\n formControlName=\"key\"\n />\n </cds-text-label>\n\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.enumDisplay' | translate\"\n [tooltip]=\"'widgetTabManagement.content.fields.enumDisplayTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.enumDisplay' | translate\"\n type=\"text\"\n formControlName=\"value\"\n />\n </cds-text-label>\n\n <button\n cdsButton=\"danger--ghost\"\n [disabled]=\"$count === 1\"\n [iconOnly]=\"true\"\n class=\"valtimo-case-management-widget-field-column__delete-button enum\"\n (click)=\"onDeleteRowClick(cardForm.get('values'), $index)\"\n >\n <svg cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n </form>\n }\n\n <button\n cdsButton=\"primary\"\n size=\"sm\"\n (click)=\"onAddEnumValueClick(cardForm.get('values'))\"\n >\n {{ 'widgetTabManagement.content.fields.addEnum' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n </div>\n }\n @case (WidgetDisplayTypeKey.NUMBER) {\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.digitsInfo' | translate\"\n tooltip=\"{{\n 'widgetTabManagement.content.fields.digitsInfoTooltip'\n | translate\n : {\n minFractionDigits: 0,\n maxFractionDigits: 3,\n }\n }}\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.digitsInfo' | translate\"\n type=\"text\"\n formControlName=\"digitsInfo\"\n />\n </cds-text-label>\n }\n @case (WidgetDisplayTypeKey.PERCENT) {\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.digitsInfo' | translate\"\n tooltip=\"{{\n 'widgetTabManagement.content.fields.digitsInfoTooltip'\n | translate\n : {\n minFractionDigits: 0,\n maxFractionDigits: 0,\n }\n }}\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.digitsInfo' | translate\"\n type=\"text\"\n formControlName=\"digitsInfo\"\n />\n </cds-text-label>\n }\n }\n </section>\n </form>\n\n <span class=\"valtimo-widget-management-collection__subtitle\">\n {{ 'widgetTabManagement.content.collection.cardFields' | translate }}\n </span>\n\n <valtimo-widget-management-fields-column\n [columnData]=\"$content()?.fields\"\n [fieldWidthDropdown]=\"fieldWidthDropdown\"\n [showHideWhenEmptyCheckbox]=\"true\"\n (columnUpdateEvent)=\"onColumnUpdateEvent($event)\"\n >\n <!-- [params]=\"params$ | async\"\n [selectedCollection]=\"selectedCollection$ | async\" -->\n </valtimo-widget-management-fields-column>\n\n <ng-template #fieldWidthDropdown let-index=\"index\">\n <cds-dropdown\n [label]=\"'widgetTabManagement.content.collection.fieldWidth' | translate\"\n [dropUp]=\"false\"\n [placeholder]=\"'widgetTabManagement.content.collection.fieldWidthPlaceholder' | translate\"\n (selected)=\"onWidthSelected($event, index)\"\n >\n <cds-dropdown-list [items]=\"getSelectedWidthItem(index)\"></cds-dropdown-list>\n </cds-dropdown>\n </ng-template>\n</ng-container>\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 */\nimport {CommonModule} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Inject,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n} from '@angular/core';\nimport {AbstractControl, FormBuilder, ReactiveFormsModule, Validators} from '@angular/forms';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {CARBON_THEME, CdsThemeService, CurrentCarbonTheme} from '@valtimo/components';\nimport {DropdownModule, InputModule, ListItem, SelectModule} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, filter, map, Observable, Subscription} from 'rxjs';\nimport {IWidgetContentComponent} from '../../../../interfaces';\nimport {CustomWidgetConfig, WidgetCustomContent} from '../../../../models';\nimport {WidgetWizardService} from '../../../../services';\nimport {CUSTOM_WIDGET_TOKEN} from '../../../../constants';\n\n@Component({\n templateUrl: './widget-management-custom.component.html',\n styleUrls: ['./widget-management-custom.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n InputModule,\n ReactiveFormsModule,\n SelectModule,\n DropdownModule,\n ],\n})\nexport class WidgetManagementCustomComponent implements IWidgetContentComponent, OnDestroy, OnInit {\n @Output() public readonly changeValidEvent = new EventEmitter<boolean>();\n\n public readonly form = this.fb.group({\n widgetTitle: this.fb.control(this.widgetWizardService.$widgetTitle(), Validators.required),\n });\n\n public get widgetTitle(): AbstractControl<string | null, string | null> | null {\n return this.form.get('widgetTitle');\n }\n\n public readonly theme$ = this.cdsThemeService.currentTheme$.pipe(\n map((theme: CurrentCarbonTheme) =>\n theme === CurrentCarbonTheme.G10 ? CARBON_THEME.WHITE : CARBON_THEME.G90\n )\n );\n\n private readonly _selectedCustomComponentKey$ = new BehaviorSubject<string | null>(null);\n private readonly _customWidgetConfig$ = new BehaviorSubject<CustomWidgetConfig>({});\n\n public readonly componentListItems$: Observable<ListItem[]> = combineLatest([\n this._customWidgetConfig$,\n this._selectedCustomComponentKey$,\n ]).pipe(\n filter(([config]) => !!config),\n map(([config, selectedKey]) =>\n Object.keys(config).reduce(\n (acc, curr) => [...acc, {content: curr, selected: curr === selectedKey}],\n [] as ListItem[]\n )\n )\n );\n\n private readonly _subscriptions = new Subscription();\n\n constructor(\n @Optional()\n @Inject(CUSTOM_WIDGET_TOKEN)\n private readonly customWidgetConfig: CustomWidgetConfig,\n private readonly cdsThemeService: CdsThemeService,\n private readonly fb: FormBuilder,\n private readonly widgetWizardService: WidgetWizardService\n ) {\n if (customWidgetConfig) this._customWidgetConfig$.next(customWidgetConfig);\n }\n\n public componentDropDownChange(event: {\n item: {content: string; selected: boolean};\n isUpdate: boolean;\n }): void {\n const componentKey = event?.item?.content;\n\n if (!componentKey) return;\n\n this._selectedCustomComponentKey$.next(componentKey);\n this.widgetWizardService.$widgetContent.set({componentKey});\n this.changeValidEvent.emit(true);\n }\n\n public ngOnInit(): void {\n this.openTitleSubscription();\n this.prefill();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n private openTitleSubscription(): void {\n this._subscriptions.add(\n this.widgetTitle?.valueChanges.subscribe(title => {\n this.widgetWizardService.$widgetTitle.set(title);\n })\n );\n }\n\n private prefill(): void {\n const componentKey = (this.widgetWizardService.$widgetContent() as WidgetCustomContent)\n ?.componentKey;\n\n if (!componentKey || Object.keys(this.customWidgetConfig || {}).length === 0) return;\n\n this._selectedCustomComponentKey$.next(componentKey);\n this.changeValidEvent.emit(true);\n }\n}\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\n<form\n class=\"valtimo-widget-management-custom\"\n [formGroup]=\"form\"\n [attr.data-carbon-theme]=\"theme$ | async\"\n>\n <cds-text-label class=\"valtimo-widget-management-field__input\">\n {{ 'widgetTabManagement.content.widgetTitle' | translate }}\n\n <input\n formControlName=\"widgetTitle\"\n cdsText\n [placeholder]=\"'widgetTabManagement.content.widgetTitlePlaceholder' | translate\"\n type=\"text\"\n />\n </cds-text-label>\n\n <!-- For injecting things such as process selector in case management -->\n <ng-container></ng-container>\n\n <cds-label class=\"dropdown-label\">\n {{ 'widgetTabManagement.content.custom.selectComponent' | translate }}\n\n <cds-dropdown\n *ngIf=\"componentListItems$ | async as componentListItems\"\n [appendInline]=\"false\"\n [placeholder]=\"'widgetTabManagement.content.custom.placeholder' | translate\"\n [disabled]=\"componentListItems.length === 0\"\n (selected)=\"componentDropDownChange($event)\"\n >\n <cds-dropdown-list [items]=\"componentListItems\"> </cds-dropdown-list>\n </cds-dropdown>\n </cds-label>\n</form>\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\nexport * from './fields/widget-management-fields.component';\nexport * from './table/widget-management-table.component';\nexport * from './collection/widget-management-collection.component';\nexport * from './custom/widget-management-custom.component';\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// import {CaseWidgetType} from '@valtimo/case';\nimport {Type} from '@angular/core';\n\nimport {\n WidgetManagementCollectionComponent,\n WidgetManagementCustomComponent,\n WidgetManagementFieldsComponent,\n WidgetManagementTableComponent,\n} from '../components/widget-management/management-content';\nimport {IWidgetContentComponent} from '../interfaces';\nimport {BasicWidget, WidgetType} from './widget.model';\n\nenum WidgetWizardStep {\n TYPE,\n WIDTH,\n STYLE,\n CONTENT,\n}\n\nenum WidgetWizardCloseEventType {\n CANCEL,\n CREATE,\n EDIT,\n}\n\nenum WidgetStyle {\n DEFAULT = 'default',\n HIGH_CONTRAST = 'high-contrast',\n}\n\ninterface WidgetWizardCloseEvent {\n type: WidgetWizardCloseEventType;\n widget: BasicWidget | null;\n}\n\ninterface WidgetTypeSelection {\n titleKey: string;\n descriptionKey: string;\n illustrationUrl: string;\n type: WidgetType;\n component: Type<IWidgetContentComponent>;\n}\n\nconst AVAILABLE_WIDGETS: WidgetTypeSelection[] = [\n {\n titleKey: 'widgetTabManagement.types.fields.title',\n descriptionKey: 'widgetTabManagement.types.fields.description',\n illustrationUrl: 'valtimo-layout/img/widget-management/types/fields.svg',\n type: WidgetType.FIELDS,\n component: WidgetManagementFieldsComponent,\n },\n {\n titleKey: 'widgetTabManagement.types.custom.title',\n descriptionKey: 'widgetTabManagement.types.custom.description',\n illustrationUrl: 'valtimo-layout/img/widget-management/types/angular.svg',\n type: WidgetType.CUSTOM,\n component: WidgetManagementCustomComponent,\n },\n {\n titleKey: 'widgetTabManagement.types.table.title',\n descriptionKey: 'widgetTabManagement.types.table.description',\n illustrationUrl: 'valtimo-layout/img/widget-management/types/table.svg',\n type: WidgetType.TABLE,\n component: WidgetManagementTableComponent,\n },\n {\n titleKey: 'widgetTabManagement.types.collection.title',\n descriptionKey: 'widgetTabManagement.types.collection.description',\n illustrationUrl: 'valtimo-layout/img/widget-management/types/collection.svg',\n type: WidgetType.COLLECTION,\n component: WidgetManagementCollectionComponent,\n },\n];\n\nconst WIDGET_WIDTH_LABELS: {[key: number]: string} = {\n 1: 'widgetTabManagement.width.small.title',\n 2: 'widgetTabManagement.width.medium.title',\n 3: 'widgetTabManagement.width.large.title',\n 4: 'widgetTabManagement.width.xtraLarge.title',\n};\n\nconst WIDGET_STYLE_LABELS: {[key: string]: string} = {\n [WidgetStyle.DEFAULT]: 'widgetTabManagement.style.default.title',\n [WidgetStyle.HIGH_CONTRAST]: 'widgetTabManagement.style.highContrast.title',\n};\n\nexport {\n WidgetWizardStep,\n WidgetTypeSelection,\n AVAILABLE_WIDGETS,\n WidgetStyle,\n WIDGET_WIDTH_LABELS,\n WIDGET_STYLE_LABELS,\n WidgetWizardCloseEventType,\n WidgetWizardCloseEvent,\n};\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\nexport * from './widget-content.model';\nexport * from './widget-display.model';\nexport * from './widget-editor.model';\nexport * from './widget-wizard.model';\nexport * from './widget.model';\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\nimport {Component} from '@angular/core';\n\n@Component({\n selector: 'valtimo-layout-public',\n templateUrl: './layout-public.component.html',\n styleUrls: ['./layout-public.component.scss'],\n standalone: false,\n})\nexport class LayoutPublicComponent {}\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\n<div class=\"public-page-content\">\n <img src=\"assets/logo.svg\" class=\"logo\" />\n <router-outlet></router-outlet>\n</div>\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\nimport {AfterViewInit, Component, ElementRef, OnDestroy, Renderer2, ViewChild} from '@angular/core';\nimport {LayoutService} from '../../services/layout.service';\nimport {ShellService, UserInterfaceService} from '@valtimo/components';\n\n// eslint-disable-next-line no-var\ndeclare var App;\n\n@Component({\n selector: 'valtimo-layout-internal',\n templateUrl: './layout-internal.component.html',\n styleUrls: ['./layout-internal.component.scss'],\n standalone: false,\n})\nexport class LayoutInternalComponent implements AfterViewInit, OnDestroy {\n @ViewChild('mainContent') mainContentRef: ElementRef;\n\n public readonly showPageHeader$ = this.userInterfaceService.showPageHeader$;\n public readonly sideBarExpanded$ = this.shellService.sideBarExpanded$;\n public readonly collapsibleWidescreenMenu$ = this.shellService.collapsibleWidescreenMenu$;\n\n private _observer!: ResizeObserver;\n\n constructor(\n public layoutService: LayoutService,\n private readonly renderer: Renderer2,\n private readonly userInterfaceService: UserInterfaceService,\n private readonly shellService: ShellService\n ) {\n this.renderer.addClass(document.body, 'be-animate');\n }\n\n public ngAfterViewInit(): void {\n App.init();\n this.shellService.setContentElement(this.mainContentRef.nativeElement);\n this._observer = new ResizeObserver(() => {\n this.shellService.onMainContentResize();\n });\n this._observer.observe(this.mainContentRef.nativeElement);\n }\n\n public ngOnDestroy(): void {\n this._observer.disconnect();\n }\n}\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\n<valtimo-topbar></valtimo-topbar>\n<main\n class=\"cds--content\"\n [ngClass]=\"{\n 'cds--content--sidebar':\n (sideBarExpanded$ | async) && (collapsibleWidescreenMenu$ | async) === false,\n }\"\n #mainContent\n>\n <valtimo-left-sidebar [hidden]=\"layoutService.isFullscreen\"></valtimo-left-sidebar>\n <valtimo-alert></valtimo-alert>\n <valtimo-page-header [hidden]=\"layoutService.isFullscreen\"></valtimo-page-header>\n <router-outlet></router-outlet>\n <valtimo-right-sidebar></valtimo-right-sidebar>\n <v-prompt></v-prompt>\n</main>\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 */\nimport {\n AfterViewInit,\n Component,\n OnDestroy,\n OnInit,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport {ActivatedRoute, NavigationEnd, Router} from '@angular/router';\nimport {PlaceholderService} from 'carbon-components-angular';\nimport {Subscription} from 'rxjs';\nimport {filter} from 'rxjs/operators';\n\n// eslint-disable-next-line no-var\ndeclare var App: any;\n\n@Component({\n selector: 'valtimo-layout',\n templateUrl: './layout.component.html',\n standalone: false,\n})\nexport class LayoutComponent implements OnInit, AfterViewInit, OnDestroy {\n @ViewChild('carbonPlaceHolder', {static: true, read: ViewContainerRef})\n private readonly _carbonPlaceHolder: ViewContainerRef;\n\n public layoutType: string | null = null;\n private readonly _routerSub = new Subscription();\n private readonly _DEFAULT_LAYOUT = 'internal';\n\n constructor(\n private readonly placeHolderService: PlaceholderService,\n private readonly route: ActivatedRoute,\n private readonly router: Router\n ) {}\n\n public ngOnInit() {\n this.openRouterSubscription();\n }\n\n public ngAfterViewInit(): void {\n this.registerCarbonPlaceHolder();\n }\n\n public ngOnDestroy() {\n this._routerSub.unsubscribe();\n }\n\n private registerCarbonPlaceHolder(): void {\n if (this._carbonPlaceHolder) {\n this.placeHolderService.registerViewContainerRef(this._carbonPlaceHolder);\n }\n }\n\n private openRouterSubscription(): void {\n this._routerSub.add(\n this.router.events.pipe(filter(event => event instanceof NavigationEnd)).subscribe(() => {\n const layout = this.route.snapshot.firstChild.data.layout;\n this.layoutType = layout ? layout : this._DEFAULT_LAYOUT;\n })\n );\n }\n}\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\n<div #carbonPlaceHolder class=\"carbon-placeholder\"></div>\n\n<valtimo-global-notification></valtimo-global-notification>\n<valtimo-layout-public *ngIf=\"layoutType === 'public'\"></valtimo-layout-public>\n<valtimo-layout-internal *ngIf=\"layoutType === 'internal'\"></valtimo-layout-internal>\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\nexport * from './layout.component';\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\nexport * from './layout-internal.component';\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\nexport * from './layout-public.component';\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 */\nimport {CommonModule} from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n Input,\n OnDestroy,\n signal,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {CarbonListModule, EllipsisPipe, ViewContentService, ViewType} from '@valtimo/components';\nimport {ButtonModule, InputModule} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, map, Observable, tap} from 'rxjs';\nimport {FieldsWidget} from '../../models';\nimport {WidgetTextDisplayType} from '../../models/widget-display.model';\n\n@Component({\n selector: 'valtimo-widget-field',\n templateUrl: './widget-field.component.html',\n styleUrls: ['./widget-field.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [\n CommonModule,\n InputModule,\n TranslateModule,\n CarbonListModule,\n EllipsisPipe,\n ButtonModule,\n ],\n})\nexport class WidgetFieldComponent implements AfterViewInit, OnDestroy {\n @HostBinding('class') public readonly class = 'widget-field';\n\n @ViewChild('widgetField') private _widgetFieldRef: ElementRef<HTMLDivElement>;\n\n @Input() public set widgetConfiguration(value: FieldsWidget) {\n if (!value) return;\n this.widgetConfiguration$.next(value);\n }\n public readonly isEmptyWidgetData$ = new BehaviorSubject<boolean>(false);\n public readonly noVisibleFields$ = new BehaviorSubject<boolean>(true);\n\n @Input() public set widgetData(value: object) {\n if (!value) return;\n this.widgetData$.next(value);\n this.isEmptyWidgetData$.next(this.checkEmptyWidgetData(value));\n }\n\n public readonly renderVertically = signal(0);\n public readonly widgetConfiguration$ = new BehaviorSubject<FieldsWidget | null>(null);\n public readonly widgetData$ = new BehaviorSubject<object | null>(null);\n\n public readonly widgetPropertyValue$: Observable<\n {\n title: string;\n value: string;\n ellipsisCharacterLimit: number | null;\n hideWhenEmpty: boolean | false;\n isRawValue: boolean | false;\n }[][]\n > = combineLatest([this.widgetConfiguration$, this.widgetData$]).pipe(\n map(([widget, widgetData]) =>\n widget?.properties.columns.map(column =>\n column.reduce(\n (columnFields, property) => [\n ...columnFields,\n ...(widgetData?.hasOwnProperty(property.key)\n ? [\n {\n title: property.title,\n ellipsisCharacterLimit:\n (property.displayProperties as WidgetTextDisplayType)\n ?.ellipsisCharacterLimit ?? null,\n hideWhenEmpty:\n (property.displayProperties as WidgetTextDisplayType)?.hideWhenEmpty ?? false,\n value: this.viewContentService.get(widgetData[property.key], {\n ...property.displayProperties,\n viewType: property.displayProperties?.type ?? ViewType.TEXT,\n }),\n isRawValue: this.viewContentService.isRawValue({\n ...property.displayProperties,\n viewType: property.displayProperties?.type ?? ViewType.TEXT,\n })\n },\n ]\n : []),\n ],\n []\n )\n )\n ),\n tap(columns => this.checkEmptyFields(columns))\n );\n\n private _observer!: ResizeObserver;\n\n constructor(private readonly viewContentService: ViewContentService) {}\n\n public ngAfterViewInit(): void {\n if (this._widgetFieldRef) this.openWidthObserver();\n }\n public ngOnDestroy(): void {\n this._observer?.disconnect();\n }\n\n private openWidthObserver(): void {\n this._observer = new ResizeObserver(event => {\n this.observerMutation(event);\n });\n this._observer.observe(this._widgetFieldRef.nativeElement);\n }\n\n private observerMutation(event: Array<ResizeObserverEntry>): void {\n const elementWidth = event[0]?.borderBoxSize[0]?.inlineSize;\n\n if (typeof elementWidth === 'number' && elementWidth !== 0) {\n if (elementWidth < 640) {\n this.renderVertically.set(1);\n } else if (elementWidth > 640 && elementWidth <= 768) {\n this.renderVertically.set(2);\n } else if (elementWidth > 768 && elementWidth <= 1080) {\n this.renderVertically.set(3);\n } else if (elementWidth > 1080) {\n this.renderVertically.set(4);\n }\n }\n }\n\n private checkEmptyWidgetData(widgetData: Object): boolean {\n return widgetData && Object.keys(widgetData).length === 0;\n }\n\n private checkEmptyFields(columns: any[][]): void {\n columns.forEach(column => {\n column.forEach(field => {\n if (!field?.hideWhenEmpty || (field?.hideWhenEmpty && field?.value && field?.value !== '-'))\n this.noVisibleFields$.next(false);\n });\n });\n }\n}\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\n<ng-container\n *ngIf=\"{\n widgetConfiguration: widgetConfiguration$ | async,\n widgetPropertyValue: widgetPropertyValue$ | async,\n widgetData: widgetData$ | async,\n isEmptyWidgetData: isEmptyWidgetData$ | async,\n noVisibleFields: noVisibleFields$ | async,\n } as obs\"\n>\n <section class=\"widget-field__header\">\n <h4 class=\"widget-field__title\">{{ obs?.widgetConfiguration?.title }}</h4>\n\n <ng-content></ng-content>\n </section>\n\n @if (obs?.isEmptyWidgetData) {\n <valtimo-no-results\n [collapseVertically]=\"true\"\n [description]=\"'widgets.noData' | translate\"\n [smallPadding]=\"true\"\n ></valtimo-no-results>\n } @else {\n <div\n #widgetField\n [ngClass]=\"{\n 'widget-field__render-vertically': renderVertically() === 1,\n 'widget-field__render-two-columns': renderVertically() === 2,\n 'widget-field__render-three-columns': renderVertically() === 3,\n 'widget-field__container': renderVertically() === 4,\n }\"\n >\n @if (obs.noVisibleFields) {\n <valtimo-no-results\n [collapseVertically]=\"true\"\n [description]=\"'widgets.emptyFields' | translate\"\n [smallPadding]=\"true\"\n ></valtimo-no-results>\n } @else {\n @for (column of obs?.widgetPropertyValue; track column.key) {\n <div class=\"widget-field__column\">\n @for (property of column; track property) {\n <div\n *ngIf=\"\n (property?.value !== null &&\n property?.value !== '-' &&\n property?.hideWhenEmpty) ||\n !property?.hideWhenEmpty\n \"\n class=\"widget-field__field\"\n >\n <label class=\"widget-field__field-label\" [attr.title]=\"property?.title\">\n {{ property?.title }}</label\n >\n\n <div [attr.title]=\"property?.value\" class=\"widget-field__field-value\">\n @if (property?.isRawValue) {\n <div [innerHTML]=\"property?.value\"></div>\n } @else {\n {{ property?.value | valtimoEllipsis: property?.ellipsisCharacterLimit }}\n }\n </div>\n </div>\n }\n </div>\n }\n }\n </div>\n }\n</ng-container>\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\nexport * from './widget-field.component';\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\nimport {Component, Inject, OnInit} from '@angular/core';\nimport {BehaviorSubject, combineLatest, map, Observable, switchMap, take, tap} from 'rxjs';\nimport {TranslateService} from '@ngx-translate/core';\nimport {Localization, LocalizationService, MergedLocalizations} from '@valtimo/shared';\nimport {\n ArbitraryInputTitles,\n MultiInputKeyValue,\n MultiInputOutput,\n PageHeaderService,\n} from '@valtimo/components';\nimport {isEqual} from 'lodash';\nimport {DOCUMENT} from '@angular/common';\n\n@Component({\n selector: 'valtimo-translation-management',\n templateUrl: './translation-management.component.html',\n styleUrls: ['./translation-management.component.scss'],\n standalone: false,\n})\nexport class TranslationManagementComponent implements OnInit {\n public readonly loading$ = new BehaviorSubject<boolean>(true);\n public readonly allChangedValuesValid$ = new BehaviorSubject<boolean>(false);\n public readonly disabled$ = new BehaviorSubject<boolean>(false);\n\n private readonly _languageOptions$ = new BehaviorSubject<Array<string>>(undefined);\n private readonly _refreshLocalizations$ = new BehaviorSubject<null>(null);\n private readonly _localizationTranslations$ = this._refreshLocalizations$.pipe(\n tap(() => this.loading$.next(true)),\n switchMap(() => this.localizationService.getMergedLocalizations()),\n tap(() => this.loading$.next(false))\n );\n\n private _defaultValues: Array<MultiInputKeyValue> = [];\n\n private readonly _changedValues$ = new BehaviorSubject<MultiInputOutput>(undefined);\n\n public readonly showConfirmationModal$ = new BehaviorSubject<boolean>(false);\n\n public readonly valuesChanged$: Observable<boolean> = this._changedValues$.pipe(\n map(changedValues => !isEqual(changedValues, this._defaultValues))\n );\n\n public readonly localizationTranslationValues$: Observable<Array<MultiInputKeyValue>> =\n combineLatest([\n this._languageOptions$,\n this._localizationTranslations$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([languageOptions, localizationTranslations]) =>\n this.mapMergedLocalizationsToMultiInput(languageOptions, localizationTranslations)\n ),\n tap(defaultValues => {\n this._defaultValues = defaultValues;\n })\n );\n\n public readonly multiInputTiles$: Observable<ArbitraryInputTitles> = combineLatest([\n this._languageOptions$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([languageOptions]) => {\n const objToReturn = {};\n objToReturn[0] = this.translateService.instant('listColumn.key');\n\n languageOptions.forEach((languageOption, index) => {\n objToReturn[index + 1] = this.translateService.instant(\n `settings.language.options.${languageOption}`\n );\n });\n\n return objToReturn;\n })\n );\n\n public readonly amountOfArbitraryValues$: Observable<number> = this.multiInputTiles$.pipe(\n map(multiInputTitles => Object.keys(multiInputTitles).length)\n );\n\n public readonly compactMode$ = this.pageHeaderService.compactMode$;\n\n constructor(\n private readonly translateService: TranslateService,\n private readonly localizationService: LocalizationService,\n private readonly pageHeaderService: PageHeaderService,\n @Inject(DOCUMENT) private readonly document: Document\n ) {}\n\n public ngOnInit(): void {\n this.setLanguages();\n }\n\n public validChange(valid: boolean): void {\n this.allChangedValuesValid$.next(valid);\n }\n\n public valueChange(value: MultiInputOutput): void {\n this._changedValues$.next(value);\n }\n\n public saveAndRefresh(): void {\n this.saveChanges(true);\n }\n\n public saveAndStay(): void {\n this.saveChanges();\n }\n\n public cancel(): void {\n this.hideModal();\n }\n\n public showModal(): void {\n this.showConfirmationModal$.next(true);\n }\n\n public saveChanges(reload = false): void {\n this.disable();\n\n combineLatest([this._changedValues$, this._languageOptions$])\n .pipe(\n take(1),\n map(([changedValues, languageOptions]) =>\n this.getLocalizationsForUpdateRequest(changedValues, languageOptions)\n ),\n switchMap(updatedLocalizations =>\n this.localizationService.updateLocalizations(updatedLocalizations)\n )\n )\n .subscribe(() => {\n if (reload) {\n this.document?.defaultView?.location?.reload();\n } else {\n this._refreshLocalizations$.next(null);\n this.enable();\n }\n });\n }\n\n private setLanguages(): void {\n this._languageOptions$.next(this.translateService.langs);\n }\n\n private disable(): void {\n this.disabled$.next(true);\n }\n\n private enable(): void {\n this.disabled$.next(false);\n }\n\n private hideModal(): void {\n this.showConfirmationModal$.next(false);\n }\n\n private flattenObject(ob: object): object {\n const toReturn = {};\n\n for (const i in ob) {\n if (!ob.hasOwnProperty(i)) continue;\n\n if (typeof ob[i] == 'object' && ob[i] !== null) {\n const flatObject = this.flattenObject(ob[i]);\n for (const x in flatObject) {\n if (!flatObject.hasOwnProperty(x)) continue;\n\n toReturn[i + '.' + x] = flatObject[x];\n }\n } else {\n toReturn[i] = ob[i];\n }\n }\n return toReturn;\n }\n\n private unflattenObject(obj: object, delimiter = '.'): object {\n return Object.keys(obj).reduce((res, k) => {\n k.split(delimiter).reduce(\n (acc, e, i, keys) =>\n acc[e] ||\n (acc[e] = isNaN(Number(keys[i + 1])) ? (keys.length - 1 === i ? obj[k] : {}) : []),\n res\n );\n return res;\n }, {});\n }\n\n private getLocalizationsForUpdateRequest(\n changedValues: MultiInputOutput,\n languageOptions: string[]\n ): Localization[] {\n const localizations: Localization[] = [];\n const translationObject = {};\n\n languageOptions.forEach(languageOption => {\n translationObject[languageOption] = {};\n });\n\n changedValues.forEach(changedValue => {\n languageOptions.forEach((languageOption, index) => {\n translationObject[languageOption] = {\n ...translationObject[languageOption],\n [changedValue[0]]: changedValue[index + 1],\n };\n });\n });\n\n languageOptions.forEach(languageOption => {\n translationObject[languageOption] = this.unflattenObject(translationObject[languageOption]);\n });\n\n Object.keys(translationObject).forEach(languageKey => {\n localizations.push({languageKey, content: translationObject[languageKey]});\n });\n\n return localizations;\n }\n\n private mapMergedLocalizationsToMultiInput(\n languageOptions: string[],\n mergedLocalizations: MergedLocalizations\n ) {\n if (Object.keys(mergedLocalizations).length === 0) {\n return [];\n }\n\n const firstLanguageOption = languageOptions[0];\n const firstLanguageTranslations =\n firstLanguageOption && mergedLocalizations[firstLanguageOption];\n const flattenedFirstLanguageTranslations =\n firstLanguageTranslations && this.flattenObject(firstLanguageTranslations);\n\n return Object.keys(flattenedFirstLanguageTranslations).map(flattenedTranslationKey => {\n const emptyArbitraryValue = {};\n\n emptyArbitraryValue['0'] = flattenedTranslationKey;\n\n languageOptions.forEach((languageOption, index) => {\n emptyArbitraryValue[`${index + 1}`] =\n this.flattenObject(mergedLocalizations[languageOption])[flattenedTranslationKey] || '';\n });\n\n return emptyArbitraryValue;\n });\n }\n}\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\n<ng-container\n *ngIf=\"{\n localizationTranslationValues: localizationTranslationValues$ | async,\n loading: loading$ | async,\n disabled: disabled$ | async,\n multiInputTitles: multiInputTiles$ | async,\n amountOfArbitraryValues: amountOfArbitraryValues$ | async,\n showConfirmationModal: showConfirmationModal$,\n allChangedValuesValid: allChangedValuesValid$ | async,\n valuesChanged: valuesChanged$ | async,\n compactMode: compactMode$ | async,\n } as obs\"\n>\n <ng-container *ngIf=\"!obs.loading && obs.localizationTranslationValues; else loading\">\n <valtimo-carbon-multi-input\n [disabled]=\"obs.disabled\"\n [arbitraryAmountTitles]=\"obs.multiInputTitles\"\n [fullWidth]=\"true\"\n [minimumAmountOfRows]=\"0\"\n type=\"arbitraryAmount\"\n [arbitraryValueAmount]=\"obs.amountOfArbitraryValues\"\n [defaultValues]=\"obs.localizationTranslationValues\"\n (allValuesValidEvent)=\"validChange($event)\"\n (valueChange)=\"valueChange($event)\"\n addRowTranslationKey=\"translationManagement.add\"\n ></valtimo-carbon-multi-input>\n </ng-container>\n\n <ng-template #loading>\n <div class=\"loading-container\"><cds-loading></cds-loading></div>\n </ng-template>\n\n <valtimo-confirmation-modal\n [showModalSubject$]=\"obs.showConfirmationModal\"\n (confirmEvent)=\"saveAndRefresh()\"\n (optionalEvent)=\"saveAndStay()\"\n (cancelEvent)=\"cancel()\"\n [showOptionalButton]=\"true\"\n cancelButtonType=\"ghost\"\n optionalButtonType=\"secondary\"\n confirmButtonTextTranslationKey=\"translationManagement.saveWithReload\"\n optionalButtonTextTranslationKey=\"translationManagement.saveWithoutReload\"\n titleTranslationKey=\"translationManagement.modalTitle\"\n contentTranslationKey=\"translationManagement.modalContent\"\n [spacerAfterCancelButton]=\"true\"\n ></valtimo-confirmation-modal>\n\n <ng-container renderInPageHeader>\n <ng-template>\n <button\n cdsButton=\"primary\"\n [size]=\"obs.compactMode ? 'sm' : 'md'\"\n (click)=\"showModal()\"\n [disabled]=\"!obs.allChangedValuesValid || obs.disabled || !obs.valuesChanged\"\n >\n {{ 'interface.save' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"save\" size=\"16\"></svg>\n </button>\n </ng-template>\n </ng-container>\n</ng-container>\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\nexport * from './translation-management.component';\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\nimport {ChangeDetectionStrategy, Component, Input} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {BehaviorSubject, combineLatest, filter, map, Observable, of, switchMap, tap} from 'rxjs';\nimport {FormService} from '@valtimo/form';\nimport {FormioForm} from '@formio/angular';\nimport {FormIoModule} from '@valtimo/components';\nimport {ButtonModule} from 'carbon-components-angular';\nimport {FormioWidgetWidgetWithUuid} from '../../models';\nimport {WidgetLayoutService} from '../../services';\n\n@Component({\n selector: 'valtimo-widget-formio',\n templateUrl: './widget-formio.component.html',\n standalone: true,\n imports: [CommonModule, TranslateModule, FormIoModule, ButtonModule],\n styleUrls: ['./widget-formio.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class WidgetFormioComponent {\n @Input() public set documentId(value: string) {\n if (value) this._documentIdSubject$.next(value);\n }\n\n @Input() public set widgetConfiguration(value: FormioWidgetWidgetWithUuid) {\n if (!value) return;\n this._widgetConfigurationSubject$.next(value);\n }\n\n @Input() public set widgetUuid(value: string) {\n this.widgetLayoutService.setWidgetDataLoaded(value);\n }\n\n private readonly _widgetConfigurationSubject$ =\n new BehaviorSubject<FormioWidgetWidgetWithUuid | null>(null);\n public get widgetConfiguration$(): Observable<FormioWidgetWidgetWithUuid> {\n return this._widgetConfigurationSubject$.pipe(filter(config => !!config));\n }\n\n private readonly _documentIdSubject$ = new BehaviorSubject<string>('');\n private get _documentId$(): Observable<string> {\n return this._documentIdSubject$.pipe(filter(id => !!id));\n }\n\n public readonly prefilledFormDefinition$: Observable<FormioForm> = combineLatest([\n this.widgetConfiguration$,\n this._documentId$,\n ]).pipe(\n switchMap(([config, documentId]) =>\n combineLatest([\n this.formService.getFormDefinitionByNamePreFilled(\n config.properties.formDefinitionName,\n documentId\n ),\n of(config),\n ])\n ),\n tap(() => {\n this.widgetLayoutService.setWidgetDataLoaded(this.widgetUuid);\n }),\n map(([formDef]) => formDef)\n );\n\n constructor(\n private readonly formService: FormService,\n private readonly widgetLayoutService: WidgetLayoutService\n ) {}\n}\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\n<div\n class=\"formio-widget\"\n *ngIf=\"{\n prefilledFormDefinition: prefilledFormDefinition$ | async,\n widgetConfiguration: widgetConfiguration$ | async,\n } as obs\"\n>\n <section class=\"formio-widget__header\">\n <h4 class=\"formio-widget__title\">{{ obs.widgetConfiguration$?.title || '-' }}</h4>\n\n <ng-content></ng-content>\n </section>\n\n <valtimo-form-io [form]=\"obs.prefilledFormDefinition\"></valtimo-form-io>\n</div>\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\nexport * from './widget-formio.component';\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\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n OnDestroy,\n Output,\n signal,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {\n ButtonModule,\n InputModule,\n PaginationModel,\n PaginationModule,\n TilesModule,\n} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, filter, map, Observable, tap} from 'rxjs';\nimport {CarbonListModule, ViewContentService} from '@valtimo/components';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {Page} from '@valtimo/shared';\nimport {\n CollectionWidget,\n CollectionWidgetCardData,\n CollectionWidgetField,\n CollectionWidgetResolvedField,\n CollectionWidgetTitle,\n WidgetDisplayTypeKey,\n} from '../../models';\n\n@Component({\n selector: 'valtimo-widget-collection',\n templateUrl: './widget-collection.component.html',\n styleUrls: ['./widget-collection.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [\n CommonModule,\n InputModule,\n PaginationModule,\n TilesModule,\n CarbonListModule,\n TranslateModule,\n ButtonModule,\n ],\n})\nexport class WidgetCollectionComponent implements AfterViewInit, OnDestroy {\n @HostBinding('class') public readonly class = 'valtimo-widget-collection';\n @ViewChild('widgetCollection') private _widgetCollectionRef: ElementRef<HTMLDivElement>;\n\n @Input() public set widgetConfiguration(value: CollectionWidget) {\n if (!value) return;\n this.widgetConfiguration$.next(value);\n }\n\n public readonly showPagination$ = new BehaviorSubject<boolean>(false);\n\n private readonly _widgetData$ = new BehaviorSubject<Page<CollectionWidgetCardData> | null>(null);\n\n public get widgetData$(): Observable<Page<CollectionWidgetCardData>> {\n return this._widgetData$.pipe(filter(data => !!data));\n }\n\n private _paginationInitialized = false;\n\n private _initialNumberOfElements!: number;\n\n @Input() public set widgetData(value: Page<CollectionWidgetCardData> | null) {\n if (!value) return;\n\n if (!this._initialNumberOfElements) this._initialNumberOfElements = value.numberOfElements;\n\n let widgetData: Page<CollectionWidgetCardData> = value;\n\n if (typeof value?.content?.length !== 'number') return;\n\n if (value.content.length < this._initialNumberOfElements) {\n const rows = new Array<number>(this._initialNumberOfElements).fill(null);\n widgetData = {\n ...value,\n content: rows.map((_, index) => value.content[index] || {...value[0], hidden: true}),\n };\n }\n\n this._widgetData$.next(widgetData);\n\n if (!this._paginationInitialized) {\n this.showPagination$.next(value.totalElements > value.size);\n\n this.paginationModel.set(\n value.totalPages < 0\n ? null\n : {\n currentPage: 1,\n totalDataLength: Math.ceil(value.totalElements / value.size),\n pageLength: value.size,\n }\n );\n\n this._paginationInitialized = true;\n } else {\n this.paginationModel.update((model: PaginationModel) => ({\n ...model,\n currentPage: value.number + 1,\n }));\n }\n\n this.cdr.detectChanges();\n }\n\n @Output() public readonly paginationEvent = new EventEmitter<PaginationModel>();\n\n public readonly noVisibleFields$ = new BehaviorSubject<boolean>(true);\n public readonly widgetTitle = signal('-');\n\n public readonly widgetConfiguration$ = new BehaviorSubject<CollectionWidget | null>(null);\n public readonly paginationModel = signal<PaginationModel>(new PaginationModel());\n public readonly amountOfColumns = signal(0);\n\n public readonly collectionWidgetCards$: Observable<\n {title: string; fields: CollectionWidgetResolvedField[]; key: number; hidden: boolean}[]\n > = combineLatest([this.widgetConfiguration$, this.widgetData$]).pipe(\n filter(([widgetConfig, widgetData]) => !!widgetConfig && !!widgetData),\n tap(([widgetConfig]) => {\n this.widgetTitle.set(widgetConfig.title);\n }),\n map(([widgetConfig, widgetData]) =>\n widgetData.content.map((cardData, index) => ({\n hidden: cardData.hidden,\n key: index,\n title: this.getCardTitle({\n value: cardData.title,\n displayProperties: widgetConfig?.properties?.title?.displayProperties,\n }),\n fields: widgetConfig?.properties.fields.reduce(\n (cardFieldsAccumulator, currentField) => [\n ...cardFieldsAccumulator,\n this.getCardField(currentField, cardData),\n ],\n []\n ),\n }))\n ),\n tap(card => this.checkEmptyFields(card))\n );\n\n private _observer!: ResizeObserver;\n\n constructor(\n private readonly viewContentService: ViewContentService,\n private readonly cdr: ChangeDetectorRef\n ) {}\n\n public ngAfterViewInit(): void {\n this.openWidthObserver();\n }\n\n public ngOnDestroy(): void {\n this._observer?.disconnect();\n }\n\n public onSelectPage(page: number): void {\n this.paginationEvent.emit({...this.paginationModel(), currentPage: page});\n }\n\n private getCardField(\n field: CollectionWidgetField,\n data: CollectionWidgetCardData\n ): CollectionWidgetResolvedField {\n const resolvedValue = this.viewContentService.get(\n data.fields && field.key ? data.fields[field.key] : '',\n {\n ...field.displayProperties,\n viewType: field.displayProperties?.type ?? WidgetDisplayTypeKey.TEXT,\n }\n );\n\n return {\n key: field.key,\n title: field.title,\n width: field.width,\n value: resolvedValue || data.fields[field.key],\n hideWhenEmpty: field.displayProperties?.hideWhenEmpty,\n };\n }\n\n private openWidthObserver(): void {\n this._observer = new ResizeObserver(event => {\n this.observerMutation(event);\n });\n this._observer.observe(this._widgetCollectionRef.nativeElement);\n }\n\n private observerMutation(event: Array<ResizeObserverEntry>): void {\n const elementWidth = event[0]?.borderBoxSize[0]?.inlineSize;\n\n if (typeof elementWidth === 'number' && elementWidth !== 0) {\n if (elementWidth < 640) {\n this.amountOfColumns.set(1);\n } else if (elementWidth > 640 && elementWidth <= 768) {\n this.amountOfColumns.set(2);\n } else if (elementWidth > 768 && elementWidth <= 1080) {\n this.amountOfColumns.set(3);\n } else if (elementWidth > 1080) {\n this.amountOfColumns.set(4);\n }\n }\n }\n\n private getCardTitle(collectionCaseWidgetTitle: CollectionWidgetTitle): string {\n const widgetTitleValue = collectionCaseWidgetTitle.value;\n const widgetTitleDisplayProperties = collectionCaseWidgetTitle.displayProperties;\n\n if (!widgetTitleDisplayProperties && widgetTitleValue) {\n return widgetTitleValue;\n } else if (widgetTitleDisplayProperties && widgetTitleValue) {\n const convertedTitle = this.viewContentService.get(widgetTitleValue, {\n ...widgetTitleDisplayProperties,\n viewType: widgetTitleDisplayProperties.type,\n hideWhenEmpty: widgetTitleDisplayProperties.hideWhenEmpty,\n });\n\n if (convertedTitle) return convertedTitle;\n }\n\n return '-';\n }\n\n private checkEmptyFields(card): void {\n card.forEach(collection => {\n collection.fields.forEach(field => {\n if (!field.hideWhenEmpty || (field.hideWhenEmpty && field.value && field.value !== '-'))\n this.noVisibleFields$.next(false);\n });\n });\n }\n}\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\n<ng-container\n *ngIf=\"{\n widgetConfiguration: widgetConfiguration$ | async,\n collectionWidgetCards: collectionWidgetCards$ | async,\n noVisibleFields: noVisibleFields$ | async,\n } as obs\"\n>\n <section class=\"valtimo-widget-collection__header\">\n <span class=\"valtimo-widget-collection__title\">{{ widgetTitle() }}</span>\n\n <ng-content></ng-content>\n </section>\n\n <div\n #widgetCollection\n [ngClass]=\"{\n 'valtimo-widget-collection__render-vertically': amountOfColumns() === 1,\n 'valtimo-widget-collection__render-two-columns': amountOfColumns() === 2,\n 'valtimo-widget-collection__render-three-columns': amountOfColumns() === 3,\n 'valtimo-widget-collection__container': amountOfColumns() === 4,\n }\"\n >\n @for (card of obs?.collectionWidgetCards; track card.key) {\n <div\n *ngIf=\"!obs.noVisibleFields\"\n class=\"valtimo-widget-collection__card\"\n [ngClass]=\"{'valtimo-widget-collection__card--hidden': card.hidden}\"\n >\n <span class=\"valtimo-widget-collection__card-title\">{{ card.title }}</span>\n\n @for (field of card.fields; track field.key) {\n <div\n *ngIf=\"\n (field?.value !== null && field?.value !== '-' && field?.hideWhenEmpty) ||\n !field?.hideWhenEmpty\n \"\n [ngClass]=\"{\n 'valtimo-widget-collection__full-width-input': field?.width === 'full',\n 'valtimo-widget-collection__half-width-input': field?.width === 'half',\n }\"\n >\n <cds-label class=\"valtimo-widget-collection__label\" [attr.title]=\"field?.title\">\n {{ field?.title }}\n\n <input\n [value]=\"field?.value\"\n [readonly]=\"true\"\n class=\"valtimo-widget-collection__card-input\"\n cdsText\n />\n </cds-label>\n </div>\n }\n </div>\n }\n </div>\n\n @if (obs.noVisibleFields || !obs?.collectionWidgetCards?.length) {\n <valtimo-no-results\n [collapseVertically]=\"true\"\n [description]=\"\n (obs.noVisibleFields ? 'case.widgets.emptyFields' : 'case.widgets.noData') | translate\n \"\n [smallPadding]=\"true\"\n ></valtimo-no-results>\n }\n\n <cds-pagination-nav\n *ngIf=\"paginationModel() && (showPagination$ | async)\"\n class=\"valtimo-widget-collection__pagination\"\n [model]=\"paginationModel()\"\n (selectPage)=\"onSelectPage($event)\"\n >\n </cds-pagination-nav>\n</ng-container>\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\nexport * from './widget-collection.component';\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 */\nimport {CommonModule} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n Output,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {CarbonListItem, CarbonListModule, ColumnConfig, ViewType} from '@valtimo/components';\nimport {Page} from '@valtimo/shared';\nimport {\n ButtonModule,\n PaginationModel,\n PaginationModule,\n TilesModule,\n} from 'carbon-components-angular';\nimport {BehaviorSubject} from 'rxjs';\nimport {FieldsWidgetValue, TableWidget} from '../../models';\n\n@Component({\n selector: 'valtimo-widget-table',\n templateUrl: './widget-table.component.html',\n styleUrls: ['./widget-table.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [\n CommonModule,\n CarbonListModule,\n PaginationModule,\n TilesModule,\n TranslateModule,\n ButtonModule,\n ],\n})\nexport class WidgetTableComponent {\n private _widgetConfiguration: TableWidget;\n\n public get widgetConfiguration(): TableWidget {\n return this._widgetConfiguration;\n }\n\n @Input({required: true}) public set widgetConfiguration(value: TableWidget) {\n this._widgetConfiguration = value;\n\n this.fields$.next(\n value.properties.columns.map((column: FieldsWidgetValue, index: number) => ({\n key: column.key,\n label: column.title,\n viewType: column.displayProperties?.type ?? ViewType.TEXT,\n className: `valtimo-widget-table--transparent ${index === 0 && value.properties.firstColumnAsTitle ? 'valtimo-widget-table--title' : ''}`,\n ...(!!column.displayProperties?.['format'] && {\n format: column.displayProperties['format'],\n }),\n ...(!!column.displayProperties?.['digitsInfo'] && {\n digitsInfo: column.displayProperties['digitsInfo'],\n }),\n ...(!!column.displayProperties?.['display'] && {\n display: column.displayProperties['display'],\n }),\n ...(!!column.displayProperties?.['currencyCode'] && {\n currencyCode: column.displayProperties['currencyCode'],\n }),\n ...(!!column.displayProperties?.['values'] && {\n values: column.displayProperties['values'],\n }),\n }))\n );\n\n this.cdr.detectChanges();\n }\n\n public readonly showPagination = signal<boolean>(false);\n\n public readonly widgetData$ = new BehaviorSubject<CarbonListItem[] | null>(null);\n\n private _paginationInitialized = false;\n\n private _initialNumberOfElements!: number;\n\n @Input({required: true}) set widgetData(value: Page<CarbonListItem> | null) {\n if (!value) return;\n\n this.showPagination.set(value.totalElements > value.size);\n\n if (!this._initialNumberOfElements) this._initialNumberOfElements = value.numberOfElements;\n\n let widgetData: CarbonListItem[] = value.content;\n\n if (typeof value?.content?.length !== 'number') return;\n\n if (value.content.length < this._initialNumberOfElements) {\n const rows = new Array<null>(this._initialNumberOfElements).fill(null);\n\n widgetData = rows.map((_, index) => value.content[index] || {...value[0], hidden: true});\n }\n\n this.widgetData$.next(widgetData);\n\n if (!this._paginationInitialized) {\n this.showPagination.set(value.totalElements > value.size);\n\n this.paginationModel.set(\n value.totalPages < 0\n ? null\n : {\n currentPage: 1,\n totalDataLength: Math.ceil(value.totalElements / value.size),\n pageLength: value.size,\n }\n );\n\n this._paginationInitialized = true;\n } else {\n this.paginationModel.update((model: PaginationModel | null) =>\n !model\n ? null\n : {\n ...model,\n currentPage: value.number + 1,\n }\n );\n }\n\n this.cdr.detectChanges();\n }\n\n @Output() public readonly paginationEvent = new EventEmitter<PaginationModel>();\n\n public readonly fields$ = new BehaviorSubject<ColumnConfig[]>([]);\n\n public readonly paginationModel = signal<PaginationModel | null>(new PaginationModel());\n\n constructor(private readonly cdr: ChangeDetectorRef) {}\n\n public onSelectPage(page: number): void {\n const paginationModel = this.paginationModel();\n if (!paginationModel) return;\n this.paginationEvent.emit({...paginationModel, currentPage: page});\n }\n}\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\n<cds-tile\n *ngIf=\"{\n fields: fields$ | async,\n widgetData: widgetData$ | async,\n } as obs\"\n class=\"valtimo-widget-table\"\n>\n <section class=\"valtimo-widget-table__header\">\n <span class=\"widget-title\">{{ widgetConfiguration?.title }}</span>\n\n <ng-content></ng-content>\n </section>\n\n @if (obs.widgetData && obs.fields && obs.widgetData.length) {\n <section class=\"valtimo-widget-table__content\">\n <valtimo-carbon-list\n [header]=\"false\"\n [hideToolbar]=\"true\"\n [fields]=\"obs.fields\"\n [items]=\"obs.widgetData\"\n >\n </valtimo-carbon-list>\n\n <cds-pagination-nav\n *ngIf=\"paginationModel() && showPagination()\"\n class=\"valtimo-widget-table__pagination\"\n [model]=\"paginationModel()\"\n (selectPage)=\"onSelectPage($event)\"\n >\n </cds-pagination-nav>\n </section>\n } @else {\n <valtimo-no-results\n [collapseVertically]=\"true\"\n [description]=\"'case.widgets.noData' | translate\"\n [smallPadding]=\"true\"\n ></valtimo-no-results>\n }\n</cds-tile>\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\nexport * from './widget-table.component';\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\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Inject,\n Input,\n OnDestroy,\n Optional,\n signal,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {BehaviorSubject, combineLatest, filter, Observable, Subscription} from 'rxjs';\nimport {CarbonListModule} from '@valtimo/components';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {DocumentService} from '@valtimo/document';\nimport {PermissionService} from '@valtimo/access-control';\nimport {ButtonModule} from 'carbon-components-angular';\nimport {CustomWidget, CustomWidgetConfig} from '../../models';\nimport {CUSTOM_WIDGET_TOKEN} from '../../constants';\nimport {WidgetLayoutService} from '../../services';\n\n@Component({\n selector: 'valtimo-widget-custom',\n templateUrl: './widget-custom.component.html',\n styleUrls: ['./widget-custom.component.scss'],\n standalone: true,\n imports: [CommonModule, CarbonListModule, TranslateModule, ButtonModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class WidgetCustomComponent implements AfterViewInit, OnDestroy {\n @ViewChild('customWidgetContainer', {read: ViewContainerRef})\n private readonly _customWidgetContainerRef: ViewContainerRef;\n\n @Input() public set widgetConfiguration(value: CustomWidget) {\n if (!value) return;\n this._widgetConfigSubject$.next(value);\n }\n\n @Input() public set widgetUuid(value: string) {\n this.widgetLayoutService.setWidgetDataLoaded(value);\n }\n\n private readonly _customWidgetConfig$ = new BehaviorSubject<CustomWidgetConfig | {}>({});\n\n private readonly _widgetConfigSubject$ = new BehaviorSubject<CustomWidget | null>(null);\n\n public get widgetConfig$(): Observable<CustomWidget> {\n return this._widgetConfigSubject$.pipe(filter(config => config !== null));\n }\n\n public readonly noCustomComponentAvailable = signal(false);\n\n private readonly _subscriptions = new Subscription();\n\n constructor(\n @Optional()\n @Inject(CUSTOM_WIDGET_TOKEN)\n private readonly customWidgetConfig: CustomWidgetConfig,\n private readonly cdr: ChangeDetectorRef,\n private readonly widgetLayoutService: WidgetLayoutService,\n protected readonly documentService: DocumentService,\n protected readonly permissionService: PermissionService\n ) {\n if (customWidgetConfig) this._customWidgetConfig$.next(this.customWidgetConfig);\n }\n\n public ngAfterViewInit(): void {\n this.openCustomWidgetSubscription();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n private openCustomWidgetSubscription(): void {\n this._subscriptions.add(\n combineLatest([this.widgetConfig$, this._customWidgetConfig$]).subscribe(\n ([widgetConfig, customCaseWidgetConfig]) => {\n const customWidgetComponentKey = widgetConfig?.properties?.componentKey;\n const customComponent = customCaseWidgetConfig[customWidgetComponentKey];\n\n if (!customComponent) {\n this.noCustomComponentAvailable.set(true);\n return;\n }\n\n const componentRef = this._customWidgetContainerRef.createComponent(customComponent);\n\n componentRef.changeDetectorRef.detectChanges();\n this.cdr.detectChanges();\n }\n )\n );\n }\n}\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\n<div *ngIf=\"{widgetConfig: widgetConfig$ | async} as obs\" class=\"custom-widget\">\n <section class=\"custom-widget__header\">\n <h4 class=\"custom-widget__title\">{{ obs.widgetConfig$?.title || '-' }}</h4>\n\n <ng-content></ng-content>\n </section>\n\n <div class=\"custom-widget__content\">\n <ng-template #customWidgetContainer></ng-template>\n\n @if (noCustomComponentAvailable()) {\n <valtimo-no-results\n [collapseVertically]=\"true\"\n [description]=\"'case.widgets.noCustomComponentDescription' | translate\"\n [smallPadding]=\"true\"\n ></valtimo-no-results>\n }\n </div>\n</div>\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\nexport * from './widget-custom.component';\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 */\nimport {CommonModule} from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n OnDestroy,\n Renderer2,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {\n CARBON_THEME,\n CarbonListModule,\n CdsThemeService,\n CurrentCarbonTheme,\n} from '@valtimo/components';\nimport {LoadingModule, TilesModule} from 'carbon-components-angular';\nimport {\n BehaviorSubject,\n combineLatest,\n filter,\n map,\n Observable,\n startWith,\n Subscription,\n tap,\n} from 'rxjs';\nimport {WidgetComponentMap, WidgetWithUuid} from '../../models';\nimport {WidgetLayoutService} from '../../services/widget-layout.service';\nimport {WIDGET_HEIGHT_1X} from '../../constants';\n\n@Component({\n selector: 'valtimo-widget-block',\n templateUrl: './widget-block.component.html',\n styleUrls: ['./widget-block.component.scss'],\n standalone: true,\n imports: [CommonModule, LoadingModule, CarbonListModule, TranslateModule, TilesModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class WidgetBlockComponent implements AfterViewInit, OnDestroy {\n @ViewChild('widgetBlockContent') private _widgetBlockContentRef: ElementRef<HTMLDivElement>;\n @ViewChild('widgetComponent', {static: true, read: ViewContainerRef})\n public readonly dynamicContainer: ViewContainerRef;\n\n @Input() public set widget(value: WidgetWithUuid) {\n this._widgetUuid = value.uuid;\n this._widget$.next(value);\n }\n\n @Input() public readonly widgetComponentMap: WidgetComponentMap;\n @Input({required: false}) public widgetParams: object;\n\n private readonly _widget$ = new BehaviorSubject<WidgetWithUuid | null>(null);\n\n public get widget$(): Observable<WidgetWithUuid> {\n return this._widget$.pipe(filter(widget => widget !== null));\n }\n\n private readonly _viewContainerRefSubject$ = new BehaviorSubject<ViewContainerRef | null>(null);\n\n private get _viewContainerRef$(): Observable<ViewContainerRef> {\n return this._viewContainerRefSubject$.pipe(filter(ref => !!ref));\n }\n\n private readonly _contentHeight$ = new BehaviorSubject<number>(0);\n\n public readonly blockHeightPx$ = combineLatest([\n this._contentHeight$,\n this._viewContainerRef$,\n ]).pipe(\n filter(([contentHeight]) => contentHeight !== 0),\n tap(([contentHeight, viewRef]) => {\n const blockHeight = Math.ceil((contentHeight + 16) / WIDGET_HEIGHT_1X) * WIDGET_HEIGHT_1X;\n\n this.renderer.setStyle(viewRef.element.nativeElement, 'height', `${blockHeight}px`);\n this.widgetLayoutService.triggerMuuriLayout();\n })\n );\n\n public readonly blockWidthPercentage$ = combineLatest([\n this.widgetLayoutService.amountOfColumns$,\n this.widget$,\n this._viewContainerRef$,\n ]).pipe(\n tap(([amountOfColumns, widget, viewRef]) => {\n const percentage =\n widget.width > amountOfColumns ? 100 : (widget.width / amountOfColumns) * 100;\n\n this.renderer.setStyle(viewRef.element.nativeElement, 'width', `${percentage}%`);\n this.widgetLayoutService.triggerMuuriLayout();\n })\n );\n\n public readonly documentId$ = this.route.params.pipe(\n map(params => params?.documentId),\n filter(documentId => !!documentId)\n );\n\n public readonly theme$ = combineLatest([this.cdsThemeService.currentTheme$, this.widget$]).pipe(\n map(([currentTheme, widgetConfiguration]) => {\n return currentTheme === CurrentCarbonTheme.G10\n ? widgetConfiguration.highContrast\n ? CARBON_THEME.G100\n : CARBON_THEME.G10\n : widgetConfiguration.highContrast\n ? CARBON_THEME.WHITE\n : CARBON_THEME.G90;\n })\n );\n\n private readonly _subscriptions = new Subscription();\n\n private _observer!: ResizeObserver;\n\n private _widgetUuid!: string;\n\n constructor(\n private readonly widgetLayoutService: WidgetLayoutService,\n private readonly route: ActivatedRoute,\n private readonly cdsThemeService: CdsThemeService,\n private readonly renderer: Renderer2,\n private readonly viewRef: ViewContainerRef\n ) {}\n\n public ngAfterViewInit(): void {\n this._viewContainerRefSubject$.next(this.viewRef);\n this.openContentHeightObserver();\n this.openWidgetComponentSubscription();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n this._observer?.disconnect();\n }\n\n private openContentHeightObserver(): void {\n this._observer = new ResizeObserver(event => {\n this.observerMutation(event);\n });\n this._observer.observe(this._widgetBlockContentRef.nativeElement);\n }\n\n private observerMutation(event: Array<ResizeObserverEntry>): void {\n const widgetContentHeight = event[0]?.borderBoxSize[0]?.blockSize;\n\n if (typeof widgetContentHeight === 'number' && widgetContentHeight !== 0) {\n this._contentHeight$.next(widgetContentHeight);\n }\n }\n\n public openWidgetComponentSubscription(): void {\n this._subscriptions.add(\n combineLatest([this.widget$, this.documentId$.pipe(startWith(null))]).subscribe(\n ([widget, documentId]) => {\n const component = this.widgetComponentMap[widget.type];\n if (!component) return;\n this.dynamicContainer.clear();\n const componentRef = this.dynamicContainer.createComponent(component);\n if (documentId) componentRef.instance.documentId = documentId;\n componentRef.instance.widgetConfiguration = widget;\n componentRef.instance.widgetUuid = widget.uuid;\n componentRef.instance.widgetParams = this.widgetParams;\n }\n )\n );\n }\n}\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\n<div class=\"widget-block\" [attr.data-carbon-theme]=\"theme$ | async\">\n <div #widgetBlockContent class=\"widget-block__content\">\n <ng-template #widgetComponent></ng-template>\n </div>\n</div>\n\n<ng-container\n *ngIf=\"{\n documentId: documentId$ | async,\n widgetConfiguration: widget$ | async,\n theme: theme$ | async,\n blockHeightPx: blockHeightPx$ | async,\n blockWidthPercentage: blockWidthPercentage$ | async,\n } as obs\"\n></ng-container>\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\nexport * from './widget-block.component';\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\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n OnDestroy,\n ViewChild,\n} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {v4 as uuid} from 'uuid';\nimport {BehaviorSubject, delay, Observable, take} from 'rxjs';\nimport Muuri from 'muuri';\nimport {WidgetLayoutService} from '../../services/widget-layout.service';\nimport {Widget, WidgetComponentMap, WidgetWithUuid} from '../../models';\nimport {WidgetBlockComponent} from '../widget-block';\nimport {filter} from 'rxjs/operators';\nimport {DEFAULT_WIDGET_COMPONENT_MAP} from '../../constants';\nimport {LoadingModule} from 'carbon-components-angular';\nimport {CarbonListModule} from '@valtimo/components';\nimport {TranslatePipe} from '@ngx-translate/core';\n\n@Component({\n selector: 'valtimo-widget-container',\n templateUrl: './widget-container.component.html',\n styleUrls: ['./widget-container.component.scss'],\n standalone: true,\n imports: [CommonModule, WidgetBlockComponent, LoadingModule, CarbonListModule, TranslatePipe],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class WidgetContainerComponent implements AfterViewInit, OnDestroy {\n @ViewChild('widgetsContainer') private _widgetsContainerRef: ElementRef<HTMLDivElement>;\n\n public readonly widgetsWithUuids$ = new BehaviorSubject<WidgetWithUuid[]>(null);\n\n @Input() public set widgets(value: Widget[]) {\n if (!value) return;\n const widgetsWithUuids = value.map(widget => ({...widget, uuid: uuid()}));\n this.widgetLayoutService.setWidgets(widgetsWithUuids);\n this.widgetsWithUuids$.next(widgetsWithUuids);\n this.loadingWidgetConfiguration$.next(false);\n }\n\n private readonly _widgetComponentMap$ = new BehaviorSubject<WidgetComponentMap>(\n DEFAULT_WIDGET_COMPONENT_MAP\n );\n\n public get widgetComponentMap$(): Observable<WidgetComponentMap> {\n return this._widgetComponentMap$.pipe(filter(componentMap => componentMap !== null));\n }\n\n @Input() public set widgetComponentMap(value: WidgetComponentMap) {\n this._widgetComponentMap$.next({...DEFAULT_WIDGET_COMPONENT_MAP, ...value});\n }\n\n @Input({required: false}) public widgetParams: object = {};\n\n public readonly loadingWidgetConfiguration$ = new BehaviorSubject<boolean>(true);\n\n public readonly loaded$ = this.widgetLayoutService.loaded$.pipe(delay(400));\n\n private _observer!: ResizeObserver;\n\n constructor(private readonly widgetLayoutService: WidgetLayoutService) {}\n\n public ngAfterViewInit(): void {\n this._observer = new ResizeObserver(event => {\n this.observerMutation(event);\n });\n this._observer.observe(this._widgetsContainerRef.nativeElement);\n\n this.initMuuri();\n }\n\n public ngOnDestroy(): void {\n this._observer?.disconnect();\n this.widgetLayoutService.reset();\n }\n\n private observerMutation(event: Array<ResizeObserverEntry>): void {\n const containerWidth = event[0]?.borderBoxSize[0]?.inlineSize;\n\n if (typeof containerWidth === 'number' && containerWidth !== 0) {\n this.widgetLayoutService.setContainerWidth(containerWidth);\n this.widgetLayoutService.triggerMuuriLayout();\n }\n }\n\n private initMuuri(): void {\n this.widgetLayoutService.loaded$.pipe(take(1), delay(300)).subscribe(() => {\n this.widgetLayoutService.setMuuri(\n new Muuri(this._widgetsContainerRef.nativeElement, {\n layout: {\n fillGaps: true,\n },\n layoutOnResize: false,\n })\n );\n });\n }\n}\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\n<ng-container\n *ngIf=\"{\n loadingWidgetConfiguration: loadingWidgetConfiguration$ | async,\n widgets: widgetsWithUuids$ | async,\n loaded: loaded$ | async,\n } as obs\"\n>\n <ng-container\n *ngIf=\"{\n noWidgetsConfigured: obs.widgets && obs.widgets.length === 0,\n } as vars\"\n >\n @if (!obs.loaded && !vars.noWidgetsConfigured) {\n <div class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n }\n\n @if (vars.noWidgetsConfigured) {\n <valtimo-no-results\n [title]=\"'case.widgets.noWidgets' | translate\"\n [description]=\"'case.widgets.noWidgetsDescription' | translate\"\n illustration=\"valtimo-layout/img/no-widgets.svg\"\n ></valtimo-no-results>\n }\n\n <div [style.visibility]=\"!obs.loaded ? 'hidden' : 'visible'\">\n <div #widgetsContainer class=\"widgets-container\">\n @for (widget of (widgetsWithUuids$ | async) || []; track widget.uuid) {\n <valtimo-widget-block\n [widget]=\"widget\"\n [widgetComponentMap]=\"widgetComponentMap$ | async\"\n [widgetParams]=\"widgetParams\"\n ></valtimo-widget-block>\n }\n </div>\n </div>\n </ng-container>\n</ng-container>\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\nexport * from './widget-container.component';\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 */\nimport {CommonModule} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n OnInit,\n Output,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport {WidgetWizardService} from '../../../../../services';\n\n@Component({\n selector: 'valtimo-widget-wizard-content-step',\n templateUrl: './widget-wizard-content-step.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [CommonModule],\n})\nexport class WidgetWizardContentStepComponent implements OnInit {\n @ViewChild('contentRenderer', {static: true, read: ViewContainerRef})\n private readonly _vcr: ViewContainerRef;\n\n @Output() public contentValidEvent = new EventEmitter<boolean>();\n\n constructor(\n private readonly cdr: ChangeDetectorRef,\n private readonly widgetWizardService: WidgetWizardService\n ) {}\n\n public ngOnInit(): void {\n this.renderComponent();\n }\n\n private renderComponent(): void {\n this._vcr.clear();\n const $widget = this.widgetWizardService.$selectedWidget();\n if (!$widget) return;\n\n const componentInstance = this._vcr.createComponent($widget.component).instance;\n if (!componentInstance) return;\n\n componentInstance.changeValidEvent.subscribe((valid: boolean) =>\n this.contentValidEvent.emit(valid)\n );\n\n this.cdr.detectChanges();\n }\n}\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\n<ng-template #contentRenderer></ng-template>\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\nimport {CommonModule} from '@angular/common';\nimport {ChangeDetectionStrategy, Component} from '@angular/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {TilesModule} from 'carbon-components-angular';\nimport {WidgetWizardService} from '../../../../../services';\nimport {WidgetStyle} from '../../../../../models';\n\n@Component({\n selector: 'valtimo-widget-wizard-style-step',\n templateUrl: './widget-wizard-style-step.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [CommonModule, TranslateModule, TilesModule],\n})\nexport class WidgetWizardStyleStepComponent {\n public readonly WidgetStyle = WidgetStyle;\n public readonly $widgetStyle = this.widgetWizardService.$widgetStyle;\n\n constructor(private readonly widgetWizardService: WidgetWizardService) {}\n\n public onSelectedEvent(event: {value: WidgetStyle}): void {\n this.widgetWizardService.$widgetStyle.set(event.value);\n }\n}\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\n<cds-tile-group\n [multiple]=\"false\"\n (selected)=\"onSelectedEvent($event)\"\n class=\"valtimo-widget-wizard-step__content\"\n>\n <cds-selection-tile\n class=\"valtimo-widget-wizard-step__tile\"\n [value]=\"WidgetStyle.DEFAULT\"\n [selected]=\"$widgetStyle() === WidgetStyle.DEFAULT\"\n >\n <h3>{{ 'widgetTabManagement.style.default.title' | translate }}</h3>\n\n <span>{{ 'widgetTabManagement.style.default.description' | translate }}</span>\n\n <img\n src=\"valtimo-layout/img/widget-management/style/default.svg\"\n [alt]=\"'widgetTabManagement.style.default.title' | translate\"\n />\n </cds-selection-tile>\n\n <cds-selection-tile\n class=\"valtimo-widget-wizard-step__tile\"\n [value]=\"WidgetStyle.HIGH_CONTRAST\"\n [selected]=\"$widgetStyle() === WidgetStyle.HIGH_CONTRAST\"\n >\n <h3>{{ 'widgetTabManagement.style.highContrast.title' | translate }}</h3>\n\n <span>{{ 'widgetTabManagement.style.highContrast.description' | translate }}</span>\n\n <img\n src=\"valtimo-layout/img/widget-management/style/high-contrast.svg\"\n [alt]=\"'widgetTabManagement.style.highContrast.title' | translate\"\n />\n </cds-selection-tile>\n</cds-tile-group>\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 */\nimport {CommonModule} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, computed, ViewEncapsulation} from '@angular/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {TilesModule} from 'carbon-components-angular';\nimport {AVAILABLE_WIDGETS, WidgetTypeSelection} from '../../../../../models';\nimport {WidgetWizardService} from '../../../../../services';\n\n@Component({\n selector: 'valtimo-widget-wizard-type-step',\n templateUrl: './widget-wizard-type-step.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [CommonModule, TranslateModule, TilesModule],\n})\nexport class WidgetWizardTypeStepComponent {\n public readonly $availableWidgetTypes = computed(() => {\n const availableTypes = this.widgetWizardService.$availableWidgetTypes();\n return !availableTypes\n ? AVAILABLE_WIDGETS\n : AVAILABLE_WIDGETS.filter((typeSelection: WidgetTypeSelection) =>\n availableTypes.includes(typeSelection.type)\n );\n });\n public readonly $selectedWidget = this.widgetWizardService.$selectedWidget;\n\n constructor(private readonly widgetWizardService: WidgetWizardService) {}\n\n public onSelectedEvent(event: {value: WidgetTypeSelection}): void {\n if (event.value.type !== this.widgetWizardService.$selectedWidget()?.type) {\n this.widgetWizardService.$widgetContent.set(null);\n this.widgetWizardService.$widgetTitle.set(null);\n }\n\n this.widgetWizardService.$selectedWidget.set(event.value);\n }\n}\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\n<cds-tile-group\n [multiple]=\"false\"\n (selected)=\"onSelectedEvent($event)\"\n class=\"valtimo-widget-wizard-step__content\"\n>\n @for (widgetType of $availableWidgetTypes(); track widgetType.titleKey) {\n <cds-selection-tile\n class=\"valtimo-widget-wizard-step__tile\"\n [value]=\"widgetType\"\n [selected]=\"widgetType.type === $selectedWidget()?.type\"\n >\n <h3 class=\"valtimo-widget-wizard-step__tile-title\">{{ widgetType.titleKey | translate }}</h3>\n\n <span>{{ widgetType.descriptionKey | translate }}</span>\n\n <img [src]=\"widgetType.illustrationUrl\" [alt]=\"widgetType.titleKey | translate\" />\n </cds-selection-tile>\n }\n</cds-tile-group>\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 */\nimport {CommonModule} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, computed, Signal} from '@angular/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {TilesModule} from 'carbon-components-angular';\nimport {WidgetType, WidgetWidth} from '../../../../../models';\nimport {WidgetWizardService} from '../../../../../services';\n\n@Component({\n selector: 'valtimo-widget-wizard-width-step',\n templateUrl: './widget-wizard-width-step.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [CommonModule, TranslateModule, TilesModule],\n})\nexport class WidgetWizardWidthStepComponent {\n public readonly $fieldsColumnsLength: Signal<number> = computed(() =>\n this.widgetWizardService.$selectedWidget()?.type === WidgetType.FIELDS\n ? (this.widgetWizardService.$widgetContent()?.['columns']?.length ?? 0)\n : 0\n );\n public readonly $widgetWidth = this.widgetWizardService.$widgetWidth;\n\n constructor(private readonly widgetWizardService: WidgetWizardService) {}\n\n public onSelectedEvent(event: {value: WidgetWidth}): void {\n this.widgetWizardService.$widgetWidth.set(event.value);\n }\n}\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\n<cds-tile-group\n [multiple]=\"false\"\n (selected)=\"onSelectedEvent($event)\"\n class=\"valtimo-widget-wizard-step__content\"\n>\n <cds-selection-tile\n class=\"valtimo-widget-wizard-step__tile\"\n [value]=\"1\"\n [selected]=\"$widgetWidth() === 1\"\n [disabled]=\"$fieldsColumnsLength() > 1\"\n >\n <h3>{{ 'widgetTabManagement.width.small.title' | translate }}</h3>\n\n <span>{{ 'widgetTabManagement.width.small.subtitle' | translate }}</span>\n\n <img\n src=\"valtimo-layout/img/widget-management/width/quarter.svg\"\n [alt]=\"'widgetTabManagement.width.small.title' | translate\"\n />\n </cds-selection-tile>\n\n <cds-selection-tile\n class=\"valtimo-widget-wizard-step__tile\"\n [value]=\"2\"\n [selected]=\"$widgetWidth() === 2\"\n [disabled]=\"$fieldsColumnsLength() > 2\"\n >\n <h3>{{ 'widgetTabManagement.width.medium.title' | translate }}</h3>\n\n <span>{{ 'widgetTabManagement.width.medium.subtitle' | translate }}</span>\n\n <img\n src=\"valtimo-layout/img/widget-management/width/half.svg\"\n [alt]=\"'widgetTabManagement.width.medium.title' | translate\"\n />\n </cds-selection-tile>\n\n <cds-selection-tile\n class=\"valtimo-widget-wizard-step__tile\"\n [value]=\"3\"\n [selected]=\"$widgetWidth() === 3\"\n [disabled]=\"$fieldsColumnsLength() > 3\"\n >\n <h3>{{ 'widgetTabManagement.width.large.title' | translate }}</h3>\n\n <span>{{ 'widgetTabManagement.width.large.subtitle' | translate }}</span>\n\n <img\n src=\"valtimo-layout/img/widget-management/width/three-quarters.svg\"\n [alt]=\"'widgetTabManagement.width.large.title' | translate\"\n />\n </cds-selection-tile>\n\n <cds-selection-tile\n class=\"valtimo-widget-wizard-step__tile\"\n [value]=\"4\"\n [selected]=\"$widgetWidth() === 4\"\n >\n <h3>{{ 'widgetTabManagement.width.xtraLarge.title' | translate }}</h3>\n\n <span>{{ 'widgetTabManagement.width.xtraLarge.subtitle' | translate }}</span>\n\n <img\n src=\"valtimo-layout/img/widget-management/width/full-width.svg\"\n [alt]=\"'widgetTabManagement.width.xtraLarge.title' | translate\"\n />\n </cds-selection-tile>\n</cds-tile-group>\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 */\nimport {WidgetWizardContentStepComponent} from './widget-wizard-content-step/widget-wizard-content-step.component';\nimport {WidgetWizardStyleStepComponent} from './widget-wizard-style-step/widget-wizard-style-step.component';\nimport {WidgetWizardTypeStepComponent} from './widget-wizard-type-step/widget-wizard-type-step.component';\nimport {WidgetWizardWidthStepComponent} from './widget-wizard-width-step/widget-wizard-width-step.component';\n\nexport const WIDGET_STEPS = [\n WidgetWizardContentStepComponent,\n WidgetWizardStyleStepComponent,\n WidgetWizardTypeStepComponent,\n WidgetWizardWidthStepComponent,\n];\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 */\nimport {CommonModule} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n EventEmitter,\n Input,\n Output,\n Signal,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport {toObservable} from '@angular/core/rxjs-interop';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {CARBON_CONSTANTS, KeyGeneratorService} from '@valtimo/components';\nimport {ButtonModule, ModalModule, ProgressIndicatorModule, Step} from 'carbon-components-angular';\nimport {combineLatest, map, Observable} from 'rxjs';\nimport {\n WIDGET_STYLE_LABELS,\n WIDGET_WIDTH_LABELS,\n WidgetWizardCloseEvent,\n WidgetWizardCloseEventType,\n WidgetWizardStep,\n} from '../../../models';\nimport {WidgetWizardService} from '../../../services';\nimport {WIDGET_STEPS} from './steps';\n\n@Component({\n selector: 'valtimo-widget-management-wizard',\n templateUrl: './widget-management-wizard.component.html',\n styleUrls: ['./widget-management-wizard.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n ProgressIndicatorModule,\n ModalModule,\n ButtonModule,\n ...WIDGET_STEPS,\n ],\n})\nexport class WidgetManagementWizardComponent {\n @Input() public open = false;\n private _editMode: boolean;\n @Input() public set editMode(value: boolean) {\n this._editMode = value;\n if (!value) return;\n\n this.$currentStep.set(WidgetWizardStep.CONTENT);\n }\n public get editMode(): boolean {\n return this._editMode;\n }\n @Output() public closeEvent = new EventEmitter<WidgetWizardCloseEvent>();\n\n public readonly WidgetWizardSteps = WidgetWizardStep;\n private readonly _secondaryLabels = computed(() => {\n const selectedWidgetType = this.widgetWizardService.$selectedWidget()?.type ?? '';\n const selectedWidth = this.widgetWizardService.$widgetWidth() ?? '';\n const selectedStyle = this.widgetWizardService.$widgetStyle() ?? '';\n\n return {\n [WidgetWizardStep.TYPE]: selectedWidgetType\n ? `widgetTabManagement.types.${selectedWidgetType}.title`\n : '',\n [WidgetWizardStep.WIDTH]: WIDGET_WIDTH_LABELS[selectedWidth] ?? '',\n [WidgetWizardStep.STYLE]: WIDGET_STYLE_LABELS[selectedStyle] ?? '',\n };\n });\n\n public readonly steps$: Observable<Step[]> = combineLatest([\n toObservable(this._secondaryLabels),\n toObservable(this.widgetWizardService.$editMode),\n this.translateService.stream('key'),\n ]).pipe(\n map(([secondaryLabels, editMode]) => {\n return [\n {\n label: this.translateService.instant('widgetTabManagement.wizard.steps.type'),\n ...(secondaryLabels[WidgetWizardStep.TYPE] && {\n secondaryLabel: this.translateService.instant(secondaryLabels[WidgetWizardStep.TYPE]),\n }),\n disabled: editMode,\n complete: !!this.widgetWizardService.$selectedWidget()?.type,\n },\n {\n label: this.translateService.instant('widgetTabManagement.wizard.steps.width'),\n ...(secondaryLabels[WidgetWizardStep.WIDTH] && {\n secondaryLabel: this.translateService.instant(secondaryLabels[WidgetWizardStep.WIDTH]),\n }),\n disabled: !secondaryLabels[WidgetWizardStep.TYPE],\n complete: !!this.widgetWizardService.$widgetWidth(),\n },\n {\n label: this.translateService.instant('widgetTabManagement.wizard.steps.style'),\n ...(secondaryLabels[WidgetWizardStep.STYLE] && {\n secondaryLabel: this.translateService.instant(secondaryLabels[WidgetWizardStep.STYLE]),\n }),\n disabled: !secondaryLabels[WidgetWizardStep.WIDTH],\n complete: !!this.widgetWizardService.$widgetStyle(),\n },\n {\n label: this.translateService.instant('widgetTabManagement.wizard.steps.content'),\n disabled:\n !secondaryLabels[WidgetWizardStep.TYPE] ||\n !secondaryLabels[WidgetWizardStep.WIDTH] ||\n !secondaryLabels[WidgetWizardStep.STYLE],\n complete: !!this.widgetWizardService.$widgetContent(),\n },\n ];\n })\n );\n\n private readonly _$contentStepValid = signal<boolean>(false);\n public readonly $currentStep = signal<WidgetWizardStep>(WidgetWizardStep.TYPE);\n public readonly $backButtonDisabled: Signal<boolean> = computed(\n () => this.widgetWizardService.$editMode() && this.$currentStep() === WidgetWizardStep.WIDTH\n );\n public $nextButtonDisabled = computed(() => {\n switch (this.$currentStep()) {\n case WidgetWizardStep.TYPE:\n return !this.widgetWizardService.$selectedWidget();\n case WidgetWizardStep.WIDTH:\n return !this.widgetWizardService.$widgetWidth();\n case WidgetWizardStep.STYLE:\n return this.widgetWizardService.$widgetStyle() === null;\n case WidgetWizardStep.CONTENT:\n return this.widgetWizardService.$widgetContent() === null || !this._$contentStepValid();\n default:\n return true;\n }\n });\n\n constructor(\n private readonly keyGeneratorService: KeyGeneratorService,\n private readonly translateService: TranslateService,\n private readonly widgetWizardService: WidgetWizardService\n ) {}\n\n public onStepSelected(event: {step: Step; index: WidgetWizardStep}): void {\n this.$currentStep.set(event.index);\n }\n\n public onNextButtonClick(): void {\n if (this.$currentStep() === WidgetWizardStep.CONTENT) {\n const isDuplicateMode = this.editMode && !this.widgetWizardService.$widgetKey();\n if (isDuplicateMode || !this.editMode) {\n this.widgetWizardService.$widgetKey.set(\n this.keyGeneratorService.getUniqueKey(\n this.widgetWizardService.$widgetTitle() ?? '',\n this.widgetWizardService.$usedWidgetKeys()\n )\n );\n }\n\n this.closeEvent.emit({\n type:\n this.editMode && !isDuplicateMode\n ? WidgetWizardCloseEventType.EDIT\n : WidgetWizardCloseEventType.CREATE,\n widget: this.widgetWizardService.$widgetsConfig(),\n });\n this.resetWizard();\n return;\n }\n\n this.$currentStep.update((step: WidgetWizardStep) => step + 1);\n }\n\n public onBackButtonClick(): void {\n this.$currentStep.update((step: WidgetWizardStep) => step - 1);\n }\n\n public onClose(): void {\n this.closeEvent.emit({type: WidgetWizardCloseEventType.CANCEL, widget: null});\n this.resetWizard();\n }\n\n public onContentValidEvent(valid: boolean): void {\n this._$contentStepValid.set(valid);\n }\n\n private resetWizard(): void {\n setTimeout(() => {\n this.widgetWizardService.resetWizard();\n this.$currentStep.set(WidgetWizardStep.TYPE);\n }, CARBON_CONSTANTS.modalAnimationMs);\n }\n}\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\n<cds-modal\n *ngIf=\"{steps: steps$ | async} as obs\"\n [open]=\"open\"\n showFooter=\"true\"\n size=\"lg\"\n valtimoCdsModal\n class=\"valtimo-widget-management-wizard\"\n (close)=\"onClose()\"\n>\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onClose()\">\n <h3 cdsModalHeaderHeading>\n {{ 'widgetTabManagement.wizard.' + (editMode ? 'edit' : 'create') | translate }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent class=\"valtimo-widget-management-wizard__content\">\n <cds-progress-indicator\n [current]=\"$currentStep()\"\n [skeleton]=\"!obs.steps\"\n [spacing]=\"'equal'\"\n [steps]=\"obs.steps\"\n (stepSelected)=\"onStepSelected($event)\"\n >\n </cds-progress-indicator>\n\n @switch ($currentStep()) {\n @case (WidgetWizardSteps.TYPE) {\n <p>{{ 'widgetTabManagement.types.description' | translate }}</p>\n\n <valtimo-widget-wizard-type-step\n class=\"valtimo-widget-wizard-step\"\n ></valtimo-widget-wizard-type-step>\n }\n @case (WidgetWizardSteps.WIDTH) {\n <p>{{ 'widgetTabManagement.width.description' | translate }}</p>\n\n <valtimo-widget-wizard-width-step\n class=\"valtimo-widget-wizard-step\"\n ></valtimo-widget-wizard-width-step>\n }\n @case (WidgetWizardSteps.STYLE) {\n <p>{{ 'widgetTabManagement.style.description' | translate }}</p>\n\n <valtimo-widget-wizard-style-step\n class=\"valtimo-widget-wizard-step\"\n ></valtimo-widget-wizard-style-step>\n }\n @case (WidgetWizardSteps.CONTENT) {\n <valtimo-widget-wizard-content-step\n (contentValidEvent)=\"onContentValidEvent($event)\"\n ></valtimo-widget-wizard-content-step>\n }\n @default {\n <p>{{ 'widgetTabManagement.types.description' | translate }}</p>\n\n <valtimo-widget-wizard-type-step></valtimo-widget-wizard-type-step>\n }\n }\n </section>\n\n <cds-modal-footer class=\"valtimo-widget-management-wizard__footer\">\n <button class=\"valtimo-widget-management-wizard__cancel\" cdsButton=\"ghost\" (click)=\"onClose()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n @if ($currentStep() !== WidgetWizardSteps.TYPE) {\n <button\n class=\"valtimo-widget-management-wizard__back\"\n cdsButton=\"secondary\"\n [disabled]=\"$backButtonDisabled()\"\n (click)=\"onBackButtonClick()\"\n >\n {{ 'interface.back' | translate }}\n </button>\n }\n\n <button\n class=\"valtimo-widget-management-wizard__next\"\n cdsButton=\"primary\"\n [disabled]=\"$nextButtonDisabled()\"\n (click)=\"onNextButtonClick()\"\n >\n {{\n 'interface.' + ($currentStep() === WidgetWizardSteps.CONTENT ? 'save' : 'next') | translate\n }}\n </button>\n </cds-modal-footer>\n</cds-modal>\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 */\nimport {CommonModule} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, Inject, Input, signal} from '@angular/core';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {\n ActionItem,\n CarbonListItem,\n CarbonListModule,\n ColumnConfig,\n ConfirmationModalModule,\n ViewType,\n} from '@valtimo/components';\nimport {ButtonModule, IconModule, TabsModule} from 'carbon-components-angular';\nimport {cloneDeep} from 'lodash';\nimport {BehaviorSubject, combineLatest, filter, map, Observable, switchMap, take, tap} from 'rxjs';\nimport {WIDGET_MANAGEMENT_SERVICE} from '../../../constants';\nimport {IWidgetManagementService} from '../../../interfaces';\nimport {\n AVAILABLE_WIDGETS,\n BasicWidget,\n Widget,\n WidgetStyle,\n WidgetType,\n WidgetTypeTags,\n WidgetWizardCloseEvent,\n WidgetWizardCloseEventType,\n} from '../../../models';\nimport {WidgetWizardService} from '../../../services';\nimport {WidgetManagementWizardComponent} from '../management-wizard/widget-management-wizard.component';\n\n@Component({\n selector: 'valtimo-widget-management-editor',\n templateUrl: './widget-management-editor.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n CarbonListModule,\n ButtonModule,\n IconModule,\n TabsModule,\n WidgetManagementWizardComponent,\n ConfirmationModalModule,\n ],\n})\nexport class WidgetManagementEditorComponent {\n @Input() public set params(value: any) {\n if (!value) return;\n this.widgetManagementService.initParams(value);\n }\n @Input() public set availableWidgetTypes(value: WidgetType[]) {\n if (!value) return;\n\n this.widgetWizardService.$availableWidgetTypes.set(value);\n }\n\n public readonly FIELDS: ColumnConfig[] = [\n {\n key: 'title',\n label: 'interface.title',\n viewType: ViewType.TEXT,\n },\n {\n key: 'tags',\n label: 'widgetTabManagement.columns.type',\n viewType: ViewType.TAGS,\n },\n {\n key: 'key',\n label: 'interface.key',\n viewType: ViewType.TEXT,\n },\n {\n key: 'widthTranslation',\n label: 'widgetTabManagement.columns.width',\n viewType: ViewType.TEXT,\n },\n {\n key: 'highContrast',\n label: 'widgetTabManagement.columns.highContrast',\n viewType: ViewType.BOOLEAN,\n },\n ];\n\n public readonly ACTION_ITEMS: ActionItem[] = [\n {\n label: 'interface.edit',\n callback: this.editWidget.bind(this),\n },\n {\n label: 'interface.duplicate',\n callback: this.duplicateWidget.bind(this),\n },\n {\n label: 'interface.delete',\n callback: this.deleteWidget.bind(this),\n type: 'danger',\n },\n ];\n\n private readonly _refresh$ = new BehaviorSubject<null>(null);\n public readonly widgets$: Observable<CarbonListItem[]> = this._refresh$.pipe(\n switchMap(() =>\n combineLatest([\n this.widgetManagementService.getWidgetConfiguration(),\n this.translateService.stream('key'),\n ])\n ),\n filter(([widgets]) => !!widgets),\n tap(([widgets]) =>\n this.widgetWizardService.$usedWidgetKeys.set(widgets.map((widget: BasicWidget) => widget.key))\n ),\n map(([widgets]) =>\n widgets.map(item => ({\n ...item,\n widthTranslation: this.translateService.instant(this.getWidthTranslationKey(item.width)),\n tags: [\n {\n content: this.translateService.instant(`widgetTabManagement.types.${item.type}.title`),\n type: WidgetTypeTags[item.type],\n },\n ],\n }))\n )\n );\n\n public readonly $isWizardOpen = signal<boolean>(false);\n public readonly $isEditMode = this.widgetWizardService.$editMode;\n public readonly deleteModalOpen$ = new BehaviorSubject<boolean>(false);\n public readonly $deleteWidget = signal<BasicWidget | null>(null);\n\n public readonly $dragAndDropDisabled = signal(false);\n\n constructor(\n private readonly translateService: TranslateService,\n private readonly widgetWizardService: WidgetWizardService,\n @Inject(WIDGET_MANAGEMENT_SERVICE)\n private widgetManagementService: IWidgetManagementService<any>\n ) {}\n\n public editWidget(tabWidget: Widget): void {\n this.widgetWizardService.$widgetTitle.set(tabWidget.title);\n this.widgetWizardService.$widgetStyle.set(\n tabWidget.highContrast ? WidgetStyle.HIGH_CONTRAST : WidgetStyle.DEFAULT\n );\n this.widgetWizardService.$widgetWidth.set(tabWidget.width);\n this.widgetWizardService.$selectedWidget.set(\n AVAILABLE_WIDGETS.find(available => available.type === tabWidget.type) ?? null\n );\n this.widgetWizardService.$widgetContent.set(tabWidget.properties);\n this.widgetWizardService.$editMode.set(true);\n this.widgetWizardService.$widgetKey.set(tabWidget.key);\n this.widgetWizardService.$widgetActions.set(tabWidget.actions);\n this.$isWizardOpen.set(true);\n }\n\n public duplicateWidget(tabWidget: Widget): void {\n const tabWidgetClone = cloneDeep(tabWidget);\n tabWidgetClone.key = '';\n this.editWidget(tabWidgetClone);\n }\n\n public openAddModal(): void {\n this.$isWizardOpen.set(true);\n }\n\n public onDeleteConfirm(widget: BasicWidget): void {\n this.widgetManagementService\n .deleteWidget?.(widget)\n .pipe(take(1))\n .subscribe(() => this._refresh$.next(null));\n }\n\n public onCloseEvent(event: WidgetWizardCloseEvent): void {\n this.$isWizardOpen.set(false);\n this.widgetWizardService.resetWizard();\n const {type, widget} = event;\n\n if (!widget || type === WidgetWizardCloseEventType.CANCEL) return;\n\n (type === WidgetWizardCloseEventType.CREATE\n ? this.widgetManagementService.createWidget(widget)\n : this.widgetManagementService.updateWidget(widget)\n )\n .pipe(take(1))\n .subscribe(() => {\n this._refresh$.next(null);\n });\n }\n\n public onItemsReordered(widgets: Widget[]): void {\n this.$dragAndDropDisabled.set(true);\n this.widgetManagementService\n .updateWidgetConfiguration(widgets)\n .pipe(take(1))\n .subscribe(() => this.$dragAndDropDisabled.set(false));\n }\n\n private deleteWidget(tabWidget: BasicWidget): void {\n this.$deleteWidget.set(tabWidget);\n this.deleteModalOpen$.next(true);\n }\n\n private getWidthTranslationKey(width: number): string {\n switch (width) {\n case 1:\n return 'widgetTabManagement.width.small.title';\n case 2:\n return 'widgetTabManagement.width.medium.title';\n case 3:\n return 'widgetTabManagement.width.large.title';\n case 4:\n return 'widgetTabManagement.width.xtraLarge.title';\n default:\n return '-';\n }\n }\n}\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\n<valtimo-carbon-list\n [actionItems]=\"ACTION_ITEMS\"\n [fields]=\"FIELDS\"\n [header]=\"false\"\n [items]=\"widgets$ | async\"\n [dragAndDrop]=\"true\"\n [dragAndDropDisabled]=\"$dragAndDropDisabled()\"\n (itemsReordered)=\"onItemsReordered($event)\"\n (rowClicked)=\"editWidget($event)\"\n>\n <ng-container carbonToolbarContent>\n <ng-container *ngTemplateOutlet=\"addWidgetButton\"></ng-container>\n </ng-container>\n\n <valtimo-no-results\n [action]=\"addWidgetButton\"\n [description]=\"'widgetTabManagement.list.noResults.description' | translate\"\n [title]=\"'widgetTabManagement.list.noResults.title' | translate\"\n ></valtimo-no-results>\n</valtimo-carbon-list>\n\n<ng-template #addWidgetButton>\n <button cdsButton=\"primary\" (click)=\"openAddModal()\">\n {{ 'widgetTabManagement.list.add' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n</ng-template>\n\n<valtimo-widget-management-wizard\n [editMode]=\"$isEditMode()\"\n [open]=\"$isWizardOpen()\"\n (closeEvent)=\"onCloseEvent($event)\"\n></valtimo-widget-management-wizard>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"Are you sure you want to delete this widget?\"\n [outputOnConfirm]=\"$deleteWidget()\"\n [showModalSubject$]=\"deleteModalOpen$\"\n titleTranslationKey=\"interface.delete\"\n (confirmEvent)=\"onDeleteConfirm($event)\"\n></valtimo-confirmation-modal>\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\nimport {CommonModule} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, Inject, Input, signal} from '@angular/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {TabsModule} from 'carbon-components-angular';\nimport {WIDGET_MANAGEMENT_SERVICE} from '../../../constants';\nimport {IWidgetManagementService} from '../../../interfaces';\nimport {WidgetManagementEditorComponent} from '../management-editor/widget-management-editor.component';\nimport {Observable, map, take, tap} from 'rxjs';\nimport {BasicWidget, WidgetManagementTab, WidgetType} from '../../../models';\nimport {EditorModel, JsonEditorComponent} from '@valtimo/components';\n\n@Component({\n selector: 'valtimo-widget-management',\n templateUrl: './widget-management.component.html',\n styleUrl: './widget-management.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CommonModule,\n WidgetManagementEditorComponent,\n TabsModule,\n TranslateModule,\n JsonEditorComponent,\n ],\n})\nexport class WidgetManagementComponent {\n @Input() public set params(value: any) {\n if (!value) return;\n this.widgetManagementService.initParams(value);\n }\n @Input() availableWidgetTypes: WidgetType[];\n\n public readonly jsonModel$: Observable<EditorModel> = this.widgetManagementService\n .getWidgetConfiguration()\n .pipe(\n map((widgets: BasicWidget[]) => ({\n value: JSON.stringify(widgets),\n language: 'json',\n }))\n );\n\n public readonly $activeTab = signal<WidgetManagementTab>(WidgetManagementTab.VISUAL);\n public readonly WidgetManagementTab = WidgetManagementTab;\n\n constructor(\n @Inject(WIDGET_MANAGEMENT_SERVICE)\n private widgetManagementService: IWidgetManagementService<any>\n ) {}\n\n public onSaveEvent(widgets: BasicWidget[]): void {\n this.widgetManagementService.updateWidgetConfiguration(widgets).pipe(take(1)).subscribe();\n }\n\n public switchTab(tab: WidgetManagementTab): void {\n this.$activeTab.set(tab);\n }\n}\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\n<cds-tabs type=\"contained\">\n <cds-tab\n [heading]=\"'interface.editor.visualEditor' | translate\"\n (selected)=\"switchTab(WidgetManagementTab.VISUAL)\"\n >\n <valtimo-widget-management-editor\n *ngIf=\"$activeTab() === WidgetManagementTab.VISUAL\"\n [availableWidgetTypes]=\"availableWidgetTypes\"\n ></valtimo-widget-management-editor>\n </cds-tab>\n\n <cds-tab\n [heading]=\"'interface.editor.jsonEditor' | translate\"\n (selected)=\"switchTab(WidgetManagementTab.JSON)\"\n >\n <valtimo-json-editor\n *ngIf=\"$activeTab() === WidgetManagementTab.JSON\"\n [model]=\"jsonModel$ | async\"\n [fitPage]=\"true\"\n [fitPageExtraSpace]=\"136\"\n (saveEvent)=\"onSaveEvent($event)\"\n ></valtimo-json-editor>\n </cds-tab>\n</cds-tabs>\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\nexport * from './management-content';\nexport * from './management-editor/widget-management-editor.component';\nexport * from './management-wizard/widget-management-wizard.component';\nexport * from './management/widget-management.component';\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\nexport * from './layout';\nexport * from './layout-internal';\nexport * from './layout-public';\nexport * from './widget-field';\nexport * from './translation-management';\nexport * from './widget-formio';\nexport * from './widget-collection';\nexport * from './widget-table';\nexport * from './widget-custom';\nexport * from './widget-block';\nexport * from './widget-container';\nexport * from './widget-management';\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\nimport {WidgetComponentMap, WidgetType} from '../models';\nimport {\n WidgetCollectionComponent,\n WidgetCustomComponent,\n WidgetFieldComponent,\n WidgetFormioComponent,\n WidgetTableComponent,\n} from '../components';\n\nconst WIDGET_WIDTH_1X = 320;\nconst WIDGET_HEIGHT_1X = 200;\n\nconst DEFAULT_WIDGET_COMPONENT_MAP: WidgetComponentMap = {\n [WidgetType.FORMIO]: WidgetFormioComponent,\n [WidgetType.CUSTOM]: WidgetCustomComponent,\n [WidgetType.COLLECTION]: WidgetCollectionComponent,\n [WidgetType.TABLE]: WidgetTableComponent,\n [WidgetType.FIELDS]: WidgetFieldComponent,\n};\n\nexport {WIDGET_WIDTH_1X, WIDGET_HEIGHT_1X, DEFAULT_WIDGET_COMPONENT_MAP};\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\nimport {InjectionToken} from '@angular/core';\nimport {IWidgetManagementService} from '../interfaces';\n\nconst WIDGET_MANAGEMENT_SERVICE = new InjectionToken<IWidgetManagementService<any>>(\n 'WIDGET_MANAGEMENT_SERVICE'\n);\n\nexport {WIDGET_MANAGEMENT_SERVICE};\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\nexport * from './custom-widget-token';\nexport * from './widget.constants';\nexport * from './widget-management.constants';\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\nimport {Injectable, OnDestroy} from '@angular/core';\nimport {\n BehaviorSubject,\n combineLatest,\n debounceTime,\n filter,\n map,\n Observable,\n Subject,\n Subscription,\n take,\n} from 'rxjs';\nimport Muuri from 'muuri';\nimport {WidgetWithUuid} from '../models';\nimport {WIDGET_WIDTH_1X} from '../constants';\n\n@Injectable({providedIn: 'root'})\nexport class WidgetLayoutService implements OnDestroy {\n private readonly _containerWidthSubject$ = new BehaviorSubject<number | null>(null);\n private readonly _widgetsSubject$ = new BehaviorSubject<WidgetWithUuid[] | null>(null);\n private readonly _widgetDataLoadedSubject$ = new BehaviorSubject<string[] | null>(null);\n private readonly _muuriSubject$ = new BehaviorSubject<Muuri | null>(null);\n private readonly _triggerMuuriLayout$ = new Subject<null>();\n\n private get _muuri$(): Observable<Muuri> {\n return this._muuriSubject$.pipe(filter(muuri => !!muuri));\n }\n\n private get _containerWidth$(): Observable<number> {\n return this._containerWidthSubject$.pipe(filter(width => width !== null));\n }\n\n public get amountOfColumns$(): Observable<number> {\n return this._containerWidth$.pipe(\n map(containerWidth => Math.floor(containerWidth / WIDGET_WIDTH_1X))\n );\n }\n\n private get _widgets$(): Observable<WidgetWithUuid[]> {\n return this._widgetsSubject$.pipe(filter(widgets => widgets !== null));\n }\n\n private get _widgetDataLoaded$(): Observable<string[]> {\n return this._widgetDataLoadedSubject$.pipe(filter(loaded => loaded !== null));\n }\n\n private readonly _widgetsWithExternalData$ = new BehaviorSubject<string[]>([]);\n private readonly _widgetsWithExternalDataReady$ = new BehaviorSubject<string[]>([]);\n\n private readonly _subscriptions = new Subscription();\n\n public get loaded$(): Observable<boolean> {\n return combineLatest([\n this._widgetDataLoaded$,\n this._widgets$,\n this._widgetsWithExternalData$,\n this._widgetsWithExternalDataReady$,\n this._containerWidth$,\n ]).pipe(\n map(\n ([widgetDataLoaded, widgets, widgetsWithExternalData, widgetsWithExternalDataReady]) =>\n widgetDataLoaded?.length === widgets.length &&\n widgetsWithExternalData.length === widgetsWithExternalDataReady.length\n ),\n filter(loaded => !!loaded)\n );\n }\n\n constructor() {\n this.openMuuriSubscription();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public setMuuri(muuri: Muuri): void {\n this._muuriSubject$.next(muuri);\n }\n\n public triggerMuuriLayout(): void {\n this._triggerMuuriLayout$.next(null);\n }\n\n public setWidgets(widgets: WidgetWithUuid[]): void {\n this._widgetsSubject$.next(widgets);\n }\n\n public setWidgetWithExternalData(uuid: string): void {\n this._widgetsWithExternalData$.pipe(take(1)).subscribe(widgetsWithExternalData => {\n this._widgetsWithExternalData$.next([...widgetsWithExternalData, uuid]);\n });\n }\n\n public setWidgetWithExternalDataReady(uuid: string): void {\n this._widgetsWithExternalDataReady$.pipe(take(1)).subscribe(widgetsWithExternalDataReady => {\n this._widgetsWithExternalDataReady$.next([...widgetsWithExternalDataReady, uuid]);\n });\n }\n\n public setContainerWidth(width: number): void {\n this._containerWidthSubject$.next(width);\n }\n\n public setWidgetDataLoaded(uuid: string): void {\n this._widgetDataLoadedSubject$.pipe(take(1)).subscribe(widgetDataLoaded => {\n if (!(widgetDataLoaded || []).includes(uuid)) {\n this._widgetDataLoadedSubject$.next([...(widgetDataLoaded || []), uuid]);\n }\n });\n }\n\n public reset(): void {\n this._containerWidthSubject$.next(null);\n this._widgetsSubject$.next(null);\n this._widgetDataLoadedSubject$.next(null);\n this._widgetsWithExternalData$.next([]);\n this._widgetsWithExternalDataReady$.next([]);\n this._muuriSubject$.next(null);\n }\n\n private openMuuriSubscription(): void {\n this._subscriptions.add(\n combineLatest([this._muuri$, this._triggerMuuriLayout$])\n .pipe(debounceTime(150))\n .subscribe(([muuri]) => {\n muuri.refreshItems();\n muuri.layout();\n })\n );\n }\n}\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\nimport {Injectable} from '@angular/core';\nimport {AbstractControl, FormBuilder, FormGroup, Validators} from '@angular/forms';\nimport {TranslateService} from '@ngx-translate/core';\nimport {ListItem} from 'carbon-components-angular';\nimport {WidgetDisplayTypeKey} from '../models';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WidgetFieldsService {\n public readonly displayTypeItems: ListItem[] = [\n {\n content: this.translateService.instant(\n `widgetTabManagement.content.displayType.${WidgetDisplayTypeKey.TEXT}`\n ),\n id: WidgetDisplayTypeKey.TEXT,\n selected: true,\n },\n {\n content: this.translateService.instant(\n `widgetTabManagement.content.displayType.${WidgetDisplayTypeKey.BOOLEAN}`\n ),\n id: WidgetDisplayTypeKey.BOOLEAN,\n selected: false,\n },\n {\n content: this.translateService.instant(\n `widgetTabManagement.content.displayType.${WidgetDisplayTypeKey.CURRENCY}`\n ),\n id: WidgetDisplayTypeKey.CURRENCY,\n selected: false,\n },\n {\n content: this.translateService.instant(\n `widgetTabManagement.content.displayType.${WidgetDisplayTypeKey.DATE}`\n ),\n id: WidgetDisplayTypeKey.DATE,\n selected: false,\n },\n {\n content: this.translateService.instant(\n `widgetTabManagement.content.displayType.${WidgetDisplayTypeKey.DATE_TIME}`\n ),\n id: WidgetDisplayTypeKey.DATE_TIME,\n selected: false,\n },\n {\n content: this.translateService.instant(\n `widgetTabManagement.content.displayType.${WidgetDisplayTypeKey.ENUM}`\n ),\n id: WidgetDisplayTypeKey.ENUM,\n selected: false,\n },\n {\n content: this.translateService.instant(\n `widgetTabManagement.content.displayType.${WidgetDisplayTypeKey.NUMBER}`\n ),\n id: WidgetDisplayTypeKey.NUMBER,\n selected: false,\n },\n {\n content: this.translateService.instant(\n `widgetTabManagement.content.displayType.${WidgetDisplayTypeKey.PERCENT}`\n ),\n id: WidgetDisplayTypeKey.PERCENT,\n selected: false,\n },\n {\n content: this.translateService.instant(\n `widgetTabManagement.content.displayType.${WidgetDisplayTypeKey.LINK}`\n ),\n id: WidgetDisplayTypeKey.LINK,\n selected: false,\n },\n ];\n\n constructor(\n private readonly fb: FormBuilder,\n private readonly translateService: TranslateService\n ) {}\n\n public getDisplayItemsSelected(control: AbstractControl): ListItem[] {\n const typeControlValue: ListItem = control.get('type')?.value;\n\n if (!typeControlValue) return this.displayTypeItems;\n\n return this.displayTypeItems.map((item: ListItem) => ({\n ...item,\n selected: typeControlValue.id === item.id && typeControlValue.selected,\n }));\n }\n\n public onDisplayTypeSelected(\n mainKeysArray: string[],\n formGroup: FormGroup,\n event: {item: ListItem}\n ): void {\n const extraControlKeys = Object.keys(formGroup.controls).filter(\n (key: string) => !mainKeysArray.includes(key)\n );\n\n extraControlKeys.forEach((controlKey: string) => formGroup.removeControl(controlKey));\n\n switch (event.item.id) {\n case WidgetDisplayTypeKey.BOOLEAN:\n break;\n case WidgetDisplayTypeKey.TEXT:\n formGroup.addControl('ellipsisCharacterLimit', this.fb.control(''));\n break;\n case WidgetDisplayTypeKey.CURRENCY:\n formGroup.addControl('currencyCode', this.fb.control(''));\n formGroup.addControl('display', this.fb.control(''));\n formGroup.addControl('digitsInfo', this.fb.control(''));\n break;\n case WidgetDisplayTypeKey.DATE:\n formGroup.addControl('format', this.fb.control(''));\n break;\n case WidgetDisplayTypeKey.DATE_TIME:\n formGroup.addControl('format', this.fb.control(''));\n break;\n case WidgetDisplayTypeKey.LINK:\n formGroup.addControl('linkText', this.fb.control(''));\n break;\n case WidgetDisplayTypeKey.ENUM:\n formGroup.addControl(\n 'values',\n this.fb.array(\n [\n this.fb.group({\n key: this.fb.control('', Validators.required),\n value: this.fb.control('', Validators.required),\n }),\n ],\n Validators.required\n )\n );\n break;\n default:\n formGroup.addControl('digitsInfo', this.fb.control(''));\n break;\n }\n }\n}\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\nimport {computed, Injectable, Signal, signal, WritableSignal} from '@angular/core';\nimport {\n BasicWidget,\n WidgetAction,\n WidgetContentProperties,\n WidgetStyle,\n WidgetType,\n WidgetTypeSelection,\n WidgetWidth,\n} from '../models';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WidgetWizardService {\n public readonly $selectedWidget: WritableSignal<WidgetTypeSelection | null> = signal(null);\n\n public readonly $widgetWidth: WritableSignal<WidgetWidth | null> = signal(null);\n\n public readonly $widgetStyle: WritableSignal<WidgetStyle | null> = signal(null);\n\n public readonly $widgetContent: WritableSignal<WidgetContentProperties | null> = signal(null);\n\n public readonly $widgetTitle: WritableSignal<string | null> = signal(null);\n\n public readonly $widgetKey: WritableSignal<string | null> = signal(null);\n\n public readonly $widgetActions: WritableSignal<WidgetAction[] | undefined> = signal(undefined);\n\n public readonly $widgetsConfig: Signal<BasicWidget> = computed(() => ({\n key: this.$widgetKey() ?? '',\n title: this.$widgetTitle() ?? '',\n type: this.$selectedWidget()?.type ?? WidgetType.FIELDS,\n width: this.$widgetWidth() ?? 4,\n highContrast: (this.$widgetStyle() ?? WidgetStyle.DEFAULT) === WidgetStyle.HIGH_CONTRAST,\n properties: this.$widgetContent() ?? ({} as any),\n actions: this.$widgetActions() ?? [],\n }));\n\n public readonly $editMode: WritableSignal<boolean> = signal(false);\n\n public readonly $usedWidgetKeys: WritableSignal<string[]> = signal([]);\n\n public readonly $availableWidgetTypes: WritableSignal<WidgetType[] | null> = signal(null);\n\n public resetWizard(): void {\n this.$selectedWidget.set(null);\n this.$widgetWidth.set(null);\n this.$widgetStyle.set(null);\n this.$widgetContent.set(null);\n this.$widgetTitle.set(null);\n this.$widgetKey.set(null);\n this.$widgetActions.set(undefined);\n this.$editMode.set(false);\n }\n}\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\nexport * from './layout.service';\nexport * from './widget-layout.service';\nexport * from './widget-fields.service';\nexport * from './widget-wizard.service';\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 */\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {RouterModule} from '@angular/router';\nimport {\n AlertModule,\n LeftSidebarModule,\n MenuRoutingModule,\n PageHeaderModule,\n PromptModule,\n RightSidebarModule,\n TopbarModule,\n} from '@valtimo/components';\nimport {GlobalNotificationComponent} from '@valtimo/shared';\nimport {LayoutInternalComponent} from './components/layout-internal/layout-internal.component';\nimport {LayoutPublicComponent} from './components/layout-public/layout-public.component';\nimport {LayoutComponent} from './components/layout/layout.component';\n\n@NgModule({\n declarations: [LayoutComponent, LayoutPublicComponent, LayoutInternalComponent],\n imports: [\n RouterModule,\n MenuRoutingModule,\n TopbarModule,\n LeftSidebarModule,\n RightSidebarModule,\n PageHeaderModule,\n AlertModule,\n CommonModule,\n PromptModule,\n GlobalNotificationComponent,\n ],\n exports: [LayoutComponent],\n})\nexport class LayoutModule {}\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 */\nimport {NgModule} from '@angular/core';\nimport {RouterModule, Routes} from '@angular/router';\nimport {ROLE_ADMIN} from '@valtimo/shared';\nimport {AuthGuardService} from '@valtimo/security';\nimport {TranslationManagementComponent} from './components/translation-management/translation-management.component';\n\nconst routes: Routes = [\n {\n path: 'translation-management',\n component: TranslationManagementComponent,\n canActivate: [AuthGuardService],\n data: {title: 'Translations', roles: [ROLE_ADMIN]},\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class TranslationManagementRoutingModule {}\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\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {TranslationManagementComponent} from './components/translation-management/translation-management.component';\nimport {TranslationManagementRoutingModule} from './translation-management-routing.module';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {\n CarbonMultiInputModule,\n ConfirmationModalModule,\n MultiInputFormModule,\n RenderInPageHeaderDirective,\n} from '@valtimo/components';\nimport {ButtonModule, IconModule, LoadingModule} from 'carbon-components-angular';\n\n@NgModule({\n declarations: [TranslationManagementComponent],\n imports: [\n CommonModule,\n TranslateModule,\n TranslationManagementRoutingModule,\n MultiInputFormModule,\n CarbonMultiInputModule,\n LoadingModule,\n RenderInPageHeaderDirective,\n ButtonModule,\n IconModule,\n ConfirmationModalModule,\n ],\n exports: [],\n})\nexport class TranslationManagementModule {}\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\nimport {EventEmitter} from '@angular/core';\n\nexport interface IWidgetContentComponent {\n changeValidEvent: EventEmitter<boolean>;\n}\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\nexport * from './widget-management-service.interface';\nexport * from './widget-content-component.interface';\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\n/*\n * Public API Surface of layout\n */\n\nexport * from './lib/services';\nexport * from './lib/components/layout/layout.component';\nexport * from './lib/layout.module';\nexport * from './lib/translation-management.module';\nexport * from './lib/components';\nexport * from './lib/models';\nexport * from './lib/constants';\nexport * from './lib/interfaces';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i4","i5.WidgetFieldsService","i5.WidgetWizardService","i3","i4.WidgetWizardService","i6","i7","i3.WidgetWizardService","i5","i4.WidgetFieldsService","i1","i1.LayoutService","i2","filter","i5.LayoutPublicComponent","i6.LayoutInternalComponent","i2.WidgetLayoutService","i1.WidgetLayoutService","uuid","i1.WidgetWizardService","i6.WidgetWizardContentStepComponent","i7.WidgetWizardStyleStepComponent","i8.WidgetWizardTypeStepComponent","i9.WidgetWizardWidthStepComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"valtimo-layout.mjs","sources":["../../../../projects/valtimo/layout/src/lib/services/layout.service.ts","../../../../projects/valtimo/layout/src/lib/models/widget-content.model.ts","../../../../projects/valtimo/layout/src/lib/models/widget-display.model.ts","../../../../projects/valtimo/layout/src/lib/models/widget.model.ts","../../../../projects/valtimo/layout/src/lib/models/widget-editor.model.ts","../../../../projects/valtimo/layout/src/lib/components/widget-management/management-content/fields/column/widget-management-fields-column.component.ts","../../../../projects/valtimo/layout/src/lib/components/widget-management/management-content/fields/column/widget-management-fields-column.component.html","../../../../projects/valtimo/layout/src/lib/components/widget-management/management-content/fields/widget-management-fields.component.ts","../../../../projects/valtimo/layout/src/lib/components/widget-management/management-content/fields/widget-management-fields.component.html","../../../../projects/valtimo/layout/src/lib/components/widget-management/management-content/table/widget-management-table.component.ts","../../../../projects/valtimo/layout/src/lib/components/widget-management/management-content/table/widget-management-table.component.html","../../../../projects/valtimo/layout/src/lib/components/widget-management/management-content/collection/widget-management-collection.component.ts","../../../../projects/valtimo/layout/src/lib/components/widget-management/management-content/collection/widget-management-collection.component.html","../../../../projects/valtimo/layout/src/lib/constants/custom-widget-token.ts","../../../../projects/valtimo/layout/src/lib/components/layout-public/layout-public.component.ts","../../../../projects/valtimo/layout/src/lib/components/layout-public/layout-public.component.html","../../../../projects/valtimo/layout/src/lib/components/layout-internal/layout-internal.component.ts","../../../../projects/valtimo/layout/src/lib/components/layout-internal/layout-internal.component.html","../../../../projects/valtimo/layout/src/lib/components/layout/layout.component.ts","../../../../projects/valtimo/layout/src/lib/components/layout/layout.component.html","../../../../projects/valtimo/layout/src/lib/components/layout/index.ts","../../../../projects/valtimo/layout/src/lib/components/layout-internal/index.ts","../../../../projects/valtimo/layout/src/lib/components/layout-public/index.ts","../../../../projects/valtimo/layout/src/lib/components/widget-field/widget-field.component.ts","../../../../projects/valtimo/layout/src/lib/components/widget-field/widget-field.component.html","../../../../projects/valtimo/layout/src/lib/components/widget-field/index.ts","../../../../projects/valtimo/layout/src/lib/components/translation-management/translation-management.component.ts","../../../../projects/valtimo/layout/src/lib/components/translation-management/translation-management.component.html","../../../../projects/valtimo/layout/src/lib/components/translation-management/index.ts","../../../../projects/valtimo/layout/src/lib/services/widget-layout.service.ts","../../../../projects/valtimo/layout/src/lib/components/widget-formio/widget-formio.component.ts","../../../../projects/valtimo/layout/src/lib/components/widget-formio/widget-formio.component.html","../../../../projects/valtimo/layout/src/lib/components/widget-formio/index.ts","../../../../projects/valtimo/layout/src/lib/components/widget-collection/widget-collection.component.ts","../../../../projects/valtimo/layout/src/lib/components/widget-collection/widget-collection.component.html","../../../../projects/valtimo/layout/src/lib/components/widget-collection/index.ts","../../../../projects/valtimo/layout/src/lib/components/widget-table/widget-table.component.ts","../../../../projects/valtimo/layout/src/lib/components/widget-table/widget-table.component.html","../../../../projects/valtimo/layout/src/lib/components/widget-table/index.ts","../../../../projects/valtimo/layout/src/lib/components/widget-interactive-table/widget-interactive-table.component.ts","../../../../projects/valtimo/layout/src/lib/components/widget-interactive-table/widget-interactive-table.component.html","../../../../projects/valtimo/layout/src/lib/components/widget-interactive-table/index.ts","../../../../projects/valtimo/layout/src/lib/components/widget-custom/widget-custom.component.ts","../../../../projects/valtimo/layout/src/lib/components/widget-custom/widget-custom.component.html","../../../../projects/valtimo/layout/src/lib/components/widget-custom/index.ts","../../../../projects/valtimo/layout/src/lib/components/widget-block/widget-block.component.ts","../../../../projects/valtimo/layout/src/lib/components/widget-block/widget-block.component.html","../../../../projects/valtimo/layout/src/lib/components/widget-block/index.ts","../../../../projects/valtimo/layout/src/lib/components/widget-container/widget-container.component.ts","../../../../projects/valtimo/layout/src/lib/components/widget-container/widget-container.component.html","../../../../projects/valtimo/layout/src/lib/components/widget-container/index.ts","../../../../projects/valtimo/layout/src/lib/components/widget-management/management-wizard/steps/widget-wizard-content-step/widget-wizard-content-step.component.ts","../../../../projects/valtimo/layout/src/lib/components/widget-management/management-wizard/steps/widget-wizard-content-step/widget-wizard-content-step.component.html","../../../../projects/valtimo/layout/src/lib/components/widget-management/management-wizard/steps/widget-wizard-style-step/widget-wizard-style-step.component.ts","../../../../projects/valtimo/layout/src/lib/components/widget-management/management-wizard/steps/widget-wizard-style-step/widget-wizard-style-step.component.html","../../../../projects/valtimo/layout/src/lib/components/widget-management/management-wizard/steps/widget-wizard-type-step/widget-wizard-type-step.component.ts","../../../../projects/valtimo/layout/src/lib/components/widget-management/management-wizard/steps/widget-wizard-type-step/widget-wizard-type-step.component.html","../../../../projects/valtimo/layout/src/lib/components/widget-management/management-wizard/steps/widget-wizard-width-step/widget-wizard-width-step.component.ts","../../../../projects/valtimo/layout/src/lib/components/widget-management/management-wizard/steps/widget-wizard-width-step/widget-wizard-width-step.component.html","../../../../projects/valtimo/layout/src/lib/components/widget-management/management-wizard/steps/index.ts","../../../../projects/valtimo/layout/src/lib/components/widget-management/management-wizard/widget-management-wizard.component.ts","../../../../projects/valtimo/layout/src/lib/components/widget-management/management-wizard/widget-management-wizard.component.html","../../../../projects/valtimo/layout/src/lib/components/widget-management/management-editor/widget-management-editor.component.ts","../../../../projects/valtimo/layout/src/lib/components/widget-management/management-editor/widget-management-editor.component.html","../../../../projects/valtimo/layout/src/lib/components/widget-management/management/widget-management.component.ts","../../../../projects/valtimo/layout/src/lib/components/widget-management/management/widget-management.component.html","../../../../projects/valtimo/layout/src/lib/components/widget-management/index.ts","../../../../projects/valtimo/layout/src/lib/components/index.ts","../../../../projects/valtimo/layout/src/lib/constants/widget.constants.ts","../../../../projects/valtimo/layout/src/lib/constants/widget-management.constants.ts","../../../../projects/valtimo/layout/src/lib/constants/index.ts","../../../../projects/valtimo/layout/src/lib/components/widget-management/management-content/custom/widget-management-custom.component.ts","../../../../projects/valtimo/layout/src/lib/components/widget-management/management-content/custom/widget-management-custom.component.html","../../../../projects/valtimo/layout/src/lib/components/widget-management/management-content/index.ts","../../../../projects/valtimo/layout/src/lib/components/widget-management/management-content/interactive-table/widget-management-interactive-table.component.ts","../../../../projects/valtimo/layout/src/lib/components/widget-management/management-content/interactive-table/widget-management-interactive-table.component.html","../../../../projects/valtimo/layout/src/lib/models/widget-wizard.model.ts","../../../../projects/valtimo/layout/src/lib/models/index.ts","../../../../projects/valtimo/layout/src/lib/services/widget-fields.service.ts","../../../../projects/valtimo/layout/src/lib/services/widget-wizard.service.ts","../../../../projects/valtimo/layout/src/lib/services/index.ts","../../../../projects/valtimo/layout/src/lib/layout.module.ts","../../../../projects/valtimo/layout/src/lib/translation-management-routing.module.ts","../../../../projects/valtimo/layout/src/lib/translation-management.module.ts","../../../../projects/valtimo/layout/src/lib/interfaces/widget-content-component.interface.ts","../../../../projects/valtimo/layout/src/lib/interfaces/index.ts","../../../../projects/valtimo/layout/src/public_api.ts","../../../../projects/valtimo/layout/src/valtimo-layout.ts"],"sourcesContent":["/*\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\nimport {Injectable} from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LayoutService {\n private fullscreen = false;\n\n constructor() {}\n\n public get isFullscreen() {\n return this.fullscreen;\n }\n\n public toggleFullscreen() {\n this.fullscreen = !this.fullscreen;\n }\n}\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\nimport {WidgetDisplayType} from './widget-display.model';\nimport {FieldsWidgetValue, WidgetAction} from './widget.model';\n\ninterface WidgetFieldsContent {\n columns: FieldsWidgetValue[][];\n}\n\ntype CollectionWidgetFieldWidth = 'full' | 'half';\n\ninterface CollectionWidgetField {\n key: string;\n title: string;\n value: string;\n width: CollectionWidgetFieldWidth;\n displayProperties?: WidgetDisplayType;\n}\n\ninterface CollectionWidgetTitle {\n value: string;\n displayProperties?: WidgetDisplayType;\n}\n\ninterface WidgetCollectionContent {\n collection: string;\n defaultPageSize: number;\n title: CollectionWidgetTitle;\n fields: CollectionWidgetField[];\n}\n\ninterface CollectionWidgetResolvedField {\n key: string;\n title: string;\n value: string;\n width: CollectionWidgetFieldWidth;\n hideWhenEmpty: boolean;\n}\n\ninterface CollectionWidgetCardData {\n title: string;\n fields: {[key: string]: string};\n hidden?: boolean;\n}\n\ninterface WidgetTableContent {\n columns: FieldsWidgetValue[];\n collection: string;\n firstColumnAsTitle: boolean;\n defaultPageSize: number;\n}\n\ninterface WidgetInteractiveTableContent extends Omit<WidgetTableContent, 'firstColumnAsTitle'> {\n canStartCase: boolean;\n rowClickAction: WidgetAction;\n}\n\ninterface WidgetCustomContent {\n componentKey: string;\n}\n\ninterface WidgetFormioContent {\n formDefinitionName: string;\n}\n\ntype WidgetContentProperties =\n | WidgetFieldsContent\n | WidgetTableContent\n | WidgetInteractiveTableContent\n | WidgetCustomContent\n | WidgetFormioContent\n | WidgetCollectionContent;\n\nexport {\n WidgetContentProperties,\n WidgetCustomContent,\n WidgetFieldsContent,\n WidgetFormioContent,\n WidgetTableContent,\n WidgetInteractiveTableContent,\n WidgetCollectionContent,\n CollectionWidgetField,\n CollectionWidgetFieldWidth,\n CollectionWidgetResolvedField,\n CollectionWidgetTitle,\n CollectionWidgetCardData,\n};\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\nenum WidgetDisplayTypeKey {\n TEXT = 'text',\n BOOLEAN = 'boolean',\n CURRENCY = 'currency',\n DATE = 'date',\n DATE_TIME = 'datetime',\n ENUM = 'enum',\n NUMBER = 'number',\n PERCENT = 'percent',\n LINK = 'link',\n}\n\ninterface WidgetTextDisplayType {\n type: WidgetDisplayTypeKey.TEXT;\n ellipsisCharacterLimit: number;\n hideWhenEmpty: boolean;\n}\n\ninterface WidgetBooleanDisplayType {\n type: WidgetDisplayTypeKey.BOOLEAN;\n hideWhenEmpty: boolean;\n}\n\ninterface WidgetCurrencyDisplayType {\n type: WidgetDisplayTypeKey.CURRENCY;\n currencyCode?: string;\n display?: string;\n digitsInfo?: string;\n hideWhenEmpty: boolean;\n}\n\ninterface WidgetDateDisplayType {\n type: WidgetDisplayTypeKey.DATE;\n format?: string;\n hideWhenEmpty: boolean;\n}\n\ninterface WidgetDateTimeDisplayType {\n type: WidgetDisplayTypeKey.DATE_TIME;\n format?: string;\n hideWhenEmpty: boolean;\n}\n\ninterface WidgetEnumDisplayType {\n type: WidgetDisplayTypeKey.ENUM;\n values: {\n [key: string]: string;\n };\n hideWhenEmpty: boolean;\n}\n\ninterface WidgetNumberDisplayType {\n type: WidgetDisplayTypeKey.NUMBER;\n digitsInfo?: string;\n hideWhenEmpty: boolean;\n}\n\ninterface WidgetPercentDisplayType {\n type: WidgetDisplayTypeKey.PERCENT;\n digitsInfo?: string;\n hideWhenEmpty: boolean;\n}\n\ninterface WidgetLinkDisplayType {\n type: WidgetDisplayTypeKey.LINK;\n linkText?: string;\n hideWhenEmpty: boolean;\n}\n\ntype WidgetDisplayType =\n | WidgetTextDisplayType\n | WidgetBooleanDisplayType\n | WidgetCurrencyDisplayType\n | WidgetDateDisplayType\n | WidgetDateTimeDisplayType\n | WidgetEnumDisplayType\n | WidgetNumberDisplayType\n | WidgetPercentDisplayType\n | WidgetLinkDisplayType;\n\nexport {\n WidgetBooleanDisplayType,\n WidgetCurrencyDisplayType,\n WidgetDateDisplayType,\n WidgetDateTimeDisplayType,\n WidgetDisplayType,\n WidgetDisplayTypeKey,\n WidgetEnumDisplayType,\n WidgetNumberDisplayType,\n WidgetPercentDisplayType,\n WidgetTextDisplayType,\n WidgetLinkDisplayType,\n};\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 */\nimport {Type} from '@angular/core';\nimport {\n WidgetCollectionContent,\n WidgetContentProperties,\n WidgetCustomContent,\n WidgetFieldsContent,\n WidgetTableContent,\n WidgetInteractiveTableContent,\n} from './widget-content.model';\nimport {WidgetDisplayType} from './widget-display.model';\n\nenum WidgetType {\n FIELDS = 'fields',\n INTERACTIVE_TABLE = 'interactive-table',\n TABLE = 'table',\n CUSTOM = 'custom',\n COLLECTION = 'collection',\n FORMIO = 'formio',\n}\n\ntype WidgetWidth = 1 | 2 | 3 | 4;\ntype CollectionFieldWidth = 'half' | 'full';\n\ninterface WidgetAction {\n name?: string;\n processDefinitionKey?: string;\n caseDefinitionKey?: string;\n navigateTo?: string;\n}\n\ninterface BasicWidget {\n type: WidgetType;\n title: string;\n width: WidgetWidth;\n highContrast: boolean;\n key: string;\n properties: WidgetContentProperties;\n actions?: WidgetAction[];\n}\n\ninterface FieldsWidgetValue {\n key: string;\n title: string;\n value: string;\n ellipsisCharacterLimit?: number;\n displayProperties?: WidgetDisplayType;\n}\n\ninterface FieldsWidget extends BasicWidget {\n type: WidgetType.FIELDS;\n properties: WidgetFieldsContent;\n}\n\ninterface CollectionWidget extends BasicWidget {\n type: WidgetType.COLLECTION;\n properties: WidgetCollectionContent;\n}\n\ninterface TableWidget extends BasicWidget {\n type: WidgetType.TABLE;\n properties: WidgetTableContent;\n}\n\ninterface InteractiveTableWidget extends BasicWidget {\n type: WidgetType.INTERACTIVE_TABLE;\n properties: WidgetInteractiveTableContent;\n}\n\ninterface InteractiveTableWidget extends BasicWidget {\n type: WidgetType.INTERACTIVE_TABLE;\n properties: WidgetInteractiveTableContent;\n}\n\ninterface CustomWidget extends BasicWidget {\n type: WidgetType.CUSTOM;\n properties: WidgetCustomContent;\n}\n\ninterface FormioWidget extends BasicWidget {\n type: WidgetType.FORMIO;\n properties: {\n formDefinitionName: string;\n };\n}\n\ntype Widget =\n | FieldsWidget\n | CollectionWidget\n | CustomWidget\n | TableWidget\n | InteractiveTableWidget\n | FormioWidget;\n\ntype WidgetWithUuid = Widget & {\n uuid: string;\n};\n\ntype FormioWidgetWidgetWithUuid = FormioWidget & {\n uuid: string;\n};\n\ninterface WidgetWidthsPx {\n [uuid: string]: number;\n}\n\ninterface WidgetContentHeightsPx {\n [uuid: string]: number;\n}\n\ninterface WidgetContentHeightsPxWithContainerWidth {\n [uuid: string]: {\n containerWidth: number;\n height: number;\n };\n}\n\ninterface WidgetConfigurationBin {\n configurationKey: string;\n width: number;\n height: number;\n}\n\ninterface WidgetPackResultItem {\n width: number;\n height: number;\n x: number;\n y: number;\n item: WidgetConfigurationBin;\n}\n\ninterface WidgetPackResult {\n height: number;\n width: number;\n items: WidgetPackResultItem[];\n}\n\ninterface MaxRectsResult extends WidgetConfigurationBin {\n x: number;\n y: number;\n}\n\ninterface WidgetPackResultItemsByRow {\n [rowY: string]: WidgetPackResultItem[];\n}\n\ninterface WidgetXY {\n x: number;\n y: number;\n}\n\ninterface CustomWidgetConfig {\n [componentKey: string]: Type<any>;\n}\n\ntype WidgetComponentMap = Record<WidgetType, Type<any>>;\n\nexport {\n BasicWidget,\n Widget,\n WidgetAction,\n WidgetConfigurationBin,\n WidgetContentHeightsPx,\n WidgetContentHeightsPxWithContainerWidth,\n WidgetPackResult,\n // WidgetsRes,\n WidgetType,\n WidgetWidth,\n WidgetWidthsPx,\n WidgetWithUuid,\n WidgetXY,\n CollectionFieldWidth,\n FieldsWidget,\n FieldsWidgetValue,\n CollectionWidget,\n CustomWidgetConfig,\n CustomWidget,\n TableWidget,\n InteractiveTableWidget,\n WidgetPackResultItem,\n WidgetPackResultItemsByRow,\n FormioWidgetWidgetWithUuid,\n MaxRectsResult,\n WidgetComponentMap,\n};\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\nimport {TagType} from 'carbon-components-angular';\nimport {WidgetType} from './widget.model';\n\nenum WidgetManagementTab {\n VISUAL = 'visual',\n JSON = 'json',\n}\n\nconst WidgetTypeTags: {[key: string]: TagType} = {\n [WidgetType.COLLECTION]: 'teal',\n [WidgetType.CUSTOM]: 'magenta',\n [WidgetType.FIELDS]: 'blue',\n [WidgetType.FORMIO]: 'green',\n [WidgetType.TABLE]: 'purple',\n [WidgetType.INTERACTIVE_TABLE]: 'magenta',\n};\n\nexport {WidgetManagementTab, WidgetTypeTags};\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 */\nimport {CommonModule} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n EventEmitter,\n HostBinding,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Signal,\n TemplateRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport {\n AbstractControl,\n FormArray,\n FormBuilder,\n FormGroup,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport {TrashCan16} from '@carbon/icons';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {\n CdsThemeService,\n CurrentCarbonTheme,\n InputLabelModule,\n ValuePathItem,\n ValuePathSelectorComponent,\n ValuePathSelectorPrefix,\n} from '@valtimo/components';\nimport {\n AccordionModule,\n ButtonModule,\n CheckboxModule,\n Dropdown,\n DropdownModule,\n IconModule,\n IconService,\n InputModule,\n ListItem,\n} from 'carbon-components-angular';\nimport {debounceTime, Observable, Subscription} from 'rxjs';\nimport {WidgetFieldsService, WidgetWizardService} from '../../../../../services';\nimport {\n FieldsWidgetValue,\n WidgetCurrencyDisplayType,\n WidgetDateDisplayType,\n WidgetDateTimeDisplayType,\n WidgetDisplayTypeKey,\n WidgetEnumDisplayType,\n WidgetNumberDisplayType,\n WidgetTextDisplayType,\n WidgetType,\n WidgetLinkDisplayType,\n} from '../../../../../models';\n\n@Component({\n selector: 'valtimo-widget-management-fields-column',\n templateUrl: './widget-management-fields-column.component.html',\n styleUrls: ['./widget-management-fields-column.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n ButtonModule,\n DropdownModule,\n InputModule,\n ReactiveFormsModule,\n IconModule,\n AccordionModule,\n InputLabelModule,\n ValuePathSelectorComponent,\n CheckboxModule,\n ],\n})\nexport class WidgetManagementFieldsColumnComponent implements OnInit, OnDestroy {\n @HostBinding('class') public readonly class = 'valtimo-widget-management-field-column';\n @Input({required: true}) public columnData: FieldsWidgetValue[];\n @Input() public addTranslateKey = 'widgetTabManagement.content.fields.add';\n @Input() public fieldWidthDropdown?: TemplateRef<Dropdown>;\n @Input() public selectedCollection?: ValuePathItem;\n @Input() public showHideWhenEmptyCheckbox = false;\n\n @Output() public columnUpdateEvent = new EventEmitter<{\n data: FieldsWidgetValue[];\n valid: boolean;\n }>();\n\n public readonly ValuePathSelectorPrefix = ValuePathSelectorPrefix;\n\n public formGroup = this.fb.group({\n rows: this.fb.array<any>([]),\n });\n\n public get formRows(): FormArray | undefined {\n if (!this.formGroup.get('rows')) return undefined;\n\n return this.formGroup.get('rows') as FormArray;\n }\n\n public displayTypeItems: ListItem[] = this.widgetFieldsService.displayTypeItems;\n\n public getDisplayItemsSelected(row: AbstractControl): ListItem[] {\n return this.widgetFieldsService.getDisplayItemsSelected(row);\n }\n\n public readonly WidgetDisplayTypeKey = WidgetDisplayTypeKey;\n public readonly $widgetType: Signal<WidgetType> = computed(\n () => this.widgetWizardService.$selectedWidget()?.type ?? WidgetType.FIELDS\n );\n public readonly $isFieldWidget: Signal<boolean> = computed(\n () => this.$widgetType() === WidgetType.FIELDS\n );\n\n public readonly inputTheme$: Observable<CurrentCarbonTheme> = this.cdsThemeService.currentTheme$;\n\n private _subscriptions = new Subscription();\n\n constructor(\n private readonly cdsThemeService: CdsThemeService,\n private readonly cdr: ChangeDetectorRef,\n private readonly fb: FormBuilder,\n private readonly iconService: IconService,\n private readonly translateService: TranslateService,\n private readonly widgetFieldsService: WidgetFieldsService,\n private readonly widgetWizardService: WidgetWizardService\n ) {\n this.iconService.register(TrashCan16);\n }\n\n public ngOnInit(): void {\n this.initForm();\n this.openFormSubscription();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n this.formGroup.reset();\n }\n\n public addField(): void {\n if (!this.formRows) return;\n\n this.formRows.push(\n this.fb.group({\n type: this.fb.control<ListItem>({content: '', selected: false}, [\n Validators.required,\n this.typeSelectValidator,\n ]),\n title: this.fb.control<string>('', Validators.required),\n content: this.fb.control<string>('', Validators.required),\n ellipsisCharacterLimit: this.fb.control<number | null>(\n null,\n Validators.pattern('[1-9][0-9]*')\n ),\n hideWhenEmpty: this.fb.control<boolean>(false),\n })\n );\n }\n\n public onDeleteRowClick(event: Event, formArray: FormArray, index: number): void {\n event.stopImmediatePropagation();\n if (!formArray) return;\n\n formArray.removeAt(index);\n }\n\n public onTypeSelected(formRow: FormGroup, event: {item: ListItem}): void {\n this.widgetFieldsService.onDisplayTypeSelected(\n ['title', 'content', 'type', 'hideWhenEmpty'],\n formRow,\n event\n );\n }\n\n public onAddEnumValueClick(valuesFormArray: FormArray): void {\n valuesFormArray.push(\n this.fb.group({\n key: this.fb.control('', Validators.required),\n value: this.fb.control('', Validators.required),\n })\n );\n }\n\n private typeSelectValidator(control: AbstractControl): null | {[key: string]: string} {\n const controlValue: ListItem | undefined = control.value;\n if (!controlValue || !controlValue.selected) return {error: 'Type is not selected'};\n\n return null;\n }\n\n private getRowForm(row: FieldsWidgetValue): FormGroup {\n return this.fb.group({\n type: this.fb.control<ListItem>(\n {\n content: this.translateService.instant(\n this.translateService.instant(\n `widgetTabManagement.content.displayType.${row.displayProperties?.type ?? WidgetDisplayTypeKey.TEXT}`\n )\n ),\n id: row.displayProperties?.type ?? WidgetDisplayTypeKey.TEXT,\n selected: true,\n },\n Validators.required\n ),\n title: this.fb.control<string>(row.title, Validators.required),\n content: this.fb.control<string>(row.value, Validators.required),\n ...((!row.displayProperties || row.displayProperties?.type === WidgetDisplayTypeKey.TEXT) && {\n ellipsisCharacterLimit: this.fb.control<number | null>(\n (row.displayProperties as WidgetTextDisplayType)?.ellipsisCharacterLimit ?? null,\n Validators.pattern('[1-9][0-9]*')\n ),\n }),\n hideWhenEmpty: this.fb.control(\n (row.displayProperties as WidgetTextDisplayType)?.hideWhenEmpty ?? false\n ),\n ...([WidgetDisplayTypeKey.NUMBER, WidgetDisplayTypeKey.PERCENT].includes(\n row.displayProperties?.type as WidgetDisplayTypeKey\n ) && {\n digitsInfo: this.fb.control<string>(\n (row.displayProperties as WidgetNumberDisplayType).digitsInfo ?? ''\n ),\n }),\n ...(row.displayProperties?.type === WidgetDisplayTypeKey.CURRENCY && {\n digitsInfo: this.fb.control<string>(\n (row.displayProperties as WidgetCurrencyDisplayType).digitsInfo ?? ''\n ),\n currencyCode: this.fb.control<string>(\n (row.displayProperties as WidgetCurrencyDisplayType).currencyCode ?? ''\n ),\n display: this.fb.control<string>(\n (row.displayProperties as WidgetCurrencyDisplayType).display ?? ''\n ),\n }),\n ...(row.displayProperties?.type === WidgetDisplayTypeKey.DATE && {\n format: this.fb.control<string>(\n (row.displayProperties as WidgetDateDisplayType).format ?? ''\n ),\n }),\n ...(row.displayProperties?.type === WidgetDisplayTypeKey.DATE_TIME && {\n format: this.fb.control<string>(\n (row.displayProperties as WidgetDateTimeDisplayType).format ?? ''\n ),\n }),\n ...(row.displayProperties?.type === WidgetDisplayTypeKey.LINK && {\n linkText: this.fb.control<string>(\n (row.displayProperties as WidgetLinkDisplayType).linkText ?? ''\n ),\n }),\n ...(row.displayProperties?.type === WidgetDisplayTypeKey.ENUM && {\n values: this.fb.array(\n Object.entries((row.displayProperties as WidgetEnumDisplayType).values).map(\n ([key, value]) =>\n this.fb.group({\n key: this.fb.control<string>(key, Validators.required),\n value: this.fb.control<string>(value as string, Validators.required),\n })\n )\n ),\n }),\n });\n }\n\n private initForm(): void {\n if (!this.columnData) {\n this.addField();\n return;\n }\n\n const rowsControl = this.formGroup.get('rows') as FormArray;\n if (!rowsControl) return;\n\n this.columnData.forEach((row: FieldsWidgetValue) => {\n rowsControl.push(this.getRowForm(row), {emitEvent: false});\n });\n\n this.columnUpdateEvent.emit({data: this.columnData, valid: true});\n this.cdr.detectChanges();\n }\n\n private openFormSubscription(): void {\n this._subscriptions.add(\n this.formRows?.valueChanges.pipe(debounceTime(100)).subscribe((rows: any) => {\n const mappedRows: FieldsWidgetValue[] = rows.map((row: any | null) => ({\n key: row.title.replace(/\\W+/g, '-').replace(/\\-$/, '').toLowerCase(),\n title: row.title,\n value: row.content,\n ...(!!row?.type.id && {\n displayProperties: {\n type: row.type.id,\n ...(!!row?.ellipsisCharacterLimit && {\n ellipsisCharacterLimit: row.ellipsisCharacterLimit,\n }),\n ...(!!row?.hideWhenEmpty && {hideWhenEmpty: row.hideWhenEmpty}),\n ...(!!row?.currencyCode && {currencyCode: row.currencyCode}),\n ...(!!row?.display && {display: row.display}),\n ...(!!row?.digitsInfo && {digitsInfo: row.digitsInfo}),\n ...(!!row?.linkText && {linkText: row.linkText}),\n ...(!!row?.format && {format: row.format}),\n ...(!!row?.values && {\n values: row.values?.reduce((acc, curr) => ({...acc, [curr.key]: curr.value}), {}),\n }),\n },\n }),\n }));\n this.columnUpdateEvent.emit({data: mappedRows, valid: this.formGroup.valid});\n })\n );\n }\n}\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<form\n *ngIf=\"inputTheme$ | async as inputTheme\"\n class=\"valtimo-widget-management-field-column\"\n [formGroup]=\"formGroup\"\n>\n <cds-accordion formArrayName=\"rows\" align=\"start\" size=\"sm\">\n @for (formRow of formRows.controls; track $index) {\n <cds-accordion-item\n [title]=\"fieldTitle\"\n [context]=\"{count: $count, index: $index, title: formRow.get('title')?.value}\"\n [expanded]=\"$index === 0\"\n class=\"valtimo-widget-management-field-column__item\"\n >\n <form [formGroup]=\"formRow\" class=\"valtimo-widget-management-field-column__container\">\n <div\n class=\"valtimo-widget-management-field-column__content\"\n [class.valtimo-widget-management-field-column__content--collection]=\"\n !!fieldWidthDropdown\n \"\n >\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.title' | translate\"\n [tooltip]=\"\n 'widgetTabManagement.content.' + $widgetType() + '.titleTooltip' | translate\n \"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"inputTheme\"\n [placeholder]=\"'widgetTabManagement.content.fields.titlePlaceholder' | translate\"\n type=\"text\"\n formControlName=\"title\"\n />\n </cds-text-label>\n\n <cds-dropdown\n [attr.data-carbon-theme]=\"inputTheme\"\n [label]=\"'widgetTabManagement.content.fields.type' | translate\"\n [dropUp]=\"false\"\n [placeholder]=\"'widgetTabManagement.content.fields.typePlaceholder' | translate\"\n (selected)=\"onTypeSelected(formRow, $event)\"\n formControlName=\"type\"\n >\n <cds-dropdown-list [items]=\"getDisplayItemsSelected(formRow)\"></cds-dropdown-list>\n </cds-dropdown>\n\n <ng-container\n *ngTemplateOutlet=\"fieldWidthDropdown; context: {index: $index}\"\n ></ng-container>\n\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.value' | translate\"\n [tooltip]=\"\n 'widgetTabManagement.content.' + $widgetType() + '.valueTooltip' | translate\n \"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"inputTheme\"\n [placeholder]=\"'widgetTabManagement.content.fields.value' | translate\"\n type=\"text\"\n formControlName=\"content\"\n />\n <!-- TODO: Implement when selector is up and parameterise -->\n <!-- <valtimo-value-path-selector\n formControlName=\"content\"\n [caseDefinitionKey]=\"params?.caseDefinitionKey\"\n [caseDefinitionVersionTag]=\"params?.caseDefinitionVersionTag\"\n [parentItem]=\"selectedCollection\"\n ></valtimo-value-path-selector> -->\n </cds-text-label>\n </div>\n\n <div class=\"valtimo-widget-management-field-column__options\">\n @switch (formRow.get('type').value.id) {\n @case (WidgetDisplayTypeKey.CURRENCY) {\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.currencyCode' | translate\"\n [tooltip]=\"'widgetTabManagement.content.fields.currencyCodeTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"inputTheme\"\n [placeholder]=\"\n 'widgetTabManagement.content.fields.currencyCodePlaceholder' | translate\n \"\n type=\"text\"\n formControlName=\"currencyCode\"\n />\n </cds-text-label>\n\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.display' | translate\"\n [tooltip]=\"'widgetTabManagement.content.fields.displayTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"inputTheme\"\n [placeholder]=\"\n 'widgetTabManagement.content.fields.displayPlaceholder' | translate\n \"\n type=\"text\"\n formControlName=\"display\"\n />\n </cds-text-label>\n\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.digitsInfo' | translate\"\n tooltip=\"{{\n 'widgetTabManagement.content.fields.digitsInfoTooltip'\n | translate: {minFractionDigits: 2, maxFractionDigits: 2}\n }}\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"inputTheme\"\n [placeholder]=\"\n 'widgetTabManagement.content.fields.digitsInfoPlaceholder' | translate\n \"\n type=\"text\"\n formControlName=\"digitsInfo\"\n />\n </cds-text-label>\n }\n @case (WidgetDisplayTypeKey.DATE) {\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.format' | translate\"\n [tooltip]=\"'widgetTabManagement.content.fields.dateFormatTooltip' | translate\"\n ></v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"inputTheme\"\n [placeholder]=\"\n 'widgetTabManagement.content.fields.formatPlaceholder' | translate\n \"\n type=\"text\"\n formControlName=\"format\"\n />\n </cds-text-label>\n }\n @case (WidgetDisplayTypeKey.DATE_TIME) {\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.format' | translate\"\n [tooltip]=\"\n 'widgetTabManagement.content.fields.dateTimeFormatTooltip' | translate\n \"\n ></v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"inputTheme\"\n [placeholder]=\"\n 'widgetTabManagement.content.fields.formatPlaceholder' | translate\n \"\n type=\"text\"\n formControlName=\"format\"\n />\n </cds-text-label>\n }\n @case (WidgetDisplayTypeKey.ENUM) {\n <div class=\"valtimo-widget-management-field-column__enum\" formArrayName=\"values\">\n @for (rowValue of formRow.get('values')?.controls; track $index) {\n <form\n [formGroup]=\"rowValue\"\n class=\"valtimo-widget-management-field-column__enum-form\"\n >\n <cds-text-label>\n <v-input-label\n *ngIf=\"$index === 0\"\n [title]=\"'widgetTabManagement.content.fields.enumValue' | translate\"\n [tooltip]=\"\n 'widgetTabManagement.content.fields.enumValueTooltip' | translate\n \"\n ></v-input-label>\n\n <input\n [attr.data-carbon-theme]=\"inputTheme\"\n cdsText\n [placeholder]=\"'widgetTabManagement.content.fields.enumValue' | translate\"\n type=\"text\"\n formControlName=\"key\"\n />\n </cds-text-label>\n\n <cds-text-label>\n <v-input-label\n *ngIf=\"$index === 0\"\n [title]=\"'widgetTabManagement.content.fields.enumDisplay' | translate\"\n [tooltip]=\"\n 'widgetTabManagement.content.fields.enumDisplayTooltip' | translate\n \"\n ></v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"inputTheme\"\n [placeholder]=\"\n 'widgetTabManagement.content.fields.enumDisplay' | translate\n \"\n type=\"text\"\n formControlName=\"value\"\n />\n </cds-text-label>\n\n <button\n cdsButton=\"danger--ghost\"\n [disabled]=\"$count === 1\"\n [iconOnly]=\"true\"\n class=\"valtimo-widget-management-field-column__delete-button enum\"\n (click)=\"onDeleteRowClick($event, formRow.get('values'), $index)\"\n >\n <svg cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n </form>\n }\n\n <button\n cdsButton=\"primary\"\n size=\"sm\"\n (click)=\"onAddEnumValueClick(formRow.get('values'))\"\n >\n {{ 'widgetTabManagement.content.fields.addEnum' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n </div>\n }\n @case (WidgetDisplayTypeKey.NUMBER) {\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.digitsInfo' | translate\"\n tooltip=\"{{\n 'widgetTabManagement.content.fields.digitsInfoTooltip'\n | translate\n : {\n minFractionDigits: 0,\n maxFractionDigits: 3,\n }\n }}\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"inputTheme\"\n [placeholder]=\"'widgetTabManagement.content.fields.digitsInfo' | translate\"\n type=\"text\"\n formControlName=\"digitsInfo\"\n />\n </cds-text-label>\n }\n @case (WidgetDisplayTypeKey.PERCENT) {\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.digitsInfo' | translate\"\n tooltip=\"{{\n 'widgetTabManagement.content.fields.digitsInfoTooltip'\n | translate\n : {\n minFractionDigits: 0,\n maxFractionDigits: 0,\n }\n }}\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"inputTheme\"\n [placeholder]=\"'widgetTabManagement.content.fields.digitsInfo' | translate\"\n type=\"text\"\n formControlName=\"digitsInfo\"\n />\n </cds-text-label>\n }\n @case (WidgetDisplayTypeKey.LINK) {\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.linkText' | translate\"\n [tooltip]=\"'widgetTabManagement.content.fields.linkTextTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"inputTheme\"\n [placeholder]=\"\n 'widgetTabManagement.content.fields.linkTextPlaceholder' | translate\n \"\n type=\"text\"\n formControlName=\"linkText\"\n />\n </cds-text-label>\n }\n }\n\n <cds-text-label\n *ngIf=\"formRow.get('type').value.id === WidgetDisplayTypeKey.TEXT && $isFieldWidget()\"\n >\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.ellipsisCharacterLimit' | translate\"\n tooltip=\"{{\n 'widgetTabManagement.content.fields.ellipsisCharacterLimitTooltip' | translate\n }}\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"inputTheme\"\n [placeholder]=\"\n 'widgetTabManagement.content.fields.ellipsisCharacterLimitPlaceholder' | translate\n \"\n type=\"text\"\n formControlName=\"ellipsisCharacterLimit\"\n />\n </cds-text-label>\n\n <cds-checkbox *ngIf=\"showHideWhenEmptyCheckbox\" formControlName=\"hideWhenEmpty\">\n {{ 'widgetTabManagement.content.hideWhenEmpty' | translate }}\n </cds-checkbox>\n </div>\n </form>\n </cds-accordion-item>\n }\n </cds-accordion>\n\n <button cdsButton=\"primary\" size=\"sm\" (click)=\"addField()\">\n {{ addTranslateKey | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n</form>\n\n<ng-template #fieldTitle let-count=\"count\" let-index=\"index\" let-title=\"title\">\n <div class=\"valtimo-widget-management-field-column__title\">\n {{ title || ('widgetTabManagement.content.fields.titlePlaceholder' | translate) }}\n\n <button\n cdsButton=\"danger\"\n [disabled]=\"count === 1\"\n [iconOnly]=\"true\"\n (click)=\"onDeleteRowClick($event, formRows, index)\"\n class=\"valtimo-widget-management-field-column__delete-button\"\n >\n <svg cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n </div>\n</ng-template>\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 */\nimport {CommonModule} from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n EventEmitter,\n HostBinding,\n OnDestroy,\n OnInit,\n Output,\n signal,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {AbstractControl, FormBuilder, ReactiveFormsModule, Validators} from '@angular/forms';\nimport {ActivatedRoute} from '@angular/router';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {\n CARBON_THEME,\n CdsThemeService,\n CurrentCarbonTheme,\n InputLabelModule,\n} from '@valtimo/components';\nimport {ButtonModule, IconModule, InputModule, Tab, TabsModule} from 'carbon-components-angular';\nimport {debounceTime, map, Subscription} from 'rxjs';\nimport {WidgetManagementFieldsColumnComponent} from './column/widget-management-fields-column.component';\nimport {IWidgetContentComponent} from '../../../../interfaces';\nimport {WidgetWizardService} from '../../../../services';\nimport {FieldsWidgetValue, WidgetFieldsContent} from '../../../../models';\n\n@Component({\n templateUrl: './widget-management-fields.component.html',\n styleUrl: './widget-management-fields.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n InputModule,\n TabsModule,\n IconModule,\n ReactiveFormsModule,\n ButtonModule,\n WidgetManagementFieldsColumnComponent,\n // CaseManagementWidgetProcessSelectorComponent,\n InputLabelModule,\n ],\n})\nexport class WidgetManagementFieldsComponent\n implements IWidgetContentComponent, OnDestroy, OnInit, AfterViewInit\n{\n @HostBinding('class') public readonly class = 'valtimo-widget-management-fields';\n @Output() public readonly changeValidEvent = new EventEmitter<boolean>();\n @ViewChild(Tab) private readonly _tab: Tab;\n\n public readonly $showTitleInput = signal<boolean>(true);\n\n public form = this.fb.group({\n widgetTitle: this.fb.control(this.widgetWizardService.$widgetTitle(), Validators.required),\n });\n\n public readonly $columns = signal<null[]>([null]);\n public readonly $widgetWidth = this.widgetWizardService.$widgetWidth();\n public readonly selectedTabIndex = -1;\n public readonly theme$ = this.cdsThemeService.currentTheme$.pipe(\n map((theme: CurrentCarbonTheme) =>\n theme === CurrentCarbonTheme.G10 ? CARBON_THEME.WHITE : CARBON_THEME.G90\n )\n );\n public readonly $selectedWidgetContent = computed(() =>\n (this.widgetWizardService.$widgetContent() as WidgetFieldsContent)?.columns.reduce(\n (acc, curr, index) => ({\n ...acc,\n [index]: curr,\n }),\n {}\n )\n );\n public readonly activeTab = signal<number>(0);\n\n private readonly _subscriptions = new Subscription();\n private readonly _contentValid = signal<boolean>(false);\n\n constructor(\n private readonly cdsThemeService: CdsThemeService,\n private readonly fb: FormBuilder,\n private readonly route: ActivatedRoute,\n private readonly widgetWizardService: WidgetWizardService\n ) {}\n\n public ngOnInit(): void {\n this._subscriptions.add(\n this.form.valueChanges.pipe(debounceTime(100)).subscribe(formValue => {\n this.widgetWizardService.$widgetTitle.set(formValue.widgetTitle ?? '');\n this.changeValidEvent.emit(this.form.valid && this._contentValid());\n })\n );\n const widgetContent = (this.widgetWizardService.$widgetContent() as WidgetFieldsContent)\n ?.columns;\n if (!widgetContent) return;\n\n this.$columns.set(Object.keys(widgetContent).map(() => null));\n }\n\n public ngAfterViewInit(): void {\n this._tab.tabIndex = -1;\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n this.changeValidEvent.emit(false);\n this.form.reset();\n this._contentValid.set(false);\n }\n\n public onAddColumnClick(): void {\n this.$columns.update(value => [...value, null]);\n this.activeTab.set(this.$columns().length - 1);\n this.changeValidEvent.emit(false);\n }\n\n public onTabSelected(index: number): void {\n this.activeTab.set(index);\n }\n\n public onDeleteColumnClick(index: number): void {\n this.widgetWizardService.$widgetContent.update(content => {\n if (!content) return null;\n\n const widgetContent = content as WidgetFieldsContent;\n\n let tempIndex = index;\n let tempContent = {...widgetContent};\n while (tempIndex < this.$columns().length - 1) {\n tempContent.columns[tempIndex] = tempContent.columns[tempIndex + 1];\n tempIndex++;\n }\n tempContent.columns.splice(tempIndex, 1);\n\n return tempContent;\n });\n\n this.$columns.update((columns: null[]) => {\n const temp = columns;\n temp.splice(index, 1);\n\n return temp;\n });\n\n if (this.activeTab() !== index) return;\n\n this.activeTab.set(-1);\n }\n\n public onColumnUpdateEvent(\n event: {\n data: FieldsWidgetValue[];\n valid: boolean;\n },\n columnIndex: number\n ): void {\n this.widgetWizardService.$widgetContent.update(content => {\n if (!content) return {columns: [event.data]};\n\n const columns = (content as WidgetFieldsContent)?.columns.map((column, index) =>\n index === columnIndex ? event.data : column\n );\n return {\n columns: columnIndex > columns.length - 1 ? [...columns, event.data] : columns,\n };\n });\n this._contentValid.set(event.valid);\n this.changeValidEvent.emit(event.valid && this.form.valid);\n }\n\n public setTitleInputVisible(visible: boolean): void {\n this.$showTitleInput.set(visible);\n\n const ctrl: AbstractControl | null = this.form.get('widgetTitle');\n if (!ctrl) return;\n\n if (visible) {\n ctrl.addValidators(Validators.required);\n } else {\n ctrl.clearValidators();\n }\n\n ctrl.updateValueAndValidity({emitEvent: false});\n\n this.changeValidEvent.emit(this.form.valid && this._contentValid());\n }\n}\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\n<p>{{ 'widgetTabManagement.content.description' | translate }}</p>\n\n<form [formGroup]=\"form\">\n <cds-text-label\n *ngIf=\"$showTitleInput()\"\n [attr.data-carbon-theme]=\"theme$ | async\"\n class=\"valtimo-widget-management-fields__input\"\n >\n <v-input-label\n [title]=\"'widgetTabManagement.content.widgetTitle' | translate\"\n [tooltip]=\"'widgetTabManagement.content.widgetTitleTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n formControlName=\"widgetTitle\"\n cdsText\n [placeholder]=\"'widgetTabManagement.content.widgetTitlePlaceholder' | translate\"\n type=\"text\"\n />\n </cds-text-label>\n</form>\n\n<!-- For projecting elements such as process selector in case widgets -->\n<ng-content></ng-content>\n\n<cds-tabs type=\"contained\">\n @for (column of $columns(); track $index) {\n <cds-tab\n [active]=\"activeTab() === $index\"\n [heading]=\"columnHeading\"\n [context]=\"{index: $index, count: $count}\"\n (selected)=\"onTabSelected($index)\"\n >\n <valtimo-widget-management-fields-column\n *ngIf=\"activeTab() === $index\"\n [isFieldWidget]=\"true\"\n [columnData]=\"$selectedWidgetContent()?.[$index]\"\n [showHideWhenEmptyCheckbox]=\"true\"\n (columnUpdateEvent)=\"onColumnUpdateEvent($event, $index)\"\n ></valtimo-widget-management-fields-column>\n </cds-tab>\n }\n\n <cds-tab\n *ngIf=\"$columns().length < $widgetWidth\"\n [heading]=\"addColumn\"\n [id]=\"'addColumn'\"\n class=\"valtimo-widget-management-fields__add\"\n ></cds-tab>\n</cds-tabs>\n\n<ng-template #addColumn>\n <button\n cdsButton=\"ghost\"\n [iconOnly]=\"true\"\n (click)=\"$event.stopImmediatePropagation(); onAddColumnClick()\"\n >\n <svg cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n</ng-template>\n\n<ng-template #columnHeading let-data>\n <div class=\"valtimo-widget-management-fields__heading\">\n {{ 'widgetTabManagement.content.column' | translate: {number: data.index + 1} }}\n\n <button\n cdsButton=\"ghost\"\n [disabled]=\"data.count === 1\"\n [iconOnly]=\"true\"\n size=\"sm\"\n (click)=\"onDeleteColumnClick(data.index)\"\n >\n <svg cdsIcon=\"close\" size=\"16\"></svg>\n </button>\n </div>\n</ng-template>\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 */\nimport {CommonModule} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n EventEmitter,\n HostBinding,\n Input,\n OnDestroy,\n OnInit,\n Output,\n signal,\n ViewEncapsulation,\n WritableSignal,\n} from '@angular/core';\nimport {FormBuilder, FormGroup, ReactiveFormsModule, Validators} from '@angular/forms';\nimport {ActivatedRoute} from '@angular/router';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {\n CARBON_THEME,\n CdsThemeService,\n CurrentCarbonTheme,\n InputLabelModule,\n ValuePathItem,\n ValuePathSelectorPrefix,\n ValuePathType,\n} from '@valtimo/components';\nimport {ButtonModule, InputModule, LayerModule, ToggleModule} from 'carbon-components-angular';\nimport {BehaviorSubject, debounceTime, map, Observable, Subscription} from 'rxjs';\nimport {IWidgetContentComponent} from '../../../../interfaces';\nimport {WidgetWizardService} from '../../../../services';\nimport {WidgetManagementFieldsColumnComponent} from '../fields/column/widget-management-fields-column.component';\nimport {FieldsWidgetValue, WidgetContentProperties, WidgetTableContent} from '../../../../models';\n\n@Component({\n selector: 'valtimo-widget-management-table',\n templateUrl: './widget-management-table.component.html',\n styleUrl: './widget-management-table.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n encapsulation: ViewEncapsulation.None,\n imports: [\n CommonModule,\n TranslateModule,\n WidgetManagementFieldsColumnComponent,\n ReactiveFormsModule,\n InputModule,\n ToggleModule,\n ButtonModule,\n InputLabelModule,\n LayerModule,\n ],\n})\nexport class WidgetManagementTableComponent implements IWidgetContentComponent, OnInit, OnDestroy {\n @HostBinding('class') public readonly class = 'valtimo-widget-management-table';\n @Input() public showFirstColumnOption = true;\n @Output() public readonly changeValidEvent = new EventEmitter<boolean>();\n\n public readonly form: FormGroup = this.fb.group({\n title: this.fb.control<string>(\n this.widgetWizardService.$widgetTitle() ?? '',\n Validators.required\n ),\n collection: this.fb.control<string>(\n (this.widgetWizardService.$widgetContent() as WidgetTableContent)?.collection ?? '',\n Validators.required\n ),\n defaultPageSize: this.fb.control<number>(\n (this.widgetWizardService.$widgetContent() as WidgetTableContent)?.defaultPageSize ?? 5,\n Validators.required\n ),\n });\n\n public readonly theme$: Observable<CARBON_THEME> = this.cdsThemeService.currentTheme$.pipe(\n map((currentTheme: CurrentCarbonTheme) =>\n currentTheme === CurrentCarbonTheme.G10 ? CARBON_THEME.WHITE : CARBON_THEME.G90\n )\n );\n\n public readonly $content = this.widgetWizardService\n .$widgetContent as WritableSignal<WidgetTableContent>;\n public readonly $checked = computed(\n () =>\n (this.widgetWizardService.$widgetContent() as WidgetTableContent)?.firstColumnAsTitle || false\n );\n\n public readonly selectedCollection$ = new BehaviorSubject<ValuePathItem | null>(null);\n\n public readonly ValuePathSelectorPrefix = ValuePathSelectorPrefix;\n public readonly ValuePathType = ValuePathType;\n\n private readonly _$contentValid = signal<boolean>(this.widgetWizardService.$editMode());\n private readonly _subscriptions = new Subscription();\n\n constructor(\n private readonly cdsThemeService: CdsThemeService,\n private readonly fb: FormBuilder,\n private readonly widgetWizardService: WidgetWizardService,\n private readonly route: ActivatedRoute\n ) {}\n\n public ngOnInit(): void {\n this._subscriptions.add(\n this.form.valueChanges.pipe(debounceTime(500)).subscribe(value => {\n this.widgetWizardService.$widgetTitle.set(value?.title ?? '');\n\n this.widgetWizardService.$widgetContent.update(\n (content: WidgetContentProperties | null) =>\n ({\n ...content,\n collection: value?.collection || '',\n defaultPageSize: value?.defaultPageSize || 5,\n }) as WidgetTableContent\n );\n\n this.changeValidEvent.emit(this.form.valid && this._$contentValid());\n })\n );\n }\n\n public ngOnDestroy(): void {\n this._$contentValid.set(false);\n this._subscriptions.unsubscribe();\n this.changeValidEvent.emit(false);\n this.form.reset();\n }\n\n public onColumnUpdateEvent(event: {data: FieldsWidgetValue[]; valid: boolean}): void {\n const {data, valid} = event;\n this.widgetWizardService.$widgetContent.update(\n (content: WidgetContentProperties | null) =>\n ({...content, columns: data}) as WidgetTableContent\n );\n this._$contentValid.set(valid);\n this.changeValidEvent.emit(valid && this.form.valid);\n }\n\n public onCheckedChange(firstColumnAsTitle: boolean): void {\n this.widgetWizardService.$widgetContent.update(\n (content: WidgetContentProperties | null) =>\n ({...content, firstColumnAsTitle}) as WidgetTableContent\n );\n }\n\n public onCollectionSelected(item: ValuePathItem): void {\n this.selectedCollection$.next(item);\n }\n}\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\n<form\n *ngIf=\"theme$ | async as theme\"\n [formGroup]=\"form\"\n class=\"valtimo-widget-management-table__form\"\n>\n <cds-text-label [attr.data-carbon-theme]=\"theme\">\n <v-input-label\n [title]=\"'widgetTabManagement.content.widgetTitle' | translate\"\n [tooltip]=\"'widgetTabManagement.content.widgetTitleTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n formControlName=\"title\"\n cdsText\n [placeholder]=\"'widgetTabManagement.content.widgetTitlePlaceholder' | translate\"\n type=\"text\"\n />\n </cds-text-label>\n\n <cds-text-label [attr.data-carbon-theme]=\"theme\">\n <v-input-label\n [title]=\"'widgetTabManagement.content.table.defaultPageSize' | translate\"\n [tooltip]=\"'widgetTabManagement.content.table.defaultPageSizeTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n formControlName=\"defaultPageSize\"\n cdsText\n [placeholder]=\"'widgetTabManagement.content.table.defaultPageSizePlaceholder' | translate\"\n type=\"text\"\n />\n </cds-text-label>\n\n <cds-text-label [attr.data-carbon-theme]=\"theme\">\n <v-input-label\n [title]=\"'widgetTabManagement.content.table.collection' | translate\"\n [tooltip]=\"'widgetTabManagement.content.table.collectionTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n formControlName=\"collection\"\n cdsText\n [attr.data-carbon-theme]=\"theme\"\n [placeholder]=\"'widgetTabManagement.content.table.collection' | translate\"\n type=\"text\"\n />\n\n <!-- TODO: Implement to work for case as well -->\n\n <!-- <valtimo-value-path-selector\n formControlName=\"collection\"\n [attr.data-carbon-theme]=\"obs.theme\"\n [caseDefinitionKey]=\"obs.params?.caseDefinitionKey\"\n [caseDefinitionVersionTag]=\"obs.params?.caseDefinitionVersionTag\"\n [type]=\"ValuePathType.COLLECTION\"\n (collectionSelected)=\"onCollectionSelected($event)\"\n ></valtimo-value-path-selector> -->\n </cds-text-label>\n</form>\n\n<ng-content></ng-content>\n\n<span class=\"valtimo-widget-management-table__subtitle\">\n {{ 'widgetTabManagement.content.table.columns' | translate }}\n</span>\n\n<valtimo-widget-management-fields-column\n [addTranslateKey]=\"'widgetTabManagement.content.table.addColumn'\"\n [columnData]=\"$content()?.columns\"\n (columnUpdateEvent)=\"onColumnUpdateEvent($event)\"\n></valtimo-widget-management-fields-column>\n<!-- TODO: Implement to work for case as well -->\n<!-- [selectedCollection]=\"selectedCollection$ | async\" -->\n\n<section *ngIf=\"showFirstColumnOption\" class=\"valtimo-widget-management-table__toggle\">\n <span class=\"valtimo-widget-management-table__subtitle\">\n {{ 'widgetTabManagement.content.table.options' | translate }}\n </span>\n\n <cds-toggle\n [checked]=\"$checked()\"\n [label]=\"'widgetTabManagement.content.table.firstColumnAsTitle' | translate\"\n [onText]=\"'interface.yes' | translate\"\n [offText]=\"'interface.no' | translate\"\n (checkedChange)=\"onCheckedChange($event)\"\n ></cds-toggle>\n</section>\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\nimport {CommonModule} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostBinding,\n OnDestroy,\n OnInit,\n Output,\n signal,\n ViewEncapsulation,\n WritableSignal,\n} from '@angular/core';\nimport {\n AbstractControl,\n FormArray,\n FormBuilder,\n FormGroup,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport {ActivatedRoute} from '@angular/router';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\n\nimport {\n CARBON_THEME,\n CdsThemeService,\n CurrentCarbonTheme,\n InputLabelModule,\n ValuePathItem,\n ValuePathSelectorComponent,\n ValuePathSelectorPrefix,\n ValuePathType,\n} from '@valtimo/components';\nimport {\n ButtonModule,\n DropdownModule,\n IconModule,\n InputModule,\n ListItem,\n} from 'carbon-components-angular';\nimport {BehaviorSubject, debounceTime, map, Observable, Subscription} from 'rxjs';\nimport {WidgetManagementFieldsColumnComponent} from '../fields/column/widget-management-fields-column.component';\nimport {IWidgetContentComponent} from '../../../../interfaces';\nimport {WidgetFieldsService, WidgetWizardService} from '../../../../services';\nimport {\n CollectionFieldWidth,\n FieldsWidgetValue,\n WidgetCollectionContent,\n WidgetContentProperties,\n WidgetCurrencyDisplayType,\n WidgetDateDisplayType,\n WidgetDateTimeDisplayType,\n WidgetDisplayTypeKey,\n WidgetEnumDisplayType,\n} from '../../../../models';\n\n@Component({\n templateUrl: './widget-management-collection.component.html',\n styleUrl: './widget-management-collection.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n WidgetManagementFieldsColumnComponent,\n ReactiveFormsModule,\n InputModule,\n DropdownModule,\n ButtonModule,\n IconModule,\n InputLabelModule,\n ValuePathSelectorComponent,\n ],\n})\nexport class WidgetManagementCollectionComponent\n implements IWidgetContentComponent, OnInit, OnDestroy\n{\n @HostBinding('class') public readonly class = 'valtimo-widget-management-collection';\n @Output() public readonly changeValidEvent = new EventEmitter<boolean>();\n\n public readonly widgetForm = this.fb.group({\n title: this.fb.control(this.widgetWizardService.$widgetTitle() ?? '', Validators.required),\n defaultPageSize: this.fb.control(\n (this.widgetWizardService.$widgetContent() as WidgetCollectionContent)?.defaultPageSize ?? 5,\n Validators.required\n ),\n collection: this.fb.control(\n (this.widgetWizardService.$widgetContent() as WidgetCollectionContent)?.collection ?? '',\n Validators.required\n ),\n });\n\n public readonly cardForm = this.fb.group<any>({\n value: this.fb.control(\n (this.widgetWizardService.$widgetContent() as WidgetCollectionContent)?.title?.value ?? '',\n Validators.required\n ),\n type: this.fb.control<ListItem>(\n {\n content: this.translateService.instant(\n this.translateService.instant(\n `widgetTabManagement.content.displayType.${(this.widgetWizardService.$widgetContent() as WidgetCollectionContent)?.title?.displayProperties?.type ?? WidgetDisplayTypeKey.TEXT}`\n )\n ),\n id:\n (this.widgetWizardService.$widgetContent() as WidgetCollectionContent)?.title\n ?.displayProperties?.type ?? WidgetDisplayTypeKey.TEXT,\n selected: true,\n },\n Validators.required\n ),\n });\n\n public readonly theme$: Observable<CARBON_THEME> = this.cdsThemeService.currentTheme$.pipe(\n map((theme: CurrentCarbonTheme) =>\n theme === CurrentCarbonTheme.G10 ? CARBON_THEME.WHITE : CARBON_THEME.G90\n )\n );\n\n public readonly ValuePathSelectorPrefix = ValuePathSelectorPrefix;\n public readonly ValuePathType = ValuePathType;\n public readonly WidgetDisplayTypeKey = WidgetDisplayTypeKey;\n public readonly $content = this.widgetWizardService\n .$widgetContent as WritableSignal<WidgetCollectionContent>;\n public readonly displayTypeItems: ListItem[] = this.widgetFieldsService.displayTypeItems;\n\n public readonly selectedCollection$ = new BehaviorSubject<ValuePathItem | null>(null);\n\n public WIDTH_ITEMS: ListItem[] = [\n {\n content: this.translateService.instant('widgetTabManagement.width.fullWidth'),\n id: 'full',\n selected: true,\n },\n {\n content: this.translateService.instant('widgetTabManagement.width.half'),\n id: 'half',\n selected: false,\n },\n ];\n\n private readonly _subscriptions = new Subscription();\n private readonly _$contentValid = signal<boolean>(false);\n\n constructor(\n private readonly cdsThemeService: CdsThemeService,\n private readonly fb: FormBuilder,\n private readonly translateService: TranslateService,\n private readonly widgetFieldsService: WidgetFieldsService,\n private readonly route: ActivatedRoute,\n private readonly widgetWizardService: WidgetWizardService\n ) {}\n\n public ngOnInit(): void {\n this.openWidgetFormSubscription();\n this.openCardFormSubscription();\n this.initForm();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public onAddEnumValueClick(valuesFormArray: FormArray): void {\n valuesFormArray.push(\n this.fb.group({\n key: this.fb.control('', Validators.required),\n value: this.fb.control('', Validators.required),\n })\n );\n }\n\n public getDisplayItemsSelected(control: AbstractControl): ListItem[] {\n return this.widgetFieldsService.getDisplayItemsSelected(control);\n }\n\n public getSelectedWidthItem(fieldIndex: number): ListItem[] {\n const widgetContent: WidgetCollectionContent | null =\n this.widgetWizardService.$widgetContent() as WidgetCollectionContent;\n\n return !widgetContent\n ? this.WIDTH_ITEMS\n : this.WIDTH_ITEMS.map((item: ListItem) => ({\n ...item,\n selected: widgetContent.fields?.[fieldIndex]?.width === item.id,\n }));\n }\n\n public onColumnUpdateEvent(event: {data: FieldsWidgetValue[]; valid: boolean}): void {\n const {data, valid} = event;\n this.widgetWizardService.$widgetContent.update((content: WidgetContentProperties | null) => {\n const existingFields = (content as WidgetCollectionContent)?.fields;\n\n return {\n ...content,\n fields: data.map((item, index) => ({\n ...item,\n width: existingFields?.[index]?.width ?? 'full',\n })),\n } as WidgetCollectionContent;\n });\n this._$contentValid.set(valid);\n this.changeValidEvent.emit(valid && this.widgetForm.valid);\n }\n\n public onDeleteRowClick(formArray: FormArray, index: number): void {\n if (!formArray) return;\n\n formArray.removeAt(index);\n }\n\n public onTypeSelected(formGroup: FormGroup, event: {item: ListItem}): void {\n this.widgetFieldsService.onDisplayTypeSelected(['value', 'type'], formGroup, event);\n }\n\n public onWidthSelected(event: {item: ListItem}, fieldIndex: number): void {\n this.widgetWizardService.$widgetContent.update(\n (content: WidgetContentProperties | null) =>\n ({\n ...content,\n fields: (content as WidgetCollectionContent)?.fields.map(\n (field: FieldsWidgetValue & {width: CollectionFieldWidth}, index: number) =>\n index === fieldIndex ? {...field, width: event.item.id} : field\n ),\n }) as WidgetCollectionContent\n );\n }\n\n public onCollectionSelected(item: ValuePathItem): void {\n this.selectedCollection$.next(item);\n }\n\n private initForm(): void {\n if (!this.widgetWizardService.$widgetContent()) return;\n\n const title = (this.widgetWizardService.$widgetContent() as WidgetCollectionContent).title;\n if (!title) return;\n this.onTypeSelected(this.cardForm, {\n item: {id: title.displayProperties?.type ?? '', content: '', selected: true},\n });\n\n this.cardForm.patchValue(\n {\n ...([\n WidgetDisplayTypeKey.NUMBER,\n WidgetDisplayTypeKey.PERCENT,\n WidgetDisplayTypeKey.CURRENCY,\n ].includes(title.displayProperties?.type as WidgetDisplayTypeKey) && {\n digitsInfo: (title.displayProperties as WidgetCurrencyDisplayType).digitsInfo,\n }),\n ...(title.displayProperties?.type === WidgetDisplayTypeKey.CURRENCY && {\n currencyCode: (title.displayProperties as WidgetCurrencyDisplayType).currencyCode,\n display: (title.displayProperties as WidgetCurrencyDisplayType).display,\n }),\n ...(title.displayProperties?.type === WidgetDisplayTypeKey.DATE && {\n format: (title.displayProperties as WidgetDateDisplayType).format,\n }),\n ...(title.displayProperties?.type === WidgetDisplayTypeKey.DATE_TIME && {\n format: (title.displayProperties as WidgetDateTimeDisplayType).format,\n }),\n ...(title.displayProperties?.type === WidgetDisplayTypeKey.ENUM && {\n values: Object.entries((title.displayProperties as WidgetEnumDisplayType).values).map(\n ([key, value]) => ({key, value})\n ),\n }),\n },\n {emitEvent: false}\n );\n }\n\n private openWidgetFormSubscription(): void {\n this._subscriptions.add(\n this.widgetForm.valueChanges.pipe(debounceTime(500)).subscribe(value => {\n this.widgetWizardService.$widgetTitle.set(value?.title ?? '');\n\n this.widgetWizardService.$widgetContent.update(\n (content: WidgetContentProperties | null) =>\n ({\n ...content,\n collection: value?.collection || '',\n defaultPageSize: value?.defaultPageSize || 5,\n }) as WidgetCollectionContent\n );\n\n this.changeValidEvent.emit(\n this.widgetForm.valid && this.cardForm.valid && this._$contentValid()\n );\n })\n );\n }\n\n private openCardFormSubscription(): void {\n this._subscriptions.add(\n this.cardForm.valueChanges.pipe(debounceTime(500)).subscribe(formValue => {\n let {value, ...displayProperties} = formValue;\n displayProperties = {\n ...displayProperties,\n ...(!!displayProperties.type && {\n type: (displayProperties.type as ListItem).id,\n }),\n ...(!!formValue.values && {\n values: (formValue.values as Array<{[key: string]: string}>)?.reduce(\n (acc, curr) => ({...acc, [curr.key]: curr.value}),\n {}\n ),\n }),\n };\n\n this.widgetWizardService.$widgetContent.update(\n (content: WidgetContentProperties | null) =>\n ({\n ...content,\n title: {\n value,\n ...(displayProperties.type !== WidgetDisplayTypeKey.TEXT && {\n displayProperties,\n }),\n },\n }) as any\n );\n\n this.changeValidEvent.emit(\n this.widgetForm.valid && this.cardForm.valid && this._$contentValid()\n );\n })\n );\n }\n}\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\n<ng-container *ngIf=\"theme$ | async as theme\">\n <form [formGroup]=\"widgetForm\" class=\"valtimo-widget-management-collection__form\">\n <cds-text-label [attr.data-carbon-theme]=\"theme\">\n <v-input-label\n [title]=\"'widgetTabManagement.content.widgetTitle' | translate\"\n [tooltip]=\"'widgetTabManagement.content.widgetTitleTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n formControlName=\"title\"\n cdsText\n [placeholder]=\"'widgetTabManagement.content.widgetTitlePlaceholder' | translate\"\n type=\"text\"\n />\n </cds-text-label>\n\n <cds-text-label [attr.data-carbon-theme]=\"theme\">\n <v-input-label\n [title]=\"'widgetTabManagement.content.collection.defaultPageSize' | translate\"\n [tooltip]=\"'widgetTabManagement.content.collection.defaultPageSizeTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n formControlName=\"defaultPageSize\"\n cdsText\n [placeholder]=\"\n 'widgetTabManagement.content.collection.defaultPageSizePlaceholder' | translate\n \"\n type=\"text\"\n />\n </cds-text-label>\n\n <div class=\"valtimo-widget-management-collection__path-selector\">\n <v-input-label\n [title]=\"'widgetTabManagement.content.collection.collection' | translate\"\n [tooltip]=\"'widgetTabManagement.content.collection.collectionTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n formControlName=\"collection\"\n cdsText\n [attr.data-carbon-theme]=\"theme\"\n [placeholder]=\"'widgetTabManagement.content.collection.collection' | translate\"\n type=\"text\"\n />\n <!-- <valtimo-value-path-selector\n formControlName=\"collection\"\n [attr.data-carbon-theme]=\"theme\"\n [caseDefinitionKey]=\"obs.params?.caseDefinitionKey\"\n [caseDefinitionVersionTag]=\"obs.params?.caseDefinitionVersionTag\"\n [type]=\"ValuePathType.COLLECTION\"\n (collectionSelected)=\"onCollectionSelected($event)\"\n ></valtimo-value-path-selector> -->\n </div>\n </form>\n\n <!-- For injecting things such as process-selector in case widgets -->\n <ng-content></ng-content>\n\n <!-- <valtimo-case-management-widget-process-selector\n [params]=\"params$ | async\"\n ></valtimo-case-management-widget-process-selector> -->\n\n <span class=\"valtimo-widget-management-collection__subtitle\">\n {{ 'widgetTabManagement.content.collection.cardTitle' | translate }}\n </span>\n\n <form [formGroup]=\"cardForm\" class=\"valtimo-widget-management-collection__card\">\n <section class=\"valtimo-widget-management-collection__card-title\">\n <div class=\"valtimo-widget-management-collection__path-selector\">\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.value' | translate\"\n [tooltip]=\"'widgetTabManagement.content.collection.valueTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n formControlName=\"value\"\n cdsText\n [attr.data-carbon-theme]=\"theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.value' | translate\"\n type=\"text\"\n />\n <!-- <valtimo-value-path-selector\n formControlName=\"value\"\n [attr.data-carbon-theme]=\"theme\"\n [caseDefinitionKey]=\"obs.params?.caseDefinitionKey\"\n [caseDefinitionVersionTag]=\"obs.params?.caseDefinitionVersionTag\"\n [parentItem]=\"selectedCollection$ | async\"\n ></valtimo-value-path-selector> -->\n </div>\n\n <cds-dropdown\n [attr.data-carbon-theme]=\"theme\"\n [label]=\"'widgetTabManagement.content.fields.type' | translate\"\n [dropUp]=\"false\"\n [placeholder]=\"'widgetTabManagement.content.fields.typePlaceholder' | translate\"\n (selected)=\"onTypeSelected(cardForm, $event)\"\n formControlName=\"type\"\n >\n <cds-dropdown-list [items]=\"getDisplayItemsSelected(cardForm)\"></cds-dropdown-list>\n </cds-dropdown>\n </section>\n\n <section class=\"valtimo-widget-management-collection__card-options\">\n @switch (cardForm.get('type').value.id) {\n @case (WidgetDisplayTypeKey.CURRENCY) {\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.currencyCode' | translate\"\n [tooltip]=\"'widgetTabManagement.content.fields.currencyCodeTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"theme\"\n [placeholder]=\"\n 'widgetTabManagement.content.fields.currencyCodePlaceholder' | translate\n \"\n type=\"text\"\n formControlName=\"currencyCode\"\n />\n </cds-text-label>\n\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.display' | translate\"\n [tooltip]=\"'widgetTabManagement.content.fields.displayTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.displayPlaceholder' | translate\"\n type=\"text\"\n formControlName=\"display\"\n />\n </cds-text-label>\n\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.digitsInfo' | translate\"\n tooltip=\"{{\n 'widgetTabManagement.content.fields.digitsInfoTooltip'\n | translate: {minFractionDigits: 2, maxFractionDigits: 2}\n }}\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.digitsInfoPlaceholder' | translate\"\n type=\"text\"\n formControlName=\"digitsInfo\"\n />\n </cds-text-label>\n }\n @case (WidgetDisplayTypeKey.DATE) {\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.format' | translate\"\n [tooltip]=\"'widgetTabManagement.content.fields.dateFormatTooltip' | translate\"\n ></v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.formatPlaceholder' | translate\"\n type=\"text\"\n formControlName=\"format\"\n />\n </cds-text-label>\n }\n @case (WidgetDisplayTypeKey.DATE_TIME) {\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.format' | translate\"\n [tooltip]=\"'widgetTabManagement.content.fields.dateTimeFormatTooltip' | translate\"\n ></v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.formatPlaceholder' | translate\"\n type=\"text\"\n formControlName=\"format\"\n />\n </cds-text-label>\n }\n @case (WidgetDisplayTypeKey.ENUM) {\n <div class=\"valtimo-widget-management-collection__enum\" formArrayName=\"values\">\n @for (rowValue of cardForm.get('values')?.controls; track $index) {\n <form [formGroup]=\"rowValue\" class=\"valtimo-widget-management-collection__enum-form\">\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.enumValue' | translate\"\n [tooltip]=\"'widgetTabManagement.content.fields.enumValueTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n [attr.data-carbon-theme]=\"theme\"\n cdsText\n [placeholder]=\"'widgetTabManagement.content.enumValue' | translate\"\n type=\"text\"\n formControlName=\"key\"\n />\n </cds-text-label>\n\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.enumDisplay' | translate\"\n [tooltip]=\"'widgetTabManagement.content.fields.enumDisplayTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.enumDisplay' | translate\"\n type=\"text\"\n formControlName=\"value\"\n />\n </cds-text-label>\n\n <button\n cdsButton=\"danger--ghost\"\n [disabled]=\"$count === 1\"\n [iconOnly]=\"true\"\n class=\"valtimo-case-management-widget-field-column__delete-button enum\"\n (click)=\"onDeleteRowClick(cardForm.get('values'), $index)\"\n >\n <svg cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n </form>\n }\n\n <button\n cdsButton=\"primary\"\n size=\"sm\"\n (click)=\"onAddEnumValueClick(cardForm.get('values'))\"\n >\n {{ 'widgetTabManagement.content.fields.addEnum' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n </div>\n }\n @case (WidgetDisplayTypeKey.NUMBER) {\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.digitsInfo' | translate\"\n tooltip=\"{{\n 'widgetTabManagement.content.fields.digitsInfoTooltip'\n | translate\n : {\n minFractionDigits: 0,\n maxFractionDigits: 3,\n }\n }}\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.digitsInfo' | translate\"\n type=\"text\"\n formControlName=\"digitsInfo\"\n />\n </cds-text-label>\n }\n @case (WidgetDisplayTypeKey.PERCENT) {\n <cds-text-label>\n <v-input-label\n [title]=\"'widgetTabManagement.content.fields.digitsInfo' | translate\"\n tooltip=\"{{\n 'widgetTabManagement.content.fields.digitsInfoTooltip'\n | translate\n : {\n minFractionDigits: 0,\n maxFractionDigits: 0,\n }\n }}\"\n >\n </v-input-label>\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.digitsInfo' | translate\"\n type=\"text\"\n formControlName=\"digitsInfo\"\n />\n </cds-text-label>\n }\n }\n </section>\n </form>\n\n <span class=\"valtimo-widget-management-collection__subtitle\">\n {{ 'widgetTabManagement.content.collection.cardFields' | translate }}\n </span>\n\n <valtimo-widget-management-fields-column\n [columnData]=\"$content()?.fields\"\n [fieldWidthDropdown]=\"fieldWidthDropdown\"\n [showHideWhenEmptyCheckbox]=\"true\"\n (columnUpdateEvent)=\"onColumnUpdateEvent($event)\"\n >\n <!-- [params]=\"params$ | async\"\n [selectedCollection]=\"selectedCollection$ | async\" -->\n </valtimo-widget-management-fields-column>\n\n <ng-template #fieldWidthDropdown let-index=\"index\">\n <cds-dropdown\n [label]=\"'widgetTabManagement.content.collection.fieldWidth' | translate\"\n [dropUp]=\"false\"\n [placeholder]=\"'widgetTabManagement.content.collection.fieldWidthPlaceholder' | translate\"\n (selected)=\"onWidthSelected($event, index)\"\n >\n <cds-dropdown-list [items]=\"getSelectedWidthItem(index)\"></cds-dropdown-list>\n </cds-dropdown>\n </ng-template>\n</ng-container>\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\nimport {InjectionToken} from '@angular/core';\nimport {CustomWidgetConfig} from '../models';\n\nconst CUSTOM_WIDGET_TOKEN = new InjectionToken<CustomWidgetConfig>(\n 'Specify a component to display per configured custom widget component key.'\n);\n\nexport {CUSTOM_WIDGET_TOKEN};\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\nimport {Component} from '@angular/core';\n\n@Component({\n selector: 'valtimo-layout-public',\n templateUrl: './layout-public.component.html',\n styleUrls: ['./layout-public.component.scss'],\n standalone: false,\n})\nexport class LayoutPublicComponent {}\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\n<div class=\"public-page-content\">\n <img src=\"assets/logo.svg\" class=\"logo\" />\n <router-outlet></router-outlet>\n</div>\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\nimport {AfterViewInit, Component, ElementRef, OnDestroy, Renderer2, ViewChild} from '@angular/core';\nimport {LayoutService} from '../../services/layout.service';\nimport {ShellService, UserInterfaceService} from '@valtimo/components';\n\n// eslint-disable-next-line no-var\ndeclare var App;\n\n@Component({\n selector: 'valtimo-layout-internal',\n templateUrl: './layout-internal.component.html',\n styleUrls: ['./layout-internal.component.scss'],\n standalone: false,\n})\nexport class LayoutInternalComponent implements AfterViewInit, OnDestroy {\n @ViewChild('mainContent') mainContentRef: ElementRef;\n\n public readonly showPageHeader$ = this.userInterfaceService.showPageHeader$;\n public readonly sideBarExpanded$ = this.shellService.sideBarExpanded$;\n public readonly collapsibleWidescreenMenu$ = this.shellService.collapsibleWidescreenMenu$;\n\n private _observer!: ResizeObserver;\n\n constructor(\n public layoutService: LayoutService,\n private readonly renderer: Renderer2,\n private readonly userInterfaceService: UserInterfaceService,\n private readonly shellService: ShellService\n ) {\n this.renderer.addClass(document.body, 'be-animate');\n }\n\n public ngAfterViewInit(): void {\n App.init();\n this.shellService.setContentElement(this.mainContentRef.nativeElement);\n this._observer = new ResizeObserver(() => {\n this.shellService.onMainContentResize();\n });\n this._observer.observe(this.mainContentRef.nativeElement);\n }\n\n public ngOnDestroy(): void {\n this._observer.disconnect();\n }\n}\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\n<valtimo-topbar></valtimo-topbar>\n<main\n class=\"cds--content\"\n [ngClass]=\"{\n 'cds--content--sidebar':\n (sideBarExpanded$ | async) && (collapsibleWidescreenMenu$ | async) === false,\n }\"\n #mainContent\n>\n <valtimo-left-sidebar [hidden]=\"layoutService.isFullscreen\"></valtimo-left-sidebar>\n <valtimo-alert></valtimo-alert>\n <valtimo-page-header [hidden]=\"layoutService.isFullscreen\"></valtimo-page-header>\n <router-outlet></router-outlet>\n <valtimo-right-sidebar></valtimo-right-sidebar>\n <v-prompt></v-prompt>\n</main>\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 */\nimport {\n AfterViewInit,\n Component,\n OnDestroy,\n OnInit,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport {ActivatedRoute, NavigationEnd, Router} from '@angular/router';\nimport {PlaceholderService} from 'carbon-components-angular';\nimport {Subscription} from 'rxjs';\nimport {filter} from 'rxjs/operators';\n\n// eslint-disable-next-line no-var\ndeclare var App: any;\n\n@Component({\n selector: 'valtimo-layout',\n templateUrl: './layout.component.html',\n standalone: false,\n})\nexport class LayoutComponent implements OnInit, AfterViewInit, OnDestroy {\n @ViewChild('carbonPlaceHolder', {static: true, read: ViewContainerRef})\n private readonly _carbonPlaceHolder: ViewContainerRef;\n\n public layoutType: string | null = null;\n private readonly _routerSub = new Subscription();\n private readonly _DEFAULT_LAYOUT = 'internal';\n\n constructor(\n private readonly placeHolderService: PlaceholderService,\n private readonly route: ActivatedRoute,\n private readonly router: Router\n ) {}\n\n public ngOnInit() {\n this.openRouterSubscription();\n }\n\n public ngAfterViewInit(): void {\n this.registerCarbonPlaceHolder();\n }\n\n public ngOnDestroy() {\n this._routerSub.unsubscribe();\n }\n\n private registerCarbonPlaceHolder(): void {\n if (this._carbonPlaceHolder) {\n this.placeHolderService.registerViewContainerRef(this._carbonPlaceHolder);\n }\n }\n\n private openRouterSubscription(): void {\n this._routerSub.add(\n this.router.events.pipe(filter(event => event instanceof NavigationEnd)).subscribe(() => {\n const layout = this.route.snapshot.firstChild.data.layout;\n this.layoutType = layout ? layout : this._DEFAULT_LAYOUT;\n })\n );\n }\n}\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\n<div #carbonPlaceHolder class=\"carbon-placeholder\"></div>\n\n<valtimo-global-notification></valtimo-global-notification>\n<valtimo-layout-public *ngIf=\"layoutType === 'public'\"></valtimo-layout-public>\n<valtimo-layout-internal *ngIf=\"layoutType === 'internal'\"></valtimo-layout-internal>\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\nexport * from './layout.component';\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\nexport * from './layout-internal.component';\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\nexport * from './layout-public.component';\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 */\nimport {CommonModule} from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n OnDestroy,\n Output,\n signal,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {CarbonListModule, EllipsisPipe, ViewContentService, ViewType} from '@valtimo/components';\nimport {ButtonModule, InputModule} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, map, Observable, tap} from 'rxjs';\nimport {FieldsWidget} from '../../models';\nimport {WidgetTextDisplayType} from '../../models/widget-display.model';\n\n@Component({\n selector: 'valtimo-widget-field',\n templateUrl: './widget-field.component.html',\n styleUrls: ['./widget-field.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [\n CommonModule,\n InputModule,\n TranslateModule,\n CarbonListModule,\n EllipsisPipe,\n ButtonModule,\n ],\n})\nexport class WidgetFieldComponent implements AfterViewInit, OnDestroy {\n @HostBinding('class') public readonly class = 'widget-field';\n\n @ViewChild('widgetField') private _widgetFieldRef: ElementRef<HTMLDivElement>;\n\n @Input() public set widgetConfiguration(value: FieldsWidget) {\n if (!value) return;\n this.widgetConfiguration$.next(value);\n }\n public readonly isEmptyWidgetData$ = new BehaviorSubject<boolean>(false);\n public readonly noVisibleFields$ = new BehaviorSubject<boolean>(true);\n\n @Input() public set widgetData(value: object) {\n if (!value) return;\n this.widgetData$.next(value);\n this.isEmptyWidgetData$.next(this.checkEmptyWidgetData(value));\n }\n\n @Input() public compact = false;\n\n @Output() public readonly noVisibleFieldsEvent = new EventEmitter<boolean>();\n\n public readonly renderVertically = signal(0);\n public readonly widgetConfiguration$ = new BehaviorSubject<FieldsWidget | null>(null);\n public readonly widgetData$ = new BehaviorSubject<object | null>(null);\n\n public readonly widgetPropertyValue$: Observable<\n {\n title: string;\n value: string;\n ellipsisCharacterLimit: number | null;\n hideWhenEmpty: boolean | false;\n isRawValue: boolean | false;\n }[][]\n > = combineLatest([this.widgetConfiguration$, this.widgetData$]).pipe(\n map(([widget, widgetData]) =>\n widget?.properties.columns.map(column =>\n column.reduce(\n (columnFields, property) => [\n ...columnFields,\n ...(widgetData?.hasOwnProperty(property.key)\n ? [\n {\n title: property.title,\n ellipsisCharacterLimit:\n (property.displayProperties as WidgetTextDisplayType)\n ?.ellipsisCharacterLimit ?? null,\n hideWhenEmpty:\n (property.displayProperties as WidgetTextDisplayType)?.hideWhenEmpty ?? false,\n value: this.viewContentService.get(widgetData[property.key], {\n ...property.displayProperties,\n viewType: property.displayProperties?.type ?? ViewType.TEXT,\n }),\n isRawValue: this.viewContentService.isRawValue({\n ...property.displayProperties,\n viewType: property.displayProperties?.type ?? ViewType.TEXT,\n }),\n },\n ]\n : []),\n ],\n []\n )\n )\n ),\n tap(columns => this.checkEmptyFields(columns))\n );\n\n private _observer!: ResizeObserver;\n\n constructor(private readonly viewContentService: ViewContentService) {}\n\n public ngAfterViewInit(): void {\n if (this._widgetFieldRef) this.openWidthObserver();\n }\n public ngOnDestroy(): void {\n this._observer?.disconnect();\n }\n\n private openWidthObserver(): void {\n this._observer = new ResizeObserver(event => {\n this.observerMutation(event);\n });\n this._observer.observe(this._widgetFieldRef.nativeElement);\n }\n\n private observerMutation(event: Array<ResizeObserverEntry>): void {\n const elementWidth = event[0]?.borderBoxSize[0]?.inlineSize;\n\n if (typeof elementWidth === 'number' && elementWidth !== 0) {\n if (elementWidth < 640) {\n this.renderVertically.set(1);\n } else if (elementWidth > 640 && elementWidth <= 768) {\n this.renderVertically.set(2);\n } else if (elementWidth > 768 && elementWidth <= 1080) {\n this.renderVertically.set(3);\n } else if (elementWidth > 1080) {\n this.renderVertically.set(4);\n }\n }\n }\n\n private checkEmptyWidgetData(widgetData: Object): boolean {\n return widgetData && Object.keys(widgetData).length === 0;\n }\n\n private checkEmptyFields(columns: any[][]): void {\n columns.forEach(column => {\n column.forEach(field => {\n if (\n !field?.hideWhenEmpty ||\n (field?.hideWhenEmpty && field?.value && field?.value !== '-')\n ) {\n this.noVisibleFields$.next(false);\n }\n\n this.noVisibleFieldsEvent.emit(this.noVisibleFields$.getValue());\n });\n });\n }\n}\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\n<ng-container\n *ngIf=\"{\n widgetConfiguration: widgetConfiguration$ | async,\n widgetPropertyValue: widgetPropertyValue$ | async,\n widgetData: widgetData$ | async,\n isEmptyWidgetData: isEmptyWidgetData$ | async,\n noVisibleFields: noVisibleFields$ | async,\n } as obs\"\n>\n <section *ngIf=\"obs?.widgetConfiguration?.title\" class=\"widget-field__header\">\n <h4 class=\"widget-field__title\">{{ obs?.widgetConfiguration?.title }}</h4>\n\n <ng-content></ng-content>\n </section>\n\n @if (obs?.isEmptyWidgetData) {\n <valtimo-no-results\n [collapseVertically]=\"true\"\n [description]=\"'widgets.noData' | translate\"\n [smallPadding]=\"true\"\n ></valtimo-no-results>\n } @else {\n <div\n #widgetField\n [ngClass]=\"{\n 'widget-field__render-vertically': renderVertically() === 1,\n 'widget-field__render-two-columns': renderVertically() === 2,\n 'widget-field__render-three-columns': renderVertically() === 3,\n 'widget-field__container': renderVertically() === 4,\n }\"\n >\n @if (obs.noVisibleFields) {\n <valtimo-no-results\n [collapseVertically]=\"true\"\n [description]=\"'widgets.emptyFields' | translate\"\n [smallPadding]=\"true\"\n ></valtimo-no-results>\n } @else {\n @for (column of obs?.widgetPropertyValue; track column.key) {\n <div class=\"widget-field__column\" [ngClass]=\"{'widget-field__column--compact': compact}\">\n @for (property of column; track property) {\n <div\n *ngIf=\"\n (property?.value !== null &&\n property?.value !== '-' &&\n property?.hideWhenEmpty) ||\n !property?.hideWhenEmpty\n \"\n class=\"widget-field__field\"\n [ngClass]=\"{'widget-field__field--compact': compact}\"\n >\n <label\n class=\"widget-field__field-label\"\n [ngClass]=\"{'widget-field__field-label--compact': compact}\"\n [attr.title]=\"property?.title\"\n >\n {{ property?.title }}</label\n >\n\n <div\n [attr.title]=\"property?.value\"\n class=\"widget-field__field-value\"\n [ngClass]=\"{'widget-field__field-value--compact': compact}\"\n >\n @if (property?.isRawValue) {\n <div [innerHTML]=\"property?.value\"></div>\n } @else {\n {{ property?.value | valtimoEllipsis: property?.ellipsisCharacterLimit }}\n }\n </div>\n </div>\n }\n </div>\n }\n }\n </div>\n }\n</ng-container>\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\nexport * from './widget-field.component';\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\nimport {Component, Inject, OnInit} from '@angular/core';\nimport {BehaviorSubject, combineLatest, map, Observable, switchMap, take, tap} from 'rxjs';\nimport {TranslateService} from '@ngx-translate/core';\nimport {Localization, LocalizationService, MergedLocalizations} from '@valtimo/shared';\nimport {\n ArbitraryInputTitles,\n MultiInputKeyValue,\n MultiInputOutput,\n PageHeaderService,\n} from '@valtimo/components';\nimport {isEqual} from 'lodash';\nimport {DOCUMENT} from '@angular/common';\n\n@Component({\n selector: 'valtimo-translation-management',\n templateUrl: './translation-management.component.html',\n styleUrls: ['./translation-management.component.scss'],\n standalone: false,\n})\nexport class TranslationManagementComponent implements OnInit {\n public readonly loading$ = new BehaviorSubject<boolean>(true);\n public readonly allChangedValuesValid$ = new BehaviorSubject<boolean>(false);\n public readonly disabled$ = new BehaviorSubject<boolean>(false);\n\n private readonly _languageOptions$ = new BehaviorSubject<Array<string>>(undefined);\n private readonly _refreshLocalizations$ = new BehaviorSubject<null>(null);\n private readonly _localizationTranslations$ = this._refreshLocalizations$.pipe(\n tap(() => this.loading$.next(true)),\n switchMap(() => this.localizationService.getMergedLocalizations()),\n tap(() => this.loading$.next(false))\n );\n\n private _defaultValues: Array<MultiInputKeyValue> = [];\n\n private readonly _changedValues$ = new BehaviorSubject<MultiInputOutput>(undefined);\n\n public readonly showConfirmationModal$ = new BehaviorSubject<boolean>(false);\n\n public readonly valuesChanged$: Observable<boolean> = this._changedValues$.pipe(\n map(changedValues => !isEqual(changedValues, this._defaultValues))\n );\n\n public readonly localizationTranslationValues$: Observable<Array<MultiInputKeyValue>> =\n combineLatest([\n this._languageOptions$,\n this._localizationTranslations$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([languageOptions, localizationTranslations]) =>\n this.mapMergedLocalizationsToMultiInput(languageOptions, localizationTranslations)\n ),\n tap(defaultValues => {\n this._defaultValues = defaultValues;\n })\n );\n\n public readonly multiInputTiles$: Observable<ArbitraryInputTitles> = combineLatest([\n this._languageOptions$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([languageOptions]) => {\n const objToReturn = {};\n objToReturn[0] = this.translateService.instant('listColumn.key');\n\n languageOptions.forEach((languageOption, index) => {\n objToReturn[index + 1] = this.translateService.instant(\n `settings.language.options.${languageOption}`\n );\n });\n\n return objToReturn;\n })\n );\n\n public readonly amountOfArbitraryValues$: Observable<number> = this.multiInputTiles$.pipe(\n map(multiInputTitles => Object.keys(multiInputTitles).length)\n );\n\n public readonly compactMode$ = this.pageHeaderService.compactMode$;\n\n constructor(\n private readonly translateService: TranslateService,\n private readonly localizationService: LocalizationService,\n private readonly pageHeaderService: PageHeaderService,\n @Inject(DOCUMENT) private readonly document: Document\n ) {}\n\n public ngOnInit(): void {\n this.setLanguages();\n }\n\n public validChange(valid: boolean): void {\n this.allChangedValuesValid$.next(valid);\n }\n\n public valueChange(value: MultiInputOutput): void {\n this._changedValues$.next(value);\n }\n\n public saveAndRefresh(): void {\n this.saveChanges(true);\n }\n\n public saveAndStay(): void {\n this.saveChanges();\n }\n\n public cancel(): void {\n this.hideModal();\n }\n\n public showModal(): void {\n this.showConfirmationModal$.next(true);\n }\n\n public saveChanges(reload = false): void {\n this.disable();\n\n combineLatest([this._changedValues$, this._languageOptions$])\n .pipe(\n take(1),\n map(([changedValues, languageOptions]) =>\n this.getLocalizationsForUpdateRequest(changedValues, languageOptions)\n ),\n switchMap(updatedLocalizations =>\n this.localizationService.updateLocalizations(updatedLocalizations)\n )\n )\n .subscribe(() => {\n if (reload) {\n this.document?.defaultView?.location?.reload();\n } else {\n this._refreshLocalizations$.next(null);\n this.enable();\n }\n });\n }\n\n private setLanguages(): void {\n this._languageOptions$.next(this.translateService.langs);\n }\n\n private disable(): void {\n this.disabled$.next(true);\n }\n\n private enable(): void {\n this.disabled$.next(false);\n }\n\n private hideModal(): void {\n this.showConfirmationModal$.next(false);\n }\n\n private flattenObject(ob: object): object {\n const toReturn = {};\n\n for (const i in ob) {\n if (!ob.hasOwnProperty(i)) continue;\n\n if (typeof ob[i] == 'object' && ob[i] !== null) {\n const flatObject = this.flattenObject(ob[i]);\n for (const x in flatObject) {\n if (!flatObject.hasOwnProperty(x)) continue;\n\n toReturn[i + '.' + x] = flatObject[x];\n }\n } else {\n toReturn[i] = ob[i];\n }\n }\n return toReturn;\n }\n\n private unflattenObject(obj: object, delimiter = '.'): object {\n return Object.keys(obj).reduce((res, k) => {\n k.split(delimiter).reduce(\n (acc, e, i, keys) =>\n acc[e] ||\n (acc[e] = isNaN(Number(keys[i + 1])) ? (keys.length - 1 === i ? obj[k] : {}) : []),\n res\n );\n return res;\n }, {});\n }\n\n private getLocalizationsForUpdateRequest(\n changedValues: MultiInputOutput,\n languageOptions: string[]\n ): Localization[] {\n const localizations: Localization[] = [];\n const translationObject = {};\n\n languageOptions.forEach(languageOption => {\n translationObject[languageOption] = {};\n });\n\n changedValues.forEach(changedValue => {\n languageOptions.forEach((languageOption, index) => {\n translationObject[languageOption] = {\n ...translationObject[languageOption],\n [changedValue[0]]: changedValue[index + 1],\n };\n });\n });\n\n languageOptions.forEach(languageOption => {\n translationObject[languageOption] = this.unflattenObject(translationObject[languageOption]);\n });\n\n Object.keys(translationObject).forEach(languageKey => {\n localizations.push({languageKey, content: translationObject[languageKey]});\n });\n\n return localizations;\n }\n\n private mapMergedLocalizationsToMultiInput(\n languageOptions: string[],\n mergedLocalizations: MergedLocalizations\n ) {\n if (Object.keys(mergedLocalizations).length === 0) {\n return [];\n }\n\n const firstLanguageOption = languageOptions[0];\n const firstLanguageTranslations =\n firstLanguageOption && mergedLocalizations[firstLanguageOption];\n const flattenedFirstLanguageTranslations =\n firstLanguageTranslations && this.flattenObject(firstLanguageTranslations);\n\n return Object.keys(flattenedFirstLanguageTranslations).map(flattenedTranslationKey => {\n const emptyArbitraryValue = {};\n\n emptyArbitraryValue['0'] = flattenedTranslationKey;\n\n languageOptions.forEach((languageOption, index) => {\n emptyArbitraryValue[`${index + 1}`] =\n this.flattenObject(mergedLocalizations[languageOption])[flattenedTranslationKey] || '';\n });\n\n return emptyArbitraryValue;\n });\n }\n}\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\n<ng-container\n *ngIf=\"{\n localizationTranslationValues: localizationTranslationValues$ | async,\n loading: loading$ | async,\n disabled: disabled$ | async,\n multiInputTitles: multiInputTiles$ | async,\n amountOfArbitraryValues: amountOfArbitraryValues$ | async,\n showConfirmationModal: showConfirmationModal$,\n allChangedValuesValid: allChangedValuesValid$ | async,\n valuesChanged: valuesChanged$ | async,\n compactMode: compactMode$ | async,\n } as obs\"\n>\n <ng-container *ngIf=\"!obs.loading && obs.localizationTranslationValues; else loading\">\n <valtimo-carbon-multi-input\n [disabled]=\"obs.disabled\"\n [arbitraryAmountTitles]=\"obs.multiInputTitles\"\n [fullWidth]=\"true\"\n [minimumAmountOfRows]=\"0\"\n type=\"arbitraryAmount\"\n [arbitraryValueAmount]=\"obs.amountOfArbitraryValues\"\n [defaultValues]=\"obs.localizationTranslationValues\"\n (allValuesValidEvent)=\"validChange($event)\"\n (valueChange)=\"valueChange($event)\"\n addRowTranslationKey=\"translationManagement.add\"\n ></valtimo-carbon-multi-input>\n </ng-container>\n\n <ng-template #loading>\n <div class=\"loading-container\"><cds-loading></cds-loading></div>\n </ng-template>\n\n <valtimo-confirmation-modal\n [showModalSubject$]=\"obs.showConfirmationModal\"\n (confirmEvent)=\"saveAndRefresh()\"\n (optionalEvent)=\"saveAndStay()\"\n (cancelEvent)=\"cancel()\"\n [showOptionalButton]=\"true\"\n cancelButtonType=\"ghost\"\n optionalButtonType=\"secondary\"\n confirmButtonTextTranslationKey=\"translationManagement.saveWithReload\"\n optionalButtonTextTranslationKey=\"translationManagement.saveWithoutReload\"\n titleTranslationKey=\"translationManagement.modalTitle\"\n contentTranslationKey=\"translationManagement.modalContent\"\n [spacerAfterCancelButton]=\"true\"\n ></valtimo-confirmation-modal>\n\n <ng-container renderInPageHeader>\n <ng-template>\n <button\n cdsButton=\"primary\"\n [size]=\"obs.compactMode ? 'sm' : 'md'\"\n (click)=\"showModal()\"\n [disabled]=\"!obs.allChangedValuesValid || obs.disabled || !obs.valuesChanged\"\n >\n {{ 'interface.save' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"save\" size=\"16\"></svg>\n </button>\n </ng-template>\n </ng-container>\n</ng-container>\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\nexport * from './translation-management.component';\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\nimport {Injectable, OnDestroy} from '@angular/core';\nimport {\n BehaviorSubject,\n combineLatest,\n debounceTime,\n filter,\n map,\n Observable,\n Subject,\n Subscription,\n take,\n} from 'rxjs';\nimport Muuri from 'muuri';\nimport {WidgetWithUuid} from '../models/widget.model';\nimport {WIDGET_WIDTH_1X} from '../constants/widget.constants';\n\n@Injectable()\nexport class WidgetLayoutService implements OnDestroy {\n private readonly _containerWidthSubject$ = new BehaviorSubject<number | null>(null);\n private readonly _widgetsSubject$ = new BehaviorSubject<WidgetWithUuid[] | null>(null);\n private readonly _widgetDataLoadedSubject$ = new BehaviorSubject<string[] | null>(null);\n private readonly _muuriSubject$ = new BehaviorSubject<Muuri | null>(null);\n private readonly _triggerMuuriLayout$ = new Subject<null>();\n\n private get _muuri$(): Observable<Muuri> {\n return this._muuriSubject$.pipe(filter(muuri => !!muuri));\n }\n\n private get _containerWidth$(): Observable<number> {\n return this._containerWidthSubject$.pipe(filter(width => width !== null));\n }\n\n public get amountOfColumns$(): Observable<number> {\n return this._containerWidth$.pipe(\n map(containerWidth => Math.floor(containerWidth / WIDGET_WIDTH_1X))\n );\n }\n\n private get _widgets$(): Observable<WidgetWithUuid[]> {\n return this._widgetsSubject$.pipe(filter(widgets => widgets !== null));\n }\n\n private get _widgetDataLoaded$(): Observable<string[]> {\n return this._widgetDataLoadedSubject$.pipe(filter(loaded => loaded !== null));\n }\n\n private readonly _widgetsWithExternalData$ = new BehaviorSubject<string[]>([]);\n private readonly _widgetsWithExternalDataReady$ = new BehaviorSubject<string[]>([]);\n\n private readonly _subscriptions = new Subscription();\n\n public get loaded$(): Observable<boolean> {\n return combineLatest([\n this._widgetDataLoaded$,\n this._widgets$,\n this._widgetsWithExternalData$,\n this._widgetsWithExternalDataReady$,\n this._containerWidth$,\n ]).pipe(\n map(\n ([widgetDataLoaded, widgets, widgetsWithExternalData, widgetsWithExternalDataReady]) =>\n widgetDataLoaded?.length === widgets.length &&\n widgetsWithExternalData.length === widgetsWithExternalDataReady.length\n ),\n filter(loaded => !!loaded)\n );\n }\n\n constructor() {\n this.openMuuriSubscription();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public setMuuri(muuri: Muuri): void {\n this._muuriSubject$.next(muuri);\n }\n\n public triggerMuuriLayout(): void {\n this._triggerMuuriLayout$.next(null);\n }\n\n public setWidgets(widgets: WidgetWithUuid[]): void {\n this._widgetsSubject$.next(widgets);\n }\n\n public setWidgetWithExternalData(uuid: string): void {\n this._widgetsWithExternalData$.pipe(take(1)).subscribe(widgetsWithExternalData => {\n this._widgetsWithExternalData$.next([...widgetsWithExternalData, uuid]);\n });\n }\n\n public setWidgetWithExternalDataReady(uuid: string): void {\n this._widgetsWithExternalDataReady$.pipe(take(1)).subscribe(widgetsWithExternalDataReady => {\n this._widgetsWithExternalDataReady$.next([...widgetsWithExternalDataReady, uuid]);\n });\n }\n\n public setContainerWidth(width: number): void {\n this._containerWidthSubject$.next(width);\n }\n\n public setWidgetDataLoaded(uuid: string): void {\n this._widgetDataLoadedSubject$.pipe(take(1)).subscribe(widgetDataLoaded => {\n if (!(widgetDataLoaded || []).includes(uuid)) {\n this._widgetDataLoadedSubject$.next([...(widgetDataLoaded || []), uuid]);\n }\n });\n }\n\n public reset(): void {\n this._containerWidthSubject$.next(null);\n this._widgetsSubject$.next(null);\n this._widgetDataLoadedSubject$.next(null);\n this._widgetsWithExternalData$.next([]);\n this._widgetsWithExternalDataReady$.next([]);\n this._muuriSubject$.next(null);\n }\n\n private openMuuriSubscription(): void {\n this._subscriptions.add(\n combineLatest([this._muuri$, this._triggerMuuriLayout$])\n .pipe(debounceTime(150))\n .subscribe(([muuri]) => {\n muuri.refreshItems();\n muuri.layout();\n })\n );\n }\n}\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\nimport {ChangeDetectionStrategy, Component, EventEmitter, Input, DestroyRef} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {\n BehaviorSubject,\n Subscription,\n combineLatest,\n filter,\n map,\n Observable,\n of,\n switchMap,\n tap,\n} from 'rxjs';\nimport {FormService} from '@valtimo/form';\nimport {FormioForm} from '@formio/angular';\nimport {FormIoModule} from '@valtimo/components';\nimport {ButtonModule} from 'carbon-components-angular';\nimport {FormioWidgetWidgetWithUuid} from '../../models';\nimport {WidgetLayoutService} from '../../services/widget-layout.service';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'valtimo-widget-formio',\n templateUrl: './widget-formio.component.html',\n standalone: true,\n imports: [CommonModule, TranslateModule, FormIoModule, ButtonModule],\n styleUrls: ['./widget-formio.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class WidgetFormioComponent {\n @Input() public set documentId(value: string) {\n if (value) this._documentIdSubject$.next(value);\n }\n\n @Input() public set widgetConfiguration(value: FormioWidgetWidgetWithUuid) {\n if (!value) return;\n this._widgetConfigurationSubject$.next(value);\n }\n\n @Input() public set widgetUuid(value: string) {\n this._widgetUuid = value;\n this._hasSignalledExternalDataReady = false;\n this.widgetLayoutService.setWidgetDataLoaded(value);\n this.widgetLayoutService.setWidgetWithExternalData(value);\n }\n\n private readonly _refreshTrigger$ = new BehaviorSubject<void>(undefined);\n\n private _refreshEmitter: EventEmitter<void> | null = null;\n private _refreshSubscription: Subscription | null = null;\n private _widgetUuid: string | null = null;\n private _hasSignalledExternalDataReady = false;\n\n @Input()\n public set refreshForm(value: EventEmitter<void> | null) {\n if (value === this._refreshEmitter) return;\n\n this._refreshSubscription?.unsubscribe();\n this._refreshSubscription = null;\n this._refreshEmitter = value;\n\n if (!value) return;\n\n this._refreshSubscription = value\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this._refreshTrigger$.next());\n }\n\n private readonly _widgetConfigurationSubject$ =\n new BehaviorSubject<FormioWidgetWidgetWithUuid | null>(null);\n public get widgetConfiguration$(): Observable<FormioWidgetWidgetWithUuid> {\n return this._widgetConfigurationSubject$.pipe(filter(config => !!config));\n }\n\n private readonly _documentIdSubject$ = new BehaviorSubject<string>('');\n private get _documentId$(): Observable<string> {\n return this._documentIdSubject$.pipe(filter(id => !!id));\n }\n\n public readonly prefilledFormDefinition$: Observable<FormioForm> = combineLatest([\n this.widgetConfiguration$,\n this._documentId$,\n this._refreshTrigger$,\n ]).pipe(\n switchMap(([config, documentId]) =>\n combineLatest([\n this.formService.getFormDefinitionByNamePreFilled(\n config.properties.formDefinitionName,\n documentId\n ),\n of(config),\n ])\n ),\n tap(() => {\n if (!this._widgetUuid) return;\n\n if (!this._hasSignalledExternalDataReady) {\n this.widgetLayoutService.setWidgetWithExternalDataReady(this._widgetUuid);\n this._hasSignalledExternalDataReady = true;\n }\n }),\n map(([formDef]) => formDef)\n );\n\n constructor(\n private readonly formService: FormService,\n private readonly widgetLayoutService: WidgetLayoutService,\n private readonly destroyRef: DestroyRef\n ) {}\n}\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\n<div\n class=\"formio-widget\"\n *ngIf=\"{\n prefilledFormDefinition: prefilledFormDefinition$ | async,\n widgetConfiguration: widgetConfiguration$ | async,\n } as obs\"\n>\n <section class=\"formio-widget__header\">\n <h4 class=\"formio-widget__title\">{{ obs.widgetConfiguration$?.title || '-' }}</h4>\n\n <ng-content></ng-content>\n </section>\n\n <valtimo-form-io [form]=\"obs.prefilledFormDefinition\"></valtimo-form-io>\n</div>\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\nexport * from './widget-formio.component';\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\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n OnDestroy,\n Output,\n signal,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {\n ButtonModule,\n InputModule,\n PaginationModel,\n PaginationModule,\n TilesModule,\n} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, filter, map, Observable, tap} from 'rxjs';\nimport {CarbonListModule, ViewContentService} from '@valtimo/components';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {Page} from '@valtimo/shared';\nimport {\n CollectionWidget,\n CollectionWidgetCardData,\n CollectionWidgetField,\n CollectionWidgetResolvedField,\n CollectionWidgetTitle,\n WidgetDisplayTypeKey,\n} from '../../models';\n\n@Component({\n selector: 'valtimo-widget-collection',\n templateUrl: './widget-collection.component.html',\n styleUrls: ['./widget-collection.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [\n CommonModule,\n InputModule,\n PaginationModule,\n TilesModule,\n CarbonListModule,\n TranslateModule,\n ButtonModule,\n ],\n})\nexport class WidgetCollectionComponent implements AfterViewInit, OnDestroy {\n @HostBinding('class') public readonly class = 'valtimo-widget-collection';\n @ViewChild('widgetCollection') private _widgetCollectionRef: ElementRef<HTMLDivElement>;\n\n @Input() public set widgetConfiguration(value: CollectionWidget) {\n if (!value) return;\n this.widgetConfiguration$.next(value);\n }\n\n public readonly showPagination$ = new BehaviorSubject<boolean>(false);\n\n private readonly _widgetData$ = new BehaviorSubject<Page<CollectionWidgetCardData> | null>(null);\n\n public get widgetData$(): Observable<Page<CollectionWidgetCardData>> {\n return this._widgetData$.pipe(filter(data => !!data));\n }\n\n private _paginationInitialized = false;\n\n private _initialNumberOfElements!: number;\n\n @Input() public set widgetData(value: Page<CollectionWidgetCardData> | null) {\n if (!value) return;\n\n if (!this._initialNumberOfElements) this._initialNumberOfElements = value.numberOfElements;\n\n let widgetData: Page<CollectionWidgetCardData> = value;\n\n if (typeof value?.content?.length !== 'number') return;\n\n if (value.content.length < this._initialNumberOfElements) {\n const rows = new Array<number>(this._initialNumberOfElements).fill(null);\n widgetData = {\n ...value,\n content: rows.map((_, index) => value.content[index] || {...value[0], hidden: true}),\n };\n }\n\n this._widgetData$.next(widgetData);\n\n if (!this._paginationInitialized) {\n this.showPagination$.next(value.totalElements > value.size);\n\n this.paginationModel.set(\n value.totalPages < 0\n ? null\n : {\n currentPage: 1,\n totalDataLength: Math.ceil(value.totalElements / value.size),\n pageLength: value.size,\n }\n );\n\n this._paginationInitialized = true;\n } else {\n this.paginationModel.update((model: PaginationModel) => ({\n ...model,\n currentPage: value.number + 1,\n }));\n }\n\n this.cdr.detectChanges();\n }\n\n @Output() public readonly paginationEvent = new EventEmitter<PaginationModel>();\n\n public readonly noVisibleFields$ = new BehaviorSubject<boolean>(true);\n public readonly widgetTitle = signal('-');\n\n public readonly widgetConfiguration$ = new BehaviorSubject<CollectionWidget | null>(null);\n public readonly paginationModel = signal<PaginationModel>(new PaginationModel());\n public readonly amountOfColumns = signal(0);\n\n public readonly collectionWidgetCards$: Observable<\n {title: string; fields: CollectionWidgetResolvedField[]; key: number; hidden: boolean}[]\n > = combineLatest([this.widgetConfiguration$, this.widgetData$]).pipe(\n filter(([widgetConfig, widgetData]) => !!widgetConfig && !!widgetData),\n tap(([widgetConfig]) => {\n this.widgetTitle.set(widgetConfig.title);\n }),\n map(([widgetConfig, widgetData]) =>\n widgetData.content.map((cardData, index) => ({\n hidden: cardData.hidden,\n key: index,\n title: this.getCardTitle({\n value: cardData.title,\n displayProperties: widgetConfig?.properties?.title?.displayProperties,\n }),\n fields: widgetConfig?.properties.fields.reduce(\n (cardFieldsAccumulator, currentField) => [\n ...cardFieldsAccumulator,\n this.getCardField(currentField, cardData),\n ],\n []\n ),\n }))\n ),\n tap(card => this.checkEmptyFields(card))\n );\n\n private _observer!: ResizeObserver;\n\n constructor(\n private readonly viewContentService: ViewContentService,\n private readonly cdr: ChangeDetectorRef\n ) {}\n\n public ngAfterViewInit(): void {\n this.openWidthObserver();\n }\n\n public ngOnDestroy(): void {\n this._observer?.disconnect();\n }\n\n public onSelectPage(page: number): void {\n this.paginationEvent.emit({...this.paginationModel(), currentPage: page});\n }\n\n private getCardField(\n field: CollectionWidgetField,\n data: CollectionWidgetCardData\n ): CollectionWidgetResolvedField {\n const resolvedValue = this.viewContentService.get(\n data.fields && field.key ? data.fields[field.key] : '',\n {\n ...field.displayProperties,\n viewType: field.displayProperties?.type ?? WidgetDisplayTypeKey.TEXT,\n }\n );\n\n return {\n key: field.key,\n title: field.title,\n width: field.width,\n value: resolvedValue || data.fields[field.key],\n hideWhenEmpty: field.displayProperties?.hideWhenEmpty,\n };\n }\n\n private openWidthObserver(): void {\n this._observer = new ResizeObserver(event => {\n this.observerMutation(event);\n });\n this._observer.observe(this._widgetCollectionRef.nativeElement);\n }\n\n private observerMutation(event: Array<ResizeObserverEntry>): void {\n const elementWidth = event[0]?.borderBoxSize[0]?.inlineSize;\n\n if (typeof elementWidth === 'number' && elementWidth !== 0) {\n if (elementWidth < 640) {\n this.amountOfColumns.set(1);\n } else if (elementWidth > 640 && elementWidth <= 768) {\n this.amountOfColumns.set(2);\n } else if (elementWidth > 768 && elementWidth <= 1080) {\n this.amountOfColumns.set(3);\n } else if (elementWidth > 1080) {\n this.amountOfColumns.set(4);\n }\n }\n }\n\n private getCardTitle(collectionCaseWidgetTitle: CollectionWidgetTitle): string {\n const widgetTitleValue = collectionCaseWidgetTitle.value;\n const widgetTitleDisplayProperties = collectionCaseWidgetTitle.displayProperties;\n\n if (!widgetTitleDisplayProperties && widgetTitleValue) {\n return widgetTitleValue;\n } else if (widgetTitleDisplayProperties && widgetTitleValue) {\n const convertedTitle = this.viewContentService.get(widgetTitleValue, {\n ...widgetTitleDisplayProperties,\n viewType: widgetTitleDisplayProperties.type,\n hideWhenEmpty: widgetTitleDisplayProperties.hideWhenEmpty,\n });\n\n if (convertedTitle) return convertedTitle;\n }\n\n return '-';\n }\n\n private checkEmptyFields(card): void {\n card.forEach(collection => {\n collection.fields.forEach(field => {\n if (!field.hideWhenEmpty || (field.hideWhenEmpty && field.value && field.value !== '-'))\n this.noVisibleFields$.next(false);\n });\n });\n }\n}\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\n<ng-container\n *ngIf=\"{\n widgetConfiguration: widgetConfiguration$ | async,\n collectionWidgetCards: collectionWidgetCards$ | async,\n noVisibleFields: noVisibleFields$ | async,\n } as obs\"\n>\n <section class=\"valtimo-widget-collection__header\">\n <span class=\"valtimo-widget-collection__title\">{{ widgetTitle() }}</span>\n\n <ng-content></ng-content>\n </section>\n\n <div\n #widgetCollection\n [ngClass]=\"{\n 'valtimo-widget-collection__render-vertically': amountOfColumns() === 1,\n 'valtimo-widget-collection__render-two-columns': amountOfColumns() === 2,\n 'valtimo-widget-collection__render-three-columns': amountOfColumns() === 3,\n 'valtimo-widget-collection__container': amountOfColumns() === 4,\n }\"\n >\n @for (card of obs?.collectionWidgetCards; track card.key) {\n <div\n *ngIf=\"!obs.noVisibleFields\"\n class=\"valtimo-widget-collection__card\"\n [ngClass]=\"{'valtimo-widget-collection__card--hidden': card.hidden}\"\n >\n <span class=\"valtimo-widget-collection__card-title\">{{ card.title }}</span>\n\n @for (field of card.fields; track field.key) {\n <div\n *ngIf=\"\n (field?.value !== null && field?.value !== '-' && field?.hideWhenEmpty) ||\n !field?.hideWhenEmpty\n \"\n [ngClass]=\"{\n 'valtimo-widget-collection__full-width-input': field?.width === 'full',\n 'valtimo-widget-collection__half-width-input': field?.width === 'half',\n }\"\n >\n <cds-label class=\"valtimo-widget-collection__label\" [attr.title]=\"field?.title\">\n {{ field?.title }}\n\n <input\n [value]=\"field?.value\"\n [readonly]=\"true\"\n class=\"valtimo-widget-collection__card-input\"\n cdsText\n />\n </cds-label>\n </div>\n }\n </div>\n }\n </div>\n\n @if (obs.noVisibleFields || !obs?.collectionWidgetCards?.length) {\n <valtimo-no-results\n [collapseVertically]=\"true\"\n [description]=\"\n (obs.noVisibleFields ? 'widgets.emptyFields' : 'widgets.noData') | translate\n \"\n [smallPadding]=\"true\"\n ></valtimo-no-results>\n }\n\n <cds-pagination-nav\n *ngIf=\"paginationModel() && (showPagination$ | async)\"\n class=\"valtimo-widget-collection__pagination\"\n [model]=\"paginationModel()\"\n (selectPage)=\"onSelectPage($event)\"\n >\n </cds-pagination-nav>\n</ng-container>\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\nexport * from './widget-collection.component';\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 */\nimport {CommonModule} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n Output,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {CarbonListItem, CarbonListModule, ColumnConfig, ViewType} from '@valtimo/components';\nimport {Page} from '@valtimo/shared';\nimport {\n ButtonModule,\n PaginationModel,\n PaginationModule,\n TilesModule,\n} from 'carbon-components-angular';\nimport {BehaviorSubject} from 'rxjs';\nimport {FieldsWidgetValue, TableWidget} from '../../models';\n\n@Component({\n selector: 'valtimo-widget-table',\n templateUrl: './widget-table.component.html',\n styleUrls: ['./widget-table.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [\n CommonModule,\n CarbonListModule,\n PaginationModule,\n TilesModule,\n TranslateModule,\n ButtonModule,\n ],\n})\nexport class WidgetTableComponent {\n private _widgetConfiguration: TableWidget;\n\n public get widgetConfiguration(): TableWidget {\n return this._widgetConfiguration;\n }\n\n @Input({required: true}) public set widgetConfiguration(value: TableWidget) {\n this._widgetConfiguration = value;\n\n this.fields$.next(\n value.properties.columns.map((column: FieldsWidgetValue, index: number) => ({\n key: column.key,\n label: column.title,\n viewType: column.displayProperties?.type ?? ViewType.TEXT,\n className: `valtimo-widget-table--transparent ${index === 0 && value.properties.firstColumnAsTitle ? 'valtimo-widget-table--title' : ''}`,\n ...(!!column.displayProperties?.['format'] && {\n format: column.displayProperties['format'],\n }),\n ...(!!column.displayProperties?.['digitsInfo'] && {\n digitsInfo: column.displayProperties['digitsInfo'],\n }),\n ...(!!column.displayProperties?.['display'] && {\n display: column.displayProperties['display'],\n }),\n ...(!!column.displayProperties?.['currencyCode'] && {\n currencyCode: column.displayProperties['currencyCode'],\n }),\n ...(!!column.displayProperties?.['values'] && {\n values: column.displayProperties['values'],\n }),\n }))\n );\n\n this.cdr.detectChanges();\n }\n\n public readonly showPagination = signal<boolean>(false);\n\n public readonly widgetData$ = new BehaviorSubject<CarbonListItem[] | null>(null);\n\n private _paginationInitialized = false;\n\n private _initialNumberOfElements!: number;\n\n @Input({required: true}) set widgetData(value: Page<CarbonListItem> | null) {\n if (!value) return;\n\n this.showPagination.set(value.totalElements > value.size);\n\n if (!this._initialNumberOfElements) this._initialNumberOfElements = value.numberOfElements;\n\n let widgetData: CarbonListItem[] = value.content;\n\n if (typeof value?.content?.length !== 'number') return;\n\n if (value.content.length < this._initialNumberOfElements) {\n const rows = new Array<null>(this._initialNumberOfElements).fill(null);\n\n widgetData = rows.map((_, index) => value.content[index] || {...value[0], hidden: true});\n }\n\n this.widgetData$.next(widgetData);\n\n if (!this._paginationInitialized) {\n this.showPagination.set(value.totalElements > value.size);\n\n this.paginationModel.set(\n value.totalPages < 0\n ? null\n : {\n currentPage: 1,\n totalDataLength: Math.ceil(value.totalElements / value.size),\n pageLength: value.size,\n }\n );\n\n this._paginationInitialized = true;\n } else {\n this.paginationModel.update((model: PaginationModel | null) =>\n !model\n ? null\n : {\n ...model,\n currentPage: value.number + 1,\n }\n );\n }\n\n this.cdr.detectChanges();\n }\n\n @Output() public readonly paginationEvent = new EventEmitter<PaginationModel>();\n\n public readonly fields$ = new BehaviorSubject<ColumnConfig[]>([]);\n\n public readonly paginationModel = signal<PaginationModel | null>(new PaginationModel());\n\n constructor(private readonly cdr: ChangeDetectorRef) {}\n\n public onSelectPage(page: number): void {\n const paginationModel = this.paginationModel();\n if (!paginationModel) return;\n this.paginationEvent.emit({...paginationModel, currentPage: page});\n }\n}\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\n<cds-tile\n *ngIf=\"{\n fields: fields$ | async,\n widgetData: widgetData$ | async,\n } as obs\"\n class=\"valtimo-widget-table\"\n>\n <section class=\"valtimo-widget-table__header\">\n <span class=\"widget-title\">{{ widgetConfiguration?.title }}</span>\n\n <ng-content></ng-content>\n </section>\n\n @if (obs.widgetData && obs.fields && obs.widgetData.length) {\n <section class=\"valtimo-widget-table__content\">\n <valtimo-carbon-list\n [header]=\"false\"\n [hideToolbar]=\"true\"\n [fields]=\"obs.fields\"\n [items]=\"obs.widgetData\"\n >\n </valtimo-carbon-list>\n\n <cds-pagination-nav\n *ngIf=\"paginationModel() && showPagination()\"\n class=\"valtimo-widget-table__pagination\"\n [model]=\"paginationModel()\"\n (selectPage)=\"onSelectPage($event)\"\n >\n </cds-pagination-nav>\n </section>\n } @else {\n <valtimo-no-results\n [collapseVertically]=\"true\"\n [description]=\"'widgets.noData' | translate\"\n [smallPadding]=\"true\"\n ></valtimo-no-results>\n }\n</cds-tile>\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\nexport * from './widget-table.component';\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 */\nimport {CommonModule} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n HostBinding,\n Input,\n Output,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport {Link16} from '@carbon/icons';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {\n CarbonListItem,\n CarbonListModule,\n CarbonPaginatorConfig,\n ColumnConfig,\n Pagination,\n ViewType,\n} from '@valtimo/components';\nimport {CaseDefinition, DocumentService} from '@valtimo/document';\nimport {Page} from '@valtimo/shared';\nimport {\n ButtonModule,\n ContextMenuModule,\n DialogModule,\n IconModule,\n IconService,\n MenuButtonModule,\n PaginationModule,\n TilesModule,\n} from 'carbon-components-angular';\nimport {BehaviorSubject, Observable} from 'rxjs';\n\nimport {FieldsWidgetValue, InteractiveTableWidget, WidgetAction} from '../../models';\n\n@Component({\n selector: 'valtimo-widget-interactive-table',\n templateUrl: './widget-interactive-table.component.html',\n styleUrls: ['./widget-interactive-table.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [\n CommonModule,\n CarbonListModule,\n PaginationModule,\n TilesModule,\n TranslateModule,\n ButtonModule,\n DialogModule,\n MenuButtonModule,\n ContextMenuModule,\n IconModule,\n ],\n})\nexport class WidgetInteractiveTableComponent {\n @HostBinding('class') public readonly class = 'valtimo-widget-interactive-table';\n private _widgetConfiguration: InteractiveTableWidget;\n\n public get widgetConfiguration(): InteractiveTableWidget {\n return this._widgetConfiguration;\n }\n\n @Input({required: true}) public set widgetConfiguration(value: InteractiveTableWidget) {\n this._widgetConfiguration = value;\n\n this.fields$.next(\n value.properties.columns.map((column: FieldsWidgetValue, index: number) => ({\n key: `data.${column.key}`,\n label: column.title,\n viewType: column.displayProperties?.type ?? ViewType.TEXT,\n ...(!!column.displayProperties?.['format'] && {\n format: column.displayProperties['format'],\n }),\n ...(!!column.displayProperties?.['digitsInfo'] && {\n digitsInfo: column.displayProperties['digitsInfo'],\n }),\n ...(!!column.displayProperties?.['display'] && {\n display: column.displayProperties['display'],\n }),\n ...(!!column.displayProperties?.['currencyCode'] && {\n currencyCode: column.displayProperties['currencyCode'],\n }),\n ...(!!column.displayProperties?.['values'] && {\n values: column.displayProperties['values'],\n }),\n }))\n );\n\n this.cdr.detectChanges();\n }\n\n public readonly $showPagination = signal<boolean>(false);\n\n public readonly widgetData$ = new BehaviorSubject<CarbonListItem[] | null>(null);\n\n private _paginationInitialized = false;\n\n private _initialNumberOfElements!: number;\n\n @Input({required: true}) set widgetData(value: any | null) {\n if (!value) return;\n\n this.$showPagination.set(value.totalElements > value.size);\n\n if (!this._initialNumberOfElements) this._initialNumberOfElements = value.numberOfElements;\n\n const widgetPage: Page<CarbonListItem> = value['table'] ?? value;\n let widgetData: any[] = value['table']?.content ?? value?.content;\n\n if (typeof widgetData?.length !== 'number') return;\n\n if (!value['table']) {\n widgetData = widgetData.map(data => (data['data'] = data));\n }\n if (widgetData.length < this._initialNumberOfElements) {\n const rows = new Array<null>(this._initialNumberOfElements).fill(null);\n\n widgetData = rows.map((_, index) => widgetData[index] || {...value[0], hidden: true});\n }\n\n this.widgetData$.next(widgetData);\n\n if (!this._paginationInitialized) {\n this.$showPagination.set(widgetPage.totalElements > widgetPage.size);\n\n this.$paginationModel.set(\n widgetPage.totalPages < 0\n ? null\n : {\n page: 1,\n collectionSize: Math.ceil(widgetPage.totalElements / widgetPage.size),\n size: widgetPage.size,\n }\n );\n\n this._paginationInitialized = true;\n } else {\n this.$paginationModel.update((model: Pagination | null) =>\n !model\n ? null\n : {\n ...model,\n collectionSize: Math.ceil(widgetPage.totalElements / widgetPage.size),\n currentPage: widgetPage.number + 1,\n }\n );\n }\n\n this.cdr.detectChanges();\n }\n\n @Output() public readonly paginationEvent = new EventEmitter<Pagination>();\n @Output() public readonly rowClickEvent = new EventEmitter<any>();\n @Output() public readonly actionEvent = new EventEmitter<WidgetAction>();\n @Output() public readonly caseStartEvent = new EventEmitter<CaseDefinition>();\n\n public readonly fields$ = new BehaviorSubject<ColumnConfig[]>([]);\n public readonly caseDefinitions$: Observable<CaseDefinition[]> =\n this.documentService.getCaseDefinitions({active: true});\n\n public readonly $paginationModel = signal<Pagination | null>(null);\n public readonly $paginatorConfig = signal<CarbonPaginatorConfig>({\n itemsPerPageOptions: [5, 10, 20, 30],\n showPageInput: true,\n });\n\n constructor(\n private readonly cdr: ChangeDetectorRef,\n private readonly documentService: DocumentService,\n private readonly iconService: IconService\n ) {\n this.iconService.register(Link16);\n }\n\n public onActionClick(action: WidgetAction): void {\n this.actionEvent.emit(action);\n }\n\n public onCaseStart(definition: CaseDefinition): void {\n this.caseStartEvent.emit(definition);\n }\n\n public onPaginationClicked(page: number): void {\n const paginationModel = this.$paginationModel();\n if (!paginationModel) return;\n this.paginationEvent.emit({...paginationModel, page});\n }\n\n public rowClick(event: any): void {\n this.rowClickEvent.emit(event);\n }\n}\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\n<ng-container\n *ngIf=\"{\n fields: fields$ | async,\n widgetData: widgetData$ | async,\n caseDefinitions: caseDefinitions$ | async,\n } as obs\"\n>\n <span class=\"widget-title\">{{ widgetConfiguration?.title }}</span>\n\n <valtimo-carbon-list\n [header]=\"false\"\n [fields]=\"obs.fields\"\n [items]=\"obs.widgetData\"\n [pagination]=\"$paginationModel()\"\n [paginatorConfig]=\"$paginatorConfig()\"\n (paginationClicked)=\"onPaginationClicked($event)\"\n (rowClicked)=\"rowClick($event)\"\n >\n <section class=\"valtimo-widget-interactive-table__header\" carbonToolbarContent>\n <cds-overflow-menu\n *ngIf=\"!!widgetConfiguration?.actions?.length\"\n [customTrigger]=\"externalLinkTrigger\"\n placement=\"bottom\"\n flip=\"true\"\n [offset]=\"{x: 4, y: 44}\"\n >\n @for (action of widgetConfiguration?.actions; track action.name) {\n <cds-overflow-menu-option (click)=\"onActionClick(action)\">\n {{ action.name }}\n </cds-overflow-menu-option>\n }\n </cds-overflow-menu>\n\n <cds-menu-button\n *ngIf=\"widgetConfiguration?.properties?.canStartCase\"\n [label]=\"'Start Case' | translate\"\n >\n @for (definition of obs.caseDefinitions; track definition.caseDefinitionKey) {\n <cds-menu-item\n [label]=\"definition.name\"\n (click)=\"onCaseStart(definition)\"\n ></cds-menu-item>\n }\n </cds-menu-button>\n </section>\n\n <valtimo-no-results\n [collapseVertically]=\"true\"\n [description]=\"'widgets.noData' | translate\"\n [smallPadding]=\"true\"\n ></valtimo-no-results>\n </valtimo-carbon-list>\n\n <ng-template #externalLinkTrigger>\n <button cdsButton=\"ghost\" iconOnly=\"true\">\n <svg cdsIcon=\"link\" size=\"16\"></svg>\n </button>\n </ng-template>\n</ng-container>\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\nexport * from './widget-interactive-table.component';\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\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Inject,\n Input,\n OnDestroy,\n Optional,\n signal,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {BehaviorSubject, combineLatest, filter, Observable, Subscription} from 'rxjs';\nimport {CarbonListModule} from '@valtimo/components';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {DocumentService} from '@valtimo/document';\nimport {PermissionService} from '@valtimo/access-control';\nimport {ButtonModule} from 'carbon-components-angular';\nimport {CustomWidget, CustomWidgetConfig} from '../../models';\nimport {CUSTOM_WIDGET_TOKEN} from '../../constants';\nimport {WidgetLayoutService} from '../../services/widget-layout.service';\n\n@Component({\n selector: 'valtimo-widget-custom',\n templateUrl: './widget-custom.component.html',\n styleUrls: ['./widget-custom.component.scss'],\n standalone: true,\n imports: [CommonModule, CarbonListModule, TranslateModule, ButtonModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class WidgetCustomComponent implements AfterViewInit, OnDestroy {\n @ViewChild('customWidgetContainer', {read: ViewContainerRef})\n private readonly _customWidgetContainerRef: ViewContainerRef;\n\n @Input() public set widgetConfiguration(value: CustomWidget) {\n if (!value) return;\n this._widgetConfigSubject$.next(value);\n }\n\n @Input() public set widgetUuid(value: string) {\n this.widgetLayoutService.setWidgetDataLoaded(value);\n }\n\n private readonly _customWidgetConfig$ = new BehaviorSubject<CustomWidgetConfig | {}>({});\n\n private readonly _widgetConfigSubject$ = new BehaviorSubject<CustomWidget | null>(null);\n\n public get widgetConfig$(): Observable<CustomWidget> {\n return this._widgetConfigSubject$.pipe(filter(config => config !== null));\n }\n\n public readonly noCustomComponentAvailable = signal(false);\n\n private readonly _subscriptions = new Subscription();\n\n constructor(\n @Optional()\n @Inject(CUSTOM_WIDGET_TOKEN)\n private readonly customWidgetConfig: CustomWidgetConfig,\n private readonly cdr: ChangeDetectorRef,\n private readonly widgetLayoutService: WidgetLayoutService,\n protected readonly documentService: DocumentService,\n protected readonly permissionService: PermissionService\n ) {\n if (customWidgetConfig) this._customWidgetConfig$.next(this.customWidgetConfig);\n }\n\n public ngAfterViewInit(): void {\n this.openCustomWidgetSubscription();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n private openCustomWidgetSubscription(): void {\n this._subscriptions.add(\n combineLatest([this.widgetConfig$, this._customWidgetConfig$]).subscribe(\n ([widgetConfig, customCaseWidgetConfig]) => {\n const customWidgetComponentKey = widgetConfig?.properties?.componentKey;\n const customComponent = customCaseWidgetConfig[customWidgetComponentKey];\n\n if (!customComponent) {\n this.noCustomComponentAvailable.set(true);\n return;\n }\n\n const componentRef = this._customWidgetContainerRef.createComponent(customComponent);\n\n componentRef.changeDetectorRef.detectChanges();\n this.cdr.detectChanges();\n }\n )\n );\n }\n}\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\n<div *ngIf=\"{widgetConfig: widgetConfig$ | async} as obs\" class=\"custom-widget\">\n <section class=\"custom-widget__header\">\n <h4 class=\"custom-widget__title\">{{ obs.widgetConfig$?.title || '-' }}</h4>\n\n <ng-content></ng-content>\n </section>\n\n <div class=\"custom-widget__content\">\n <ng-template #customWidgetContainer></ng-template>\n\n @if (noCustomComponentAvailable()) {\n <valtimo-no-results\n [collapseVertically]=\"true\"\n [description]=\"'widgets.noCustomComponentDescription' | translate\"\n [smallPadding]=\"true\"\n ></valtimo-no-results>\n }\n </div>\n</div>\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\nexport * from './widget-custom.component';\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 */\nimport {CommonModule} from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n OnDestroy,\n Renderer2,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {\n CARBON_THEME,\n CarbonListModule,\n CdsThemeService,\n CurrentCarbonTheme,\n} from '@valtimo/components';\nimport {LoadingModule, TilesModule} from 'carbon-components-angular';\nimport {\n BehaviorSubject,\n combineLatest,\n filter,\n map,\n Observable,\n startWith,\n Subscription,\n tap,\n} from 'rxjs';\nimport {WidgetComponentMap, WidgetWithUuid} from '../../models';\nimport {WidgetLayoutService} from '../../services/widget-layout.service';\nimport {WIDGET_HEIGHT_1X} from '../../constants';\n\n@Component({\n selector: 'valtimo-widget-block',\n templateUrl: './widget-block.component.html',\n styleUrls: ['./widget-block.component.scss'],\n standalone: true,\n imports: [CommonModule, LoadingModule, CarbonListModule, TranslateModule, TilesModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class WidgetBlockComponent implements AfterViewInit, OnDestroy {\n @ViewChild('widgetBlockContent') private _widgetBlockContentRef: ElementRef<HTMLDivElement>;\n @ViewChild('widgetComponent', {static: true, read: ViewContainerRef})\n public readonly dynamicContainer: ViewContainerRef;\n\n @Input() public set widget(value: WidgetWithUuid) {\n this._widgetUuid = value.uuid;\n this._widget$.next(value);\n }\n\n @Input() public readonly widgetComponentMap: WidgetComponentMap;\n @Input({required: false}) public widgetParams: object;\n\n private readonly _widget$ = new BehaviorSubject<WidgetWithUuid | null>(null);\n\n public get widget$(): Observable<WidgetWithUuid> {\n return this._widget$.pipe(filter(widget => widget !== null));\n }\n\n private readonly _viewContainerRefSubject$ = new BehaviorSubject<ViewContainerRef | null>(null);\n\n private get _viewContainerRef$(): Observable<ViewContainerRef> {\n return this._viewContainerRefSubject$.pipe(filter(ref => !!ref));\n }\n\n private readonly _contentHeight$ = new BehaviorSubject<number>(0);\n\n public readonly blockHeightPx$ = combineLatest([\n this._contentHeight$,\n this._viewContainerRef$,\n ]).pipe(\n filter(([contentHeight]) => contentHeight !== 0),\n tap(([contentHeight, viewRef]) => {\n const blockHeight = Math.ceil((contentHeight + 16) / WIDGET_HEIGHT_1X) * WIDGET_HEIGHT_1X;\n\n this.renderer.setStyle(viewRef.element.nativeElement, 'height', `${blockHeight}px`);\n this.widgetLayoutService.triggerMuuriLayout();\n })\n );\n\n public readonly blockWidthPercentage$ = combineLatest([\n this.widgetLayoutService.amountOfColumns$,\n this.widget$,\n this._viewContainerRef$,\n ]).pipe(\n tap(([amountOfColumns, widget, viewRef]) => {\n const percentage =\n widget.width > amountOfColumns ? 100 : (widget.width / amountOfColumns) * 100;\n\n this.renderer.setStyle(viewRef.element.nativeElement, 'width', `${percentage}%`);\n this.widgetLayoutService.triggerMuuriLayout();\n })\n );\n\n public readonly documentId$ = this.route.params.pipe(\n map(params => params?.documentId),\n filter(documentId => !!documentId)\n );\n\n public readonly theme$ = combineLatest([this.cdsThemeService.currentTheme$, this.widget$]).pipe(\n map(([currentTheme, widgetConfiguration]) => {\n return currentTheme === CurrentCarbonTheme.G10\n ? widgetConfiguration.highContrast\n ? CARBON_THEME.G100\n : CARBON_THEME.G10\n : widgetConfiguration.highContrast\n ? CARBON_THEME.WHITE\n : CARBON_THEME.G90;\n })\n );\n\n private readonly _subscriptions = new Subscription();\n\n private _observer!: ResizeObserver;\n\n private _widgetUuid!: string;\n\n constructor(\n private readonly widgetLayoutService: WidgetLayoutService,\n private readonly route: ActivatedRoute,\n private readonly cdsThemeService: CdsThemeService,\n private readonly renderer: Renderer2,\n private readonly viewRef: ViewContainerRef\n ) {}\n\n public ngAfterViewInit(): void {\n this._viewContainerRefSubject$.next(this.viewRef);\n this.openContentHeightObserver();\n this.openWidgetComponentSubscription();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n this._observer?.disconnect();\n }\n\n private openContentHeightObserver(): void {\n this._observer = new ResizeObserver(event => {\n this.observerMutation(event);\n });\n this._observer.observe(this._widgetBlockContentRef.nativeElement);\n }\n\n private observerMutation(event: Array<ResizeObserverEntry>): void {\n const widgetContentHeight = event[0]?.borderBoxSize[0]?.blockSize;\n\n if (typeof widgetContentHeight === 'number' && widgetContentHeight !== 0) {\n this._contentHeight$.next(widgetContentHeight);\n }\n }\n\n public openWidgetComponentSubscription(): void {\n this._subscriptions.add(\n combineLatest([this.widget$, this.documentId$.pipe(startWith(null))]).subscribe(\n ([widget, documentId]) => {\n const component = this.widgetComponentMap[widget.type];\n if (!component) return;\n this.dynamicContainer.clear();\n const componentRef = this.dynamicContainer.createComponent(component);\n if (documentId) componentRef.instance.documentId = documentId;\n componentRef.instance.widgetConfiguration = widget;\n componentRef.instance.widgetUuid = widget.uuid;\n componentRef.instance.widgetParams = this.widgetParams;\n }\n )\n );\n }\n}\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\n<div class=\"widget-block\" [attr.data-carbon-theme]=\"theme$ | async\">\n <div #widgetBlockContent class=\"widget-block__content\">\n <ng-template #widgetComponent></ng-template>\n </div>\n</div>\n\n<ng-container\n *ngIf=\"{\n documentId: documentId$ | async,\n widgetConfiguration: widget$ | async,\n theme: theme$ | async,\n blockHeightPx: blockHeightPx$ | async,\n blockWidthPercentage: blockWidthPercentage$ | async,\n } as obs\"\n></ng-container>\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\nexport * from './widget-block.component';\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\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n OnDestroy,\n ViewChild,\n} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {v4 as uuid} from 'uuid';\nimport {BehaviorSubject, delay, merge, Observable, take} from 'rxjs';\nimport Muuri from 'muuri';\nimport {WidgetLayoutService} from '../../services/widget-layout.service';\nimport {Widget, WidgetComponentMap, WidgetWithUuid} from '../../models';\nimport {WidgetBlockComponent} from '../widget-block';\nimport {filter} from 'rxjs/operators';\nimport {DEFAULT_WIDGET_COMPONENT_MAP} from '../../constants';\nimport {LoadingModule} from 'carbon-components-angular';\nimport {CarbonListModule} from '@valtimo/components';\nimport {TranslatePipe} from '@ngx-translate/core';\n\n@Component({\n selector: 'valtimo-widget-container',\n templateUrl: './widget-container.component.html',\n styleUrls: ['./widget-container.component.scss'],\n standalone: true,\n imports: [CommonModule, WidgetBlockComponent, LoadingModule, CarbonListModule, TranslatePipe],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [WidgetLayoutService],\n})\nexport class WidgetContainerComponent implements AfterViewInit, OnDestroy {\n @ViewChild('widgetsContainer') private _widgetsContainerRef: ElementRef<HTMLDivElement>;\n\n public readonly widgetsWithUuids$ = new BehaviorSubject<WidgetWithUuid[]>(null);\n\n @Input() public set widgets(value: Widget[]) {\n if (!value) return;\n const widgetsWithUuids = value.map(widget => ({...widget, uuid: uuid()}));\n this.resetLayout();\n this.widgetLayoutService.setWidgets(widgetsWithUuids);\n this.widgetsWithUuids$.next(widgetsWithUuids);\n this.loadingWidgetConfiguration$.next(false);\n this.initLayout();\n }\n\n private readonly _widgetComponentMap$ = new BehaviorSubject<WidgetComponentMap>(\n DEFAULT_WIDGET_COMPONENT_MAP\n );\n\n public get widgetComponentMap$(): Observable<WidgetComponentMap> {\n return this._widgetComponentMap$.pipe(filter(componentMap => componentMap !== null));\n }\n\n @Input() public set widgetComponentMap(value: WidgetComponentMap) {\n this._widgetComponentMap$.next({...DEFAULT_WIDGET_COMPONENT_MAP, ...value});\n }\n\n @Input({required: false}) public widgetParams: object = {};\n\n public readonly loadingWidgetConfiguration$ = new BehaviorSubject<boolean>(true);\n\n public readonly reload$ = new BehaviorSubject<boolean>(false);\n public readonly loaded$ = merge(this.reload$, this.widgetLayoutService.loaded$.pipe(delay(400)));\n\n private _observer!: ResizeObserver;\n\n constructor(private readonly widgetLayoutService: WidgetLayoutService) {}\n\n public ngAfterViewInit(): void {\n this.initLayout();\n }\n\n private resetLayout(): void {\n if (!this._observer) return;\n\n this.reload$.next(false);\n this.destroyLayout();\n }\n\n private destroyLayout(): void {\n this.widgetLayoutService.reset();\n this._observer?.disconnect();\n }\n\n public initLayout(): void {\n this._observer = new ResizeObserver(event => {\n this.observerMutation(event);\n });\n this._observer.observe(this._widgetsContainerRef?.nativeElement);\n\n this.initMuuri();\n }\n\n public ngOnDestroy(): void {\n this.destroyLayout();\n }\n\n private observerMutation(event: Array<ResizeObserverEntry>): void {\n const containerWidth = event[0]?.borderBoxSize[0]?.inlineSize;\n\n if (typeof containerWidth === 'number' && containerWidth !== 0) {\n this.widgetLayoutService.setContainerWidth(containerWidth);\n this.widgetLayoutService.triggerMuuriLayout();\n }\n }\n\n private initMuuri(): void {\n this.widgetLayoutService.loaded$.pipe(take(1), delay(300)).subscribe(() => {\n this.widgetLayoutService.setMuuri(\n new Muuri(this._widgetsContainerRef.nativeElement, {\n layout: {\n fillGaps: true,\n },\n layoutOnResize: false,\n })\n );\n });\n }\n}\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\n<ng-container\n *ngIf=\"{\n loadingWidgetConfiguration: loadingWidgetConfiguration$ | async,\n widgets: widgetsWithUuids$ | async,\n loaded: loaded$ | async,\n } as obs\"\n>\n <ng-container\n *ngIf=\"{\n noWidgetsConfigured: obs.widgets && obs.widgets.length === 0,\n } as vars\"\n >\n @if (!obs.loaded && !vars.noWidgetsConfigured) {\n <div class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n }\n\n @if (vars.noWidgetsConfigured) {\n <valtimo-no-results\n [title]=\"'widgets.noWidgets' | translate\"\n [description]=\"'widgets.noWidgetsDescription' | translate\"\n illustration=\"valtimo-layout/img/no-widgets.svg\"\n ></valtimo-no-results>\n }\n\n <div [style.visibility]=\"!obs.loaded ? 'hidden' : 'visible'\">\n <div #widgetsContainer class=\"widgets-container\">\n @for (widget of (widgetsWithUuids$ | async) || []; track widget.uuid) {\n <valtimo-widget-block\n [widget]=\"widget\"\n [widgetComponentMap]=\"widgetComponentMap$ | async\"\n [widgetParams]=\"widgetParams\"\n ></valtimo-widget-block>\n }\n </div>\n </div>\n </ng-container>\n</ng-container>\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\nexport * from './widget-container.component';\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 */\nimport {CommonModule} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport {WidgetWizardService} from '../../../../../services';\n\n@Component({\n selector: 'valtimo-widget-wizard-content-step',\n templateUrl: './widget-wizard-content-step.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [CommonModule],\n})\nexport class WidgetWizardContentStepComponent implements OnInit {\n @ViewChild('contentRenderer', {static: true, read: ViewContainerRef})\n private readonly _vcr: ViewContainerRef;\n\n @Input() public disableTitleInput = false;\n\n @Output() public contentValidEvent = new EventEmitter<boolean>();\n\n constructor(\n private readonly cdr: ChangeDetectorRef,\n private readonly widgetWizardService: WidgetWizardService\n ) {}\n\n public ngOnInit(): void {\n this.renderComponent();\n }\n\n private renderComponent(): void {\n this._vcr.clear();\n const widget = this.widgetWizardService.$selectedWidget();\n if (!widget) return;\n\n const componentInstance = this._vcr.createComponent(widget.component).instance;\n if (!componentInstance) return;\n\n componentInstance.changeValidEvent.subscribe((valid: boolean) => {\n this.contentValidEvent.emit(valid);\n });\n\n if (this.disableTitleInput && componentInstance.setTitleInputVisible) {\n componentInstance.setTitleInputVisible(false);\n }\n\n this.cdr.detectChanges();\n }\n}\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\n<ng-template #contentRenderer></ng-template>\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\nimport {CommonModule} from '@angular/common';\nimport {ChangeDetectionStrategy, Component} from '@angular/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {TilesModule} from 'carbon-components-angular';\nimport {WidgetWizardService} from '../../../../../services';\nimport {WidgetStyle} from '../../../../../models';\n\n@Component({\n selector: 'valtimo-widget-wizard-style-step',\n templateUrl: './widget-wizard-style-step.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [CommonModule, TranslateModule, TilesModule],\n})\nexport class WidgetWizardStyleStepComponent {\n public readonly WidgetStyle = WidgetStyle;\n public readonly $widgetStyle = this.widgetWizardService.$widgetStyle;\n\n constructor(private readonly widgetWizardService: WidgetWizardService) {}\n\n public onSelectedEvent(event: {value: WidgetStyle}): void {\n this.widgetWizardService.$widgetStyle.set(event.value);\n }\n}\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\n<cds-tile-group\n [multiple]=\"false\"\n (selected)=\"onSelectedEvent($event)\"\n class=\"valtimo-widget-wizard-step__content\"\n>\n <cds-selection-tile\n class=\"valtimo-widget-wizard-step__tile\"\n [value]=\"WidgetStyle.DEFAULT\"\n [selected]=\"$widgetStyle() === WidgetStyle.DEFAULT\"\n >\n <h3>{{ 'widgetTabManagement.style.default.title' | translate }}</h3>\n\n <span>{{ 'widgetTabManagement.style.default.description' | translate }}</span>\n\n <img\n src=\"valtimo-layout/img/widget-management/style/default.svg\"\n [alt]=\"'widgetTabManagement.style.default.title' | translate\"\n />\n </cds-selection-tile>\n\n <cds-selection-tile\n class=\"valtimo-widget-wizard-step__tile\"\n [value]=\"WidgetStyle.HIGH_CONTRAST\"\n [selected]=\"$widgetStyle() === WidgetStyle.HIGH_CONTRAST\"\n >\n <h3>{{ 'widgetTabManagement.style.highContrast.title' | translate }}</h3>\n\n <span>{{ 'widgetTabManagement.style.highContrast.description' | translate }}</span>\n\n <img\n src=\"valtimo-layout/img/widget-management/style/high-contrast.svg\"\n [alt]=\"'widgetTabManagement.style.highContrast.title' | translate\"\n />\n </cds-selection-tile>\n</cds-tile-group>\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 */\nimport {CommonModule} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, computed, ViewEncapsulation} from '@angular/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {TilesModule} from 'carbon-components-angular';\nimport {AVAILABLE_WIDGETS, WidgetTypeSelection} from '../../../../../models';\nimport {WidgetWizardService} from '../../../../../services';\n\n@Component({\n selector: 'valtimo-widget-wizard-type-step',\n templateUrl: './widget-wizard-type-step.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [CommonModule, TranslateModule, TilesModule],\n})\nexport class WidgetWizardTypeStepComponent {\n public readonly $availableWidgetTypes = computed(() => {\n const availableTypes = this.widgetWizardService.$availableWidgetTypes();\n return !availableTypes\n ? AVAILABLE_WIDGETS\n : AVAILABLE_WIDGETS.filter((typeSelection: WidgetTypeSelection) =>\n availableTypes.includes(typeSelection.type)\n );\n });\n public readonly $selectedWidget = this.widgetWizardService.$selectedWidget;\n\n constructor(private readonly widgetWizardService: WidgetWizardService) {}\n\n public onSelectedEvent(event: {value: WidgetTypeSelection}): void {\n if (event.value.type !== this.widgetWizardService.$selectedWidget()?.type) {\n this.widgetWizardService.$widgetContent.set(null);\n this.widgetWizardService.$widgetTitle.set(null);\n }\n\n this.widgetWizardService.$selectedWidget.set(event.value);\n }\n}\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\n<cds-tile-group\n [multiple]=\"false\"\n (selected)=\"onSelectedEvent($event)\"\n class=\"valtimo-widget-wizard-step__content\"\n>\n @for (widgetType of $availableWidgetTypes(); track widgetType.titleKey) {\n <cds-selection-tile\n class=\"valtimo-widget-wizard-step__tile\"\n [value]=\"widgetType\"\n [selected]=\"widgetType.type === $selectedWidget()?.type\"\n >\n <h3 class=\"valtimo-widget-wizard-step__tile-title\">{{ widgetType.titleKey | translate }}</h3>\n\n <span>{{ widgetType.descriptionKey | translate }}</span>\n\n <img [src]=\"widgetType.illustrationUrl\" [alt]=\"widgetType.titleKey | translate\" />\n </cds-selection-tile>\n }\n</cds-tile-group>\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 */\nimport {CommonModule} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, computed, Signal} from '@angular/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {TilesModule} from 'carbon-components-angular';\nimport {WidgetType, WidgetWidth} from '../../../../../models';\nimport {WidgetWizardService} from '../../../../../services';\n\n@Component({\n selector: 'valtimo-widget-wizard-width-step',\n templateUrl: './widget-wizard-width-step.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [CommonModule, TranslateModule, TilesModule],\n})\nexport class WidgetWizardWidthStepComponent {\n public readonly $fieldsColumnsLength: Signal<number> = computed(() =>\n this.widgetWizardService.$selectedWidget()?.type === WidgetType.FIELDS\n ? (this.widgetWizardService.$widgetContent()?.['columns']?.length ?? 0)\n : 0\n );\n public readonly $widgetWidth = this.widgetWizardService.$widgetWidth;\n\n constructor(private readonly widgetWizardService: WidgetWizardService) {}\n\n public onSelectedEvent(event: {value: WidgetWidth}): void {\n this.widgetWizardService.$widgetWidth.set(event.value);\n }\n}\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\n<cds-tile-group\n [multiple]=\"false\"\n (selected)=\"onSelectedEvent($event)\"\n class=\"valtimo-widget-wizard-step__content\"\n>\n <cds-selection-tile\n class=\"valtimo-widget-wizard-step__tile\"\n [value]=\"1\"\n [selected]=\"$widgetWidth() === 1\"\n [disabled]=\"$fieldsColumnsLength() > 1\"\n >\n <h3>{{ 'widgetTabManagement.width.small.title' | translate }}</h3>\n\n <span>{{ 'widgetTabManagement.width.small.subtitle' | translate }}</span>\n\n <img\n src=\"valtimo-layout/img/widget-management/width/quarter.svg\"\n [alt]=\"'widgetTabManagement.width.small.title' | translate\"\n />\n </cds-selection-tile>\n\n <cds-selection-tile\n class=\"valtimo-widget-wizard-step__tile\"\n [value]=\"2\"\n [selected]=\"$widgetWidth() === 2\"\n [disabled]=\"$fieldsColumnsLength() > 2\"\n >\n <h3>{{ 'widgetTabManagement.width.medium.title' | translate }}</h3>\n\n <span>{{ 'widgetTabManagement.width.medium.subtitle' | translate }}</span>\n\n <img\n src=\"valtimo-layout/img/widget-management/width/half.svg\"\n [alt]=\"'widgetTabManagement.width.medium.title' | translate\"\n />\n </cds-selection-tile>\n\n <cds-selection-tile\n class=\"valtimo-widget-wizard-step__tile\"\n [value]=\"3\"\n [selected]=\"$widgetWidth() === 3\"\n [disabled]=\"$fieldsColumnsLength() > 3\"\n >\n <h3>{{ 'widgetTabManagement.width.large.title' | translate }}</h3>\n\n <span>{{ 'widgetTabManagement.width.large.subtitle' | translate }}</span>\n\n <img\n src=\"valtimo-layout/img/widget-management/width/three-quarters.svg\"\n [alt]=\"'widgetTabManagement.width.large.title' | translate\"\n />\n </cds-selection-tile>\n\n <cds-selection-tile\n class=\"valtimo-widget-wizard-step__tile\"\n [value]=\"4\"\n [selected]=\"$widgetWidth() === 4\"\n >\n <h3>{{ 'widgetTabManagement.width.xtraLarge.title' | translate }}</h3>\n\n <span>{{ 'widgetTabManagement.width.xtraLarge.subtitle' | translate }}</span>\n\n <img\n src=\"valtimo-layout/img/widget-management/width/full-width.svg\"\n [alt]=\"'widgetTabManagement.width.xtraLarge.title' | translate\"\n />\n </cds-selection-tile>\n</cds-tile-group>\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 */\nimport {WidgetWizardContentStepComponent} from './widget-wizard-content-step/widget-wizard-content-step.component';\nimport {WidgetWizardStyleStepComponent} from './widget-wizard-style-step/widget-wizard-style-step.component';\nimport {WidgetWizardTypeStepComponent} from './widget-wizard-type-step/widget-wizard-type-step.component';\nimport {WidgetWizardWidthStepComponent} from './widget-wizard-width-step/widget-wizard-width-step.component';\n\nexport const WIDGET_STEPS = [\n WidgetWizardContentStepComponent,\n WidgetWizardStyleStepComponent,\n WidgetWizardTypeStepComponent,\n WidgetWizardWidthStepComponent,\n];\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 */\nimport {CommonModule} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Signal,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport {toObservable} from '@angular/core/rxjs-interop';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {CARBON_CONSTANTS, KeyGeneratorService} from '@valtimo/components';\nimport {ButtonModule, ModalModule, ProgressIndicatorModule, Step} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, map, Observable, Subscription} from 'rxjs';\nimport {\n WIDGET_STYLE_LABELS,\n WIDGET_WIDTH_LABELS,\n WidgetWizardCloseEvent,\n WidgetWizardCloseEventType,\n WidgetWizardSteps,\n WidgetWizardStepsNoWidth,\n} from '../../../models';\nimport {WidgetWizardService} from '../../../services';\nimport {WIDGET_STEPS} from './steps';\n\n@Component({\n selector: 'valtimo-widget-management-wizard',\n templateUrl: './widget-management-wizard.component.html',\n styleUrls: ['./widget-management-wizard.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n ProgressIndicatorModule,\n ModalModule,\n ButtonModule,\n ...WIDGET_STEPS,\n ],\n})\nexport class WidgetManagementWizardComponent implements OnInit, OnDestroy {\n @Input() public open = false;\n\n private readonly _widgetWizardSteps$ = new BehaviorSubject<\n typeof WidgetWizardSteps | typeof WidgetWizardStepsNoWidth\n >(WidgetWizardSteps);\n public widgetWizardSteps: typeof WidgetWizardSteps | typeof WidgetWizardStepsNoWidth =\n WidgetWizardSteps;\n\n private readonly _disableWidthStep$ = new BehaviorSubject<boolean>(false);\n private _disableWidthStep = false;\n\n @Input() public set disableWidthStep(value: boolean) {\n if (!value) return;\n this._disableWidthStep$.next(value);\n this._disableWidthStep = value;\n this.widgetWizardSteps = WidgetWizardStepsNoWidth;\n this._widgetWizardSteps$.next(WidgetWizardStepsNoWidth);\n this.widgetWizardService.$widgetWidth.set(4);\n }\n\n @Input() public disableDuplicate = false;\n @Input() public disableTitleInput = false;\n\n private hasWidth(\n s: typeof WidgetWizardSteps | typeof WidgetWizardStepsNoWidth\n ): s is typeof WidgetWizardSteps {\n return 'WIDTH' in s;\n }\n\n public get typeStepIndex(): number {\n return this.widgetWizardSteps.TYPE;\n }\n public readonly typeStepIndex$: Observable<number> = this._disableWidthStep$.pipe(\n map(() => this.typeStepIndex)\n );\n public get widthStepIndex(): number {\n return !this._disableWidthStep && this.hasWidth(this.widgetWizardSteps)\n ? this.widgetWizardSteps.WIDTH\n : -1;\n }\n public readonly widthStepIndex$: Observable<number> = this._disableWidthStep$.pipe(\n map(() => this.widthStepIndex)\n );\n public get styleStepIndex(): number {\n return this.widgetWizardSteps.STYLE;\n }\n public readonly styleStepIndex$: Observable<number> = this._disableWidthStep$.pipe(\n map(() => this.styleStepIndex)\n );\n public get contentStepIndex(): number {\n return this.widgetWizardSteps.CONTENT;\n }\n public readonly contentStepIndex$: Observable<number> = this._disableWidthStep$.pipe(\n map(() => this.contentStepIndex)\n );\n\n private get _editMode(): boolean {\n return this.widgetWizardService.$editMode();\n }\n @Input() public set editMode(value: boolean) {\n this.widgetWizardService.$editMode.set(value);\n }\n public get editMode(): boolean {\n return this._editMode;\n }\n\n @Output() public closeEvent = new EventEmitter<WidgetWizardCloseEvent>();\n\n public readonly secondaryLabels$: Observable<Record<number, string>> = combineLatest([\n toObservable(this.widgetWizardService.$selectedWidget),\n toObservable(this.widgetWizardService.$widgetWidth),\n toObservable(this.widgetWizardService.$widgetStyle),\n this._widgetWizardSteps$,\n ]).pipe(\n map(([selectedWidget, selectedWidth, selectedStyle, widgetWizardSteps]) => {\n const type = selectedWidget?.type ?? '';\n const width = selectedWidth ?? '';\n const style = selectedStyle ?? '';\n\n return {\n [widgetWizardSteps.TYPE]: type ? `widgetTabManagement.types.${type}.title` : '',\n ...('WIDTH' in widgetWizardSteps\n ? {[widgetWizardSteps.WIDTH]: WIDGET_WIDTH_LABELS[width] ?? ''}\n : {}),\n [widgetWizardSteps.STYLE]: WIDGET_STYLE_LABELS[style] ?? '',\n };\n })\n );\n\n public readonly steps$: Observable<Step[]> = combineLatest([\n this.secondaryLabels$,\n toObservable(this.widgetWizardService.$editMode),\n this._disableWidthStep$,\n this._widgetWizardSteps$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([secondaryLabels, editMode, disableWidthStep, widgetWizardSteps]) => {\n return [\n {\n label: this.translateService.instant('widgetTabManagement.wizard.steps.type'),\n ...(secondaryLabels[widgetWizardSteps.TYPE] && {\n secondaryLabel: this.translateService.instant(secondaryLabels[widgetWizardSteps.TYPE]),\n }),\n disabled: editMode,\n complete: !!this.widgetWizardService.$selectedWidget()?.type,\n },\n ...(disableWidthStep || !this.hasWidth(widgetWizardSteps)\n ? []\n : [\n {\n label: this.translateService.instant('widgetTabManagement.wizard.steps.width'),\n ...(secondaryLabels[widgetWizardSteps.WIDTH] && {\n secondaryLabel: this.translateService.instant(\n secondaryLabels[widgetWizardSteps.WIDTH]\n ),\n }),\n disabled: !secondaryLabels[widgetWizardSteps.TYPE],\n complete: !!this.widgetWizardService.$widgetWidth(),\n },\n ]),\n {\n label: this.translateService.instant('widgetTabManagement.wizard.steps.style'),\n ...(secondaryLabels[widgetWizardSteps.STYLE] && {\n secondaryLabel: this.translateService.instant(secondaryLabels[widgetWizardSteps.STYLE]),\n }),\n disabled:\n !disableWidthStep && this.hasWidth(widgetWizardSteps)\n ? !secondaryLabels[widgetWizardSteps.WIDTH]\n : !secondaryLabels[widgetWizardSteps.TYPE],\n complete: !!this.widgetWizardService.$widgetStyle(),\n },\n {\n label: this.translateService.instant('widgetTabManagement.wizard.steps.content'),\n disabled:\n !secondaryLabels[widgetWizardSteps.TYPE] ||\n (!disableWidthStep && this.hasWidth(widgetWizardSteps)\n ? !secondaryLabels[widgetWizardSteps.WIDTH]\n : false) ||\n !secondaryLabels[widgetWizardSteps.STYLE],\n complete: !!this.widgetWizardService.$widgetContent(),\n },\n ];\n })\n );\n\n private readonly _$contentStepValid = signal<boolean>(false);\n public readonly $currentStep = signal<number>(this.widgetWizardSteps.TYPE);\n\n public readonly $backButtonDisabled: Signal<boolean> = computed(() =>\n !this._disableWidthStep && this.hasWidth(this.widgetWizardSteps)\n ? this.widgetWizardService.$editMode() && this.$currentStep() === this.widgetWizardSteps.WIDTH\n : this.widgetWizardService.$editMode() && this.$currentStep() === this.widgetWizardSteps.STYLE\n );\n\n public $nextButtonDisabled = computed(() => {\n if (!this._disableWidthStep && this.hasWidth(this.widgetWizardSteps)) {\n switch (this.$currentStep()) {\n case this.widgetWizardSteps.TYPE:\n return !this.widgetWizardService.$selectedWidget();\n case this.widgetWizardSteps.WIDTH:\n return !this.widgetWizardService.$widgetWidth();\n case this.widgetWizardSteps.STYLE:\n return this.widgetWizardService.$widgetStyle() === null;\n case this.widgetWizardSteps.CONTENT:\n return this.widgetWizardService.$widgetContent() === null || !this._$contentStepValid();\n default:\n return true;\n }\n }\n\n switch (this.$currentStep()) {\n case this.widgetWizardSteps.TYPE:\n return !this.widgetWizardService.$selectedWidget();\n case this.widgetWizardSteps.STYLE:\n return this.widgetWizardService.$widgetStyle() === null;\n case this.widgetWizardSteps.CONTENT:\n return this.widgetWizardService.$widgetContent() === null || !this._$contentStepValid();\n default:\n return true;\n }\n });\n\n private readonly _subscriptions = new Subscription();\n\n constructor(\n private readonly keyGeneratorService: KeyGeneratorService,\n private readonly translateService: TranslateService,\n private readonly widgetWizardService: WidgetWizardService\n ) {}\n\n public ngOnInit(): void {\n this.openLastStepSubscription();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public onStepSelected(event: {step: Step; index: number}): void {\n this.$currentStep.set(event.index);\n }\n\n public onNextButtonClick(): void {\n if (this.$currentStep() === this.contentStepIndex) {\n const isDuplicateMode =\n this.editMode && !this.disableDuplicate && !this.widgetWizardService.$widgetKey();\n\n if (isDuplicateMode || !this.editMode) {\n this.widgetWizardService.$widgetKey.set(\n this.keyGeneratorService.getUniqueKey(\n this.widgetWizardService.$widgetTitle() ?? '',\n this.widgetWizardService.$usedWidgetKeys()\n )\n );\n }\n\n this.closeEvent.emit({\n type:\n this.editMode && !isDuplicateMode\n ? WidgetWizardCloseEventType.EDIT\n : WidgetWizardCloseEventType.CREATE,\n widget: this.widgetWizardService.$widgetsConfig(),\n });\n\n this.resetWizard();\n\n return;\n }\n\n this.$currentStep.update((step: number) => step + 1);\n }\n\n public onBackButtonClick(): void {\n this.$currentStep.update((step: number) => step - 1);\n }\n\n public onClose(): void {\n this.closeEvent.emit({type: WidgetWizardCloseEventType.CANCEL, widget: null});\n this.resetWizard();\n }\n\n public onContentValidEvent(valid: boolean): void {\n this._$contentStepValid.set(valid);\n }\n\n private resetWizard(): void {\n setTimeout(() => {\n this.widgetWizardService.resetWizard();\n this.$currentStep.set(this.widgetWizardSteps.TYPE);\n }, CARBON_CONSTANTS.modalAnimationMs);\n }\n\n private openLastStepSubscription(): void {\n this._subscriptions.add(\n combineLatest([this.widgetWizardService.editMode$, this._widgetWizardSteps$]).subscribe(\n ([editMode, steps]) => {\n if (!editMode) return;\n const last = Math.max(\n ...Object.values(steps).filter((v): v is number => typeof v === 'number')\n );\n this.$currentStep.set(last);\n }\n )\n );\n }\n}\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\n<cds-modal\n *ngIf=\"{steps: steps$ | async} as obs\"\n [open]=\"open\"\n showFooter=\"true\"\n size=\"lg\"\n valtimoCdsModal\n class=\"valtimo-widget-management-wizard\"\n (close)=\"onClose()\"\n>\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onClose()\">\n <h3 cdsModalHeaderHeading>\n {{ 'widgetTabManagement.wizard.' + (editMode ? 'edit' : 'create') | translate }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent class=\"valtimo-widget-management-wizard__content\">\n <cds-progress-indicator\n [current]=\"$currentStep()\"\n [skeleton]=\"!obs.steps\"\n [spacing]=\"'equal'\"\n [steps]=\"obs.steps\"\n (stepSelected)=\"onStepSelected($event)\"\n >\n </cds-progress-indicator>\n\n @switch ($currentStep()) {\n @case (typeStepIndex$ | async) {\n <p>{{ 'widgetTabManagement.types.description' | translate }}</p>\n\n <valtimo-widget-wizard-type-step\n class=\"valtimo-widget-wizard-step\"\n ></valtimo-widget-wizard-type-step>\n }\n @case (widthStepIndex$ | async) {\n <p>{{ 'widgetTabManagement.width.description' | translate }}</p>\n\n <valtimo-widget-wizard-width-step\n class=\"valtimo-widget-wizard-step\"\n ></valtimo-widget-wizard-width-step>\n }\n @case (styleStepIndex$ | async) {\n <p>{{ 'widgetTabManagement.style.description' | translate }}</p>\n\n <valtimo-widget-wizard-style-step\n class=\"valtimo-widget-wizard-step\"\n ></valtimo-widget-wizard-style-step>\n }\n @case (contentStepIndex$ | async) {\n <valtimo-widget-wizard-content-step\n [disableTitleInput]=\"disableTitleInput\"\n (contentValidEvent)=\"onContentValidEvent($event)\"\n ></valtimo-widget-wizard-content-step>\n }\n @default {\n <p>{{ 'widgetTabManagement.types.description' | translate }}</p>\n\n <valtimo-widget-wizard-type-step></valtimo-widget-wizard-type-step>\n }\n }\n </section>\n\n <cds-modal-footer class=\"valtimo-widget-management-wizard__footer\">\n <button class=\"valtimo-widget-management-wizard__cancel\" cdsButton=\"ghost\" (click)=\"onClose()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n @if ($currentStep() !== (typeStepIndex$ | async)) {\n <button\n class=\"valtimo-widget-management-wizard__back\"\n cdsButton=\"secondary\"\n [disabled]=\"$backButtonDisabled()\"\n (click)=\"onBackButtonClick()\"\n >\n {{ 'interface.back' | translate }}\n </button>\n }\n\n <button\n class=\"valtimo-widget-management-wizard__next\"\n cdsButton=\"primary\"\n [disabled]=\"$nextButtonDisabled()\"\n (click)=\"onNextButtonClick()\"\n >\n {{\n 'interface.' + ($currentStep() === (contentStepIndex$ | async) ? 'save' : 'next')\n | translate\n }}\n </button>\n </cds-modal-footer>\n</cds-modal>\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 */\nimport {CommonModule} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, Inject, Input, signal} from '@angular/core';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {\n ActionItem,\n CarbonListItem,\n CarbonListModule,\n ColumnConfig,\n ConfirmationModalModule,\n ViewType,\n} from '@valtimo/components';\nimport {ButtonModule, IconModule, TabsModule} from 'carbon-components-angular';\nimport {cloneDeep} from 'lodash';\nimport {BehaviorSubject, combineLatest, filter, map, Observable, switchMap, take, tap} from 'rxjs';\nimport {WIDGET_MANAGEMENT_SERVICE} from '../../../constants';\nimport {IWidgetManagementService} from '../../../interfaces';\nimport {\n AVAILABLE_WIDGETS,\n BasicWidget,\n Widget,\n WidgetStyle,\n WidgetType,\n WidgetTypeTags,\n WidgetWidth,\n WidgetWizardCloseEvent,\n WidgetWizardCloseEventType,\n} from '../../../models';\nimport {WidgetWizardService} from '../../../services';\nimport {WidgetManagementWizardComponent} from '../management-wizard/widget-management-wizard.component';\n\n@Component({\n selector: 'valtimo-widget-management-editor',\n templateUrl: './widget-management-editor.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n CarbonListModule,\n ButtonModule,\n IconModule,\n TabsModule,\n WidgetManagementWizardComponent,\n ConfirmationModalModule,\n ],\n})\nexport class WidgetManagementEditorComponent {\n @Input() public set params(value: any) {\n if (!value) return;\n this.widgetManagementService.initParams(value);\n }\n @Input() public set availableWidgetTypes(value: WidgetType[]) {\n if (!value) return;\n this.widgetWizardService.$availableWidgetTypes.set(value);\n }\n\n public readonly disableWidthStep$ = new BehaviorSubject<boolean>(false);\n @Input() public set disableWidthStep(value: boolean) {\n this.disableWidthStep$.next(value);\n }\n\n public readonly disableDuplicate$ = new BehaviorSubject<boolean>(false);\n @Input() public set disableDuplicate(value: boolean) {\n this.disableDuplicate$.next(value);\n }\n\n public readonly singleWidget$ = new BehaviorSubject<boolean>(false);\n @Input() public set singleWidget(value: boolean) {\n this.singleWidget$.next(value);\n }\n\n @Input() public set defaultWidth(value: WidgetWidth) {\n this.widgetWizardService.setDefaultWidth(value);\n }\n\n public readonly disableTitleInput$ = new BehaviorSubject<boolean>(false);\n @Input() public set disableTitleInput(value: boolean) {\n this.disableTitleInput$.next(value);\n }\n\n public readonly fields$: Observable<ColumnConfig[]> = combineLatest([\n this.singleWidget$,\n this.disableWidthStep$,\n this.disableTitleInput$,\n ]).pipe(\n map(([singleWidget, disableWidthStep, disableTitleInput]) => [\n ...(!disableTitleInput\n ? [\n {\n key: 'title',\n label: 'interface.title',\n viewType: ViewType.TEXT,\n },\n ]\n : []),\n {\n key: 'tags',\n label: 'widgetTabManagement.columns.type',\n viewType: ViewType.TAGS,\n },\n ...(!singleWidget\n ? [\n {\n key: 'key',\n label: 'interface.key',\n viewType: ViewType.TEXT,\n },\n ]\n : []),\n ...(!disableWidthStep\n ? [\n {\n key: 'widthTranslation',\n label: 'widgetTabManagement.columns.width',\n viewType: ViewType.TEXT,\n },\n ]\n : []),\n\n {\n key: 'highContrast',\n label: 'widgetTabManagement.columns.highContrast',\n viewType: ViewType.BOOLEAN,\n },\n ])\n );\n\n public readonly actionItems$: Observable<ActionItem[]> = this.disableDuplicate$.pipe(\n map(disableDuplicate => [\n {\n label: 'interface.edit',\n callback: this.editWidget.bind(this),\n },\n ...(disableDuplicate\n ? []\n : [\n {\n label: 'interface.duplicate',\n callback: this.duplicateWidget.bind(this),\n },\n ]),\n {\n label: 'interface.delete',\n callback: this.deleteWidget.bind(this),\n type: 'danger',\n },\n ])\n );\n\n public readonly loading$ = new BehaviorSubject<boolean>(true);\n\n private readonly _refresh$ = new BehaviorSubject<null>(null);\n public readonly widgets$: Observable<CarbonListItem[]> = this._refresh$.pipe(\n tap(() => this.loading$.next(true)),\n switchMap(() =>\n combineLatest([\n this.widgetManagementService.getWidgetConfiguration(),\n this.translateService.stream('key'),\n ])\n ),\n filter(([widgets]) => !!widgets),\n tap(([widgets]) =>\n this.widgetWizardService.$usedWidgetKeys.set(widgets.map((widget: BasicWidget) => widget.key))\n ),\n map(([widgets]) =>\n widgets.map(item => ({\n ...item,\n widthTranslation: this.translateService.instant(this.getWidthTranslationKey(item.width)),\n tags: [\n {\n content: this.translateService.instant(`widgetTabManagement.types.${item.type}.title`),\n type: WidgetTypeTags[item.type],\n },\n ],\n }))\n ),\n tap(() => this.loading$.next(false))\n );\n\n public readonly $isWizardOpen = signal<boolean>(false);\n public readonly $isEditMode = this.widgetWizardService.$editMode;\n public readonly deleteModalOpen$ = new BehaviorSubject<boolean>(false);\n public readonly $deleteWidget = signal<BasicWidget | null>(null);\n\n public readonly $dragAndDropDisabled = signal(false);\n\n constructor(\n private readonly translateService: TranslateService,\n private readonly widgetWizardService: WidgetWizardService,\n @Inject(WIDGET_MANAGEMENT_SERVICE)\n private widgetManagementService: IWidgetManagementService<any>\n ) {}\n\n public editWidget(tabWidget: Widget): void {\n this.widgetWizardService.$widgetTitle.set(tabWidget.title);\n this.widgetWizardService.$widgetStyle.set(\n tabWidget.highContrast ? WidgetStyle.HIGH_CONTRAST : WidgetStyle.DEFAULT\n );\n this.widgetWizardService.$widgetWidth.set(\n tabWidget.width || this.widgetWizardService.defaultWidth\n );\n this.widgetWizardService.$selectedWidget.set(\n AVAILABLE_WIDGETS.find(available => available.type === tabWidget.type) ?? null\n );\n this.widgetWizardService.$widgetContent.set(tabWidget.properties);\n this.widgetWizardService.$editMode.set(true);\n this.widgetWizardService.$widgetKey.set(tabWidget.key);\n this.widgetWizardService.$widgetActions.set(tabWidget.actions);\n this.$isWizardOpen.set(true);\n }\n\n public duplicateWidget(tabWidget: Widget): void {\n const tabWidgetClone = cloneDeep(tabWidget);\n tabWidgetClone.key = '';\n this.editWidget(tabWidgetClone);\n }\n\n public openAddModal(): void {\n this.$isWizardOpen.set(true);\n }\n\n public onDeleteConfirm(widget: BasicWidget): void {\n this.widgetManagementService\n .deleteWidget?.(widget)\n .pipe(take(1))\n .subscribe(() => this._refresh$.next(null));\n }\n\n public onCloseEvent(event: WidgetWizardCloseEvent): void {\n this.$isWizardOpen.set(false);\n this.widgetWizardService.resetWizard();\n const {type, widget} = event;\n\n if (!widget || type === WidgetWizardCloseEventType.CANCEL) return;\n\n (type === WidgetWizardCloseEventType.CREATE\n ? this.widgetManagementService.createWidget(widget)\n : this.widgetManagementService.updateWidget(widget)\n )\n .pipe(take(1))\n .subscribe(() => {\n this._refresh$.next(null);\n });\n }\n\n public onItemsReordered(widgets: Widget[]): void {\n this.$dragAndDropDisabled.set(true);\n this.widgetManagementService\n .updateWidgetConfiguration(widgets)\n .pipe(take(1))\n .subscribe(() => {\n this.$dragAndDropDisabled.set(false);\n this._refresh$.next(null);\n });\n }\n\n private deleteWidget(tabWidget: BasicWidget): void {\n this.$deleteWidget.set(tabWidget);\n this.deleteModalOpen$.next(true);\n }\n\n private getWidthTranslationKey(width: number): string {\n switch (width) {\n case 1:\n return 'widgetTabManagement.width.small.title';\n case 2:\n return 'widgetTabManagement.width.medium.title';\n case 3:\n return 'widgetTabManagement.width.large.title';\n case 4:\n return 'widgetTabManagement.width.xtraLarge.title';\n default:\n return '-';\n }\n }\n}\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\n<valtimo-carbon-list\n [actionItems]=\"actionItems$ | async\"\n [fields]=\"fields$ | async\"\n [header]=\"false\"\n [items]=\"widgets$ | async\"\n [dragAndDrop]=\"!(singleWidget$ | async)\"\n [dragAndDropDisabled]=\"$dragAndDropDisabled()\"\n [loading]=\"loading$ | async\"\n (itemsReordered)=\"onItemsReordered($event)\"\n (rowClicked)=\"editWidget($event)\"\n>\n <ng-container carbonToolbarContent>\n <ng-container *ngTemplateOutlet=\"addWidgetButton\"></ng-container>\n </ng-container>\n\n <valtimo-no-results\n [action]=\"addWidgetButton\"\n [description]=\"\n ((singleWidget$ | async)\n ? 'widgetTabManagement.list.noResultsSingle.description'\n : 'widgetTabManagement.list.noResults.description'\n ) | translate\n \"\n [title]=\"\n ((singleWidget$ | async)\n ? 'widgetTabManagement.list.noResultsSingle.title'\n : 'widgetTabManagement.list.noResults.title'\n ) | translate\n \"\n ></valtimo-no-results>\n</valtimo-carbon-list>\n\n<ng-template #addWidgetButton>\n <button\n cdsButton=\"primary\"\n (click)=\"openAddModal()\"\n [disabled]=\"(singleWidget$ | async) && ((widgets$ | async) || []).length === 1\"\n >\n {{ 'widgetTabManagement.list.add' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n</ng-template>\n\n<valtimo-widget-management-wizard\n [editMode]=\"$isEditMode()\"\n [open]=\"$isWizardOpen()\"\n [disableWidthStep]=\"disableWidthStep$ | async\"\n [disableDuplicate]=\"disableDuplicate$ | async\"\n [disableTitleInput]=\"disableTitleInput$ | async\"\n (closeEvent)=\"onCloseEvent($event)\"\n></valtimo-widget-management-wizard>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"Are you sure you want to delete this widget?\"\n [outputOnConfirm]=\"$deleteWidget()\"\n [showModalSubject$]=\"deleteModalOpen$\"\n titleTranslationKey=\"interface.delete\"\n (confirmEvent)=\"onDeleteConfirm($event)\"\n></valtimo-confirmation-modal>\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\nimport {CommonModule} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, Inject, Input, signal} from '@angular/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {TabsModule} from 'carbon-components-angular';\nimport {WIDGET_MANAGEMENT_SERVICE} from '../../../constants';\nimport {IWidgetManagementService} from '../../../interfaces';\nimport {WidgetManagementEditorComponent} from '../management-editor/widget-management-editor.component';\nimport {map, Observable, take} from 'rxjs';\nimport {BasicWidget, WidgetManagementTab, WidgetType, WidgetWidth} from '../../../models';\nimport {EditorModel, JsonEditorComponent} from '@valtimo/components';\n\n@Component({\n selector: 'valtimo-widget-management',\n templateUrl: './widget-management.component.html',\n styleUrl: './widget-management.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CommonModule,\n WidgetManagementEditorComponent,\n TabsModule,\n TranslateModule,\n JsonEditorComponent,\n ],\n})\nexport class WidgetManagementComponent {\n @Input() public set params(value: any) {\n if (!value) return;\n this.widgetManagementService.initParams(value);\n }\n @Input() availableWidgetTypes: WidgetType[];\n @Input() public disableWidthStep = false;\n @Input() public disableDuplicate = false;\n @Input() public singleWidget = false;\n @Input() public disableJsonEditor = false;\n @Input() public defaultWidth!: WidgetWidth;\n @Input() public disableTitleInput = false;\n\n public readonly jsonModel$: Observable<EditorModel> = this.widgetManagementService\n .getWidgetConfiguration()\n .pipe(\n map((widgets: BasicWidget[]) => ({\n value: JSON.stringify(widgets),\n language: 'json',\n }))\n );\n\n public readonly $activeTab = signal<WidgetManagementTab>(WidgetManagementTab.VISUAL);\n public readonly WidgetManagementTab = WidgetManagementTab;\n\n constructor(\n @Inject(WIDGET_MANAGEMENT_SERVICE)\n private widgetManagementService: IWidgetManagementService<any>\n ) {}\n\n public onSaveEvent(widgets: BasicWidget[]): void {\n this.widgetManagementService.updateWidgetConfiguration(widgets).pipe(take(1)).subscribe();\n }\n\n public switchTab(tab: WidgetManagementTab): void {\n this.$activeTab.set(tab);\n }\n}\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\n@if (!disableJsonEditor) {\n <cds-tabs type=\"contained\">\n <cds-tab\n [heading]=\"'interface.editor.visualEditor' | translate\"\n (selected)=\"switchTab(WidgetManagementTab.VISUAL)\"\n >\n <ng-container *ngTemplateOutlet=\"widgetEditor\"></ng-container>\n </cds-tab>\n\n <cds-tab\n [heading]=\"'interface.editor.jsonEditor' | translate\"\n (selected)=\"switchTab(WidgetManagementTab.JSON)\"\n >\n <valtimo-json-editor\n *ngIf=\"$activeTab() === WidgetManagementTab.JSON\"\n [model]=\"jsonModel$ | async\"\n [fitPage]=\"true\"\n [fitPageExtraSpace]=\"136\"\n (saveEvent)=\"onSaveEvent($event)\"\n ></valtimo-json-editor>\n </cds-tab>\n </cds-tabs>\n} @else {\n <ng-container *ngTemplateOutlet=\"widgetEditor\"></ng-container>\n}\n\n<ng-template #widgetEditor>\n <valtimo-widget-management-editor\n *ngIf=\"$activeTab() === WidgetManagementTab.VISUAL\"\n [availableWidgetTypes]=\"availableWidgetTypes\"\n [disableWidthStep]=\"disableWidthStep\"\n [disableDuplicate]=\"disableDuplicate\"\n [singleWidget]=\"singleWidget\"\n [defaultWidth]=\"defaultWidth\"\n [disableTitleInput]=\"disableTitleInput\"\n ></valtimo-widget-management-editor>\n</ng-template>\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\nexport * from './management-content';\nexport * from './management-editor/widget-management-editor.component';\nexport * from './management-wizard/widget-management-wizard.component';\nexport * from './management/widget-management.component';\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\nexport * from './layout';\nexport * from './layout-internal';\nexport * from './layout-public';\nexport * from './widget-field';\nexport * from './translation-management';\nexport * from './widget-formio';\nexport * from './widget-collection';\nexport * from './widget-table';\nexport * from './widget-interactive-table';\nexport * from './widget-custom';\nexport * from './widget-block';\nexport * from './widget-container';\nexport * from './widget-management';\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\nimport {WidgetComponentMap, WidgetType} from '../models';\nimport {\n WidgetCollectionComponent,\n WidgetCustomComponent,\n WidgetFieldComponent,\n WidgetFormioComponent,\n WidgetTableComponent,\n} from '../components';\nimport {WidgetInteractiveTableComponent} from '../components/widget-interactive-table';\n\nconst WIDGET_WIDTH_1X = 320;\nconst WIDGET_HEIGHT_1X = 200;\n\nconst DEFAULT_WIDGET_COMPONENT_MAP: WidgetComponentMap = {\n [WidgetType.FORMIO]: WidgetFormioComponent,\n [WidgetType.CUSTOM]: WidgetCustomComponent,\n [WidgetType.COLLECTION]: WidgetCollectionComponent,\n [WidgetType.TABLE]: WidgetTableComponent,\n [WidgetType.INTERACTIVE_TABLE]: WidgetInteractiveTableComponent,\n [WidgetType.FIELDS]: WidgetFieldComponent,\n};\n\nexport {WIDGET_WIDTH_1X, WIDGET_HEIGHT_1X, DEFAULT_WIDGET_COMPONENT_MAP};\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\nimport {InjectionToken} from '@angular/core';\nimport {IWidgetManagementService} from '../interfaces';\n\nconst WIDGET_MANAGEMENT_SERVICE = new InjectionToken<IWidgetManagementService<any>>(\n 'WIDGET_MANAGEMENT_SERVICE'\n);\n\nexport {WIDGET_MANAGEMENT_SERVICE};\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\nexport * from './custom-widget-token';\nexport * from './widget.constants';\nexport * from './widget-management.constants';\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 */\nimport {CommonModule} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Inject,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n} from '@angular/core';\nimport {AbstractControl, FormBuilder, ReactiveFormsModule, Validators} from '@angular/forms';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {CARBON_THEME, CdsThemeService, CurrentCarbonTheme} from '@valtimo/components';\nimport {DropdownModule, InputModule, ListItem, SelectModule} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, filter, map, Observable, Subscription} from 'rxjs';\nimport {IWidgetContentComponent} from '../../../../interfaces';\nimport {CustomWidgetConfig, WidgetCustomContent} from '../../../../models';\nimport {WidgetWizardService} from '../../../../services';\nimport {CUSTOM_WIDGET_TOKEN} from '../../../../constants';\n\n@Component({\n templateUrl: './widget-management-custom.component.html',\n styleUrls: ['./widget-management-custom.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n InputModule,\n ReactiveFormsModule,\n SelectModule,\n DropdownModule,\n ],\n})\nexport class WidgetManagementCustomComponent implements IWidgetContentComponent, OnDestroy, OnInit {\n @Output() public readonly changeValidEvent = new EventEmitter<boolean>();\n\n public readonly form = this.fb.group({\n widgetTitle: this.fb.control(this.widgetWizardService.$widgetTitle(), Validators.required),\n });\n\n public get widgetTitle(): AbstractControl<string | null, string | null> | null {\n return this.form.get('widgetTitle');\n }\n\n public readonly theme$ = this.cdsThemeService.currentTheme$.pipe(\n map((theme: CurrentCarbonTheme) =>\n theme === CurrentCarbonTheme.G10 ? CARBON_THEME.WHITE : CARBON_THEME.G90\n )\n );\n\n private readonly _selectedCustomComponentKey$ = new BehaviorSubject<string | null>(null);\n private readonly _customWidgetConfig$ = new BehaviorSubject<CustomWidgetConfig>({});\n\n public readonly componentListItems$: Observable<ListItem[]> = combineLatest([\n this._customWidgetConfig$,\n this._selectedCustomComponentKey$,\n ]).pipe(\n filter(([config]) => !!config),\n map(([config, selectedKey]) =>\n Object.keys(config).reduce(\n (acc, curr) => [...acc, {content: curr, selected: curr === selectedKey}],\n [] as ListItem[]\n )\n )\n );\n\n private readonly _subscriptions = new Subscription();\n\n constructor(\n @Optional()\n @Inject(CUSTOM_WIDGET_TOKEN)\n private readonly customWidgetConfig: CustomWidgetConfig,\n private readonly cdsThemeService: CdsThemeService,\n private readonly fb: FormBuilder,\n private readonly widgetWizardService: WidgetWizardService\n ) {\n if (customWidgetConfig) this._customWidgetConfig$.next(customWidgetConfig);\n }\n\n public componentDropDownChange(event: {\n item: {content: string; selected: boolean};\n isUpdate: boolean;\n }): void {\n const componentKey = event?.item?.content;\n\n if (!componentKey) return;\n\n this._selectedCustomComponentKey$.next(componentKey);\n this.widgetWizardService.$widgetContent.set({componentKey});\n this.changeValidEvent.emit(true);\n }\n\n public ngOnInit(): void {\n this.openTitleSubscription();\n this.prefill();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n private openTitleSubscription(): void {\n this._subscriptions.add(\n this.widgetTitle?.valueChanges.subscribe(title => {\n this.widgetWizardService.$widgetTitle.set(title);\n })\n );\n }\n\n private prefill(): void {\n const componentKey = (this.widgetWizardService.$widgetContent() as WidgetCustomContent)\n ?.componentKey;\n\n if (!componentKey || Object.keys(this.customWidgetConfig || {}).length === 0) return;\n\n this._selectedCustomComponentKey$.next(componentKey);\n this.changeValidEvent.emit(true);\n }\n}\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\n<form\n class=\"valtimo-widget-management-custom\"\n [formGroup]=\"form\"\n [attr.data-carbon-theme]=\"theme$ | async\"\n>\n <cds-text-label class=\"valtimo-widget-management-field__input\">\n {{ 'widgetTabManagement.content.widgetTitle' | translate }}\n\n <input\n formControlName=\"widgetTitle\"\n cdsText\n [placeholder]=\"'widgetTabManagement.content.widgetTitlePlaceholder' | translate\"\n type=\"text\"\n />\n </cds-text-label>\n\n <!-- For injecting things such as process selector in case management -->\n <ng-container></ng-container>\n\n <cds-label class=\"dropdown-label\">\n {{ 'widgetTabManagement.content.custom.selectComponent' | translate }}\n\n <cds-dropdown\n *ngIf=\"componentListItems$ | async as componentListItems\"\n [appendInline]=\"false\"\n [placeholder]=\"'widgetTabManagement.content.custom.placeholder' | translate\"\n [disabled]=\"componentListItems.length === 0\"\n (selected)=\"componentDropDownChange($event)\"\n >\n <cds-dropdown-list [items]=\"componentListItems\"> </cds-dropdown-list>\n </cds-dropdown>\n </cds-label>\n</form>\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\nexport * from './fields/widget-management-fields.component';\nexport * from './table/widget-management-table.component';\nexport * from './collection/widget-management-collection.component';\nexport * from './custom/widget-management-custom.component';\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 */\nimport {CommonModule} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostBinding,\n OnDestroy,\n OnInit,\n Output,\n ViewEncapsulation,\n effect,\n} from '@angular/core';\nimport {FormArray, FormBuilder, ReactiveFormsModule, Validators} from '@angular/forms';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {CarbonMultiInputModule, MultiInputValues} from '@valtimo/components';\nimport {\n ButtonModule,\n CheckboxModule,\n IconModule,\n InputModule,\n LayerModule,\n} from 'carbon-components-angular';\nimport {debounceTime, Subscription} from 'rxjs';\nimport {WidgetManagementTableComponent} from '../..';\nimport {IWidgetContentComponent} from '../../../../interfaces';\nimport {\n WidgetAction,\n WidgetContentProperties,\n WidgetInteractiveTableContent,\n} from '../../../../models';\nimport {WidgetWizardService} from '../../../../services';\n\n@Component({\n templateUrl: './widget-management-interactive-table.component.html',\n styleUrl: './widget-management-interactive-table.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n ReactiveFormsModule,\n ButtonModule,\n WidgetManagementTableComponent,\n CheckboxModule,\n IconModule,\n CarbonMultiInputModule,\n InputModule,\n LayerModule,\n ],\n})\nexport class WidgetManagementInteractiveTableComponent\n implements IWidgetContentComponent, OnInit, OnDestroy\n{\n @HostBinding('class') public readonly class = 'valtimo-widget-management-interactive-table';\n @Output() public readonly changeValidEvent = new EventEmitter<boolean>();\n\n public formGroup = this.fb.group({\n canStartCase: this.fb.control<boolean>(\n (this.widgetWizardService.$widgetContent() as WidgetInteractiveTableContent)?.canStartCase ??\n false\n ),\n actions: this.fb.control<MultiInputValues>(\n (this.widgetWizardService.$widgetActions()?.map((action: WidgetAction) => ({\n key: action.name,\n value: action.navigateTo,\n })) as MultiInputValues) ?? []\n ),\n rowClickAction: this.fb.control<string>(\n (this.widgetWizardService.$widgetContent() as WidgetInteractiveTableContent)?.rowClickAction\n ?.navigateTo ?? ''\n ),\n });\n\n public get actionsControl(): FormArray {\n return this.formGroup.get('actions') as FormArray;\n }\n\n private readonly _subscriptions = new Subscription();\n\n constructor(\n private readonly fb: FormBuilder,\n private readonly widgetWizardService: WidgetWizardService\n ) {\n effect(() => {\n if (this.widgetWizardService.$editMode()) this.changeValidEvent.emit(true);\n });\n }\n\n public ngOnInit(): void {\n this.openActionsSubscription();\n this.openDetailsSubscription();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public onAddExternalLinkClick(): void {\n this.actionsControl.push(\n this.fb.group({\n key: this.fb.control<string>('', Validators.required),\n value: this.fb.control<string>('', Validators.required),\n })\n );\n }\n\n public removeExternalLink(index: number): void {\n this.actionsControl.removeAt(index);\n }\n\n public onTableChangeValidEvent(valid: boolean): void {\n this.changeValidEvent.emit(valid);\n }\n\n private openActionsSubscription(): void {\n this._subscriptions.add(\n this.actionsControl.valueChanges.pipe(debounceTime(500)).subscribe(() => {\n const valid = !this.actionsControl\n .getRawValue()\n .some(action => !action.key || !action.value);\n this.changeValidEvent.emit(valid);\n\n if (!valid) return;\n this.widgetWizardService.$widgetActions.set(\n this.actionsControl.getRawValue().map((action: {key: string; value: string}) => ({\n name: action.key,\n navigateTo: action.value,\n }))\n );\n })\n );\n }\n\n private openDetailsSubscription(): void {\n this._subscriptions.add(\n this.formGroup.valueChanges.pipe(debounceTime(1000)).subscribe(() => {\n const {canStartCase, rowClickAction} = this.formGroup.getRawValue();\n\n this.widgetWizardService.$widgetContent.update((content: WidgetContentProperties | null) =>\n !content\n ? null\n : ({\n ...content,\n canStartCase,\n rowClickAction: {\n name: '',\n navigateTo: rowClickAction,\n },\n } as WidgetInteractiveTableContent)\n );\n })\n );\n }\n}\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<valtimo-widget-management-table\n [showFirstColumnOption]=\"false\"\n (changeValidEvent)=\"onTableChangeValidEvent($event)\"\n>\n <form [formGroup]=\"formGroup\" class=\"valtimo-widget-management-interactive-table__form\">\n <cds-checkbox formControlName=\"canStartCase\">\n {{ 'ikoManagement.canStartCase' | translate }}\n </cds-checkbox>\n\n <cds-text-label class=\"valtimo-widget-management-interactive-table__row-action\">\n {{ 'ikoManagement.rowAction' | translate }}\n\n <input\n formControlName=\"rowClickAction\"\n cdsText\n cdsLayer=\"1\"\n [placeholder]=\"'ikoManagement.rowAction' | translate\"\n type=\"text\"\n />\n </cds-text-label>\n\n <valtimo-carbon-multi-input\n type=\"keyValue\"\n formControlName=\"actions\"\n [addRowText]=\"'Add external link' | translate\"\n [keyColumnTitle]=\"'interface.name' | translate\"\n [minimumAmountOfRows]=\"0\"\n [valueColumnTitle]=\"'interface.url' | translate\"\n ></valtimo-carbon-multi-input>\n </form>\n</valtimo-widget-management-table>\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// import {CaseWidgetType} from '@valtimo/case';\nimport {Type} from '@angular/core';\n\nimport {\n WidgetManagementCollectionComponent,\n WidgetManagementCustomComponent,\n WidgetManagementFieldsComponent,\n WidgetManagementTableComponent,\n} from '../components/widget-management/management-content';\nimport {WidgetManagementInteractiveTableComponent} from '../components/widget-management/management-content/interactive-table/widget-management-interactive-table.component';\nimport {IWidgetContentComponent} from '../interfaces';\nimport {BasicWidget, WidgetType} from './widget.model';\n\nenum WidgetWizardSteps {\n TYPE,\n WIDTH,\n STYLE,\n CONTENT,\n}\n\nenum WidgetWizardStepsNoWidth {\n TYPE,\n STYLE,\n CONTENT,\n}\n\nenum WidgetWizardCloseEventType {\n CANCEL,\n CREATE,\n EDIT,\n}\n\nenum WidgetStyle {\n DEFAULT = 'default',\n HIGH_CONTRAST = 'high-contrast',\n}\n\ninterface WidgetWizardCloseEvent {\n type: WidgetWizardCloseEventType;\n widget: BasicWidget | null;\n}\n\ninterface WidgetTypeSelection {\n titleKey: string;\n descriptionKey: string;\n illustrationUrl: string;\n type: WidgetType;\n component: Type<IWidgetContentComponent>;\n}\n\nconst AVAILABLE_WIDGETS: WidgetTypeSelection[] = [\n {\n titleKey: 'widgetTabManagement.types.fields.title',\n descriptionKey: 'widgetTabManagement.types.fields.description',\n illustrationUrl: 'valtimo-layout/img/widget-management/types/fields.svg',\n type: WidgetType.FIELDS,\n component: WidgetManagementFieldsComponent,\n },\n {\n titleKey: 'widgetTabManagement.types.custom.title',\n descriptionKey: 'widgetTabManagement.types.custom.description',\n illustrationUrl: 'valtimo-layout/img/widget-management/types/angular.svg',\n type: WidgetType.CUSTOM,\n component: WidgetManagementCustomComponent,\n },\n {\n titleKey: 'widgetTabManagement.types.table.title',\n descriptionKey: 'widgetTabManagement.types.table.description',\n illustrationUrl: 'valtimo-layout/img/widget-management/types/table.svg',\n type: WidgetType.TABLE,\n component: WidgetManagementTableComponent,\n },\n {\n titleKey: 'widgetTabManagement.types.interactive-table.title',\n descriptionKey: 'widgetTabManagement.types.interactive-table.description',\n illustrationUrl: 'valtimo-layout/img/widget-management/types/table.svg',\n type: WidgetType.INTERACTIVE_TABLE,\n component: WidgetManagementInteractiveTableComponent,\n },\n {\n titleKey: 'widgetTabManagement.types.collection.title',\n descriptionKey: 'widgetTabManagement.types.collection.description',\n illustrationUrl: 'valtimo-layout/img/widget-management/types/collection.svg',\n type: WidgetType.COLLECTION,\n component: WidgetManagementCollectionComponent,\n },\n];\n\nconst WIDGET_WIDTH_LABELS: {[key: number]: string} = {\n 1: 'widgetTabManagement.width.small.title',\n 2: 'widgetTabManagement.width.medium.title',\n 3: 'widgetTabManagement.width.large.title',\n 4: 'widgetTabManagement.width.xtraLarge.title',\n};\n\nconst WIDGET_STYLE_LABELS: {[key: string]: string} = {\n [WidgetStyle.DEFAULT]: 'widgetTabManagement.style.default.title',\n [WidgetStyle.HIGH_CONTRAST]: 'widgetTabManagement.style.highContrast.title',\n};\n\nexport {\n WidgetWizardSteps,\n WidgetWizardStepsNoWidth,\n WidgetTypeSelection,\n AVAILABLE_WIDGETS,\n WidgetStyle,\n WIDGET_WIDTH_LABELS,\n WIDGET_STYLE_LABELS,\n WidgetWizardCloseEventType,\n WidgetWizardCloseEvent,\n};\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\nexport * from './widget-content.model';\nexport * from './widget-display.model';\nexport * from './widget-editor.model';\nexport * from './widget-wizard.model';\nexport * from './widget.model';\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\nimport {Injectable} from '@angular/core';\nimport {AbstractControl, FormBuilder, FormGroup, Validators} from '@angular/forms';\nimport {TranslateService} from '@ngx-translate/core';\nimport {ListItem} from 'carbon-components-angular';\nimport {WidgetDisplayTypeKey} from '../models';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WidgetFieldsService {\n public readonly displayTypeItems: ListItem[] = [\n {\n content: this.translateService.instant(\n `widgetTabManagement.content.displayType.${WidgetDisplayTypeKey.TEXT}`\n ),\n id: WidgetDisplayTypeKey.TEXT,\n selected: true,\n },\n {\n content: this.translateService.instant(\n `widgetTabManagement.content.displayType.${WidgetDisplayTypeKey.BOOLEAN}`\n ),\n id: WidgetDisplayTypeKey.BOOLEAN,\n selected: false,\n },\n {\n content: this.translateService.instant(\n `widgetTabManagement.content.displayType.${WidgetDisplayTypeKey.CURRENCY}`\n ),\n id: WidgetDisplayTypeKey.CURRENCY,\n selected: false,\n },\n {\n content: this.translateService.instant(\n `widgetTabManagement.content.displayType.${WidgetDisplayTypeKey.DATE}`\n ),\n id: WidgetDisplayTypeKey.DATE,\n selected: false,\n },\n {\n content: this.translateService.instant(\n `widgetTabManagement.content.displayType.${WidgetDisplayTypeKey.DATE_TIME}`\n ),\n id: WidgetDisplayTypeKey.DATE_TIME,\n selected: false,\n },\n {\n content: this.translateService.instant(\n `widgetTabManagement.content.displayType.${WidgetDisplayTypeKey.ENUM}`\n ),\n id: WidgetDisplayTypeKey.ENUM,\n selected: false,\n },\n {\n content: this.translateService.instant(\n `widgetTabManagement.content.displayType.${WidgetDisplayTypeKey.NUMBER}`\n ),\n id: WidgetDisplayTypeKey.NUMBER,\n selected: false,\n },\n {\n content: this.translateService.instant(\n `widgetTabManagement.content.displayType.${WidgetDisplayTypeKey.PERCENT}`\n ),\n id: WidgetDisplayTypeKey.PERCENT,\n selected: false,\n },\n {\n content: this.translateService.instant(\n `widgetTabManagement.content.displayType.${WidgetDisplayTypeKey.LINK}`\n ),\n id: WidgetDisplayTypeKey.LINK,\n selected: false,\n },\n ];\n\n constructor(\n private readonly fb: FormBuilder,\n private readonly translateService: TranslateService\n ) {}\n\n public getDisplayItemsSelected(control: AbstractControl): ListItem[] {\n const typeControlValue: ListItem = control.get('type')?.value;\n\n if (!typeControlValue) return this.displayTypeItems;\n\n return this.displayTypeItems.map((item: ListItem) => ({\n ...item,\n selected: typeControlValue.id === item.id && typeControlValue.selected,\n }));\n }\n\n public onDisplayTypeSelected(\n mainKeysArray: string[],\n formGroup: FormGroup,\n event: {item: ListItem}\n ): void {\n const extraControlKeys = Object.keys(formGroup.controls).filter(\n (key: string) => !mainKeysArray.includes(key)\n );\n\n extraControlKeys.forEach((controlKey: string) => formGroup.removeControl(controlKey));\n\n switch (event.item.id) {\n case WidgetDisplayTypeKey.BOOLEAN:\n break;\n case WidgetDisplayTypeKey.TEXT:\n formGroup.addControl('ellipsisCharacterLimit', this.fb.control(''));\n break;\n case WidgetDisplayTypeKey.CURRENCY:\n formGroup.addControl('currencyCode', this.fb.control(''));\n formGroup.addControl('display', this.fb.control(''));\n formGroup.addControl('digitsInfo', this.fb.control(''));\n break;\n case WidgetDisplayTypeKey.DATE:\n formGroup.addControl('format', this.fb.control(''));\n break;\n case WidgetDisplayTypeKey.DATE_TIME:\n formGroup.addControl('format', this.fb.control(''));\n break;\n case WidgetDisplayTypeKey.LINK:\n formGroup.addControl('linkText', this.fb.control(''));\n break;\n case WidgetDisplayTypeKey.ENUM:\n formGroup.addControl(\n 'values',\n this.fb.array(\n [\n this.fb.group({\n key: this.fb.control('', Validators.required),\n value: this.fb.control('', Validators.required),\n }),\n ],\n Validators.required\n )\n );\n break;\n default:\n formGroup.addControl('digitsInfo', this.fb.control(''));\n break;\n }\n }\n}\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\nimport {\n computed,\n Injectable,\n Injector,\n runInInjectionContext,\n Signal,\n signal,\n WritableSignal,\n} from '@angular/core';\nimport {\n BasicWidget,\n WidgetAction,\n WidgetContentProperties,\n WidgetStyle,\n WidgetType,\n WidgetTypeSelection,\n WidgetWidth,\n} from '../models';\nimport {Observable} from 'rxjs';\nimport {toObservable} from '@angular/core/rxjs-interop';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WidgetWizardService {\n public readonly $selectedWidget: WritableSignal<WidgetTypeSelection | null> = signal(null);\n\n public readonly $widgetWidth: WritableSignal<WidgetWidth | null> = signal(null);\n\n public readonly $widgetStyle: WritableSignal<WidgetStyle | null> = signal(null);\n\n public readonly $widgetContent: WritableSignal<WidgetContentProperties | null> = signal(null);\n\n public readonly $widgetTitle: WritableSignal<string | null> = signal(null);\n\n public readonly $widgetKey: WritableSignal<string | null> = signal(null);\n\n public readonly $widgetActions: WritableSignal<WidgetAction[] | undefined> = signal(undefined);\n\n private _defaultWidth!: WidgetWidth;\n\n public get defaultWidth(): WidgetWidth {\n return this._defaultWidth;\n }\n\n public readonly $widgetsConfig: Signal<BasicWidget> = computed(() => ({\n key: this.$widgetKey() ?? '',\n title: this.$widgetTitle() ?? '',\n type: this.$selectedWidget()?.type ?? WidgetType.FIELDS,\n width: this.$widgetWidth() || this._defaultWidth || 4,\n highContrast: (this.$widgetStyle() ?? WidgetStyle.DEFAULT) === WidgetStyle.HIGH_CONTRAST,\n properties: this.$widgetContent() ?? ({} as any),\n actions: this.$widgetActions() ?? [],\n }));\n\n public readonly $editMode: WritableSignal<boolean> = signal(false);\n\n public get editMode$(): Observable<boolean> {\n return runInInjectionContext(this.injector, () => toObservable(this.$editMode));\n }\n\n public readonly $usedWidgetKeys: WritableSignal<string[]> = signal([]);\n\n public readonly $availableWidgetTypes: WritableSignal<WidgetType[] | null> = signal(null);\n\n constructor(private readonly injector: Injector) {}\n\n public resetWizard(): void {\n this.$selectedWidget.set(null);\n this.$widgetWidth.set(this._defaultWidth || null);\n this.$widgetStyle.set(null);\n this.$widgetContent.set(null);\n this.$widgetTitle.set(null);\n this.$widgetKey.set(null);\n this.$widgetActions.set(undefined);\n this.$editMode.set(false);\n }\n\n public setDefaultWidth(width: number): void {\n if (!this.isWidgetWidth(width)) return;\n this._defaultWidth = width;\n this.$widgetWidth.set(this._defaultWidth);\n }\n\n private isWidgetWidth(value: unknown): value is WidgetWidth {\n return [1, 2, 3, 4].includes(value as number);\n }\n}\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\nexport * from './layout.service';\nexport * from './widget-fields.service';\nexport * from './widget-wizard.service';\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 */\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {RouterModule} from '@angular/router';\nimport {\n AlertModule,\n LeftSidebarModule,\n MenuRoutingModule,\n PageHeaderModule,\n PromptModule,\n RightSidebarModule,\n TopbarModule,\n} from '@valtimo/components';\nimport {GlobalNotificationComponent} from '@valtimo/shared';\nimport {LayoutInternalComponent} from './components/layout-internal/layout-internal.component';\nimport {LayoutPublicComponent} from './components/layout-public/layout-public.component';\nimport {LayoutComponent} from './components/layout/layout.component';\nimport { PlaceholderModule } from 'carbon-components-angular';\n\n@NgModule({\n declarations: [LayoutComponent, LayoutPublicComponent, LayoutInternalComponent],\n imports: [\n RouterModule,\n MenuRoutingModule,\n TopbarModule,\n LeftSidebarModule,\n RightSidebarModule,\n PageHeaderModule,\n AlertModule,\n CommonModule,\n PromptModule,\n GlobalNotificationComponent,\n PlaceholderModule\n ],\n exports: [LayoutComponent],\n})\nexport class LayoutModule {}\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 */\nimport {NgModule} from '@angular/core';\nimport {RouterModule, Routes} from '@angular/router';\nimport {ROLE_ADMIN} from '@valtimo/shared';\nimport {AuthGuardService} from '@valtimo/security';\nimport {TranslationManagementComponent} from './components/translation-management/translation-management.component';\n\nconst routes: Routes = [\n {\n path: 'translation-management',\n component: TranslationManagementComponent,\n canActivate: [AuthGuardService],\n data: {title: 'Translations', roles: [ROLE_ADMIN]},\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class TranslationManagementRoutingModule {}\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\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {TranslationManagementComponent} from './components/translation-management/translation-management.component';\nimport {TranslationManagementRoutingModule} from './translation-management-routing.module';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {\n CarbonMultiInputModule,\n ConfirmationModalModule,\n MultiInputFormModule,\n RenderInPageHeaderDirective,\n} from '@valtimo/components';\nimport {ButtonModule, IconModule, LoadingModule} from 'carbon-components-angular';\n\n@NgModule({\n declarations: [TranslationManagementComponent],\n imports: [\n CommonModule,\n TranslateModule,\n TranslationManagementRoutingModule,\n MultiInputFormModule,\n CarbonMultiInputModule,\n LoadingModule,\n RenderInPageHeaderDirective,\n ButtonModule,\n IconModule,\n ConfirmationModalModule,\n ],\n exports: [],\n})\nexport class TranslationManagementModule {}\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\nimport {EventEmitter} from '@angular/core';\n\nexport interface IWidgetContentComponent {\n changeValidEvent: EventEmitter<boolean>;\n setTitleInputVisible?: (visible: boolean) => void;\n}\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\nexport * from './widget-management-service.interface';\nexport * from './widget-content-component.interface';\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\n/*\n * Public API Surface of layout\n */\n\nexport * from './lib/services';\nexport * from './lib/services/widget-layout.service';\nexport * from './lib/components/layout/layout.component';\nexport * from './lib/layout.module';\nexport * from './lib/translation-management.module';\nexport * from './lib/components';\nexport * from './lib/models';\nexport * from './lib/constants';\nexport * from './lib/interfaces';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i4","i5.WidgetFieldsService","i5.WidgetWizardService","i3","i4.WidgetWizardService","i6","i7","i3.WidgetWizardService","i5","i4.WidgetFieldsService","i1","i1.LayoutService","i2","i5.LayoutPublicComponent","i6.LayoutInternalComponent","filter","i2.WidgetLayoutService","i1.WidgetLayoutService","uuid","i1.WidgetWizardService","i6.WidgetWizardContentStepComponent","i7.WidgetWizardStyleStepComponent","i8.WidgetWizardTypeStepComponent","i9.WidgetWizardWidthStepComponent","i2.WidgetWizardService"],"mappings":"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"}
|