This commit is contained in:
Luiz Silva 2026-01-27 12:07:22 -03:00
parent 8bb5aea15e
commit 24c07da6f8
17 changed files with 1458 additions and 371 deletions

2
dist/eli-vue.css vendored
View file

@ -1 +1 @@
[data-v-de2fbf2f] .v-badge__badge,[data-v-de2fbf2f] .v-badge__content{border-radius:var(--eli-badge-radius)!important}.eli-input[data-v-756cb549]{width:100%}.checkbox-group[data-v-756cb549]{display:flex;gap:8px;flex-wrap:wrap}.cursor-pointer[data-v-756cb549]{cursor:pointer}.eli-cartao[data-v-6c492bd9]{border-radius:12px}.eli-cartao__titulo[data-v-6c492bd9]{display:flex;align-items:center;justify-content:space-between;gap:12px}.eli-cartao__titulo-texto[data-v-6c492bd9]{min-width:0}.eli-cartao__conteudo[data-v-6c492bd9]{padding-top:8px}.eli-cartao__acoes[data-v-6c492bd9]{padding-top:0}.eli-cartao--cancelado[data-v-6c492bd9]{opacity:.85}.eli-data-hora[data-v-71afabb6]{width:100%}
[data-v-de2fbf2f] .v-badge__badge,[data-v-de2fbf2f] .v-badge__content{border-radius:var(--eli-badge-radius)!important}.eli-input[data-v-756cb549]{width:100%}.checkbox-group[data-v-756cb549]{display:flex;gap:8px;flex-wrap:wrap}.cursor-pointer[data-v-756cb549]{cursor:pointer}.eli-cartao[data-v-6c492bd9]{border-radius:12px}.eli-cartao__titulo[data-v-6c492bd9]{display:flex;align-items:center;justify-content:space-between;gap:12px}.eli-cartao__titulo-texto[data-v-6c492bd9]{min-width:0}.eli-cartao__conteudo[data-v-6c492bd9]{padding-top:8px}.eli-cartao__acoes[data-v-6c492bd9]{padding-top:0}.eli-cartao--cancelado[data-v-6c492bd9]{opacity:.85}.eli-data-hora[data-v-71afabb6],.eli-tabela[data-v-cc67b529]{width:100%}.eli-tabela__table[data-v-cc67b529]{width:100%;border-collapse:separate;border-spacing:0;border:1px solid rgba(0,0,0,.12);border-radius:12px;overflow:hidden}.eli-tabela__th[data-v-cc67b529],.eli-tabela__td[data-v-cc67b529]{padding:10px 12px;border-bottom:1px solid rgba(0,0,0,.08);vertical-align:top}.eli-tabela__th[data-v-cc67b529]{text-align:left;font-weight:600;background:#00000008}.eli-tabela__tr:last-child .eli-tabela__td[data-v-cc67b529]{border-bottom:none}.eli-tabela__td--clicavel[data-v-cc67b529]{cursor:pointer}.eli-tabela__td--clicavel[data-v-cc67b529]:hover{background:#00000008}.eli-tabela--erro[data-v-cc67b529]{border:1px solid rgba(220,53,69,.35);border-radius:12px;padding:12px}.eli-tabela--carregando[data-v-cc67b529]{border:1px dashed rgba(0,0,0,.25);border-radius:12px;padding:12px;opacity:.8}.eli-tabela__erro-titulo[data-v-cc67b529]{font-weight:700;margin-bottom:4px}.eli-tabela__erro-mensagem[data-v-cc67b529]{opacity:.9}.eli-tabela--vazio[data-v-cc67b529]{border:1px dashed rgba(0,0,0,.25);border-radius:12px;padding:12px;opacity:.8}

867
dist/eli-vue.es.js vendored

File diff suppressed because it is too large Load diff

2
dist/eli-vue.umd.js vendored

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,17 @@
import { PropType } from "vue";
import type { EliTabelaConsulta } from "./types";
declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
tabela: {
type: PropType<EliTabelaConsulta<any>>;
required: true;
};
}>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
tabela: {
type: PropType<EliTabelaConsulta<any>>;
required: true;
};
}>> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
declare const _default: typeof __VLS_export;
export default _default;

View file

@ -0,0 +1,6 @@
import type { VNodeChild } from "vue";
export type EliCelulaTextoSimples = {
tipo: "texto-simples";
texto: string;
};
export declare const renderEliCelulaTextoSimples: (celula: EliCelulaTextoSimples) => VNodeChild;

View file

@ -0,0 +1,3 @@
export { default as EliTabela } from "./EliTabela.vue";
export * from "./types";
export * from "./celulas/EliCelulaTextoSimples";

View file

@ -0,0 +1,24 @@
import type { tipoResposta } from "p-respostas";
import type { VNodeChild } from "vue";
export type ComponenteCelula = VNodeChild;
export type EliColuna<T> = {
rotulo: string;
celula: (linha: T) => ComponenteCelula;
acao?: () => void;
};
export type EliConsultaPaginada<T> = {
valores: T[];
quantidade: number;
};
/**
* Estrutura de dados para uma tabela alimentada por uma consulta.
*
* - `colunas`: definição de colunas e como renderizar cada célula
* - `resposta`: função assíncrona que retorna uma resposta padronizada
*/
export type EliTabelaConsulta<T> = {
colunas: EliColuna<T>[];
resposta: () => Promise<tipoResposta<EliConsultaPaginada<T>>>;
/** Mensagem exibida quando a consulta retorna ok porém sem dados. */
mensagemVazio?: string;
};

View file

@ -5,11 +5,13 @@ import { EliBadge } from "./componentes/indicador";
import { EliInput } from "./componentes/campo";
import { EliCartao } from "./componentes/cartao";
import { EliDataHora } from "./componentes/data_hora";
import { EliTabela } from "./components/eli/EliTabela";
export { EliOlaMundo };
export { EliBotao };
export { EliBadge };
export { EliInput };
export { EliCartao };
export { EliDataHora };
export { EliTabela };
declare const EliVue: Plugin;
export default EliVue;