{"version":3,"file":"valtimo-milestone.mjs","sources":["../../../../projects/valtimo/milestone/src/lib/models/milestone-set.model.ts","../../../../projects/valtimo/milestone/src/lib/models/milestone.model.ts","../../../../projects/valtimo/milestone/src/lib/models/index.ts","../../../../projects/valtimo/milestone/src/lib/milestone.service.ts","../../../../projects/valtimo/milestone/src/lib/milestone-list/milestone-list.component.ts","../../../../projects/valtimo/milestone/src/lib/milestone-list/milestone-list.component.html","../../../../projects/valtimo/milestone/src/lib/milestone.component.ts","../../../../projects/valtimo/milestone/src/lib/milestone.component.html","../../../../projects/valtimo/milestone/src/lib/milestone-set-create/milestone-set-create.component.ts","../../../../projects/valtimo/milestone/src/lib/milestone-set-create/milestone-set-create.component.html","../../../../projects/valtimo/milestone/src/lib/milestone-create/milestone-create.component.ts","../../../../projects/valtimo/milestone/src/lib/milestone-create/milestone-create.component.html","../../../../projects/valtimo/milestone/src/lib/milestone-set-edit/milestone-set-edit.component.ts","../../../../projects/valtimo/milestone/src/lib/milestone-set-edit/milestone-set-edit.component.html","../../../../projects/valtimo/milestone/src/lib/milestone-edit/milestone-edit.component.ts","../../../../projects/valtimo/milestone/src/lib/milestone-edit/milestone-edit.component.html","../../../../projects/valtimo/milestone/src/lib/milestone-routing.module.ts","../../../../projects/valtimo/milestone/src/lib/milestone.module.ts","../../../../projects/valtimo/milestone/src/public-api.ts","../../../../projects/valtimo/milestone/src/valtimo-milestone.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\nexport interface MilestoneSet {\n  id: number;\n  title: string;\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 {MilestoneSet} from './milestone-set.model';\n\nexport interface Milestone {\n  id: number;\n  title: string;\n  color: string;\n  plannedIntervalInDays: number;\n  processDefinitionKey: string;\n  taskDefinitionKey: string;\n  milestoneSet: MilestoneSet;\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 './milestone-set.model';\nexport * from './milestone.model';\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {HttpClient} from '@angular/common/http';\nimport {Observable} from 'rxjs';\nimport {Milestone, MilestoneSet} from './models';\nimport {ConfigService} from '@valtimo/shared';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class MilestoneService {\n  private valtimoApiConfig: any;\n\n  constructor(\n    private configService: ConfigService,\n    private http: HttpClient\n  ) {\n    this.valtimoApiConfig = configService.config.valtimoApi;\n  }\n\n  getMilestones(): Observable<Milestone[]> {\n    return this.http.get<Milestone[]>(`${this.valtimoApiConfig.endpointUri}v1/milestones`);\n  }\n\n  getMilestone(milestoneId: number): Observable<Milestone> {\n    return this.http.get<Milestone>(\n      `${this.valtimoApiConfig.endpointUri}v1/milestones/${milestoneId}`\n    );\n  }\n\n  createMilestone(milestone: Milestone): Observable<Milestone> {\n    return this.http.post<Milestone>(\n      `${this.valtimoApiConfig.endpointUri}v1/milestones`,\n      milestone\n    );\n  }\n\n  updateMilestone(milestone: Milestone): Observable<Milestone> {\n    return this.http.post<Milestone>(\n      `${this.valtimoApiConfig.endpointUri}v1/milestones`,\n      milestone\n    );\n  }\n\n  deleteMilestone(milestoneId: number): Observable<void> {\n    return this.http.delete<void>(\n      `${this.valtimoApiConfig.endpointUri}v1/milestones/${milestoneId}`\n    );\n  }\n\n  getMilestoneSets(): Observable<MilestoneSet[]> {\n    return this.http.get<MilestoneSet[]>(`${this.valtimoApiConfig.endpointUri}v1/milestone-sets`);\n  }\n\n  getMilestoneSet(milestoneSetId: number): Observable<MilestoneSet> {\n    return this.http.get<MilestoneSet>(\n      `${this.valtimoApiConfig.endpointUri}v1/milestone-sets/${milestoneSetId}`\n    );\n  }\n\n  createMilestoneSet(milestoneSet: MilestoneSet): Observable<MilestoneSet> {\n    return this.http.post<MilestoneSet>(\n      `${this.valtimoApiConfig.endpointUri}v1/milestone-sets`,\n      milestoneSet\n    );\n  }\n\n  updateMilestoneSet(milestoneSet: MilestoneSet): Observable<MilestoneSet> {\n    return this.http.post<MilestoneSet>(\n      `${this.valtimoApiConfig.endpointUri}v1/milestone-sets`,\n      milestoneSet\n    );\n  }\n\n  deleteMilestoneSet(milestoneSetId: number): Observable<void> {\n    return this.http.delete<void>(\n      `${this.valtimoApiConfig.endpointUri}v1/milestone-sets/${milestoneSetId}`\n    );\n  }\n\n  getFlownodes(processDefinitionId: string) {\n    return this.http.get(\n      `${this.valtimoApiConfig.endpointUri}v1/milestones/${processDefinitionId}/flownodes`\n    );\n  }\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, OnInit} from '@angular/core';\nimport {MilestoneService} from '../milestone.service';\nimport {Milestone, MilestoneSet} from '../models';\nimport {Router} from '@angular/router';\nimport {combineLatest} from 'rxjs';\n\n@Component({\n  standalone: false,\n  selector: 'valtimo-milestone-list',\n  templateUrl: './milestone-list.component.html',\n  styleUrls: ['./milestone-list.component.scss'],\n})\nexport class MilestoneListComponent implements OnInit {\n  public milestones: Array<Array<string | MilestoneSet | Array<Milestone>>> = [];\n  public milestoneFields = [\n    {key: 'id', label: 'ID'},\n    {key: 'title', label: 'Title'},\n    {key: 'processDefinitionKey', label: 'Process'},\n    {key: 'taskDefinitionKey', label: 'Task'},\n    {key: 'plannedIntervalInDays', label: 'Interval (in days)'},\n    {key: 'color', label: 'Color'},\n  ];\n\n  constructor(\n    private milestoneService: MilestoneService,\n    private router: Router\n  ) {}\n\n  editMilestoneSet(milestoneSetId: number) {\n    this.router.navigate(['milestones/sets/set', milestoneSetId]);\n  }\n\n  editMilestone(milestone: Milestone) {\n    this.router.navigate(['milestones/milestone', milestone.id]);\n  }\n\n  ngOnInit() {\n    combineLatest([\n      this.milestoneService.getMilestones(),\n      this.milestoneService.getMilestoneSets(),\n    ]).subscribe(([milestones, milestoneSets]) =>\n      this.handleMilestoneResult(milestones, milestoneSets)\n    );\n  }\n\n  private handleMilestoneResult(\n    milestones: Array<Milestone>,\n    milestoneSets: Array<MilestoneSet>\n  ): void {\n    const milestoneSetsMap = this.getMilestoneSetsMap(milestones, milestoneSets);\n\n    this.setMilestones(milestoneSetsMap);\n  }\n\n  private setMilestones(milestoneSetsMap: Map<string, Milestone[]>): void {\n    this.milestones = Array.from(milestoneSetsMap.entries()).map(entry => {\n      entry[0] = JSON.parse(entry[0]);\n      return entry;\n    });\n  }\n\n  private getMilestoneSetsMap(\n    milestones: Array<Milestone>,\n    milestoneSets: Array<MilestoneSet>\n  ): Map<string, Milestone[]> {\n    const mapWithSets = this.addMilestoneSetsToMap(milestoneSets, this.getEmptyMap());\n\n    return this.addMilestonesToMap(milestones, mapWithSets);\n  }\n\n  private getEmptyMap(): Map<string, Milestone[]> {\n    return new Map<string, Milestone[]>();\n  }\n\n  private addMilestoneSetsToMap(\n    milestoneSets: Array<MilestoneSet>,\n    map: Map<string, Milestone[]>\n  ): Map<string, Milestone[]> {\n    milestoneSets.forEach(milestoneSet => {\n      map.set(JSON.stringify(milestoneSet), []);\n    });\n\n    return map;\n  }\n\n  private addMilestonesToMap(\n    milestones: Array<Milestone>,\n    map: Map<string, Milestone[]>\n  ): Map<string, Milestone[]> {\n    milestones.forEach(milestone => {\n      const milestoneSetString = JSON.stringify(milestone.milestoneSet);\n      const arr = map.get(milestoneSetString);\n      arr.push(milestone);\n      map.set(milestoneSetString, arr);\n    });\n\n    return map;\n  }\n}\n","<!--\n  ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n  ~\n  ~ Licensed under EUPL, Version 1.2 (the \"License\");\n  ~ you may not use this file except in compliance with the License.\n  ~ You may obtain a copy of the License at\n  ~\n  ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n  ~\n  ~ Unless required by applicable law or agreed to in writing, software\n  ~ distributed under the License is distributed on an \"AS IS\" basis,\n  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  ~ See the License for the specific language governing permissions and\n  ~ limitations under the License.\n  -->\n\n<div *ngFor=\"let milestoneGroup of milestones\" class=\"mb-4\">\n  <valtimo-widget>\n    <h4 (click)=\"editMilestoneSet(milestoneGroup[0].id)\" class=\"milestone-title\">\n      {{ milestoneGroup[0].title }} ({{ milestoneGroup[0].id }})\n    </h4>\n    <valtimo-carbon-list\n      [items]=\"milestoneGroup[1]\"\n      [fields]=\"milestoneFields\"\n      (rowClicked)=\"editMilestone($event)\"\n    >\n    </valtimo-carbon-list>\n  </valtimo-widget>\n</div>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component} from '@angular/core';\n\n@Component({\n  standalone: false,\n  selector: 'valtimo-milestone',\n  templateUrl: './milestone.component.html',\n  styleUrls: ['./milestone.component.scss'],\n})\nexport class MilestoneComponent {}\n","<!--\n  ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n  ~\n  ~ Licensed under EUPL, Version 1.2 (the \"License\");\n  ~ you may not use this file except in compliance with the License.\n  ~ You may obtain a copy of the License at\n  ~\n  ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n  ~\n  ~ Unless required by applicable law or agreed to in writing, software\n  ~ distributed under the License is distributed on an \"AS IS\" basis,\n  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  ~ See the License for the specific language governing permissions and\n  ~ limitations under the License.\n  -->\n\n<div class=\"main-content pt-0\">\n  <div class=\"container-fluid\">\n    <div class=\"text-right\">\n      <div class=\"btn-group mt-m3px mb-3\">\n        <button [routerLink]=\"'sets/create'\" class=\"btn btn-primary btn-space\">\n          <i class=\"icon mdi mdi-plus\"></i> &nbsp;\n          <span>{{ 'Create new Milestone Set' | translate }}</span>\n        </button>\n        <button [routerLink]=\"'create'\" class=\"btn btn-primary btn-space mr-0\">\n          <i class=\"icon mdi mdi-plus\"></i> &nbsp;\n          <span>{{ 'Create new Milestone' | translate }}</span>\n        </button>\n      </div>\n    </div>\n    <valtimo-milestone-list></valtimo-milestone-list>\n  </div>\n</div>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, OnInit} from '@angular/core';\nimport {MilestoneService} from '../milestone.service';\nimport {FormBuilder, FormControl, FormGroup, Validators} from '@angular/forms';\nimport {AlertService} from '@valtimo/components';\nimport {Router} from '@angular/router';\n\n@Component({\n  standalone: false,\n  selector: 'valtimo-milestone-set-create',\n  templateUrl: './milestone-set-create.component.html',\n  styleUrls: ['./milestone-set-create.component.scss'],\n})\nexport class MilestoneSetCreateComponent implements OnInit {\n  public form: FormGroup;\n\n  constructor(\n    private milestoneService: MilestoneService,\n    private formBuilder: FormBuilder,\n    private router: Router,\n    private alertService: AlertService\n  ) {}\n\n  get formControls() {\n    return this.form.controls;\n  }\n\n  ngOnInit() {\n    this.form = this.formBuilder.group({\n      title: new FormControl('', Validators.required),\n    });\n  }\n\n  reset() {\n    this.form.setValue({\n      title: '',\n    });\n  }\n\n  createMilestoneSet() {\n    this.milestoneService.createMilestoneSet(this.form.value).subscribe(() => {\n      this.router.navigate(['/milestones']);\n      this.alertService.success('New Milestone set has been created');\n    });\n  }\n}\n","<!--\n  ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n  ~\n  ~ Licensed under EUPL, Version 1.2 (the \"License\");\n  ~ you may not use this file except in compliance with the License.\n  ~ You may obtain a copy of the License at\n  ~\n  ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n  ~\n  ~ Unless required by applicable law or agreed to in writing, software\n  ~ distributed under the License is distributed on an \"AS IS\" basis,\n  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  ~ See the License for the specific language governing permissions and\n  ~ limitations under the License.\n  -->\n\n<div class=\"main-content\">\n  <div class=\"container-fluid\">\n    <div class=\"col-12 px-0 mb-5\">\n      <valtimo-widget>\n        <div class=\"bg-white p-5\">\n          <form [formGroup]=\"form\" (ngSubmit)=\"createMilestoneSet()\">\n            <div class=\"form-group row\">\n              <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"title\">Title</label>\n              <div class=\"col-12 col-sm-8 col-lg-6\">\n                <input\n                  type=\"text\"\n                  id=\"title\"\n                  formControlName=\"title\"\n                  class=\"form-control\"\n                  placeholder=\"Milestone set title\"\n                  [ngClass]=\"{\n                    'is-valid': formControls.title.touched && formControls.title.valid,\n                    'is-invalid': formControls.title.touched && formControls.title.errors,\n                  }\"\n                  required\n                />\n                <div\n                  *ngIf=\"formControls.title.touched && formControls.title.errors\"\n                  class=\"invalid-feedback\"\n                >\n                  <div *ngIf=\"formControls.title.errors.required\">Title is required</div>\n                </div>\n              </div>\n            </div>\n\n            <div class=\"row pt-3 mt-1\">\n              <div class=\"col-12 col-sm-6 text-left\">\n                <a [routerLink]=\"'/milestones'\" class=\"btn btn-space btn-default\">Back</a>\n              </div>\n              <div class=\"col-12 col-sm-6 text-right\">\n                <button class=\"btn btn-space btn-secondary\" type=\"button\" (click)=\"reset()\">\n                  Reset\n                </button>\n                <button class=\"btn btn-space btn-primary\" type=\"submit\" [disabled]=\"form.invalid\">\n                  Submit\n                </button>\n              </div>\n            </div>\n          </form>\n        </div>\n      </valtimo-widget>\n    </div>\n  </div>\n</div>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, OnInit} from '@angular/core';\nimport {FormBuilder, FormControl, FormGroup, Validators} from '@angular/forms';\nimport {MilestoneService} from '../milestone.service';\nimport {Router} from '@angular/router';\nimport {AlertService} from '@valtimo/components';\nimport {Milestone, MilestoneSet} from '../models';\nimport {ProcessService, ProcessDefinition} from '@valtimo/process';\n\n@Component({\n  standalone: false,\n  selector: 'valtimo-milestone-create',\n  templateUrl: './milestone-create.component.html',\n  styleUrls: ['./milestone-create.component.scss'],\n})\nexport class MilestoneCreateComponent implements OnInit {\n  public form: FormGroup;\n  public milestoneSets: MilestoneSet[] = [];\n  public processDefinitions: ProcessDefinition[] = [];\n  public taskDefinitions: any[] = [];\n\n  constructor(\n    private milestoneService: MilestoneService,\n    private formBuilder: FormBuilder,\n    private router: Router,\n    private alertService: AlertService,\n    private processService: ProcessService\n  ) {}\n\n  get formControls() {\n    return this.form.controls;\n  }\n\n  ngOnInit() {\n    this.form = this.formBuilder.group({\n      milestoneSet: new FormControl('', Validators.required),\n      title: new FormControl('', Validators.required),\n      processDefinitionKey: new FormControl('', Validators.required),\n      taskDefinitionKey: new FormControl('', Validators.required),\n      plannedIntervalInDays: new FormControl('', [\n        Validators.required,\n        Validators.pattern('^[0-9]*$'),\n      ]),\n      color: new FormControl('', [\n        Validators.required,\n        Validators.pattern('^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$'),\n      ]),\n    });\n    this.getMilestoneSets();\n    this.getMilestones();\n  }\n\n  reset() {\n    this.form.patchValue({\n      milestoneSet: '',\n      title: '',\n      processDefinitionKey: '',\n      taskDefinitionKey: '',\n      plannedIntervalInDays: '',\n      color: '',\n    });\n  }\n\n  getMilestoneSets() {\n    this.milestoneService.getMilestoneSets().subscribe((milesetoneSets: MilestoneSet[]) => {\n      this.milestoneSets = milesetoneSets;\n    });\n  }\n\n  getMilestones() {\n    this.processService\n      .getProcessDefinitions()\n      .subscribe((processDefinitions: ProcessDefinition[]) => {\n        this.processDefinitions = processDefinitions;\n      });\n  }\n\n  getFlownodes(processDefinitionId: string) {\n    if (processDefinitionId) {\n      this.milestoneService.getFlownodes(processDefinitionId).subscribe((flowNodes: any[]) => {\n        this.taskDefinitions = flowNodes['flowNodeMap'];\n        this.form.controls.taskDefinitionKey.setValue('');\n      });\n    }\n  }\n\n  createMilestone() {\n    const milestone: Milestone = this.form.value;\n    milestone.processDefinitionKey = milestone.processDefinitionKey['key'];\n    milestone.id = null;\n    this.milestoneService.createMilestone(milestone).subscribe(\n      () => {\n        this.router.navigate(['/milestones']);\n        this.alertService.success('New Milestone has been created');\n      },\n      err => {\n        this.alertService.error('Error creating new milestone');\n      }\n    );\n  }\n}\n","<!--\n  ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n  ~\n  ~ Licensed under EUPL, Version 1.2 (the \"License\");\n  ~ you may not use this file except in compliance with the License.\n  ~ You may obtain a copy of the License at\n  ~\n  ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n  ~\n  ~ Unless required by applicable law or agreed to in writing, software\n  ~ distributed under the License is distributed on an \"AS IS\" basis,\n  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  ~ See the License for the specific language governing permissions and\n  ~ limitations under the License.\n  -->\n\n<div class=\"main-content\">\n  <div class=\"container-fluid\">\n    <div class=\"col-12 px-0 mb-5\">\n      <valtimo-widget>\n        <div class=\"bg-white p-5\">\n          <form [formGroup]=\"form\" (ngSubmit)=\"createMilestone()\">\n            <div class=\"form-group row\">\n              <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"title\"\n                >Milestone set</label\n              >\n              <div class=\"col-12 col-sm-8 col-lg-6\">\n                <select\n                  type=\"text\"\n                  id=\"milestoneSet\"\n                  formControlName=\"milestoneSet\"\n                  class=\"form-control\"\n                  [ngClass]=\"{\n                    'is-valid':\n                      formControls.milestoneSet.touched && formControls.milestoneSet.valid,\n                    'is-invalid':\n                      formControls.milestoneSet.touched && formControls.milestoneSet.errors,\n                  }\"\n                  required\n                >\n                  <option value=\"\" selected disabled>Choose a Milestone set</option>\n                  <option *ngFor=\"let milestoneSet of milestoneSets\" [value]=\"milestoneSet.id\">\n                    {{ milestoneSet.title }} ({{ milestoneSet.id }})\n                  </option>\n                </select>\n                <div\n                  *ngIf=\"formControls.milestoneSet.touched && formControls.milestoneSet.errors\"\n                  class=\"invalid-feedback\"\n                >\n                  <div *ngIf=\"formControls.milestoneSet.errors.required\">\n                    Milestone set is required\n                  </div>\n                </div>\n              </div>\n            </div>\n\n            <div class=\"form-group row\">\n              <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"title\">Title</label>\n              <div class=\"col-12 col-sm-8 col-lg-6\">\n                <input\n                  type=\"text\"\n                  id=\"title\"\n                  formControlName=\"title\"\n                  class=\"form-control\"\n                  placeholder=\"Milestone title\"\n                  [ngClass]=\"{\n                    'is-valid': formControls.title.touched && formControls.title.valid,\n                    'is-invalid': formControls.title.touched && formControls.title.errors,\n                  }\"\n                  required\n                />\n                <div\n                  *ngIf=\"formControls.title.touched && formControls.title.errors\"\n                  class=\"invalid-feedback\"\n                >\n                  <div *ngIf=\"formControls.title.errors.required\">Title is required</div>\n                </div>\n              </div>\n            </div>\n\n            <div class=\"form-group row\">\n              <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"process\"\n                >Process definition</label\n              >\n              <div class=\"col-12 col-sm-8 col-lg-6\">\n                <select\n                  type=\"text\"\n                  id=\"process\"\n                  formControlName=\"processDefinitionKey\"\n                  class=\"form-control\"\n                  (ngModelChange)=\"getFlownodes($event.id)\"\n                  [ngClass]=\"{\n                    'is-valid':\n                      formControls.processDefinitionKey.touched &&\n                      formControls.processDefinitionKey.valid,\n                    'is-invalid':\n                      formControls.processDefinitionKey.touched &&\n                      formControls.processDefinitionKey.errors,\n                  }\"\n                  required\n                >\n                  <option value=\"\" selected disabled>Choose a process</option>\n                  <option\n                    *ngFor=\"let processDefinition of processDefinitions\"\n                    [ngValue]=\"processDefinition\"\n                  >\n                    {{ processDefinition.name }} ({{ processDefinition.key }})\n                  </option>\n                </select>\n                <div\n                  *ngIf=\"\n                    formControls.processDefinitionKey.touched &&\n                    formControls.processDefinitionKey.errors\n                  \"\n                  class=\"invalid-feedback\"\n                >\n                  <div *ngIf=\"formControls.processDefinitionKey.errors.required\">\n                    Process is required\n                  </div>\n                </div>\n              </div>\n            </div>\n\n            <div class=\"form-group row\">\n              <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"process\">Task</label>\n              <div class=\"col-12 col-sm-8 col-lg-6\">\n                <select\n                  type=\"text\"\n                  id=\"task\"\n                  formControlName=\"taskDefinitionKey\"\n                  class=\"form-control\"\n                  [ngClass]=\"{\n                    'is-valid':\n                      formControls.taskDefinitionKey.touched &&\n                      formControls.taskDefinitionKey.valid,\n                    'is-invalid':\n                      formControls.taskDefinitionKey.touched &&\n                      formControls.taskDefinitionKey.errors,\n                  }\"\n                  required\n                >\n                  <option value=\"\" selected disabled>Choose a task</option>\n                  <option\n                    *ngFor=\"let taskDefinition of taskDefinitions | keyvalue\"\n                    [value]=\"taskDefinition.key\"\n                  >\n                    {{ taskDefinition.value }} ({{ taskDefinition.key }})\n                  </option>\n                </select>\n                <div\n                  *ngIf=\"\n                    formControls.taskDefinitionKey.touched && formControls.taskDefinitionKey.errors\n                  \"\n                  class=\"invalid-feedback\"\n                >\n                  <div *ngIf=\"formControls.taskDefinitionKey.errors.required\">Task is required</div>\n                </div>\n              </div>\n            </div>\n\n            <div class=\"form-group row\">\n              <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"interval\"\n                >Interval (in days)</label\n              >\n              <div class=\"col-12 col-sm-8 col-lg-6\">\n                <input\n                  type=\"text\"\n                  id=\"interval\"\n                  formControlName=\"plannedIntervalInDays\"\n                  class=\"form-control\"\n                  placeholder=\"Interval (in days)\"\n                  [ngClass]=\"{\n                    'is-valid':\n                      formControls.plannedIntervalInDays.touched &&\n                      formControls.plannedIntervalInDays.valid,\n                    'is-invalid':\n                      formControls.plannedIntervalInDays.touched &&\n                      formControls.plannedIntervalInDays.errors,\n                  }\"\n                  required\n                />\n                <div\n                  *ngIf=\"\n                    formControls.plannedIntervalInDays.touched &&\n                    formControls.plannedIntervalInDays.errors\n                  \"\n                  class=\"invalid-feedback\"\n                >\n                  <div *ngIf=\"formControls.plannedIntervalInDays.errors.required\">\n                    Interval is required\n                  </div>\n                  <div *ngIf=\"formControls.plannedIntervalInDays.errors.pattern\">\n                    Interval is not a valid number\n                  </div>\n                </div>\n              </div>\n            </div>\n\n            <div class=\"form-group row\">\n              <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"color\">Color</label>\n              <div class=\"col-12 col-sm-8 col-lg-6\">\n                <input\n                  [colorPicker]=\"form.value.color\"\n                  (colorPickerChange)=\"form.controls.color.setValue($event)\"\n                  [style.background]=\"form.value.color\"\n                  type=\"text\"\n                  id=\"color\"\n                  formControlName=\"color\"\n                  class=\"form-control\"\n                  placeholder=\"Color\"\n                  [ngClass]=\"{\n                    'is-valid': formControls.color.touched && formControls.color.valid,\n                    'is-invalid': formControls.color.touched && formControls.color.errors,\n                  }\"\n                  required\n                />\n                <div\n                  *ngIf=\"formControls.color.touched && formControls.color.errors\"\n                  class=\"invalid-feedback\"\n                >\n                  <div *ngIf=\"formControls.color.errors.required\">Interval is required</div>\n                  <div *ngIf=\"formControls.color.errors.pattern\">Color is not a valid hex code</div>\n                </div>\n              </div>\n            </div>\n\n            <div class=\"row pt-3 mt-1\">\n              <div class=\"col-12 col-sm-6 text-left\">\n                <a [routerLink]=\"'/milestones'\" class=\"btn btn-space btn-default\">Back</a>\n              </div>\n              <div class=\"col-12 col-sm-6 text-right\">\n                <button class=\"btn btn-space btn-secondary\" type=\"button\" (click)=\"reset()\">\n                  Reset\n                </button>\n                <button class=\"btn btn-space btn-primary\" type=\"submit\" [disabled]=\"form.invalid\">\n                  Submit\n                </button>\n              </div>\n            </div>\n          </form>\n        </div>\n      </valtimo-widget>\n    </div>\n  </div>\n</div>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, OnInit} from '@angular/core';\nimport {FormBuilder, FormControl, FormGroup, Validators} from '@angular/forms';\nimport {MilestoneService} from '../milestone.service';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {AlertService} from '@valtimo/components';\nimport {MilestoneSet} from '../models';\n\n@Component({\n  standalone: false,\n  selector: 'valtimo-milestone-set-edit',\n  templateUrl: './milestone-set-edit.component.html',\n  styleUrls: ['./milestone-set-edit.component.scss'],\n})\nexport class MilestoneSetEditComponent implements OnInit {\n  public form: FormGroup;\n\n  constructor(\n    private milestoneService: MilestoneService,\n    private formBuilder: FormBuilder,\n    private router: Router,\n    private alertService: AlertService,\n    private route: ActivatedRoute\n  ) {}\n\n  get formControls() {\n    return this.form.controls;\n  }\n\n  ngOnInit() {\n    this.form = this.formBuilder.group({\n      id: new FormControl({value: '', disabled: true}, Validators.required),\n      title: new FormControl({}, Validators.required),\n    });\n    this.getMilestoneSet();\n  }\n\n  reset() {\n    this.form.controls.title.setValue('');\n  }\n\n  getMilestoneSet() {\n    const milestoneSetId = this.route.snapshot.paramMap.get('id');\n    this.milestoneService\n      .getMilestoneSet(+milestoneSetId)\n      .subscribe((milestoneSet: MilestoneSet) => {\n        this.form.setValue({\n          id: milestoneSet.id,\n          title: milestoneSet.title,\n        });\n      });\n  }\n\n  delete() {\n    // Todo: add confirmation dialog after it's fixed\n    this.deleteMilestoneSet();\n  }\n\n  deleteMilestoneSet() {\n    this.milestoneService.deleteMilestoneSet(this.form.getRawValue().id).subscribe(\n      () => {\n        this.router.navigate(['/milestones']);\n        this.alertService.success('Milestone set has been deleted');\n      },\n      err => {\n        this.router.navigate(['/milestones']);\n        this.alertService.error(\n          'Could not delete Milestone set. Make sure this Milestone set does not contain any milestones.'\n        );\n      }\n    );\n  }\n\n  updateMilestoneSet() {\n    this.milestoneService.updateMilestoneSet(this.form.getRawValue()).subscribe(() => {\n      this.router.navigate(['/milestones']);\n      this.alertService.success('Milestone set has been updated');\n    });\n  }\n}\n","<!--\n  ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n  ~\n  ~ Licensed under EUPL, Version 1.2 (the \"License\");\n  ~ you may not use this file except in compliance with the License.\n  ~ You may obtain a copy of the License at\n  ~\n  ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n  ~\n  ~ Unless required by applicable law or agreed to in writing, software\n  ~ distributed under the License is distributed on an \"AS IS\" basis,\n  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  ~ See the License for the specific language governing permissions and\n  ~ limitations under the License.\n  -->\n\n<div class=\"main-content\">\n  <div class=\"container-fluid\">\n    <div class=\"col-12 px-0 mb-5\">\n      <valtimo-widget>\n        <div class=\"card-body bg-light\">\n          <div class=\"row py-5\">\n            <div class=\"col-12\">\n              <div class=\"row\">\n                <div class=\"col-12 col-sm-3 text-sm-right\"><strong>ID</strong></div>\n                <div class=\"col-12 col-sm-8 col-lg-6\">{{ form.getRawValue().id }}</div>\n              </div>\n            </div>\n          </div>\n        </div>\n        <div class=\"bg-white p-5\">\n          <form [formGroup]=\"form\" (ngSubmit)=\"updateMilestoneSet()\">\n            <div class=\"form-group row\">\n              <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"title\">Title</label>\n              <div class=\"col-12 col-sm-8 col-lg-6\">\n                <input\n                  type=\"text\"\n                  id=\"title\"\n                  formControlName=\"title\"\n                  class=\"form-control\"\n                  placeholder=\"Milestone set title\"\n                  [ngClass]=\"{\n                    'is-valid': formControls.title.touched && formControls.title.valid,\n                    'is-invalid': formControls.title.touched && formControls.title.errors,\n                  }\"\n                  required\n                />\n                <div\n                  *ngIf=\"formControls.title.touched && formControls.title.errors\"\n                  class=\"invalid-feedback\"\n                >\n                  <div *ngIf=\"formControls.title.errors.required\">Title is required</div>\n                </div>\n              </div>\n            </div>\n\n            <div class=\"row pt-3 mt-1\">\n              <div class=\"col-12 col-sm-6 text-left\">\n                <a [routerLink]=\"'/milestones'\" class=\"btn btn-space btn-default\">Back</a>\n                <button type=\"button\" class=\"btn btn-space btn-danger\" (click)=\"delete()\">\n                  Delete\n                </button>\n              </div>\n              <div class=\"col-12 col-sm-6 text-right\">\n                <button class=\"btn btn-space btn-secondary\" type=\"button\" (click)=\"reset()\">\n                  Reset\n                </button>\n                <button class=\"btn btn-space btn-primary\" type=\"submit\" [disabled]=\"form.invalid\">\n                  Submit\n                </button>\n              </div>\n            </div>\n          </form>\n        </div>\n      </valtimo-widget>\n    </div>\n  </div>\n</div>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, OnInit} from '@angular/core';\nimport {FormBuilder, FormControl, FormGroup, Validators} from '@angular/forms';\nimport {Milestone, MilestoneSet} from '../models';\nimport {MilestoneService} from '../milestone.service';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {AlertService} from '@valtimo/components';\nimport {ProcessService, ProcessDefinition} from '@valtimo/process';\nimport {switchMap} from 'rxjs/operators';\n\n@Component({\n  standalone: false,\n  selector: 'valtimo-milestone-edit',\n  templateUrl: './milestone-edit.component.html',\n  styleUrls: ['./milestone-edit.component.scss'],\n})\nexport class MilestoneEditComponent implements OnInit {\n  public form: FormGroup;\n  public milestoneSets: MilestoneSet[] = [];\n  public processDefinitions: ProcessDefinition[] = [];\n  public taskDefinitions: any[] = [];\n\n  constructor(\n    private milestoneService: MilestoneService,\n    private formBuilder: FormBuilder,\n    private router: Router,\n    private alertService: AlertService,\n    private processService: ProcessService,\n    private route: ActivatedRoute\n  ) {}\n\n  get formControls() {\n    return this.form.controls;\n  }\n\n  ngOnInit() {\n    this.form = this.formBuilder.group({\n      id: new FormControl({value: '', disabled: true}, Validators.required),\n      milestoneSet: new FormControl('', Validators.required),\n      title: new FormControl('', Validators.required),\n      processDefinitionKey: new FormControl('', Validators.required),\n      taskDefinitionKey: new FormControl('', Validators.required),\n      plannedIntervalInDays: new FormControl('', [\n        Validators.required,\n        Validators.pattern('^[0-9]*$'),\n      ]),\n      color: new FormControl('', [\n        Validators.required,\n        Validators.pattern('^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$'),\n      ]),\n    });\n    this.getMilestone();\n    this.getMilestoneSets();\n    this.getProcessDefinitions();\n  }\n\n  reset() {\n    this.form.patchValue({\n      milestoneSet: '',\n      title: '',\n      processDefinitionKey: '',\n      taskDefinitionKey: '',\n      plannedIntervalInDays: '',\n      color: '',\n    });\n  }\n\n  getMilestone() {\n    const milestoneId = this.route.snapshot.paramMap.get('id');\n    this.milestoneService\n      .getMilestone(+milestoneId)\n      .pipe(\n        switchMap((milestone: Milestone) => {\n          this.form.patchValue({\n            id: milestone.id,\n            milestoneSet: milestone.milestoneSet.id,\n            title: milestone.title,\n            plannedIntervalInDays: milestone.plannedIntervalInDays,\n            color: milestone.color,\n            taskDefinitionKey: milestone.taskDefinitionKey,\n          });\n          return this.processService.getProcessDefinition(milestone.processDefinitionKey);\n        })\n      )\n      .subscribe((processDefinition: ProcessDefinition) => {\n        this.form.patchValue({\n          processDefinitionKey: processDefinition,\n        });\n      });\n  }\n\n  compareProcessDefinitions(\n    processDefinition1: ProcessDefinition,\n    processDefinition2: ProcessDefinition\n  ) {\n    return processDefinition1.id === processDefinition2.id;\n  }\n\n  getMilestoneSets() {\n    this.milestoneService.getMilestoneSets().subscribe((milesetoneSets: MilestoneSet[]) => {\n      this.milestoneSets = milesetoneSets;\n    });\n  }\n\n  getProcessDefinitions() {\n    this.processService\n      .getProcessDefinitions()\n      .subscribe((processDefinitions: ProcessDefinition[]) => {\n        this.processDefinitions = processDefinitions;\n      });\n  }\n\n  getFlownodes(processDefinitionId: string) {\n    if (processDefinitionId) {\n      this.milestoneService.getFlownodes(processDefinitionId).subscribe((flowNodes: any[]) => {\n        this.taskDefinitions = flowNodes['flowNodeMap'];\n      });\n    }\n  }\n\n  delete() {\n    // Todo: add confirmation dialog after it's fixed\n    this.deleteMilestone();\n  }\n\n  deleteMilestone() {\n    this.milestoneService.deleteMilestone(this.form.getRawValue().id).subscribe(\n      () => {\n        this.router.navigate(['/milestones']);\n        this.alertService.success('Milestone has been deleted');\n      },\n      err => {\n        this.router.navigate(['/milestones']);\n        this.alertService.error('Could not delete Milestone');\n      }\n    );\n  }\n\n  updateMilestone() {\n    const milestone: Milestone = this.form.getRawValue();\n    milestone.processDefinitionKey = milestone.processDefinitionKey['key'];\n    this.milestoneService.updateMilestone(milestone).subscribe(\n      () => {\n        this.router.navigate(['/milestones']);\n        this.alertService.success('Milestone has been updated');\n      },\n      err => {\n        this.alertService.error('Error updating milestone');\n      }\n    );\n  }\n}\n","<!--\n  ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n  ~\n  ~ Licensed under EUPL, Version 1.2 (the \"License\");\n  ~ you may not use this file except in compliance with the License.\n  ~ You may obtain a copy of the License at\n  ~\n  ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n  ~\n  ~ Unless required by applicable law or agreed to in writing, software\n  ~ distributed under the License is distributed on an \"AS IS\" basis,\n  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  ~ See the License for the specific language governing permissions and\n  ~ limitations under the License.\n  -->\n\n<div class=\"main-content\">\n  <div class=\"container-fluid\">\n    <div class=\"col-12 px-0 mb-5\">\n      <valtimo-widget>\n        <div class=\"card-body bg-light\">\n          <div class=\"row py-5\">\n            <div class=\"col-12\">\n              <div class=\"row\">\n                <div class=\"col-12 col-sm-3 text-sm-right\"><strong>ID</strong></div>\n                <div class=\"col-12 col-sm-8 col-lg-6\">{{ form.getRawValue().id }}</div>\n              </div>\n            </div>\n          </div>\n        </div>\n        <div class=\"bg-white p-5\">\n          <form [formGroup]=\"form\" (ngSubmit)=\"updateMilestone()\">\n            <div class=\"form-group row\">\n              <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"title\"\n                >Milestone set</label\n              >\n              <div class=\"col-12 col-sm-8 col-lg-6\">\n                <select\n                  type=\"text\"\n                  id=\"milestoneSet\"\n                  formControlName=\"milestoneSet\"\n                  class=\"form-control\"\n                  [ngClass]=\"{\n                    'is-valid':\n                      formControls.milestoneSet.touched && formControls.milestoneSet.valid,\n                    'is-invalid':\n                      formControls.milestoneSet.touched && formControls.milestoneSet.errors,\n                  }\"\n                  required\n                >\n                  <option value=\"\" selected disabled>Choose a Milestone set</option>\n                  <option *ngFor=\"let milestoneSet of milestoneSets\" [value]=\"milestoneSet.id\">\n                    {{ milestoneSet.title }} ({{ milestoneSet.id }})\n                  </option>\n                </select>\n                <div\n                  *ngIf=\"formControls.milestoneSet.touched && formControls.milestoneSet.errors\"\n                  class=\"invalid-feedback\"\n                >\n                  <div *ngIf=\"formControls.milestoneSet.errors.required\">\n                    Milestone set is required\n                  </div>\n                </div>\n              </div>\n            </div>\n\n            <div class=\"form-group row\">\n              <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"title\">Title</label>\n              <div class=\"col-12 col-sm-8 col-lg-6\">\n                <input\n                  type=\"text\"\n                  id=\"title\"\n                  formControlName=\"title\"\n                  class=\"form-control\"\n                  placeholder=\"Milestone title\"\n                  [ngClass]=\"{\n                    'is-valid': formControls.title.touched && formControls.title.valid,\n                    'is-invalid': formControls.title.touched && formControls.title.errors,\n                  }\"\n                  required\n                />\n                <div\n                  *ngIf=\"formControls.title.touched && formControls.title.errors\"\n                  class=\"invalid-feedback\"\n                >\n                  <div *ngIf=\"formControls.title.errors.required\">Title is required</div>\n                </div>\n              </div>\n            </div>\n\n            <div class=\"form-group row\">\n              <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"process\"\n                >Process definition</label\n              >\n              <div class=\"col-12 col-sm-8 col-lg-6\">\n                <select\n                  type=\"text\"\n                  id=\"process\"\n                  formControlName=\"processDefinitionKey\"\n                  class=\"form-control\"\n                  (ngModelChange)=\"getFlownodes($event.id)\"\n                  [ngClass]=\"{\n                    'is-valid':\n                      formControls.processDefinitionKey.touched &&\n                      formControls.processDefinitionKey.valid,\n                    'is-invalid':\n                      formControls.processDefinitionKey.touched &&\n                      formControls.processDefinitionKey.errors,\n                  }\"\n                  required\n                  [compareWith]=\"compareProcessDefinitions\"\n                >\n                  <option value=\"\" disabled>Choose a process</option>\n                  <option\n                    *ngFor=\"let processDefinition of processDefinitions\"\n                    [ngValue]=\"processDefinition\"\n                  >\n                    {{ processDefinition.name }} ({{ processDefinition.key }})\n                  </option>\n                </select>\n                <div\n                  *ngIf=\"\n                    formControls.processDefinitionKey.touched &&\n                    formControls.processDefinitionKey.errors\n                  \"\n                  class=\"invalid-feedback\"\n                >\n                  <div *ngIf=\"formControls.processDefinitionKey.errors.required\">\n                    Process is required\n                  </div>\n                </div>\n              </div>\n            </div>\n\n            <div class=\"form-group row\">\n              <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"process\">Task</label>\n              <div class=\"col-12 col-sm-8 col-lg-6\">\n                <select\n                  type=\"text\"\n                  id=\"task\"\n                  formControlName=\"taskDefinitionKey\"\n                  class=\"form-control\"\n                  [ngClass]=\"{\n                    'is-valid':\n                      formControls.taskDefinitionKey.touched &&\n                      formControls.taskDefinitionKey.valid,\n                    'is-invalid':\n                      formControls.taskDefinitionKey.touched &&\n                      formControls.taskDefinitionKey.errors,\n                  }\"\n                  required\n                >\n                  <option value=\"\" disabled>Choose a task</option>\n                  <option\n                    *ngFor=\"let taskDefinition of taskDefinitions | keyvalue\"\n                    [value]=\"taskDefinition.key\"\n                  >\n                    {{ taskDefinition.value }} ({{ taskDefinition.key }})\n                  </option>\n                </select>\n                <div\n                  *ngIf=\"\n                    formControls.taskDefinitionKey.touched && formControls.taskDefinitionKey.errors\n                  \"\n                  class=\"invalid-feedback\"\n                >\n                  <div *ngIf=\"formControls.taskDefinitionKey.errors.required\">Task is required</div>\n                </div>\n              </div>\n            </div>\n\n            <div class=\"form-group row\">\n              <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"interval\"\n                >Interval (in days)</label\n              >\n              <div class=\"col-12 col-sm-8 col-lg-6\">\n                <input\n                  type=\"text\"\n                  id=\"interval\"\n                  formControlName=\"plannedIntervalInDays\"\n                  class=\"form-control\"\n                  placeholder=\"Interval (in days)\"\n                  [ngClass]=\"{\n                    'is-valid':\n                      formControls.plannedIntervalInDays.touched &&\n                      formControls.plannedIntervalInDays.valid,\n                    'is-invalid':\n                      formControls.plannedIntervalInDays.touched &&\n                      formControls.plannedIntervalInDays.errors,\n                  }\"\n                  required\n                />\n                <div\n                  *ngIf=\"\n                    formControls.plannedIntervalInDays.touched &&\n                    formControls.plannedIntervalInDays.errors\n                  \"\n                  class=\"invalid-feedback\"\n                >\n                  <div *ngIf=\"formControls.plannedIntervalInDays.errors.required\">\n                    Interval is required\n                  </div>\n                  <div *ngIf=\"formControls.plannedIntervalInDays.errors.pattern\">\n                    Interval is not a valid number\n                  </div>\n                </div>\n              </div>\n            </div>\n\n            <div class=\"form-group row\">\n              <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"color\">Color</label>\n              <div class=\"col-12 col-sm-8 col-lg-6\">\n                <input\n                  [colorPicker]=\"form.value.color\"\n                  (colorPickerChange)=\"form.controls.color.setValue($event)\"\n                  [style.background]=\"form.value.color\"\n                  type=\"text\"\n                  id=\"color\"\n                  formControlName=\"color\"\n                  class=\"form-control\"\n                  placeholder=\"Color\"\n                  [ngClass]=\"{\n                    'is-valid': formControls.color.touched && formControls.color.valid,\n                    'is-invalid': formControls.color.touched && formControls.color.errors,\n                  }\"\n                  required\n                />\n                <div\n                  *ngIf=\"formControls.color.touched && formControls.color.errors\"\n                  class=\"invalid-feedback\"\n                >\n                  <div *ngIf=\"formControls.color.errors.required\">Color is required</div>\n                  <div *ngIf=\"formControls.color.errors.pattern\">Color is not a valid hex code</div>\n                </div>\n              </div>\n            </div>\n\n            <div class=\"row pt-3 mt-1\">\n              <div class=\"col-12 col-sm-6 text-left\">\n                <a [routerLink]=\"'/milestones'\" class=\"btn btn-space btn-default\">Back</a>\n                <button type=\"button\" class=\"btn btn-space btn-danger\" (click)=\"delete()\">\n                  Delete\n                </button>\n              </div>\n              <div class=\"col-12 col-sm-6 text-right\">\n                <button class=\"btn btn-space btn-secondary\" type=\"button\" (click)=\"reset()\">\n                  Reset\n                </button>\n                <button class=\"btn btn-space btn-primary\" type=\"submit\" [disabled]=\"form.invalid\">\n                  Submit\n                </button>\n              </div>\n            </div>\n          </form>\n        </div>\n      </valtimo-widget>\n    </div>\n  </div>\n</div>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {NgModule} from '@angular/core';\nimport {RouterModule, Routes} from '@angular/router';\nimport {CommonModule} from '@angular/common';\nimport {AuthGuardService} from '@valtimo/security';\nimport {MilestoneComponent} from './milestone.component';\nimport {MilestoneSetCreateComponent} from './milestone-set-create/milestone-set-create.component';\nimport {MilestoneCreateComponent} from './milestone-create/milestone-create.component';\nimport {MilestoneSetEditComponent} from './milestone-set-edit/milestone-set-edit.component';\nimport {MilestoneEditComponent} from './milestone-edit/milestone-edit.component';\nimport {ROLE_ADMIN} from '@valtimo/shared';\n\nconst routes: Routes = [\n  {\n    path: 'milestones',\n    component: MilestoneComponent,\n    canActivate: [AuthGuardService],\n    data: {title: 'Milestones', roles: [ROLE_ADMIN]},\n  },\n  {\n    path: 'milestones/sets/create',\n    component: MilestoneSetCreateComponent,\n    canActivate: [AuthGuardService],\n    data: {title: 'Create new Milestone Set', roles: [ROLE_ADMIN]},\n  },\n  {\n    path: 'milestones/create',\n    component: MilestoneCreateComponent,\n    canActivate: [AuthGuardService],\n    data: {title: 'Create new Milestone', roles: [ROLE_ADMIN]},\n  },\n  {\n    path: 'milestones/sets/set/:id',\n    component: MilestoneSetEditComponent,\n    canActivate: [AuthGuardService],\n    data: {title: 'Milestone Set details', roles: [ROLE_ADMIN]},\n  },\n  {\n    path: 'milestones/milestone/:id',\n    component: MilestoneEditComponent,\n    canActivate: [AuthGuardService],\n    data: {title: 'Milestone details', roles: [ROLE_ADMIN]},\n  },\n];\n\n@NgModule({\n  declarations: [],\n  imports: [CommonModule, RouterModule.forChild(routes)],\n  exports: [RouterModule],\n})\nexport class MilestoneRoutingModule {}\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 {NgModule} from '@angular/core';\nimport {MilestoneComponent} from './milestone.component';\nimport {MilestoneSetCreateComponent} from './milestone-set-create/milestone-set-create.component';\nimport {RouterModule} from '@angular/router';\nimport {MilestoneRoutingModule} from './milestone-routing.module';\nimport {MilestoneListComponent} from './milestone-list/milestone-list.component';\nimport {CommonModule} from '@angular/common';\nimport {CarbonListModule, WidgetModule} from '@valtimo/components';\nimport {MilestoneCreateComponent} from './milestone-create/milestone-create.component';\nimport {MilestoneEditComponent} from './milestone-edit/milestone-edit.component';\nimport {MilestoneSetEditComponent} from './milestone-set-edit/milestone-set-edit.component';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {ColorPickerModule} from 'ngx-color-picker';\nimport {TranslateModule} from '@ngx-translate/core';\n\n@NgModule({\n  declarations: [\n    MilestoneComponent,\n    MilestoneSetCreateComponent,\n    MilestoneListComponent,\n    MilestoneCreateComponent,\n    MilestoneEditComponent,\n    MilestoneSetEditComponent,\n  ],\n  imports: [\n    MilestoneRoutingModule,\n    CommonModule,\n    WidgetModule,\n    ReactiveFormsModule,\n    ColorPickerModule,\n    TranslateModule,\n    RouterModule,\n    CarbonListModule,\n  ],\n  exports: [MilestoneComponent],\n})\nexport class MilestoneModule {}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/*\n * Public API Surface of milestone\n */\n\nexport * from './lib/models/';\nexport * from './lib/milestone.service';\nexport * from './lib/milestone.component';\nexport * from './lib/milestone.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.MilestoneService","i2","i3","i1","i2.MilestoneListComponent","i5"],"mappings":"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"}