{"version":3,"file":"valtimo-form-management.mjs","sources":["../../../../projects/valtimo/form-management/src/lib/services/form-management.service.ts","../../../../projects/valtimo/form-management/src/lib/constants/form-management.test-ids.ts","../../../../projects/valtimo/form-management/src/lib/constants/index.ts","../../../../projects/valtimo/form-management/src/lib/utils/form-management.utils.ts","../../../../projects/valtimo/form-management/src/lib/utils/index.ts","../../../../projects/valtimo/form-management/src/lib/validators/no-duplicate-form.validator.ts","../../../../projects/valtimo/form-management/src/lib/services/index.ts","../../../../projects/valtimo/form-management/src/lib/components/form-management-create/form-management-create.component.ts","../../../../projects/valtimo/form-management/src/lib/components/form-management-create/form-management-create.component.html","../../../../projects/valtimo/form-management/src/lib/components/form-management-create/index.ts","../../../../projects/valtimo/form-management/src/lib/components/form-management-list/form-management-list.component.ts","../../../../projects/valtimo/form-management/src/lib/components/form-management-list/form-management-list.component.html","../../../../projects/valtimo/form-management/src/lib/components/form-management-list/index.ts","../../../../projects/valtimo/form-management/src/lib/components/form-management/form-management.component.ts","../../../../projects/valtimo/form-management/src/lib/components/form-management/form-management.component.html","../../../../projects/valtimo/form-management/src/lib/models/form-definition.model.ts","../../../../projects/valtimo/form-management/src/lib/models/form-edit-tabs.enum.ts","../../../../projects/valtimo/form-management/src/lib/models/form-management.model.ts","../../../../projects/valtimo/form-management/src/lib/models/index.ts","../../../../projects/valtimo/form-management/src/lib/components/form-management-duplicate/form-management-duplicate.component.ts","../../../../projects/valtimo/form-management/src/lib/components/form-management-duplicate/form-management-duplicate.component.html","../../../../projects/valtimo/form-management/src/lib/components/form-management-duplicate/index.ts","../../../../projects/valtimo/form-management/src/lib/components/form-management-upload/form-management-upload.component.ts","../../../../projects/valtimo/form-management/src/lib/components/form-management-upload/form-management-upload.component.html","../../../../projects/valtimo/form-management/src/lib/components/form-management-upload/index.ts","../../../../projects/valtimo/form-management/src/lib/components/form-management-edit/form-management-edit.component.ts","../../../../projects/valtimo/form-management/src/lib/components/form-management-edit/form-management-edit.component.html","../../../../projects/valtimo/form-management/src/lib/components/form-management-edit/index.ts","../../../../projects/valtimo/form-management/src/lib/components/index.ts","../../../../projects/valtimo/form-management/src/lib/form-management.module.ts","../../../../projects/valtimo/form-management/src/public-api.ts","../../../../projects/valtimo/form-management/src/valtimo-form-management.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';\nimport {HttpClient} from '@angular/common/http';\nimport {\n  CreateFormDefinitionRequest,\n  FormDefinition,\n  ModifyFormDefinitionRequest,\n  QueryFormsResponse,\n} from '../models';\nimport {Observable, of} from 'rxjs';\nimport {BaseApiService, ConfigService, Page} from '@valtimo/shared';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class FormManagementService extends BaseApiService {\n  constructor(\n    protected readonly httpClient: HttpClient,\n    protected readonly configService: ConfigService\n  ) {\n    super(httpClient, configService);\n  }\n\n  public getFormDefinition(formDefinitionId: string): Observable<FormDefinition> {\n    return this.httpClient.get<FormDefinition>(\n      this.getApiUrl(`/management/v1/form/${formDefinitionId}`)\n    );\n  }\n\n  public getFormDefinitionCase(\n    caseDefinitionKey: string,\n    caseDefinitionVersionTag: string,\n    formDefinitionId: string\n  ): Observable<FormDefinition> {\n    return this.httpClient.get<FormDefinition>(\n      this.getApiUrl(\n        `/management/v1/case-definition/${caseDefinitionKey}/version/${caseDefinitionVersionTag}/form/${formDefinitionId}`\n      )\n    );\n  }\n\n  public existsFormDefinition(formDefinitionName: string): Observable<boolean> {\n    if (!formDefinitionName) return of(false);\n\n    return this.httpClient.get<boolean>(\n      this.getApiUrl(`/management/v1/form/exists/${formDefinitionName}`)\n    );\n  }\n\n  public existsFormDefinitionCase(\n    caseDefinitionKey: string,\n    caseDefinitionVersionTag: string,\n    formDefinitionName: string\n  ): Observable<boolean> {\n    if (!formDefinitionName || !caseDefinitionKey || !caseDefinitionVersionTag) return of(false);\n\n    return this.httpClient.get<boolean>(\n      this.getApiUrl(\n        `management/v1/case-definition/${caseDefinitionKey}/version/${caseDefinitionVersionTag}/form/${formDefinitionName}/exists`\n      )\n    );\n  }\n\n  public queryFormDefinitions(params?: any): Observable<QueryFormsResponse> {\n    return this.httpClient.get<QueryFormsResponse>(this.getApiUrl(`/management/v1/form`), {\n      params,\n    });\n  }\n\n  public queryFormDefinitionsCase(\n    caseDefinitionKey: string,\n    caseDefinitionVersionTag: string,\n    params?: any\n  ): Observable<QueryFormsResponse> {\n    return this.httpClient.get<QueryFormsResponse>(\n      this.getApiUrl(\n        `/management/v1/case-definition/${caseDefinitionKey}/version/${caseDefinitionVersionTag}/form`\n      ),\n      {\n        params,\n      }\n    );\n  }\n\n  public createFormDefinition(request: CreateFormDefinitionRequest): Observable<FormDefinition> {\n    return this.httpClient.post<FormDefinition>(this.getApiUrl(`/management/v1/form`), request);\n  }\n\n  public createFormDefinitionsCase(\n    caseDefinitionKey: string,\n    caseDefinitionVersionTag: string,\n    request: CreateFormDefinitionRequest\n  ): Observable<FormDefinition> {\n    return this.httpClient.post<FormDefinition>(\n      this.getApiUrl(\n        `/management/v1/case-definition/${caseDefinitionKey}/version/${caseDefinitionVersionTag}/form`\n      ),\n      request\n    );\n  }\n\n  public modifyFormDefinition(request: ModifyFormDefinitionRequest): Observable<FormDefinition> {\n    return this.httpClient.put<FormDefinition>(this.getApiUrl(`/management/v1/form`), request);\n  }\n\n  public modifyFormDefinitionCase(\n    caseDefinitionKey: string,\n    caseDefinitionVersionTag: string,\n    request: ModifyFormDefinitionRequest\n  ): Observable<FormDefinition> {\n    return this.httpClient.put<FormDefinition>(\n      this.getApiUrl(\n        `/management/v1/case-definition/${caseDefinitionKey}/version/${caseDefinitionVersionTag}/form`\n      ),\n      request\n    );\n  }\n\n  public deleteFormDefinition(formDefinitionId: string): Observable<void> {\n    return this.httpClient.delete<void>(this.getApiUrl(`/management/v1/form/${formDefinitionId}`));\n  }\n\n  public deleteFormDefinitionCase(\n    caseDefinitionKey: string,\n    caseDefinitionVersionTag: string,\n    formDefinitionId: string\n  ): Observable<void> {\n    return this.httpClient.delete<void>(\n      this.getApiUrl(\n        `/management/v1/case-definition/${caseDefinitionKey}/version/${caseDefinitionVersionTag}/form/${formDefinitionId}`\n      )\n    );\n  }\n\n  // Building block form management methods\n\n  public getFormDefinitionBuildingBlock(\n    buildingBlockDefinitionKey: string,\n    buildingBlockDefinitionVersionTag: string,\n    formDefinitionId: string\n  ): Observable<FormDefinition> {\n    return this.httpClient.get<FormDefinition>(\n      this.getApiUrl(\n        `/management/v1/building-block/${buildingBlockDefinitionKey}/version/${buildingBlockDefinitionVersionTag}/form/${formDefinitionId}`\n      )\n    );\n  }\n\n  public existsFormDefinitionBuildingBlock(\n    buildingBlockDefinitionKey: string,\n    buildingBlockDefinitionVersionTag: string,\n    formDefinitionName: string\n  ): Observable<boolean> {\n    if (!formDefinitionName || !buildingBlockDefinitionKey || !buildingBlockDefinitionVersionTag)\n      return of(false);\n\n    return this.httpClient.get<boolean>(\n      this.getApiUrl(\n        `management/v1/building-block/${buildingBlockDefinitionKey}/version/${buildingBlockDefinitionVersionTag}/form/${formDefinitionName}/exists`\n      )\n    );\n  }\n\n  public queryFormDefinitionsBuildingBlock(\n    buildingBlockDefinitionKey: string,\n    buildingBlockDefinitionVersionTag: string,\n    params?: any\n  ): Observable<Page<FormDefinition>> {\n    return this.httpClient.get<Page<FormDefinition>>(\n      this.getApiUrl(\n        `/management/v1/building-block/${buildingBlockDefinitionKey}/version/${buildingBlockDefinitionVersionTag}/form`\n      ),\n      {\n        params,\n      }\n    );\n  }\n\n  public createFormDefinitionsBuildingBlock(\n    buildingBlockDefinitionKey: string,\n    buildingBlockDefinitionVersionTag: string,\n    request: CreateFormDefinitionRequest\n  ): Observable<FormDefinition> {\n    return this.httpClient.post<FormDefinition>(\n      this.getApiUrl(\n        `/management/v1/building-block/${buildingBlockDefinitionKey}/version/${buildingBlockDefinitionVersionTag}/form`\n      ),\n      request\n    );\n  }\n\n  public modifyFormDefinitionBuildingBlock(\n    buildingBlockDefinitionKey: string,\n    buildingBlockDefinitionVersionTag: string,\n    request: ModifyFormDefinitionRequest\n  ): Observable<FormDefinition> {\n    return this.httpClient.put<FormDefinition>(\n      this.getApiUrl(\n        `/management/v1/building-block/${buildingBlockDefinitionKey}/version/${buildingBlockDefinitionVersionTag}/form/${request.id}`\n      ),\n      request\n    );\n  }\n\n  public deleteFormDefinitionBuildingBlock(\n    buildingBlockDefinitionKey: string,\n    buildingBlockDefinitionVersionTag: string,\n    formDefinitionId: string\n  ): Observable<void> {\n    return this.httpClient.delete<void>(\n      this.getApiUrl(\n        `/management/v1/building-block/${buildingBlockDefinitionKey}/version/${buildingBlockDefinitionVersionTag}/form/${formDefinitionId}`\n      )\n    );\n  }\n}\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport const FORM_MANAGEMENT_LIST_TEST_IDS = {\n  createFormButton: 'formManagementCreateFormButton',\n} as const;\n\nexport const FORM_MANAGEMENT_CREATE_TEST_IDS = {\n  nameInput: 'formManagementCreateNameInput',\n  submitButton: 'formManagementCreateSubmitButton',\n} as const;\n\nexport const FORM_MANAGEMENT_EDIT_TEST_IDS = {\n  saveButton: 'formManagementEditSaveButton',\n} as const;\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './form-management.test-ids';\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 {ActivatedRoute} from '@angular/router';\nimport {\n  getBuildingBlockManagementRouteParams,\n  getCaseManagementRouteParams,\n  ManagementContext,\n} from '@valtimo/shared';\nimport {combineLatest, Observable, of} from 'rxjs';\nimport {distinctUntilChanged, map, switchMap} from 'rxjs/operators';\nimport {FormManagementParams} from '../models';\n\nfunction getContextObservable(route: ActivatedRoute): Observable<ManagementContext | '' | null> {\n  return route.data.pipe(\n    map(data => (data && (data['context'] as ManagementContext)) || null),\n    distinctUntilChanged()\n  );\n}\n\nfunction getFormManagementRouteParamsAndContext(\n  route: ActivatedRoute\n): Observable<[ManagementContext | null, FormManagementParams]> {\n  const context$ = getContextObservable(route);\n\n  return context$.pipe(\n    switchMap(context => {\n      if (context === 'case') {\n        return combineLatest([of(context), getCaseManagementRouteParams(route, true)]).pipe(\n          map(\n            ([ctx, params]) =>\n              [\n                ctx,\n                {\n                  caseDefinitionKey: params?.caseDefinitionKey,\n                  caseDefinitionVersionTag: params?.caseDefinitionVersionTag,\n                },\n              ] as [ManagementContext, FormManagementParams]\n          )\n        );\n      }\n\n      if (context === 'buildingBlock') {\n        return combineLatest([of(context), getBuildingBlockManagementRouteParams(route, true)]).pipe(\n          map(\n            ([ctx, params]) =>\n              [\n                ctx,\n                {\n                  buildingBlockDefinitionKey: params?.buildingBlockDefinitionKey,\n                  buildingBlockDefinitionVersionTag: params?.buildingBlockDefinitionVersionTag,\n                },\n              ] as [ManagementContext, FormManagementParams]\n          )\n        );\n      }\n\n      const fallbackParams: FormManagementParams = {};\n      return of([context, fallbackParams] as [ManagementContext | null, FormManagementParams]);\n    })\n  );\n}\n\nexport {getContextObservable, getFormManagementRouteParamsAndContext};\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 './form-management.utils';\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 {FormManagementService} from '../services';\nimport {AbstractControl, AsyncValidatorFn, ValidationErrors} from '@angular/forms';\nimport {ManagementContext} from '@valtimo/shared';\nimport {map, Observable} from 'rxjs';\nimport {FormManagementParams} from '../models';\n\nexport function noDuplicateFormValidator(\n  context: ManagementContext | '' | null,\n  params: FormManagementParams,\n  formManagementService: FormManagementService\n): AsyncValidatorFn {\n  return (control: AbstractControl): Observable<ValidationErrors> => {\n    let exists$: Observable<boolean>;\n\n    switch (context) {\n      case 'case':\n        exists$ = formManagementService.existsFormDefinitionCase(\n          params.caseDefinitionKey!,\n          params.caseDefinitionVersionTag!,\n          control.value.toString()\n        );\n        break;\n      case 'buildingBlock':\n        exists$ = formManagementService.existsFormDefinitionBuildingBlock(\n          params.buildingBlockDefinitionKey!,\n          params.buildingBlockDefinitionVersionTag!,\n          control.value.toString()\n        );\n        break;\n      default:\n        exists$ = formManagementService.existsFormDefinition(control.value.toString());\n        break;\n    }\n\n    return exists$.pipe(map((result: boolean) => (result ? {duplicate: true} : null)));\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 './form-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\nimport {CommonModule} from '@angular/common';\nimport {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\nimport {FormBuilder, FormControl, FormGroup, ReactiveFormsModule, Validators} from '@angular/forms';\nimport {ActivatedRoute} from '@angular/router';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {ValtimoCdsModalDirective, WidgetModule} from '@valtimo/components';\nimport {getCaseManagementRouteParams} from '@valtimo/shared';\nimport {\n  ButtonModule,\n  InputModule,\n  LayerModule,\n  ModalModule,\n  TilesModule,\n} from 'carbon-components-angular';\nimport {switchMap, tap} from 'rxjs';\nimport {filter, take} from 'rxjs/operators';\nimport {FORM_MANAGEMENT_CREATE_TEST_IDS} from '../../constants';\nimport {CreateFormDefinitionRequest} from '../../models';\nimport {FormManagementService} from '../../services';\nimport {getContextObservable, getFormManagementRouteParamsAndContext} from '../../utils';\nimport {noDuplicateFormValidator} from '../../validators/no-duplicate-form.validator';\n\n@Component({\n  selector: 'valtimo-form-management-create',\n  templateUrl: './form-management-create.component.html',\n  styleUrls: ['./form-management-create.component.scss'],\n  standalone: true,\n  imports: [\n    CommonModule,\n    ReactiveFormsModule,\n    TranslateModule,\n    ButtonModule,\n    InputModule,\n    WidgetModule,\n    InputModule,\n    TilesModule,\n    LayerModule,\n    ModalModule,\n    ValtimoCdsModalDirective,\n    ButtonModule,\n  ],\n})\nexport class FormManagementCreateComponent implements OnInit {\n  @Input() public readonly upload = false;\n\n  @Output() public readonly goBackEvent = new EventEmitter<void>();\n  @Output() public readonly afterCreateEvent = new EventEmitter<string>();\n  @Output() public readonly afterUploadEvent = new EventEmitter<string>();\n\n  public readonly context$ = getContextObservable(this.route);\n\n  public readonly caseManagementRouteParams$ = this.context$.pipe(\n    filter(context => context === 'case'),\n    switchMap(() => getCaseManagementRouteParams(this.route))\n  );\n\n  public form: FormGroup;\n\n  protected readonly testIds = FORM_MANAGEMENT_CREATE_TEST_IDS;\n\n  constructor(\n    private readonly formManagementService: FormManagementService,\n    private readonly formBuilder: FormBuilder,\n    private readonly route: ActivatedRoute\n  ) {}\n\n  public ngOnInit(): void {\n    this.initForm();\n  }\n\n  private initForm(): void {\n    getFormManagementRouteParamsAndContext(this.route)\n      .pipe(\n        take(1),\n        tap(([context, params]) => {\n          this.form = this.formBuilder.group({\n            name: new FormControl('', Validators.required, [\n              noDuplicateFormValidator(context, params, this.formManagementService),\n            ]),\n          });\n        })\n      )\n      .subscribe();\n  }\n\n  public get formControls(): FormGroup['controls'] {\n    return this.form?.controls;\n  }\n\n  public onBackButtonClick(): void {\n    this.goBackEvent.emit();\n  }\n\n  public reset(): void {\n    this.form.setValue({name: ''});\n  }\n\n  public onCloseEvent(): void {\n    this.goBackEvent.emit();\n  }\n\n  public createFormDefinition(): void {\n    const emptyForm = {display: 'form', components: []};\n    const request: CreateFormDefinitionRequest = {\n      name: this.form.value.name,\n      formDefinition: JSON.stringify(emptyForm),\n    };\n\n    getFormManagementRouteParamsAndContext(this.route)\n      .pipe(\n        take(1),\n        switchMap(([context, params]) => {\n          switch (context) {\n            case 'case':\n              return this.formManagementService.createFormDefinitionsCase(\n                params.caseDefinitionKey!,\n                params.caseDefinitionVersionTag!,\n                request\n              );\n            case 'buildingBlock':\n              return this.formManagementService.createFormDefinitionsBuildingBlock(\n                params.buildingBlockDefinitionKey!,\n                params.buildingBlockDefinitionVersionTag!,\n                request\n              );\n            default:\n              return this.formManagementService.createFormDefinition(request);\n          }\n        }),\n        tap(formDefinition => {\n          if (this.upload) {\n            this.afterUploadEvent.emit(formDefinition.id);\n          } else {\n            this.afterCreateEvent.emit(formDefinition.id);\n          }\n        })\n      )\n      .subscribe();\n  }\n\n  public onSubmit(event: Event): void {\n    event.preventDefault();\n    event.stopPropagation();\n\n    this.form.markAllAsTouched();\n\n    if (this.form.invalid) {\n      return;\n    }\n\n    this.createFormDefinition();\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  valtimoCdsModal\n  class=\"form-management-create\"\n  size=\"sm\"\n  [cdsLayer]=\"0\"\n  [open]=\"true\"\n  (close)=\"onCloseEvent()\"\n>\n  <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCloseEvent()\">\n    <h3 cdsModalHeaderHeading>\n      {{ 'formManagement.add' | translate }}\n    </h3>\n  </cds-modal-header>\n\n  <form *ngIf=\"form\" [formGroup]=\"form\" (ngSubmit)=\"onSubmit($event)\">\n    <section cdsModalContent [cdsLayer]=\"1\">\n      <cds-label\n        [invalid]=\"formControls?.name?.touched && formControls?.name?.errors\"\n        [invalidText]=\"\n          (formControls?.name?.errors?.required && ('formManagement.nameIsRequired' | translate)) ||\n          (formControls?.name?.errors?.duplicate && ('formManagement.nameIsInUse' | translate))\n        \"\n      >\n        {{ 'formManagement.name' | translate }}\n\n        <input\n          cdsText\n          type=\"text\"\n          id=\"name\"\n          formControlName=\"name\"\n          [invalid]=\"formControls?.name?.touched && formControls?.name?.errors\"\n          required\n          [attr.data-test-id]=\"testIds.nameInput\"\n        />\n      </cds-label>\n    </section>\n\n    <cds-modal-footer [cdsLayer]=\"1\">\n      <button cdsButton=\"secondary\" (click)=\"$event.preventDefault(); onBackButtonClick()\">\n        {{ 'interface.cancel' | translate }}\n      </button>\n\n      <button\n        cdsButton=\"primary\"\n        type=\"submit\"\n        [disabled]=\"form?.invalid\"\n        [attr.data-test-id]=\"testIds.submitButton\"\n      >\n        {{ 'interface.create' | translate }}\n      </button>\n    </cds-modal-footer>\n  </form>\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 */\n\nexport * from './form-management-create.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 {CommonModule} from '@angular/common';\nimport {Component, EventEmitter, Output} from '@angular/core';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {ActivatedRoute} from '@angular/router';\nimport {Upload16} from '@carbon/icons';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {\n  ActionItem,\n  CarbonListModule,\n  ColumnConfig,\n  ConfirmationModalModule,\n  Pagination,\n  ViewType,\n} from '@valtimo/components';\nimport {\n  DraftVersionService,\n  EditPermissionsService,\n  EnvironmentService,\n  getCaseManagementRouteParams,\n  getCaseManagementRouteParamsAndContext,\n  GlobalNotificationService,\n} from '@valtimo/shared';\nimport {ButtonModule, IconModule, IconService} from 'carbon-components-angular';\nimport {\n  BehaviorSubject,\n  combineLatest,\n  filter,\n  map,\n  Observable,\n  startWith,\n  switchMap,\n  take,\n  tap,\n} from 'rxjs';\nimport {FORM_MANAGEMENT_LIST_TEST_IDS} from '../../constants';\nimport {FormDefinition} from '../../models';\nimport {FormManagementService} from '../../services';\nimport {getContextObservable} from '../../utils';\n\n@Component({\n  selector: 'valtimo-form-management-list',\n  templateUrl: './form-management-list.component.html',\n  styleUrls: ['./form-management-list.component.scss'],\n  standalone: true,\n  imports: [\n    CommonModule,\n    FormsModule,\n    ReactiveFormsModule,\n    TranslateModule,\n    CarbonListModule,\n    IconModule,\n    ButtonModule,\n    ConfirmationModalModule,\n  ],\n})\nexport class FormManagementListComponent {\n  @Output() public readonly navigateToCreateEvent = new EventEmitter<void>();\n  @Output() public readonly navigateToUploadEvent = new EventEmitter<void>();\n  @Output() public readonly navigateToEditEvent = new EventEmitter<string>();\n\n  public readonly ACTION_ITEMS: ActionItem[] = [\n    {\n      callback: this.editFormDefinition.bind(this),\n      label: 'interface.edit',\n    },\n    {callback: this.showDeleteModal.bind(this), label: 'interface.delete', type: 'danger'},\n  ];\n\n  public readonly showDeleteModal$ = new BehaviorSubject<boolean>(false);\n  public readonly formDefinitionToDelete$ = new BehaviorSubject<FormDefinition | null>(null);\n  public readonly loading$ = new BehaviorSubject<boolean>(true);\n  public readonly searchTerm$ = new BehaviorSubject<string>('');\n\n  protected readonly testIds = FORM_MANAGEMENT_LIST_TEST_IDS;\n\n  public readonly context$ = getContextObservable(this.route);\n\n  public readonly caseManagementRouteParams$ = this.context$.pipe(\n    filter(context => context === 'case'),\n    switchMap(() => getCaseManagementRouteParams(this.route))\n  );\n\n  public readonly hasEditPermissions$: Observable<boolean> = combineLatest([\n    getCaseManagementRouteParams(this.route),\n    this.context$,\n  ]).pipe(\n    switchMap(([params, context]) =>\n      this.editPermissionsService.hasPermissionsToEditBasedOnContext(params, context)\n    )\n  );\n\n  private readonly _collectionSize$ = new BehaviorSubject<number>(0);\n\n  private readonly _partialPagination$ = new BehaviorSubject<Partial<Pagination>>({\n    page: 1,\n    size: 10,\n  });\n\n  private get _partialPagination(): Partial<Pagination> {\n    return this._partialPagination$.getValue();\n  }\n\n  public pagination$: Observable<Pagination> = combineLatest([\n    this._collectionSize$,\n    this._partialPagination$,\n  ]).pipe(\n    map(\n      ([collectionSize, partialPagination]) =>\n        ({...partialPagination, collectionSize}) as Pagination\n    )\n  );\n\n  public readonly formDefinitions$ = combineLatest([\n    this.context$,\n    this.caseManagementRouteParams$.pipe(startWith(null)),\n    this._partialPagination$,\n    this.searchTerm$,\n  ]).pipe(\n    filter(([context, params]) =>\n      context === 'case' ? !!(params?.caseDefinitionVersionTag && params?.caseDefinitionKey) : true\n    ),\n    switchMap(([context, routeParams, pagination, searchTerm]) => {\n      const params = {\n        ...pagination,\n        page: (pagination?.page ?? 1) - 1,\n        ...(searchTerm && {searchTerm}),\n      };\n\n      switch (context) {\n        case 'case':\n          return this.formManagementService.queryFormDefinitionsCase(\n            routeParams?.caseDefinitionKey ?? '',\n            routeParams?.caseDefinitionVersionTag ?? '',\n            params\n          );\n        default:\n        case 'independent':\n          return this.formManagementService.queryFormDefinitions(params);\n      }\n    }),\n    map((res: any) => {\n      this._collectionSize$.next(res?.totalElements);\n\n      return res?.content\n        ? [...res.content].sort((firstForm, secondForm) =>\n            (firstForm.name ?? '').localeCompare(secondForm.name ?? '')\n          )\n        : [];\n    }),\n    tap(() => this.loading$.next(false))\n  );\n\n  public readonly FIELDS: ColumnConfig[] = [\n    {key: 'name', label: 'Form name'},\n    {key: 'readOnly', label: 'Read-only', viewType: ViewType.BOOLEAN},\n  ];\n\n  constructor(\n    private readonly formManagementService: FormManagementService,\n    private readonly iconService: IconService,\n    private readonly route: ActivatedRoute,\n    private readonly environmentService: EnvironmentService,\n    private readonly draftVersionService: DraftVersionService,\n    private readonly notificationService: GlobalNotificationService,\n    private readonly translateService: TranslateService,\n    private readonly editPermissionsService: EditPermissionsService\n  ) {\n    this.iconService.registerAll([Upload16]);\n  }\n\n  public navigateToCreateRoute(): void {\n    this.navigateToCreateEvent.emit();\n  }\n\n  public navigateToUploadRoute(): void {\n    this.navigateToUploadEvent.emit();\n  }\n\n  public paginationClicked(page: number): void {\n    this.updatePagination({page});\n  }\n\n  public paginationSet(size: number): void {\n    this.updatePagination({size, page: 1});\n  }\n\n  public editFormDefinition(formDefinition: FormDefinition): void {\n    this.navigateToEditEvent.emit(formDefinition.id);\n  }\n\n  public searchTermEntered(searchTerm: string): void {\n    this.searchTerm$.next(searchTerm);\n  }\n\n  public showDeleteModal(definition: FormDefinition): void {\n    this.formDefinitionToDelete$.next(definition);\n    this.showDeleteModal$.next(true);\n  }\n\n  public deleteFormDefinition(definition: FormDefinition): void {\n    getCaseManagementRouteParamsAndContext(this.route)\n      .pipe(\n        take(1),\n        switchMap(([context, caseManagementRouteParams]) => {\n          switch (context) {\n            case 'case':\n              return this.formManagementService.deleteFormDefinitionCase(\n                caseManagementRouteParams?.caseDefinitionKey,\n                caseManagementRouteParams?.caseDefinitionVersionTag,\n                definition.id\n              );\n\n            case 'independent':\n            default:\n              return this.formManagementService.deleteFormDefinition(definition.id);\n          }\n        })\n      )\n      .subscribe({\n        next: () => {\n          this.notificationService.showToast({\n            type: 'success',\n            title: this.translateService.instant('formManagement.notifications.deleted'),\n          });\n          this._partialPagination$.next({...this._partialPagination});\n        },\n        error: () => {\n          this.notificationService.showToast({\n            type: 'error',\n            title: this.translateService.instant('formManagement.notifications.deletionError'),\n          });\n        },\n      });\n  }\n\n  private updatePagination(update: Partial<Pagination>): void {\n    this._partialPagination$.next({...this._partialPagination, ...update});\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-carbon-list\n  *ngIf=\"{\n    formDefinitions: formDefinitions$ | async,\n    pagination: pagination$ | async,\n    loading: loading$ | async,\n    context: context$ | async,\n    hasEditPermissions: hasEditPermissions$ | async,\n  } as obs\"\n  [showActionItems]=\"obs.hasEditPermissions\"\n  [actionItems]=\"ACTION_ITEMS\"\n  [fields]=\"FIELDS\"\n  [header]=\"false\"\n  [isSearchable]=\"true\"\n  [items]=\"obs?.formDefinitions || []\"\n  [pagination]=\"obs.pagination\"\n  [loading]=\"obs.loading\"\n  paginationIdentifier=\"formManagementList\"\n  (paginationClicked)=\"paginationClicked($event)\"\n  (paginationSet)=\"paginationSet($event)\"\n  (rowClicked)=\"editFormDefinition($event)\"\n  (search)=\"searchTermEntered($event)\"\n>\n  <ng-container *ngIf=\"obs.hasEditPermissions\" carbonToolbarContent>\n    <button cdsButton=\"ghost\" [iconOnly]=\"true\" (click)=\"navigateToUploadRoute()\">\n      <svg cdsIcon=\"upload\" size=\"16\"></svg>\n    </button>\n\n    <ng-container [ngTemplateOutlet]=\"createFormButton\"></ng-container>\n  </ng-container>\n\n  <valtimo-no-results\n    [action]=\"createFormButton\"\n    [description]=\"'formManagement.noResults.' + obs.context + 'Description' | translate\"\n    [title]=\"'formManagement.noResults.title' | translate\"\n  ></valtimo-no-results>\n</valtimo-carbon-list>\n\n<valtimo-confirmation-modal\n  confirmButtonTextTranslationKey=\"interface.delete\"\n  confirmButtonType=\"danger\"\n  contentTranslationKey=\"interface.deleteConfirmation\"\n  cancelButtonTextTranslationKey=\"interface.cancel\"\n  [outputOnConfirm]=\"formDefinitionToDelete$ | async\"\n  [showModalSubject$]=\"showDeleteModal$\"\n  titleTranslationKey=\"dashboardManagement.delete\"\n  (confirmEvent)=\"deleteFormDefinition($event)\"\n></valtimo-confirmation-modal>\n\n<ng-template #createFormButton>\n  <button\n    *ngIf=\"hasEditPermissions$ | async\"\n    cdsButton=\"primary\"\n    (click)=\"navigateToCreateRoute()\"\n    [attr.data-test-id]=\"testIds.createFormButton\"\n  >\n    {{ 'Create Form' | translate }}\n\n    <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n  </button>\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 './form-management-list.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 {ChangeDetectionStrategy, Component} from '@angular/core';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {TranslateService} from '@ngx-translate/core';\nimport {GlobalNotificationService} from '@valtimo/shared';\nimport {ButtonModule} from 'carbon-components-angular';\nimport {BehaviorSubject} from 'rxjs';\nimport {FormManagementCreateComponent} from '../form-management-create';\nimport {FormManagementListComponent} from '../form-management-list';\n\n@Component({\n  templateUrl: './form-management.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [\n    CommonModule,\n    ButtonModule,\n    FormManagementListComponent,\n    FormManagementCreateComponent,\n  ],\n})\nexport class FormManagementComponent {\n  public readonly create$ = new BehaviorSubject<boolean>(false);\n  public readonly upload$ = new BehaviorSubject<boolean>(false);\n\n  constructor(\n    private readonly route: ActivatedRoute,\n    private readonly router: Router,\n    private readonly notificationService: GlobalNotificationService,\n    private readonly translateService: TranslateService\n  ) {}\n\n  public onNavigateToCreateEvent(): void {\n    this.create$.next(true);\n  }\n\n  public onGoBackFromCreateEvent(): void {\n    this.create$.next(false);\n    this.upload$.next(false);\n  }\n\n  public onFormDefinitionEditEvent(formDefinitionId: string, upload = false): void {\n    this.router.navigate([formDefinitionId], {\n      relativeTo: this.route,\n      queryParams: {...(upload && {upload: true})},\n    });\n  }\n\n  public onFormDefinitionCreateEvent(formDefinitionId: string): void {\n    this.resetNotifications();\n\n    this.notificationService.showToast({\n      type: 'success',\n      title: this.translateService.instant('formManagement.notifications.created'),\n    });\n\n    this.onFormDefinitionEditEvent(formDefinitionId);\n  }\n\n  public onFormDefinitionUploadEvent(formDefinitionId: string): void {\n    this.resetNotifications();\n\n    this.notificationService.showToast({\n      type: 'success',\n      title: this.translateService.instant('formManagement.notifications.created'),\n    });\n\n    this.onFormDefinitionEditEvent(formDefinitionId, true);\n  }\n\n  public onNavigateToUploadEvent(): void {\n    this.create$.next(true);\n    this.upload$.next(true);\n  }\n\n  private resetNotifications(): void {\n    this.notificationService\n      ?.getNotificationRefs()\n      .forEach(ref => this.notificationService.close(ref));\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    create: create$ | async,\n    upload: upload$ | async,\n  } as obs\"\n>\n  <valtimo-form-management-list\n    (navigateToCreateEvent)=\"onNavigateToCreateEvent()\"\n    (navigateToUploadEvent)=\"onNavigateToUploadEvent()\"\n    (navigateToEditEvent)=\"onFormDefinitionEditEvent($event)\"\n  ></valtimo-form-management-list>\n\n  <valtimo-form-management-create\n    *ngIf=\"obs.create\"\n    [upload]=\"obs.upload\"\n    (goBackEvent)=\"onGoBackFromCreateEvent()\"\n    (afterCreateEvent)=\"onFormDefinitionCreateEvent($event)\"\n    (afterUploadEvent)=\"onFormDefinitionUploadEvent($event)\"\n  ></valtimo-form-management-create>\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 {FormioForm} from '@formio/angular';\n\nexport function compareFormDefinitions(fd1: FormDefinition, fd2: FormDefinition) {\n  if (fd1 === null && fd2 === null) {\n    return true;\n  }\n  if (fd1 === null || fd2 === null) {\n    return false;\n  }\n  return fd1.id === fd2.id;\n}\n\nexport interface FormDefinition {\n  id: string;\n  name: string;\n  formDefinition: FormioForm;\n  readOnly: boolean;\n}\n\nexport interface CreateFormDefinitionRequest {\n  name: string;\n  formDefinition: string;\n}\n\nexport interface ModifyFormDefinitionRequest {\n  id: string;\n  name: string;\n  formDefinition: string;\n}\n\nexport interface QueryFormsResponse {\n  content: {readonly: boolean; id: string; formDefinition: FormioForm}[];\n  first: boolean;\n  last: boolean;\n  totalPages: number;\n  totalElements: number;\n  numberOfElements: number;\n  size: number;\n  number: number;\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 enum EDIT_TABS {\n  BUILDER = 'formManagement.tabs.formBuilder',\n  EDITOR = 'formManagement.tabs.jsonEditor',\n  OUTPUT = 'formManagement.tabs.output',\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 {ManagementContext} from '@valtimo/shared';\n\ninterface FormManagementParams {\n  caseDefinitionKey?: string;\n  caseDefinitionVersionTag?: string;\n  buildingBlockDefinitionKey?: string;\n  buildingBlockDefinitionVersionTag?: string;\n}\n\ninterface FormManagementRouteData {\n  [key: string]: any;\n  context: ManagementContext;\n}\n\nexport {FormManagementParams, FormManagementRouteData};\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 './form-definition.model';\nexport * from './form-edit-tabs.enum';\nexport * from './form-management.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, Inject, OnInit} from '@angular/core';\nimport {FormControl, FormGroup, FormsModule, ReactiveFormsModule, Validators} from '@angular/forms';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {take} from 'rxjs/operators';\nimport {\n  BaseModal,\n  ButtonModule,\n  InputModule,\n  LayerModule,\n  ModalModule,\n  ModalService,\n} from 'carbon-components-angular';\nimport {CreateFormDefinitionRequest, FormDefinition, FormManagementParams} from '../../models';\nimport {FormManagementService} from '../../services';\nimport {noDuplicateFormValidator} from '../../validators/no-duplicate-form.validator';\nimport {CommonModule} from '@angular/common';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {ValtimoCdsModalDirective} from '@valtimo/components';\nimport {GlobalNotificationService, ManagementContext} from '@valtimo/shared';\n\n@Component({\n  selector: 'valtimo-form-management-duplicate-modal',\n  templateUrl: './form-management-duplicate.component.html',\n  styleUrls: ['./form-management-duplicate.component.scss'],\n  standalone: true,\n  imports: [\n    CommonModule,\n    TranslateModule,\n    ModalModule,\n    ButtonModule,\n    InputModule,\n    ReactiveFormsModule,\n    FormsModule,\n    LayerModule,\n    ValtimoCdsModalDirective,\n  ],\n})\nexport class FormManagementDuplicateComponent extends BaseModal implements OnInit {\n  public duplicateForm!: FormGroup;\n\n  public get duplicateFormName(): FormControl {\n    return this.duplicateForm.controls['duplicateFormName'] as FormControl;\n  }\n\n  public getDefaultName(): string {\n    return this.formToDuplicate.name + '-duplicate';\n  }\n\n  constructor(\n    @Inject('formToDuplicate') public readonly formToDuplicate: FormDefinition,\n    @Inject('context') public readonly context: ManagementContext,\n    @Inject('params') public readonly params: FormManagementParams,\n    protected modalService: ModalService,\n    protected formManagementService: FormManagementService,\n    protected route: ActivatedRoute,\n    private router: Router,\n    private readonly notificationService: GlobalNotificationService,\n    private readonly translateService: TranslateService\n  ) {\n    super();\n  }\n\n  public ngOnInit(): void {\n    this.initForm();\n  }\n\n  private initForm(): void {\n    this.duplicateForm = new FormGroup({\n      duplicateFormName: new FormControl(\n        this.getDefaultName(),\n        Validators.compose([Validators.required]),\n        [noDuplicateFormValidator(this.context, this.params, this.formManagementService)]\n      ),\n    });\n    this.duplicateForm.markAllAsTouched();\n  }\n\n  public duplicate(): void {\n    const control = this.duplicateFormName;\n    this.formToDuplicate.name = this.duplicateForm.controls['duplicateFormName'].value;\n    const request: CreateFormDefinitionRequest = {\n      name: control.value.toString(),\n      formDefinition: JSON.stringify(this.formToDuplicate.formDefinition),\n    };\n\n    let create$;\n    switch (this.context) {\n      case 'case':\n        create$ = this.formManagementService.createFormDefinitionsCase(\n          this.params.caseDefinitionKey!,\n          this.params.caseDefinitionVersionTag!,\n          request\n        );\n        break;\n      case 'buildingBlock':\n        create$ = this.formManagementService.createFormDefinitionsBuildingBlock(\n          this.params.buildingBlockDefinitionKey!,\n          this.params.buildingBlockDefinitionVersionTag!,\n          request\n        );\n        break;\n      default:\n        create$ = this.formManagementService.createFormDefinition(request);\n        break;\n    }\n\n    create$.pipe(take(1)).subscribe({\n      next: formDefinition => {\n        this.navigateWithNewId(formDefinition.id).then(() => {\n          this.closeModal();\n          this.notificationService.showToast({\n            type: 'success',\n            title: this.translateService.instant('formManagement.notifications.duplicated'),\n          });\n        });\n      },\n      error: err => {\n        if (err.toString().includes('Duplicate name')) {\n          control.setErrors({duplicate: true});\n        } else {\n          control.setErrors({incorrect: true});\n        }\n      },\n    });\n  }\n\n  private async navigateWithNewId(newId: string): Promise<boolean> {\n    const currentUrl = this.router.url.split('?')[0];\n    const segments = currentUrl.split('/');\n\n    const formIdIndex = segments.findIndex(segment => segment.match(/^[a-f0-9-]{36}$/));\n\n    if (formIdIndex !== -1) {\n      segments[formIdIndex] = newId;\n    }\n\n    const updatedUrl = segments.join('/');\n    const queryParams = {...this.route.snapshot.queryParams};\n\n    try {\n      return await this.router.navigate([updatedUrl], {queryParams});\n    } catch (error) {\n      return false;\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  valtimoCdsModal\n  class=\"form-management-create\"\n  size=\"sm\"\n  [cdsLayer]=\"0\"\n  [open]=\"true\"\n  (close)=\"closeModal()\"\n>\n  <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"closeModal()\">\n    <h3 cdsModalHeaderHeading>\n      {{ 'formManagement.duplicate' | translate }}\n    </h3>\n  </cds-modal-header>\n\n  <form [formGroup]=\"duplicateForm\">\n    <section cdsModalContent [cdsLayer]=\"1\">\n      <cds-label\n        [invalid]=\"duplicateFormName?.touched && duplicateFormName?.errors\"\n        [invalidText]=\"\n          (duplicateFormName?.errors?.required && ('formManagement.nameIsRequired' | translate)) ||\n          (duplicateFormName?.errors?.duplicate && ('formManagement.nameIsInUse' | translate)) ||\n          'Error'\n        \"\n      >\n        {{ 'formManagement.name' | translate }}\n\n        <input\n          cdsText\n          type=\"text\"\n          id=\"duplicateFormName\"\n          formControlName=\"duplicateFormName\"\n          [invalid]=\"duplicateFormName?.touched && duplicateFormName?.errors\"\n          required\n        />\n      </cds-label>\n    </section>\n\n    <cds-modal-footer [cdsLayer]=\"1\">\n      <cds-modal-footer>\n        <button cdsButton=\"secondary\" (click)=\"closeModal()\">\n          {{ 'interface.cancel' | translate }}\n        </button>\n\n        <button [disabled]=\"duplicateForm.invalid\" cdsButton=\"primary\" (click)=\"duplicate()\">\n          {{ 'formManagement.submit' | translate }}\n        </button>\n      </cds-modal-footer>\n    </cds-modal-footer>\n  </form>\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 */\n\nexport * from './form-management-duplicate.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  Input,\n  OnDestroy,\n  OnInit,\n  Output,\n} from '@angular/core';\nimport {FormBuilder, ReactiveFormsModule, Validators} from '@angular/forms';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {CARBON_CONSTANTS} from '@valtimo/components';\nimport {GlobalNotificationService} from '@valtimo/shared';\nimport {\n  ButtonModule,\n  FileUploaderModule,\n  LayerModule,\n  ModalModule,\n} from 'carbon-components-angular';\nimport {BehaviorSubject, map, Observable, startWith, Subscription} from 'rxjs';\n\n@Component({\n  selector: 'valtimo-form-management-upload',\n  templateUrl: './form-management-upload.component.html',\n  styleUrls: ['./form-management-upload.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [\n    CommonModule,\n    TranslateModule,\n    FileUploaderModule,\n    ModalModule,\n    LayerModule,\n    ReactiveFormsModule,\n    ButtonModule,\n  ],\n})\nexport class FormManagementUploadComponent implements OnInit, OnDestroy {\n  @Input() public readonly show$: Observable<boolean>;\n\n  @Output() public readonly definitionUploaded: EventEmitter<any> = new EventEmitter();\n\n  public readonly modalOpen$ = new BehaviorSubject<boolean>(false);\n\n  public readonly ACCEPTED_FILES: string[] = ['json'];\n\n  public readonly form = this.formBuilder.group({\n    file: this.formBuilder.control(new Set<any>(), [Validators.required]),\n  });\n\n  public readonly fileSelected$ = this.form.get('file')?.valueChanges.pipe(\n    startWith(null),\n    map(value => !!(value instanceof Set && value.size > 0))\n  );\n\n  private readonly _subscriptions = new Subscription();\n\n  constructor(\n    private readonly formBuilder: FormBuilder,\n    private readonly notificationService: GlobalNotificationService,\n    private readonly translateService: TranslateService\n  ) {}\n\n  public ngOnInit(): void {\n    this._subscriptions.add(\n      this.show$.subscribe(show => {\n        this.modalOpen$.next(show);\n      })\n    );\n  }\n\n  public ngOnDestroy(): void {\n    this._subscriptions.unsubscribe();\n  }\n\n  public closeModal(): void {\n    this.modalOpen$.next(false);\n\n    setTimeout(() => {\n      this.form.reset();\n    }, CARBON_CONSTANTS.modalAnimationMs);\n  }\n\n  public async uploadFormDefinition(): Promise<void> {\n    const formioDefinition: File = this.form.value?.file?.values()?.next()?.value?.file;\n    const formioDefinitionString = await formioDefinition.text();\n\n    if (!formioDefinitionString) return;\n\n    this.notificationService.showNotification({\n      type: 'success',\n      title: this.translateService.instant('formManagement.upload.success'),\n    });\n\n    this.definitionUploaded.emit(formioDefinitionString);\n\n    this.modalOpen$.next(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\n<cds-modal valtimoCdsModal [open]=\"modalOpen$ | async\" size=\"sm\" (close)=\"closeModal()\">\n  <cds-modal-header showCloseButton=\"true\" (closeSelect)=\"closeModal()\">\n    <h3 cdsModalHeaderHeading>{{ 'formManagement.upload.modalTitle' | translate }}</h3>\n  </cds-modal-header>\n\n  <section cdsModalContent [cdsLayer]=\"1\" [formGroup]=\"form\">\n    <cds-file-uploader\n      [accept]=\"ACCEPTED_FILES\"\n      [buttonText]=\"'formManagement.upload.buttonText' | translate\"\n      [description]=\"'formManagement.upload.description' | translate\"\n      [multiple]=\"false\"\n      [title]=\"'formManagement.upload.title' | translate\"\n      buttonType=\"primary\"\n      formControlName=\"file\"\n    >\n    </cds-file-uploader>\n  </section>\n\n  <cds-modal-footer>\n    <button cdsButton=\"secondary\" (click)=\"closeModal()\">\n      {{ 'interface.cancel' | translate }}\n    </button>\n\n    <button\n      cdsButton=\"primary\"\n      [disabled]=\"(fileSelected$ | async) === false\"\n      (click)=\"uploadFormDefinition()\"\n    >\n      {{ 'interface.upload' | translate }}\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 */\n\nexport * from './form-management-upload.component';\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {CommonModule} from '@angular/common';\nimport {\n  Component,\n  EventEmitter,\n  HostBinding,\n  Injector,\n  OnDestroy,\n  OnInit,\n  Output,\n  ViewEncapsulation,\n} from '@angular/core';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {ArrowLeft16} from '@carbon/icons';\nimport {FormioForm} from '@formio/angular';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {\n  BreadcrumbService,\n  CarbonListModule,\n  ConfirmationModalModule,\n  EditorModel,\n  EditorModule,\n  FormIoModule,\n  FormIoTagsService,\n  OverflowMenuComponent,\n  OverflowMenuOptionComponent,\n  OverflowMenuTriggerComponent,\n  PageHeaderService,\n  PageTitleService,\n  RenderInPageHeaderDirective,\n  ShellService,\n  SpinnerModule,\n  WidgetModule,\n} from '@valtimo/components';\nimport {\n  DraftVersionService,\n  EnvironmentService,\n  getCaseManagementRouteParams,\n  GlobalNotificationService,\n} from '@valtimo/shared';\nimport {\n  ButtonModule,\n  IconModule,\n  IconService,\n  InputModule,\n  LoadingModule,\n  ModalModule,\n  ModalService,\n  TabsModule,\n  TagModule,\n} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, map, Observable, of, Subscription} from 'rxjs';\nimport {distinctUntilChanged, filter, switchMap, take, tap} from 'rxjs/operators';\nimport {FORM_MANAGEMENT_EDIT_TEST_IDS} from '../../constants';\nimport {EDIT_TABS, FormDefinition, ModifyFormDefinitionRequest} from '../../models';\nimport {FormManagementService} from '../../services';\nimport {getContextObservable, getFormManagementRouteParamsAndContext} from '../../utils';\nimport {FormManagementDuplicateComponent} from '../form-management-duplicate';\nimport {FormManagementUploadComponent} from '../form-management-upload';\n\n@Component({\n  selector: 'valtimo-form-management-edit',\n  templateUrl: './form-management-edit.component.html',\n  styleUrls: ['./form-management-edit.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  standalone: true,\n  imports: [\n    CommonModule,\n    TranslateModule,\n    ModalModule,\n    ButtonModule,\n    InputModule,\n    ReactiveFormsModule,\n    FormsModule,\n    WidgetModule,\n    CarbonListModule,\n    TabsModule,\n    EditorModule,\n    FormIoModule,\n    RenderInPageHeaderDirective,\n    OverflowMenuComponent,\n    OverflowMenuOptionComponent,\n    OverflowMenuTriggerComponent,\n    TagModule,\n    ConfirmationModalModule,\n    SpinnerModule,\n    FormManagementUploadComponent,\n    IconModule,\n    SpinnerModule,\n    LoadingModule,\n  ],\n})\nexport class FormManagementEditComponent implements OnInit, OnDestroy {\n  @HostBinding('class') public readonly class = 'valtimo-form-management-edit';\n\n  @Output() public readonly deleteEvent = new EventEmitter<void>();\n  @Output() public readonly goBackEvent = new EventEmitter<void>();\n  @Output() public readonly formModifiedEvent = new EventEmitter<void>();\n  @Output() public readonly formDeletedEvent = new EventEmitter<void>();\n  @Output() public readonly deleteErrorEvent = new EventEmitter<boolean>();\n  @Output() public readonly deployErrorEvent = new EventEmitter<boolean>();\n\n  public modifiedFormDefinition: FormioForm | null = null;\n  public validJsonChange: boolean | null = null;\n\n  public readonly TABS = EDIT_TABS;\n\n  public activeTab = EDIT_TABS.BUILDER;\n\n  protected readonly testIds = FORM_MANAGEMENT_EDIT_TEST_IDS;\n\n  public readonly editParam$: Observable<string | null> = this.route.paramMap.pipe(\n    map(params => (params.has('formDefinitionId') ? params.get('formDefinitionId') : null))\n  );\n\n  public readonly context$ = getContextObservable(this.route);\n\n  public readonly caseManagementRouteParams$ = this.context$.pipe(\n    filter(context => context === 'case'),\n    switchMap(() => getCaseManagementRouteParams(this.route))\n  );\n\n  private readonly _formDefinition$ = new BehaviorSubject<FormDefinition | null>(null);\n\n  public readonly canUpdateGlobalConfiguration$ =\n    this.environmentService.canUpdateGlobalConfiguration();\n\n  public readonly isDraftVersion$: Observable<boolean> = getFormManagementRouteParamsAndContext(\n    this.route\n  ).pipe(\n    switchMap(([context, params]) => {\n      if (context === 'case') {\n        return this.draftVersionService.isDraftVersion(\n          params?.caseDefinitionKey,\n          params?.caseDefinitionVersionTag\n        );\n      }\n      if (context === 'buildingBlock') {\n        return this.draftVersionService.isDraftVersionBuildingBlock(\n          params?.buildingBlockDefinitionKey,\n          params?.buildingBlockDefinitionVersionTag\n        );\n      }\n      return of(true); // Independent forms are always editable\n    })\n  );\n\n  private get _formDefinition(): FormDefinition {\n    return this._formDefinition$.getValue();\n  }\n\n  public readonly formDefinition$ = this._formDefinition$.pipe(\n    filter((definition: FormDefinition | null) => !!definition),\n    distinctUntilChanged(\n      (prevFormDefinition, currFormDefinition) =>\n        JSON.stringify(prevFormDefinition?.formDefinition?.components) ===\n        JSON.stringify(currFormDefinition?.formDefinition?.components)\n    ),\n    tap(() => {\n      if (!this._editorInitialized) {\n        this._editorInitialized = true;\n        return;\n      }\n    })\n  );\n\n  public readonly jsonFormDefinition$ = new BehaviorSubject<EditorModel | null>(null);\n  public readonly jsonOutput$ = new BehaviorSubject<EditorModel | null>(null);\n  public readonly reloading$ = new BehaviorSubject<boolean>(false);\n  public readonly showDeleteModal$ = new BehaviorSubject<boolean>(false);\n  public readonly showModal$ = new BehaviorSubject<boolean>(false);\n  public readonly compactMode$ = this.pageHeaderService.compactMode$;\n\n  private _activeOuput: string;\n  private _alertSub: Subscription = Subscription.EMPTY;\n  private _changeActive = false;\n  private _editorInitialized = false;\n\n  constructor(\n    private readonly formManagementService: FormManagementService,\n    private readonly modalService: ModalService,\n    private readonly pageTitleService: PageTitleService,\n    private readonly route: ActivatedRoute,\n    private readonly shellService: ShellService,\n    private readonly pageHeaderService: PageHeaderService,\n    private readonly iconService: IconService,\n    private readonly router: Router,\n    private readonly translateService: TranslateService,\n    private readonly notificationService: GlobalNotificationService,\n    private readonly breadcrumbService: BreadcrumbService,\n    private readonly environmentService: EnvironmentService,\n    private readonly draftVersionService: DraftVersionService,\n    private readonly formIoTagsService: FormIoTagsService,\n    private readonly injector: Injector\n  ) {\n    this.iconService.registerAll([ArrowLeft16]);\n    this.formIoTagsService.reregisterTags(this.injector);\n  }\n\n  public ngOnInit(): void {\n    this.loadFormDefinition().subscribe();\n    this.checkToOpenUploadModal();\n    this.pageTitleService.disableReset();\n    this.initBreadcrumbs();\n  }\n\n  public ngOnDestroy(): void {\n    this._alertSub.unsubscribe();\n    this.pageTitleService.enableReset();\n    this.pageTitleService.clearPageActionsViewContainerRef();\n    this.breadcrumbService.clearThirdBreadcrumb();\n    this.breadcrumbService.clearFourthBreadcrumb();\n  }\n\n  public formBuilderChanged(event, definition: EditorModel): void {\n    if (event.type === 'updateComponent') {\n      return;\n    }\n    this._changeActive = true;\n    this.modifiedFormDefinition = event.form;\n    this._formDefinition$.next({...this._formDefinition, formDefinition: event.form});\n    this.jsonFormDefinition$.next({...definition, value: JSON.stringify(event.form), language: 'json'});\n    this._changeActive = false;\n  }\n\n  public delete(): void {\n    this.showDeleteModal$.next(true);\n  }\n\n  public deleteFormDefinition(definition: FormDefinition): void {\n    getFormManagementRouteParamsAndContext(this.route)\n      .pipe(\n        switchMap(([context, params]) => {\n          switch (context) {\n            case 'case':\n              return this.formManagementService.deleteFormDefinitionCase(\n                params?.caseDefinitionKey!,\n                params?.caseDefinitionVersionTag!,\n                definition.id\n              );\n            case 'buildingBlock':\n              return this.formManagementService.deleteFormDefinitionBuildingBlock(\n                params?.buildingBlockDefinitionKey!,\n                params?.buildingBlockDefinitionVersionTag!,\n                definition.id\n              );\n            default:\n              return this.formManagementService.deleteFormDefinition(definition.id);\n          }\n        })\n      )\n      .subscribe({\n        next: () => {\n          this.notificationService.showToast({\n            type: 'success',\n            title: this.translateService.instant('formManagement.notifications.deleted'),\n          });\n          this.navigateBack();\n        },\n        error: () => {\n          this.notificationService.showToast({\n            type: 'error',\n            title: this.translateService.instant('formManagement.notifications.deletionError'),\n          });\n        },\n      });\n  }\n\n  public onGoBackButtonClick(): void {\n    this.navigateBack();\n  }\n\n  public modifyFormDefinition(definition: FormDefinition): void {\n    combineLatest([this.pageTitleService.customPageTitle$, this.editParam$])\n      .pipe(take(1))\n      .subscribe(([customPageTitle, formDefinitionId]) => {\n        if (!customPageTitle || !formDefinitionId) return;\n\n        const form = JSON.stringify(\n          this.modifiedFormDefinition !== null\n            ? this.modifiedFormDefinition\n            : definition.formDefinition\n        );\n\n        const request: ModifyFormDefinitionRequest = {\n          id: formDefinitionId,\n          name: customPageTitle,\n          formDefinition: form,\n        };\n\n        getFormManagementRouteParamsAndContext(this.route)\n          .pipe(\n            switchMap(([context, params]) => {\n              switch (context) {\n                case 'case':\n                  return this.formManagementService.modifyFormDefinitionCase(\n                    params.caseDefinitionKey!,\n                    params.caseDefinitionVersionTag!,\n                    request\n                  );\n                case 'buildingBlock':\n                  return this.formManagementService.modifyFormDefinitionBuildingBlock(\n                    params.buildingBlockDefinitionKey!,\n                    params.buildingBlockDefinitionVersionTag!,\n                    request\n                  );\n                default:\n                  return this.formManagementService.modifyFormDefinition(request);\n              }\n            })\n          )\n          .subscribe({\n            next: () => {\n              this.notificationService.showToast({\n                type: 'success',\n                title: this.translateService.instant('formManagement.notifications.deployed'),\n              });\n\n              this.navigateBack();\n            },\n            error: () => {\n              this.notificationService.showToast({\n                type: 'error',\n                title: this.translateService.instant(\n                  'formManagement.notifications.deploymentError'\n                ),\n              });\n            },\n          });\n      });\n  }\n\n  private loadFormDefinition(setDefinition = true): Observable<FormDefinition> {\n    return getFormManagementRouteParamsAndContext(this.route).pipe(\n      switchMap(([context, params]) => combineLatest([of(context), of(params), this.editParam$])),\n      switchMap(([context, params, formDefinitionId]) => {\n        if (!formDefinitionId) return of(null);\n\n        switch (context) {\n          case 'case':\n            return this.formManagementService.getFormDefinitionCase(\n              params.caseDefinitionKey!,\n              params.caseDefinitionVersionTag!,\n              formDefinitionId\n            );\n          case 'buildingBlock':\n            return this.formManagementService.getFormDefinitionBuildingBlock(\n              params.buildingBlockDefinitionKey!,\n              params.buildingBlockDefinitionVersionTag!,\n              formDefinitionId\n            );\n          default:\n            return this.formManagementService.getFormDefinition(formDefinitionId);\n        }\n      }),\n      tap((definition: FormDefinition | null) => {\n        if (!definition) return;\n\n        if (setDefinition) this._formDefinition$.next(definition);\n        if (setDefinition)\n          this.jsonFormDefinition$.next({\n            value: JSON.stringify(definition.formDefinition),\n            language: 'json',\n          });\n        this.pageTitleService.setCustomPageTitle(definition.name);\n      })\n    );\n  }\n\n  public downloadFormDefinition(definition: FormDefinition): void {\n    const file = new Blob([JSON.stringify(definition.formDefinition)], {\n      type: 'text/json',\n    });\n    const link = document.createElement('a');\n    link.download = `form_${definition.name}.json`;\n    link.href = window.URL.createObjectURL(file);\n    link.click();\n    window.URL.revokeObjectURL(link.href);\n    link.remove();\n  }\n\n  public onSelectedTab(tab: EDIT_TABS): void {\n    this.activeTab = tab;\n    this.formIoTagsService.reregisterTags(this.injector);\n\n    if (tab === EDIT_TABS.BUILDER) {\n      return;\n    }\n\n    setTimeout(() => {\n      this.shellService.onMainContentResize();\n    });\n  }\n\n  public onOutputChange(event: {data: object | undefined}): void {\n    this.reloading$.next(false);\n\n    if (!event.data) {\n      return;\n    } else if (JSON.stringify(event.data) === this._activeOuput) {\n      return;\n    }\n\n    this._activeOuput = JSON.stringify(event.data);\n    this.jsonOutput$.next({value: this._activeOuput, language: 'json'});\n  }\n\n  public onValueChangeEvent(value: string, definition: FormDefinition, disabled: boolean): void {\n    if (this._changeActive || this.validJsonChange === false || disabled) {\n      return;\n    }\n\n    const parsedDefinition = JSON.parse(value);\n\n    this.modifiedFormDefinition = parsedDefinition;\n\n    this._formDefinition$.next({\n      ...definition,\n      formDefinition: parsedDefinition,\n    });\n  }\n\n  public onValidEvent(value: boolean, disabled: boolean): void {\n    if (this._changeActive || disabled) {\n      return;\n    }\n\n    this.validJsonChange = value;\n  }\n\n  public showUploadModal(): void {\n    this.showModal$.next(true);\n  }\n\n  public showDuplicateModal(definition: FormDefinition): void {\n    getFormManagementRouteParamsAndContext(this.route)\n      .pipe(take(1))\n      .subscribe(([context, params]) => {\n        this.modalService.create({\n          component: FormManagementDuplicateComponent,\n          inputs: {\n            formToDuplicate: definition,\n            context,\n            params,\n          },\n        });\n      });\n  }\n\n  public setFormDefinition(formDefinition: any): void {\n    this.reloading$.next(true);\n\n    const definition = JSON.parse(formDefinition);\n    if (!definition?.components) {\n      this.reloading$.next(false);\n      return;\n    }\n\n    const components = definition.components;\n    const currentDefinition = this.modifiedFormDefinition || definition.formDefinition;\n    const newDefinition = {...currentDefinition, ...(components && {components})};\n\n    this.modifiedFormDefinition = newDefinition;\n    definition.formDefinition = newDefinition;\n    this._formDefinition$.next(definition);\n\n    this.jsonFormDefinition$.next({\n      value: JSON.stringify(newDefinition),\n      language: 'json',\n    });\n\n    this.loadFormDefinition(false).subscribe(() => this.reloading$.next(false));\n  }\n\n  protected onConfirmRedirect(): void {\n    const cancelButton: HTMLElement | null = document.querySelector('button[ref=\"cancelButton\"]');\n    if (!cancelButton) {\n      return;\n    }\n\n    cancelButton.click();\n  }\n\n  private checkToOpenUploadModal(): void {\n    this.route.queryParams.pipe(take(1)).subscribe(params => {\n      if (params?.upload === 'true') {\n        this.showUploadModal();\n      }\n    });\n  }\n\n  private navigateBack(): void {\n    this.router.navigate(['../'], {relativeTo: this.route});\n  }\n\n  private initBreadcrumbs(): void {\n    getFormManagementRouteParamsAndContext(this.route)\n      .pipe(take(1))\n      .subscribe(([context, params]) => {\n        if (context === 'independent' || !context) return;\n\n        if (context === 'case') {\n          const route = `/case-management/case/${params.caseDefinitionKey}/version/${params.caseDefinitionVersionTag}`;\n\n          this.breadcrumbService.setThirdBreadcrumb({\n            route: [route],\n            content: `${params.caseDefinitionKey} (${params.caseDefinitionVersionTag})`,\n            href: route,\n          });\n\n          const routeWithForms = `${route}/forms`;\n\n          this.breadcrumbService.setFourthBreadcrumb({\n            route: [routeWithForms],\n            content: this.translateService.instant('caseManagement.tabs.forms'),\n            href: routeWithForms,\n          });\n        } else if (context === 'buildingBlock') {\n          const route = `/building-block-management/building-block/${params.buildingBlockDefinitionKey}/version/${params.buildingBlockDefinitionVersionTag}`;\n          const generalRoute = `${route}/general`;\n\n          this.breadcrumbService.setThirdBreadcrumb({\n            route: [generalRoute],\n            content: `${params.buildingBlockDefinitionKey} (${params.buildingBlockDefinitionVersionTag})`,\n            href: generalRoute,\n          });\n\n          const routeWithForms = `${route}/forms`;\n\n          this.breadcrumbService.setFourthBreadcrumb({\n            route: [`${route}/forms`],\n            content: this.translateService.instant('buildingBlockManagement.tabs.forms'),\n            href: routeWithForms,\n          });\n        }\n      });\n  }\n}\n","<!--\n  ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n  ~\n  ~ Licensed under EUPL, Version 1.2 (the \"License\");\n  ~ you may not use this file except in compliance with the License.\n  ~ You may obtain a copy of the License at\n  ~\n  ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n  ~\n  ~ Unless required by applicable law or agreed to in writing, software\n  ~ distributed under the License is distributed on an \"AS IS\" basis,\n  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  ~ See the License for the specific language governing permissions and\n  ~ limitations under the License.\n  -->\n<ng-container\n  *ngIf=\"{\n    formDefinition: formDefinition$ | async,\n    jsonFormDefinition: jsonFormDefinition$ | async,\n    jsonOutput: jsonOutput$ | async,\n    compactMode: compactMode$ | async,\n    context: context$ | async,\n    canUpdateGlobalConfiguration: canUpdateGlobalConfiguration$ | async,\n    isDraftVersion: isDraftVersion$ | async,\n  } as obs\"\n>\n  @if (obs.formDefinition) {\n    <ng-container renderInPageHeader [fullWidth]=\"true\">\n      <ng-template>\n        <ng-container *ngTemplateOutlet=\"actions; context: {obs: obs}\"></ng-container>\n      </ng-template>\n    </ng-container>\n\n    <cds-tabs type=\"contained\">\n      <cds-tab [heading]=\"TABS.BUILDER | translate\" (selected)=\"onSelectedTab(TABS.BUILDER)\">\n        <valtimo-form-io-builder\n          *ngIf=\"(reloading$ | async) === false && activeTab === TABS.BUILDER\"\n          [form]=\"obs.formDefinition.formDefinition\"\n          (change)=\"formBuilderChanged($event, obs.jsonFormDefinition)\"\n        ></valtimo-form-io-builder>\n      </cds-tab>\n\n      <cds-tab [heading]=\"TABS.EDITOR | translate\" (selected)=\"onSelectedTab(TABS.EDITOR)\">\n        @if (activeTab === TABS.EDITOR && obs.jsonFormDefinition) {\n          <ng-container\n            *ngTemplateOutlet=\"\n              jsonEditor;\n              context: {\n                data: {\n                  disabled: obs.formDefinition.readOnly || !obs.canUpdateGlobalConfiguration,\n                  formDefinition: obs.formDefinition,\n                  model: obs.jsonFormDefinition,\n                },\n              }\n            \"\n          ></ng-container>\n        }\n      </cds-tab>\n\n      <cds-tab\n        [heading]=\"TABS.OUTPUT | translate\"\n        (selected)=\"onSelectedTab(TABS.OUTPUT)\"\n        class=\"valtimo-form-management-edit__output\"\n      >\n        <valtimo-form-io\n          *ngIf=\"activeTab === TABS.OUTPUT\"\n          [form]=\"obs.formDefinition.formDefinition\"\n          (change)=\"onOutputChange($event)\"\n        ></valtimo-form-io>\n\n        @if (activeTab === TABS.OUTPUT && obs.jsonOutput) {\n          <ng-container\n            *ngTemplateOutlet=\"\n              jsonEditor;\n              context: {\n                data: {disabled: true, formDefinition: obs.formDefinition, model: obs.jsonOutput},\n              }\n            \"\n          ></ng-container>\n        }\n      </cds-tab>\n    </cds-tabs>\n  } @else {\n    <cds-loading></cds-loading>\n  }\n\n  <valtimo-confirmation-modal\n    confirmButtonTextTranslationKey=\"interface.delete\"\n    confirmButtonType=\"danger\"\n    contentTranslationKey=\"interface.deleteConfirmation\"\n    cancelButtonTextTranslationKey=\"interface.cancel\"\n    [outputOnConfirm]=\"obs.formDefinition\"\n    [showModalSubject$]=\"showDeleteModal$\"\n    titleTranslationKey=\"dashboardManagement.delete\"\n    (confirmEvent)=\"deleteFormDefinition($event)\"\n  ></valtimo-confirmation-modal>\n\n  <valtimo-form-management-upload\n    [show$]=\"showModal$\"\n    (definitionUploaded)=\"setFormDefinition($event)\"\n  ></valtimo-form-management-upload>\n\n  <ng-template #jsonEditor let-data=\"data\">\n    <valtimo-editor\n      [model]=\"data.model\"\n      [disabled]=\"data.disabled\"\n      (validEvent)=\"onValidEvent($event, data.disabled)\"\n      (valueChangeEvent)=\"onValueChangeEvent($event, data.formDefinition, data.disabled)\"\n      [fitPage]=\"true\"\n    ></valtimo-editor>\n  </ng-template>\n</ng-container>\n\n<ng-template #actions let-obs=\"obs\">\n  <div\n    class=\"valtimo-form-management-edit__header-container\"\n    [ngClass]=\"{\n      '--compact': obs.compactMode,\n    }\"\n  >\n    @if (obs.formDefinition.readOnly || !obs.canUpdateGlobalConfiguration || !obs.isDraftVersion) {\n      <cds-tag size=\"sm\" type=\"blue\">{{ 'formManagement.readOnly' | translate }}</cds-tag>\n    }\n\n    <div class=\"valtimo-form-management-edit__header\">\n      <v-overflow-menu placement=\"bottom-end\">\n        <v-overflow-menu-trigger overflowTrigger></v-overflow-menu-trigger>\n        <v-overflow-menu-option (selected)=\"downloadFormDefinition(obs.formDefinition)\">\n          {{ 'Download' | translate }}\n        </v-overflow-menu-option>\n\n        <v-overflow-menu-option\n          [disabled]=\"\n            obs.formDefinition.readOnly || !obs.canUpdateGlobalConfiguration || !obs.isDraftVersion\n          \"\n          (selected)=\"showUploadModal()\"\n        >\n          {{ 'Upload' | translate }}\n        </v-overflow-menu-option>\n\n        <v-overflow-menu-option\n          *ngIf=\"(obs.context === 'case' && obs.isDraftVersion) || obs.context === 'independent'\"\n          (selected)=\"showDuplicateModal(obs.formDefinition)\"\n        >\n          {{ 'formManagement.duplicate' | translate }}\n        </v-overflow-menu-option>\n\n        <v-overflow-menu-option\n          [disabled]=\"\n            obs.formDefinition.readOnly || !obs.canUpdateGlobalConfiguration || !obs.isDraftVersion\n          \"\n          type=\"danger\"\n          (selected)=\"delete()\"\n        >\n          {{ 'interface.delete' | translate }}\n        </v-overflow-menu-option>\n      </v-overflow-menu>\n\n      @if (obs.context === 'case') {\n        <button\n          cdsButton=\"secondary\"\n          [size]=\"obs.compactMode ? 'sm' : 'md'\"\n          (click)=\"onGoBackButtonClick()\"\n        >\n          <svg class=\"cds--btn__icon\" cdsIcon=\"arrow--left\" size=\"16\"></svg>\n\n          <span>{{ 'interface.back' | translate }}</span>\n        </button>\n      }\n\n      <button\n        *ngIf=\"obs?.canUpdateGlobalConfiguration || obs.context === 'independent'\"\n        cdsButton=\"primary\"\n        [disabled]=\"obs.formDefinition.readOnly || !obs.isDraftVersion\"\n        [size]=\"obs.compactMode ? 'sm' : 'md'\"\n        (click)=\"modifyFormDefinition(obs.formDefinition)\"\n        [attr.data-test-id]=\"testIds.saveButton\"\n      >\n        {{ 'interface.save' | translate }}\n\n        <svg class=\"cds--btn__icon\" cdsIcon=\"save\" size=\"16\"></svg>\n      </button>\n    </div>\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 */\n\nexport * from './form-management-edit.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 './form-management-create';\nexport * from './form-management-edit';\nexport * from './form-management-duplicate';\nexport * from './form-management-list';\nexport * from './form-management-upload';\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, RouterUtils} from '@valtimo/shared';\nimport {AuthGuardService} from '@valtimo/security';\nimport {FormManagementComponent} from './components/form-management/form-management.component';\nimport {FormManagementRouteData} from './models';\nimport {FormManagementEditComponent} from './components';\n\nconst routes: Routes = [\n  {\n    path: 'form-management',\n    component: FormManagementComponent,\n    canActivate: [AuthGuardService],\n    data: {title: 'Forms', roles: [ROLE_ADMIN], context: 'independent'} as FormManagementRouteData,\n  },\n  {\n    path: 'form-management/:formDefinitionId',\n    component: FormManagementEditComponent,\n    canActivate: [AuthGuardService],\n    data: {\n      title: 'Forms',\n      roles: [ROLE_ADMIN],\n      context: 'independent',\n      customPageTitle: true,\n    } as FormManagementRouteData,\n  },\n];\n\n@NgModule({\n  imports: [RouterModule.forRoot(routes, RouterUtils.getRouterExtraOptions())],\n  exports: [RouterModule],\n})\nexport class FormManagementRoutingModule {}\n\n@NgModule({\n  imports: [FormManagementComponent, FormManagementRoutingModule],\n})\nexport class FormManagementModule {}\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/*\n * Public API Surface of form-management\n */\n\nexport * from './lib/services/form-management.service';\nexport * from './lib/components/form-management/form-management.component';\nexport * from './lib/models';\nexport * from './lib/form-management.module';\nexport * from './lib/components/form-management-edit/form-management-edit.component';\nexport * from './lib/components/form-management-create/form-management-create.component';\nexport * from './lib/constants';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","map","switchMap","i1.FormManagementService","i6","filter","take","i7","i1","i3","i2.FormManagementService","i5","tap","i4"],"mappings":"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"}