From 91c695cc688bd70bc88e5f1c497d7b5ffa9cc707 Mon Sep 17 00:00:00 2001 From: Eduardo Lopes <155753879+eduardolopesx03@users.noreply.github.com> Date: Thu, 22 Jan 2026 17:38:45 -0300 Subject: [PATCH] Add Mureg delete confirmation modal --- src/app/pages/mureg/mureg.html | 44 +++++++++++++++++++++++++++++- src/app/pages/mureg/mureg.scss | 5 +++- src/app/pages/mureg/mureg.ts | 49 ++++++++++++++++++++++++++++++++++ 3 files changed, 96 insertions(+), 2 deletions(-) diff --git a/src/app/pages/mureg/mureg.html b/src/app/pages/mureg/mureg.html index 7c30f18..41b3367 100644 --- a/src/app/pages/mureg/mureg.html +++ b/src/app/pages/mureg/mureg.html @@ -184,6 +184,9 @@ + @@ -223,7 +226,7 @@ - + @@ -467,3 +470,42 @@ + + + + + diff --git a/src/app/pages/mureg/mureg.scss b/src/app/pages/mureg/mureg.scss index 8ca24e1..b5fb326 100644 --- a/src/app/pages/mureg/mureg.scss +++ b/src/app/pages/mureg/mureg.scss @@ -267,6 +267,7 @@ color: rgba(17,18,20,0.5); transition: all 0.2s; cursor: pointer; &:hover { background: rgba(17,18,20,0.05); color: var(--text); transform: translateY(-1px); } &.primary:hover { color: var(--blue); background: rgba(3,15,170,0.1); } + &.danger:hover { color: #dc3545; background: rgba(220, 53, 69, 0.12); } } /* FOOTER */ @@ -278,11 +279,13 @@ .modal-backdrop-custom { position: fixed; inset: 0; background: rgba(0,0,0,0.45); z-index: 9990; backdrop-filter: blur(4px); } .modal-custom { position: fixed; inset: 0; display: flex; align-items: center; justify-content: center; z-index: 9995; padding: 16px; } .modal-card { background: #ffffff; border: 1px solid rgba(255,255,255,0.8); border-radius: 20px; box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25); overflow: hidden; display: flex; flex-direction: column; animation: modalPop 0.3s cubic-bezier(0.34, 1.56, 0.64, 1); width: min(850px, 100%); max-height: 90vh; } +.modal-card.modal-sm { width: min(480px, 100%); } @keyframes modalPop { from { opacity: 0; transform: scale(0.95) translateY(10px); } to { opacity: 1; transform: scale(1) translateY(0); } } .modal-header { padding: 16px 24px; border-bottom: 1px solid rgba(0,0,0,0.06); background: #fff; display: flex; justify-content: space-between; align-items: center; .modal-title { font-size: 1.1rem; font-weight: 800; color: var(--text); display: flex; align-items: center; gap: 12px; } .icon-bg { width: 32px; height: 32px; border-radius: 10px; display: flex; align-items: center; justify-content: center; font-size: 16px; &.primary-soft { background: rgba(3, 15, 170, 0.1); color: var(--blue); } &.brand-soft { background: rgba(227, 61, 207, 0.1); color: var(--brand); } /* Adicionado */ + &.danger-soft { background: rgba(220, 53, 69, 0.12); color: #dc3545; } } .btn-icon { color: var(--muted); background: transparent; font-size: 1.2rem; border:none; cursor: pointer; &:hover { color: var(--brand); } } } @@ -307,4 +310,4 @@ div.box-body { padding: 16px; } .form-control { border-radius: 8px; border: 1px solid rgba(17,18,20,0.15); &:focus { border-color: var(--brand); box-shadow: 0 0 0 2px rgba(227,61,207,0.15); outline: none; } -} \ No newline at end of file +} diff --git a/src/app/pages/mureg/mureg.ts b/src/app/pages/mureg/mureg.ts index 0572137..b6b05c5 100644 --- a/src/app/pages/mureg/mureg.ts +++ b/src/app/pages/mureg/mureg.ts @@ -129,6 +129,11 @@ export class Mureg implements AfterViewInit { editSaving = false; editModel: any = null; + // ====== DELETE MODAL ====== + deleteOpen = false; + deleteSaving = false; + deleteTarget: MuregRow | null = null; + // ====== CREATE MODAL ====== createOpen = false; createSaving = false; @@ -638,6 +643,50 @@ export class Mureg implements AfterViewInit { }); } + // ======================================================================= + // DELETE MODAL + // ======================================================================= + onDelete(row: MuregRow) { + this.deleteTarget = row; + this.deleteOpen = true; + this.deleteSaving = false; + } + + closeDelete() { + this.deleteOpen = false; + this.deleteTarget = null; + this.deleteSaving = false; + } + + confirmDelete() { + if (!this.deleteTarget?.id) return; + + this.deleteSaving = true; + const targetId = this.deleteTarget.id; + const currentGroup = this.expandedGroup; + + this.http.delete(`${this.apiBase}/${targetId}`).subscribe({ + next: async () => { + this.deleteSaving = false; + await this.showToast('Mureg excluĂ­da com sucesso!'); + this.closeDelete(); + this.loadForGroups(); + + if (currentGroup) { + setTimeout(() => { + this.expandedGroup = currentGroup; + this.toggleGroup(currentGroup); + }, 400); + } + }, + error: async (err) => { + this.deleteSaving = false; + const msg = this.extractApiMessage(err) ?? 'Erro ao excluir Mureg.'; + await this.showToast(msg); + } + }); + } + // ======================================================================= // Helpers // =======================================================================