From 6cb8197f0cea8273f20d781f447e0c67a4d71527 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20OLIVIER?= Date: Fri, 22 May 2026 18:18:19 +0200 Subject: [PATCH] =?UTF-8?q?Correction=20navigation=20apr=C3=A8s=20enregist?= =?UTF-8?q?rement=20issue?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/issues/issue-detail/issue-detail.css | 21 +++++++++++++++ src/app/issues/issue-detail/issue-detail.html | 15 +++++++---- src/app/issues/issue-detail/issue-detail.ts | 26 ++++++++++++++++--- 3 files changed, 54 insertions(+), 8 deletions(-) diff --git a/src/app/issues/issue-detail/issue-detail.css b/src/app/issues/issue-detail/issue-detail.css index c28b547..8f6cb2e 100644 --- a/src/app/issues/issue-detail/issue-detail.css +++ b/src/app/issues/issue-detail/issue-detail.css @@ -47,6 +47,20 @@ background-color: #047857; } +.cancel-button { + border: 1px solid #d1d5db; + border-radius: 0.5rem; + background-color: #ffffff; + color: #374151; + padding: 0.65rem 1rem; + font-weight: 600; + cursor: pointer; +} + +.cancel-button:hover { + background-color: #f3f4f6; +} + .detail-card { background-color: #ffffff; border: 1px solid #e5e7eb; @@ -93,6 +107,13 @@ tr:last-child td { border-bottom: none; } +.form-actions { + margin-top: 1rem; + display: flex; + justify-content: flex-end; + gap: 0.75rem; +} + @media (max-width: 768px) { .page-header { flex-direction: column; diff --git a/src/app/issues/issue-detail/issue-detail.html b/src/app/issues/issue-detail/issue-detail.html index b6fc2f7..6b5ea43 100644 --- a/src/app/issues/issue-detail/issue-detail.html +++ b/src/app/issues/issue-detail/issue-detail.html @@ -3,11 +3,8 @@

Detail de l'issue

Informations de creation et de suivi de l'issue.

- - @if (isEditing) { - + @if (!isEditing) { + } @@ -110,3 +107,11 @@ + +@if (isEditing) { +
+ + +
+} + diff --git a/src/app/issues/issue-detail/issue-detail.ts b/src/app/issues/issue-detail/issue-detail.ts index 755ca40..f56eaef 100644 --- a/src/app/issues/issue-detail/issue-detail.ts +++ b/src/app/issues/issue-detail/issue-detail.ts @@ -16,15 +16,35 @@ export class IssueDetail { protected issue: IssueEntity = this.buildIssue(); protected isEditing = this.route.snapshot.queryParamMap.get('mode') === 'edit'; + private issueBeforeEdit: IssueEntity | null = null; - protected toggleEdit(): void { - this.isEditing = !this.isEditing; + constructor() { + if (this.isEditing) { + this.issueBeforeEdit = this.cloneIssue(this.issue); + } + } + + protected startEdit(): void { + this.issueBeforeEdit = this.cloneIssue(this.issue); + this.isEditing = true; + } + + protected cancelEdit(): void { + if (this.issueBeforeEdit) { + this.issue = this.cloneIssue(this.issueBeforeEdit); + } + this.isEditing = false; } protected saveIssue(): void { this.issuesStore.upsert(this.issue); + this.issueBeforeEdit = this.cloneIssue(this.issue); this.isEditing = false; - this.router.navigate(['/issues']); + this.router.navigate(['/issues', this.issue.id]); + } + + private cloneIssue(issue: IssueEntity): IssueEntity { + return { ...issue }; } private buildIssue(): IssueEntity {