diff --git a/src/app/pages/mureg/mureg.html b/src/app/pages/mureg/mureg.html index 41b3367..334239c 100644 --- a/src/app/pages/mureg/mureg.html +++ b/src/app/pages/mureg/mureg.html @@ -181,6 +181,9 @@
+ @@ -226,7 +229,7 @@
- + @@ -471,6 +474,99 @@ + + + + + diff --git a/src/app/pages/mureg/mureg.scss b/src/app/pages/mureg/mureg.scss index b5fb326..01e44d5 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); } + &.info:hover { color: var(--brand); background: rgba(227, 61, 207, 0.12); } &.danger:hover { color: #dc3545; background: rgba(220, 53, 69, 0.12); } } @@ -279,6 +280,7 @@ .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-xl-custom { width: min(1100px, 95vw); max-height: 85vh; } .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; } @@ -297,6 +299,18 @@ div.detail-box { background: #fff; border-radius: 16px; border: 1px solid rgba(0 div.box-header { padding: 10px 16px; font-size: 0.8rem; font-weight: 800; text-transform: uppercase; color: var(--muted); border-bottom: 1px solid rgba(0,0,0,0.04); background: #fdfdfd; display: flex; align-items: center; } div.box-body { padding: 16px; } +/* INFO GRID (detalhes) */ +.info-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; padding: 0; } +.info-item { display: flex; flex-direction: column; align-items: center; text-align: center; padding: 6px 10px; background: rgba(245, 245, 247, 0.5); border-radius: 12px; border: 1px solid rgba(0,0,0,0.03); transition: background 0.2s; + &:hover { background: #fff; box-shadow: 0 2px 8px rgba(0,0,0,0.05); } + &.span-2 { grid-column: span 2; } + .lbl { font-size: 0.65rem; text-transform: uppercase; letter-spacing: 0.05em; font-weight: 800; color: var(--muted); margin-bottom: 2px; } + .val { font-size: 0.9rem; font-weight: 700; color: var(--text); word-break: break-word; line-height: 1.2; + &.fs-4 { font-size: 1.1rem !important; } + &.small-text { font-size: 0.75rem; font-family: monospace; } + } +} + /* EDIT FORM STYLES */ .form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; diff --git a/src/app/pages/mureg/mureg.ts b/src/app/pages/mureg/mureg.ts index b6b05c5..fa633b6 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; + // ====== DETAIL MODAL ====== + detailOpen = false; + detailLoading = false; + detailData: MuregDetailDto | null = null; + // ====== DELETE MODAL ====== deleteOpen = false; deleteSaving = false; @@ -643,6 +648,32 @@ export class Mureg implements AfterViewInit { }); } + // ======================================================================= + // DETAIL MODAL + // ======================================================================= + onView(row: MuregRow) { + this.detailOpen = true; + this.detailLoading = true; + this.detailData = null; + + this.http.get(`${this.apiBase}/${row.id}`).subscribe({ + next: (data) => { + this.detailData = data; + this.detailLoading = false; + }, + error: async () => { + this.detailLoading = false; + await this.showToast('Erro ao carregar detalhes da Mureg.'); + } + }); + } + + closeDetail() { + this.detailOpen = false; + this.detailLoading = false; + this.detailData = null; + } + // ======================================================================= // DELETE MODAL // =======================================================================