This commit is contained in:
Luiz Silva 2026-01-29 08:49:40 -03:00
parent 5c587c9232
commit 4fd142ee70
22 changed files with 271 additions and 132 deletions

View file

@ -29,22 +29,10 @@
v-for="(coluna, j) in colunas"
:key="`td-${i}-${j}`"
class="eli-tabela__td"
:class="[
coluna.acao ? 'eli-tabela__td--clicavel' : undefined,
obterClasseAlinhamento(coluna.alinhamento),
]"
:class="[coluna.acao ? 'eli-tabela__td--clicavel' : undefined]"
@click="coluna.acao ? () => coluna.acao?.() : undefined"
>
<span
v-if="Boolean(coluna.truncar)"
class="eli-tabela__celula-conteudo"
:style="coluna.largura_maxima ? { maxWidth: obterMaxWidth(coluna.largura_maxima) } : undefined"
:title="obterTooltipCelula(coluna.celula(linha as never))"
>
<EliTabelaCelula :celula="(coluna.celula(linha as never) as never)" />
</span>
<EliTabelaCelula v-else :celula="(coluna.celula(linha as never) as never)" />
<EliTabelaCelula :celula="(coluna.celula(linha as never) as never)" />
</td>
<td v-if="temAcoes" class="eli-tabela__td eli-tabela__td--acoes" :key="`td-${i}-acoes`">
@ -145,40 +133,9 @@ export default defineComponent({
},
},
setup() {
function obterClasseAlinhamento(alinhamento?: string) {
if (alinhamento === "direita") return "eli-tabela__celula--direita";
if (alinhamento === "centro") return "eli-tabela__celula--centro";
return "eli-tabela__celula--esquerda";
}
function obterMaxWidth(largura?: number | string) {
if (largura === undefined || largura === null) return undefined;
return typeof largura === "number" ? `${largura}px` : String(largura);
}
function obterTooltipCelula(celula: unknown) {
if (!Array.isArray(celula)) return undefined;
const tipo = celula[0];
const dados = celula[1] as any;
if (tipo === "textoSimples") {
return typeof dados?.texto === "string" ? dados.texto : undefined;
}
if (tipo === "numero") {
return typeof dados?.numero === "number" ? String(dados.numero) : undefined;
}
return undefined;
}
return {
ChevronRight,
ChevronDown,
obterClasseAlinhamento,
obterMaxWidth,
obterTooltipCelula,
};
},
});