From 8c5a31ef30bf9fcce58864b052b8b28863536b0f Mon Sep 17 00:00:00 2001 From: Luiz Silva Date: Thu, 29 Jan 2026 16:10:58 -0300 Subject: [PATCH] build --- .agent | 39 +++++++++ IA.md | 114 +++++++++++++++++++++++---- README.md | 75 +++++++++++------- package.json | 2 +- src/playground/tabela.playground.vue | 14 ---- 5 files changed, 185 insertions(+), 59 deletions(-) diff --git a/.agent b/.agent index cdeaaaa..13ae9ca 100644 --- a/.agent +++ b/.agent @@ -40,6 +40,27 @@ Construir um Design System de componentes em **Vue 3** para reutilização em m --- +## Convenção atual de entradas (IMPORTANTE) + +O componente **`EliInput` foi removido**. O padrão atual é a família **`EliEntrada*`**: + +- `EliEntradaTexto` +- `EliEntradaNumero` +- `EliEntradaDataHora` + +E o contrato padrão para entradas é: +- prop `value` +- evento `update:value` +- prop obrigatória `opcoes` (contém `rotulo` e outras opções) + +Exemplo: + +```vue + +``` + +--- + ## Estrutura obrigatória do repositório - Cada componente deve possuir **sua própria pasta** em `src/componentes/` - Dentro de cada pasta do componente: @@ -162,6 +183,24 @@ Evitar comentários óbvios (“isso é um botão”). --- +## Convenção atual de EliTabela (IMPORTANTE) + +### Filtro avançado + +O filtro avançado da `EliTabela` é configurado via `tabela.filtroAvancado`. + +Regras: +- O **operador é travado na definição** (o usuário não escolhe operador) +- Cada filtro pode ser usado **no máximo 1 vez** +- UI: modal mostra **apenas os componentes de entrada** definidos no filtro +- Persistência: salva em `localStorage` apenas `{ coluna, valor }[]` por `tabela.nome` + +Se você for evoluir isso para backend: +- usar `parametrosConsulta.filtros` (`tipoFiltro[]`) no `tabela.consulta` +- manter compatibilidade com simulação local (quando necessário) + +--- + ## Publicação do pacote (npm) ### Regra de publicação (sem usar `package.json.files`) diff --git a/IA.md b/IA.md index 3d9d871..9992243 100644 --- a/IA.md +++ b/IA.md @@ -61,7 +61,15 @@ createApp(App) ### 2) Importação direta (quando não quiser plugin) ```ts -import { EliBotao, EliInput, EliBadge, EliCartao, EliDataHora } from "eli-vue"; +import { + EliBotao, + EliBadge, + EliCartao, + EliTabela, + EliEntradaTexto, + EliEntradaNumero, + EliEntradaDataHora, +} from "eli-vue"; ``` > Observação: ainda pode ser necessário importar o CSS do pacote: @@ -82,11 +90,18 @@ import "eli-vue/dist/eli-vue.css"; ``` -### Input com v-model +### Entradas (EliEntrada*) com v-model + +O `eli-vue` usa uma família de componentes `EliEntrada*` (em vez do antigo `EliInput`). + +#### Texto ```vue ``` -### Input de porcentagem +#### Texto com formato/máscara -Quando precisar de um campo numérico com sufixo `%`, use `type="porcentagem"`. +> Regra importante: o `value` emitido é **sempre o texto formatado** (igual ao que aparece no input). ```vue @@ -131,10 +150,10 @@ export default defineComponent({ ```vue ``` -### EliInput (porcentagem) - -Use `type="porcentagem"` quando precisar de um campo numérico com sufixo `%` embutido. +### EliEntradaNumero (exemplo) ```vue