diff --git a/src/main/webapp/cliente/condominios.html b/src/main/webapp/cliente/condominios.html index b144a47..2a353c6 100644 --- a/src/main/webapp/cliente/condominios.html +++ b/src/main/webapp/cliente/condominios.html @@ -1 +1 @@ -Cadastro

Cadastro

Condominios

IDNomeCNPJEndereco
+Cadastro

Cadastro

Condomínios

IDNomeCNPJEndereçoAções
diff --git a/src/main/webapp/cliente/condominios.js b/src/main/webapp/cliente/condominios.js index d68f3b0..6007a0e 100644 --- a/src/main/webapp/cliente/condominios.js +++ b/src/main/webapp/cliente/condominios.js @@ -7,10 +7,17 @@ function contem(item,q,campos){return !q||campos.some(c=>String(item[c]??'').toL function abrirModal(titulo,html){modalTitle.textContent=titulo;modalBody.innerHTML=html;modal.classList.remove('hidden')} function formActions(label){return '
'} +const Icons = { + eye: '', + building: '', + edit: '', + trash: '' +}; + function renderCondominios(){ const q=termo('#cond-search-input'); const lista=condominios.filter(c=>contem(c,q,['id','nome','cnpj','endereco'])); - rows.innerHTML=lista.map(c=>`${c.id}${esc(c.nome)}${esc(c.cnpj||'')}${esc(c.endereco||'')}Abrir`).join('')||'Nenhum condominio encontrado.'; + rows.innerHTML=lista.map(c=>`${c.id}${esc(c.nome)}${esc(c.cnpj||'')}${esc(c.endereco||'')}
${Icons.eye}
`).join('')||'Nenhum condominio encontrado.'; } async function load(){ @@ -56,8 +63,8 @@ function renderFuncionarios(){ const q=termo('#func-search-input'); const lista=funcionarios.filter(f=>contem(f,q,['nome','email','telefone','cargo','status'])); funcRows.innerHTML=lista.map(f=>{ - const acao=f.cargo==='admin_empresa'?'Acesso total':''; - const opcoes=f.cargo==='admin_empresa'?'-':' '; + const acao=f.cargo==='admin_empresa'?'Acesso total':`
`; + const opcoes=f.cargo==='admin_empresa'?'-':`
`; return ''+esc(f.nome)+''+esc(f.email)+''+esc(f.telefone||'')+''+esc(f.cargo||'')+''+Util.badge(f.status)+''+acao+''+opcoes+''; }).join('')||'Nenhum funcionario encontrado.'; } @@ -101,7 +108,7 @@ window.desvincularFuncionarioCondominio=async (funcId,condId)=>{try{await Api.re function renderExtras(){ const q=termo('#extra-search-input'); const lista=extras.filter(x=>contem(x,q,['nome','email','telefone','status'])); - extraRows.innerHTML=lista.map(x=>''+esc(x.nome)+''+esc(x.email||'')+''+esc(x.telefone||'')+''+Util.badge(x.status)+' ').join('')||'Nenhum destinatario extra encontrado.'; + extraRows.innerHTML=lista.map(x=>''+esc(x.nome)+''+esc(x.email||'')+''+esc(x.telefone||'')+''+Util.badge(x.status)+'
').join('')||'Nenhum destinatario extra encontrado.'; } async function loadExtras(){ @@ -129,7 +136,7 @@ window.abrirNovoExtra=()=>{ function extraPorId(id){return extras.find(x=>Number(x.id)===Number(id))} window.abrirEditarExtra=id=>{const x=extraPorId(id);if(!x)return;abrirModal('Editar extra','
'+formActions('Salvar')+'
');document.querySelector('#extra-edit-form').onsubmit=async e=>{e.preventDefault();try{await Api.put('/api/extras/'+id,Util.formData(e.target));Util.toast('Extra atualizado');fecharModalCondominios();loadExtras()}catch(err){Util.toast(err.message,true)}}}; -window.excluirExtra=async id=>{try{await Api.request('/api/extras/'+id,{method:'DELETE'});Util.toast('Extra excluido');loadExtras()}catch(err){Util.toast(err.message,true)}}; +window.excluirExtra=async id=>{if(!await Util.confirm('Tem certeza que deseja excluir este destinatário extra?','Excluir extra'))return;try{await Api.request('/api/extras/'+id,{method:'DELETE'});Util.toast('Extra excluido');loadExtras()}catch(err){Util.toast(err.message,true)}}; window.alternarBuscaCadastro=tipo=>{ const strip=document.querySelector(`#${tipo}-search`),input=document.querySelector(`#${tipo}-search-input`); diff --git a/src/main/webapp/css/app.css b/src/main/webapp/css/app.css index 4de31e3..5339885 100644 --- a/src/main/webapp/css/app.css +++ b/src/main/webapp/css/app.css @@ -493,6 +493,11 @@ td .btn, gap: 8px; } +.table-actions.start { + justify-content: flex-start; +} + +a.table-icon-btn, .table-icon-btn { width: 36px; height: 36px; @@ -505,9 +510,11 @@ td .btn, place-items: center; padding: 0; box-shadow: none; + text-decoration: none; transition: all .16s ease; } +a.table-icon-btn:hover, .table-icon-btn:hover { background: var(--bg-soft); color: var(--brand); @@ -515,6 +522,38 @@ td .btn, transform: translateY(-1px); } +.header-add-btn { + width: 36px; + height: 36px; + min-width: 36px; + border: 1px solid var(--brand); + border-radius: var(--radius-sm); + background: var(--brand); + color: #fff; + cursor: pointer; + display: inline-grid; + place-items: center; + padding: 0; + box-shadow: none; + transition: all .16s ease; +} + +.header-add-btn:hover { + background: var(--brand-strong); + border-color: var(--brand-strong); + transform: translateY(-1px); +} + +.header-add-btn svg { + width: 20px; + height: 20px; + fill: none; + stroke: currentColor; + stroke-width: 2.4; + stroke-linecap: round; + stroke-linejoin: round; +} + .table-icon-btn.send { color: var(--brand); }