(JS), ajustável até PID_IPS_COL_MIN_WIDTH (60px)
pela alça de redimensionar; um min-width maior aqui faria o input vazar
do | antes desse limite. */
min-width: 30px;
padding: var(--space-2);
border: 1px solid transparent;
border-radius: var(--radius-sm);
background: transparent;
color: var(--text-primary);
font-size: 0.85rem;
outline: none;
}
.ips-table-input:hover {
border-color: var(--border-subtle);
}
.ips-table-input:focus {
border-color: var(--accent);
background: var(--bg-canvas);
}
.ips-table-scroll {
width: 100%;
height: 420px;
min-width: 320px;
min-height: 160px;
max-height: 80vh;
max-width: 100%;
/* `resize` exige overflow != visible pra mostrar a alça de redimensionar no
canto inferior direito — o usuário arrasta pra ver mais linhas (altura) e
mais colunas de uma vez (largura), até 100% da largura de .page-content
(que aqui é .page-content--wide, 1600px em vez do padrão 1200px, ver
layout.css). */
resize: both;
overflow-y: auto;
/* .pa-table-wrap (perfis-acesso.css) tem overflow:hidden, que corta colunas
em vez de rolar quando a tabela é mais larga que o container — sobrescreve
aqui porque esta tabela tem 10 colunas editáveis, bem mais larga que as
tabelas normais de .pa-table. */
overflow-x: auto;
}
.ips-table-scroll .pa-table {
width: auto;
/* `table-layout: fixed` + (importacao-plano-saude.js) é o que
permite cada coluna ter uma largura própria e ajustável — com o `auto`
padrão o navegador recalcula a largura pelo conteúdo e ignora o que a
alça de redimensionar define. */
table-layout: fixed;
}
.ips-table-scroll .pa-table th,
.ips-table-scroll .pa-table td {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
/* Coluna de ações (ícone fixo) não recebe alça de redimensionar, então fica
de fora do `position: relative` — evita conflitar com o `position: sticky`
dela (ver regra mais abaixo). */
.ips-table-scroll .pa-table th:not(.ips-table-actions) {
position: relative;
}
.ips-col-resize-handle {
position: absolute;
top: 0;
right: -3px;
bottom: 0;
width: 6px;
cursor: col-resize;
z-index: 2;
}
.ips-col-resize-handle:hover,
.ips-col-resize-handle:active {
background: var(--accent);
opacity: 0.5;
}
/* Enquanto arrasta, trava o cursor em col-resize e desliga seleção de texto
na página inteira — sem isso, passar o mouse sobre um da tabela
durante o arraste troca o cursor pra texto e pode selecionar conteúdo. */
body.is-resizing-column,
body.is-resizing-column * {
cursor: col-resize !important;
user-select: none;
}
/* Clicar no cabeçalho ordena a tabela por aquela coluna (alterna asc/desc) —
mesmo ícone ↕ estático de #ips-list-table (ver th[data-sort] mais acima),
só que aqui aplicado a qualquer .ips-col-sortable. As colunas em si têm
ordem fixa (não são mais arrastáveis) — só as linhas são reordenáveis,
por ordenação. */
.ips-col-sortable {
cursor: pointer;
user-select: none;
}
.ips-col-sortable.is-sort-asc .ips-sort-icon,
.ips-col-sortable.is-sort-desc .ips-sort-icon {
color: var(--accent);
}
/* Coluna de ações fixa na primeira posição — fica visível mesmo rolando a
tabela pra ver as colunas mais à direita (ex.: Descrição). */
.pa-table th.ips-table-actions,
.pa-table td.ips-table-actions {
position: sticky;
left: 0;
z-index: 1;
text-align: center;
}
.pa-table td.ips-table-actions {
background: var(--bg-surface);
}
.pa-table th.ips-table-actions {
background: var(--bg-surface-raised);
}
.ips-remove-linha {
width: 28px;
height: 28px;
}
.ips-remove-linha:hover {
color: var(--danger);
}
.ips-add-row {
margin-top: var(--space-3);
}
.ips-add-row button {
display: inline-flex;
align-items: center;
gap: var(--space-2);
}
.ips-auditoria-motivo {
display: inline-flex;
align-items: center;
padding: 2px 10px;
border-radius: var(--radius-pill);
font-size: 0.72rem;
font-weight: 700;
color: var(--danger);
background: rgba(var(--danger-rgb), 0.14);
white-space: nowrap;
}
/* Coluna "Ação" da aba Auditoria: botão pra vincular manualmente (motivos de
leitura/grafia de nome) ou o selo de já resolvido — mesmo verde de
.status-pill--ativo (perfis-acesso.css), pra reaproveitar a mesma
linguagem visual de "confirmado/ativo" já usada no resto do portal. */
.ips-auditoria-resolvido {
display: inline-flex;
align-items: center;
padding: 2px 10px;
border-radius: var(--radius-pill);
font-size: 0.72rem;
font-weight: 700;
color: #2f9e6e;
background: rgba(47, 158, 110, 0.14);
white-space: normal;
}
.ips-empty-cell {
color: var(--text-muted);
}
.ips-vincular-resumo {
font-size: 0.85rem;
color: var(--text-secondary);
margin-bottom: var(--space-3);
}
|