From f4e40ffabcb60e3844db1dd6788eb538ffa18154 Mon Sep 17 00:00:00 2001 From: Josep Piguillem Date: Thu, 15 Oct 2026 20:25:52 +0200 Subject: [PATCH] fix(web): forms open as new, not touched from the last time Opening a drawer form refilled its model only, so a field touched the time before came back showing its errors. They reset the form state now (touched and dirty) along with the values. Co-Authored-By: Claude Opus 5.5 --- libs/web/tracker/presenters/src/lib/pages/board.page.ts | 4 ++-- libs/web/tracker/presenters/src/lib/pages/issue.page.ts | 6 +++--- libs/web/tracker/presenters/src/lib/pages/projects.page.ts | 2 +- libs/web/tracker/presenters/src/lib/pages/releases.page.ts | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/libs/web/tracker/presenters/src/lib/pages/board.page.ts b/libs/web/tracker/presenters/src/lib/pages/board.page.ts index 9da6797..9ac6d72 100644 --- a/libs/web/tracker/presenters/src/lib/pages/board.page.ts +++ b/libs/web/tracker/presenters/src/lib/pages/board.page.ts @@ -792,7 +792,7 @@ export class BoardPage { ); if (this.project.workflow().requiresReason(to)) { this.pendingMove = { issueId, to }; - this.reasonModel.set({ text: '' }); + this.reason().reset({ text: '' }); this.drawer.open(`Mover a «${this.statusLabel(to)}»`, this.reasonForm()); return; } @@ -886,7 +886,7 @@ export class BoardPage { const types = this.typeOptions(); if (!types.some((t) => t.value === this.newType())) this.newType.set(types[0]?.value ?? ''); - this.model.set({ + this.f().reset({ title: '', description: '', figmaUrl: '', diff --git a/libs/web/tracker/presenters/src/lib/pages/issue.page.ts b/libs/web/tracker/presenters/src/lib/pages/issue.page.ts index 9916bfd..9edcbfe 100644 --- a/libs/web/tracker/presenters/src/lib/pages/issue.page.ts +++ b/libs/web/tracker/presenters/src/lib/pages/issue.page.ts @@ -1369,7 +1369,7 @@ export class IssuePage { protected move(to: string): void { if (this.project.workflow().requiresReason(to)) { this.pendingStatus = to; - this.reasonModel.set({ text: '' }); + this.reason().reset({ text: '' }); this.drawer.open(`Mover a «${this.statusLabel(to)}»`, this.reasonForm()); return; } @@ -1547,7 +1547,7 @@ export class IssuePage { protected openEditComment(comment: Comment): void { this.editingComment = comment.id; - this.commentEditModel.set({ body: comment.body }); + this.commentEdit().reset({ body: comment.body }); this.trackEditing( this.drawer.open('Editar comentario', this.commentEditForm()), ); @@ -1567,7 +1567,7 @@ export class IssuePage { protected openEdit(): void { const issue = this.facade.issue(); if (!issue) return; - this.editModel.set({ + this.edit().reset({ title: issue.title, description: issue.description ?? '', labels: issue.labels.join(', '), diff --git a/libs/web/tracker/presenters/src/lib/pages/projects.page.ts b/libs/web/tracker/presenters/src/lib/pages/projects.page.ts index fc8abc4..b51a13f 100644 --- a/libs/web/tracker/presenters/src/lib/pages/projects.page.ts +++ b/libs/web/tracker/presenters/src/lib/pages/projects.page.ts @@ -385,7 +385,7 @@ export class ProjectsPage implements OnInit { } protected openCreate(): void { - this.model.set({ + this.f().reset({ key: '', name: '', description: '', diff --git a/libs/web/tracker/presenters/src/lib/pages/releases.page.ts b/libs/web/tracker/presenters/src/lib/pages/releases.page.ts index 693a1f3..667c493 100644 --- a/libs/web/tracker/presenters/src/lib/pages/releases.page.ts +++ b/libs/web/tracker/presenters/src/lib/pages/releases.page.ts @@ -422,7 +422,7 @@ export class ReleasesPage { protected readonly when = releaseWhen; protected openCreate(): void { - this.model.set({ name: '', description: '', targetDate: '' }); + this.f().reset({ name: '', description: '', targetDate: '' }); this.drawer.open('Nueva release', this.createForm()); }