build
This commit is contained in:
parent
63d943d0df
commit
f396203085
22 changed files with 1476 additions and 1357 deletions
289
IA.md
289
IA.md
|
|
@ -15,6 +15,7 @@ Biblioteca (Design System) de componentes para **Vue 3** com **TypeScript** e in
|
||||||
|
|
||||||
- O `eli-vue` **não cria** nem configura Vuetify no seu projeto.
|
- O `eli-vue` **não cria** nem configura Vuetify no seu projeto.
|
||||||
- `vue` e `vuetify` são **peerDependencies**: o projeto consumidor precisa ter ambos instalados.
|
- `vue` e `vuetify` são **peerDependencies**: o projeto consumidor precisa ter ambos instalados.
|
||||||
|
- O pacote utiliza internamente **lucide-vue-next** para ícones.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
@ -29,9 +30,11 @@ pnpm add eli-vue
|
||||||
Se o projeto ainda não tiver as peer dependencies, instale também:
|
Se o projeto ainda não tiver as peer dependencies, instale também:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
pnpm add vue vuetify
|
pnpm add vue vuetify lucide-vue-next
|
||||||
```
|
```
|
||||||
|
|
||||||
|
> Nota: `lucide-vue-next` é recomendado para passar ícones compatíveis aos componentes (como `EliTabela`).
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Uso recomendado
|
## Uso recomendado
|
||||||
|
|
@ -82,6 +85,28 @@ import "eli-vue/dist/eli-vue.css";
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## Tipagem e Helpers
|
||||||
|
|
||||||
|
O pacote exporta tipos e funções utilitárias essenciais para o desenvolvimento com TypeScript.
|
||||||
|
|
||||||
|
```ts
|
||||||
|
import {
|
||||||
|
// Componentes
|
||||||
|
EliTabela,
|
||||||
|
|
||||||
|
// Helpers
|
||||||
|
celulaTabela,
|
||||||
|
|
||||||
|
// Tipos
|
||||||
|
EliTabelaConsulta,
|
||||||
|
EliColuna,
|
||||||
|
EliTabelaAcao,
|
||||||
|
CartaoStatus // Tipos compartilhados
|
||||||
|
} from "eli-vue";
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Exemplos mínimos
|
## Exemplos mínimos
|
||||||
|
|
||||||
### Botão
|
### Botão
|
||||||
|
|
@ -214,6 +239,7 @@ import { defineComponent, ref } from "vue";
|
||||||
|
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
setup() {
|
setup() {
|
||||||
|
// Exemplo de valor ISO vindo do backend/banco
|
||||||
const dataHora = ref<string | null>("2026-01-09T16:15:00Z");
|
const dataHora = ref<string | null>("2026-01-09T16:15:00Z");
|
||||||
const data = ref<string | null>("2026-01-09T00:00:00-03:00");
|
const data = ref<string | null>("2026-01-09T00:00:00-03:00");
|
||||||
return { dataHora, data };
|
return { dataHora, data };
|
||||||
|
|
@ -224,71 +250,173 @@ export default defineComponent({
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## EliTabela (com filtro avançado)
|
## Outros Componentes
|
||||||
|
|
||||||
O componente `EliTabela` suporta:
|
### EliBadge (Indicador)
|
||||||
- ordenação
|
|
||||||
- paginação
|
|
||||||
- caixa de busca
|
|
||||||
- **filtro avançado (modal)**
|
|
||||||
|
|
||||||
### Contrato da tabela (resumo)
|
Badge aprimorado que suporta raios predefinidos ("suave" | "pill").
|
||||||
|
|
||||||
O tipo principal é `EliTabelaConsulta<T>` (genérico), exportado de `eli-vue`.
|
```vue
|
||||||
|
<template>
|
||||||
O `filtroAvancado` é uma lista de filtros pré-definidos (o usuário só escolhe quais usar e informa valores):
|
<EliBadge :badge="3" color="error" radius="pill">
|
||||||
|
<v-icon>mdi-bell</v-icon>
|
||||||
```ts
|
</EliBadge>
|
||||||
filtroAvancado?: {
|
</template>
|
||||||
rotulo: string
|
|
||||||
coluna: keyof T
|
|
||||||
operador: string // ex.: "like", "=", ">", "in", "isNull"
|
|
||||||
entrada: ["texto" | "numero" | "dataHora", { rotulo: string; ... }]
|
|
||||||
}[]
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### Exemplo mínimo
|
### EliCartao
|
||||||
|
|
||||||
```ts
|
Cartão padronizado para representar itens de domínio (ex: propostas) com status coloridos automaticamente.
|
||||||
import { EliTabela, celulaTabela } from "eli-vue";
|
|
||||||
import type { EliTabelaConsulta } from "eli-vue";
|
|
||||||
import type { ComponenteEntrada } from "eli-vue/dist/types/componentes/EliEntrada/tiposEntradas";
|
|
||||||
|
|
||||||
type Linha = { nome: string; documento: string; email: string };
|
> **Importante**: O status deve ser um dos valores do tipo `CartaoStatus` ("novo" | "rascunho" | "vendido" | "cancelado").
|
||||||
|
|
||||||
const tabela: EliTabelaConsulta<Linha> = {
|
```vue
|
||||||
nome: "Exemplo",
|
<template>
|
||||||
mostrarCaixaDeBusca: true,
|
<EliCartao
|
||||||
registros_por_consulta: 10,
|
titulo="Proposta #123"
|
||||||
colunas: [
|
status="novo"
|
||||||
{ rotulo: "Nome", celula: (l) => celulaTabela("textoSimples", { texto: l.nome }), visivel: true },
|
variant="outlined"
|
||||||
],
|
>
|
||||||
filtroAvancado: [
|
<!-- Conteúdo principal (default slot) -->
|
||||||
{
|
<div class="text-body-2">Cliente: ACME Corp</div>
|
||||||
rotulo: "Documento",
|
<div class="text-caption text-medium-emphasis">Criado há 2 dias</div>
|
||||||
coluna: "documento",
|
|
||||||
operador: "like",
|
|
||||||
entrada: ["texto", { rotulo: "Documento", formato: "cpfCnpj" }] as unknown as ComponenteEntrada,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
consulta: async () => ({
|
|
||||||
cod: 0,
|
|
||||||
eCerto: true,
|
|
||||||
eErro: false,
|
|
||||||
mensagem: undefined,
|
|
||||||
valor: { quantidade: 0, valores: [] },
|
|
||||||
}),
|
|
||||||
};
|
|
||||||
|
|
||||||
|
<!-- Ações (slot 'acoes') -->
|
||||||
|
<template #acoes>
|
||||||
|
<EliBotao variant="text" size="small">Ver detalhes</EliBotao>
|
||||||
|
</template>
|
||||||
|
</EliCartao>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import { defineComponent } from "vue";
|
||||||
|
// O tipo CartaoStatus é exportado para ajudar na tipagem
|
||||||
|
import type { CartaoStatus } from "eli-vue";
|
||||||
|
|
||||||
|
export default defineComponent({
|
||||||
|
setup() {
|
||||||
|
const statusAtual: CartaoStatus = "novo";
|
||||||
|
return { statusAtual };
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Células da EliTabela (celulaTabela)
|
## EliTabela (Tabela Avançada)
|
||||||
|
|
||||||
O `eli-vue` expõe o helper `celulaTabela(tipo, dados)` para construir células tipadas.
|
O componente `EliTabela` suporta ordenação, paginação, busca e **filtro avançado**.
|
||||||
|
Para type-safety, recomenda-se definir a estrutura da consulta usando `EliTabelaConsulta<T>`.
|
||||||
|
|
||||||
Tipos disponíveis atualmente:
|
### Exemplo Completo Tipado
|
||||||
|
|
||||||
|
```ts
|
||||||
|
import { defineComponent } from "vue";
|
||||||
|
import { EliTabela, celulaTabela } from "eli-vue";
|
||||||
|
import type { EliTabelaConsulta } from "eli-vue";
|
||||||
|
import type { ComponenteEntrada } from "eli-vue/dist/types/componentes/EliEntrada/tiposEntradas";
|
||||||
|
// ^ Nota: Tipos internos podem precisar de caminho completo se não exportados na raiz.
|
||||||
|
// Melhor prática: use 'any' ou 'unknown' castado se o tipo não estiver disponível,
|
||||||
|
// mas `EliTabelaConsulta` geralmente infere.
|
||||||
|
|
||||||
|
import { BadgeCheck, Pencil } from "lucide-vue-next";
|
||||||
|
|
||||||
|
// 1. Defina o tipo da linha
|
||||||
|
type Usuario = {
|
||||||
|
id: number;
|
||||||
|
nome: string;
|
||||||
|
documento: string;
|
||||||
|
email: string;
|
||||||
|
ativo: boolean;
|
||||||
|
criado_em: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
// 2. Defina a configuração da tabela
|
||||||
|
const tabelaUsuarios: EliTabelaConsulta<Usuario> = {
|
||||||
|
nome: "Usuarios",
|
||||||
|
mostrarCaixaDeBusca: true,
|
||||||
|
registros_por_consulta: 10,
|
||||||
|
|
||||||
|
// Colunas
|
||||||
|
colunas: [
|
||||||
|
{
|
||||||
|
rotulo: "Nome",
|
||||||
|
celula: (row) => celulaTabela("textoSimples", { texto: row.nome }),
|
||||||
|
visivel: true,
|
||||||
|
coluna_ordem: "nome" // Habilita ordenação
|
||||||
|
},
|
||||||
|
{
|
||||||
|
rotulo: "Status",
|
||||||
|
visivel: true,
|
||||||
|
celula: (row) => celulaTabela("tags", {
|
||||||
|
opcoes: [
|
||||||
|
row.ativo
|
||||||
|
? { rotulo: "Ativo", cor: "success", icone: BadgeCheck }
|
||||||
|
: { rotulo: "Inativo", cor: "error" }
|
||||||
|
]
|
||||||
|
})
|
||||||
|
},
|
||||||
|
{
|
||||||
|
rotulo: "Criado em",
|
||||||
|
visivel: true,
|
||||||
|
celula: (row) => celulaTabela("data", {
|
||||||
|
valor: row.criado_em,
|
||||||
|
formato: "data_hora"
|
||||||
|
})
|
||||||
|
}
|
||||||
|
],
|
||||||
|
|
||||||
|
// Ações de linha (botões à direita)
|
||||||
|
acoesLinha: [
|
||||||
|
{
|
||||||
|
rotulo: "Editar",
|
||||||
|
icone: Pencil,
|
||||||
|
cor: "primary",
|
||||||
|
acao: (row) => console.log("Editar", row.id)
|
||||||
|
}
|
||||||
|
],
|
||||||
|
|
||||||
|
// Filtro Avançado (definição dos campos de filtro)
|
||||||
|
filtroAvancado: [
|
||||||
|
{
|
||||||
|
rotulo: "Documento",
|
||||||
|
coluna: "documento",
|
||||||
|
operador: "like", // like, =, >, <, etc
|
||||||
|
entrada: ["texto", { rotulo: "Documento", formato: "cpfCnpj" }] as any,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
rotulo: "Criado em (Início)",
|
||||||
|
coluna: "criado_em",
|
||||||
|
operador: ">=",
|
||||||
|
entrada: ["dataHora", { rotulo: "A partir de", modo: "data" }] as any
|
||||||
|
}
|
||||||
|
],
|
||||||
|
|
||||||
|
// Função de consulta (simulada ou API real)
|
||||||
|
consulta: async (params) => {
|
||||||
|
console.log("Consultando com:", params);
|
||||||
|
// params contém: { filtro, coluna_ordem, direcao_ordem, offSet, limit, texto_busca }
|
||||||
|
|
||||||
|
return {
|
||||||
|
cod: 0,
|
||||||
|
eCerto: true,
|
||||||
|
eErro: false,
|
||||||
|
mensagem: undefined,
|
||||||
|
valor: {
|
||||||
|
quantidade: 1,
|
||||||
|
valores: [
|
||||||
|
{ id: 1, nome: "Luiz", documento: "123", email: "a@a.com", ativo: true, criado_em: "2024-01-01" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
### Tipos de Células (`celulaTabela`)
|
||||||
|
|
||||||
|
Helper: `celulaTabela(tipo, dados)`
|
||||||
|
|
||||||
- `textoSimples`: `{ texto: string; acao?: () => void }`
|
- `textoSimples`: `{ texto: string; acao?: () => void }`
|
||||||
- `textoTruncado`: `{ texto: string; acao?: () => void }`
|
- `textoTruncado`: `{ texto: string; acao?: () => void }`
|
||||||
|
|
@ -296,35 +424,6 @@ Tipos disponíveis atualmente:
|
||||||
- `tags`: `{ opcoes: { rotulo: string; cor?: string; icone?: LucideIcon; acao?: () => void }[] }`
|
- `tags`: `{ opcoes: { rotulo: string; cor?: string; icone?: LucideIcon; acao?: () => void }[] }`
|
||||||
- `data`: `{ valor: string; formato: "data" | "data_hora" | "relativo"; acao?: () => void }`
|
- `data`: `{ valor: string; formato: "data" | "data_hora" | "relativo"; acao?: () => void }`
|
||||||
|
|
||||||
### Exemplo: célula `tags`
|
|
||||||
|
|
||||||
```ts
|
|
||||||
import { celulaTabela } from "eli-vue";
|
|
||||||
import { BadgeCheck, Pencil } from "lucide-vue-next";
|
|
||||||
|
|
||||||
celula: (l) =>
|
|
||||||
celulaTabela("tags", {
|
|
||||||
opcoes: [
|
|
||||||
{ rotulo: "Ativo", cor: "success", icone: BadgeCheck },
|
|
||||||
{ rotulo: "Editar", cor: "primary", icone: Pencil, acao: () => editar(l) },
|
|
||||||
],
|
|
||||||
})
|
|
||||||
```
|
|
||||||
|
|
||||||
### Exemplo: célula `data`
|
|
||||||
|
|
||||||
```ts
|
|
||||||
import { celulaTabela } from "eli-vue";
|
|
||||||
|
|
||||||
celula: (l) =>
|
|
||||||
celulaTabela("data", {
|
|
||||||
valor: l.criado_em, // ISO
|
|
||||||
formato: "data", // "data" | "data_hora" | "relativo"
|
|
||||||
})
|
|
||||||
```
|
|
||||||
|
|
||||||
> Observação: em modo simulação/local, a tabela pode buscar uma lista completa e aplicar filtro/paginação localmente.
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Troubleshooting (para IAs)
|
## Troubleshooting (para IAs)
|
||||||
|
|
@ -332,20 +431,24 @@ celula: (l) =>
|
||||||
### 1) “Failed to resolve component”
|
### 1) “Failed to resolve component”
|
||||||
|
|
||||||
Provável causa: componente não foi registrado.
|
Provável causa: componente não foi registrado.
|
||||||
|
|
||||||
- Se estiver usando plugin: confirme `app.use(EliVue)`
|
- Se estiver usando plugin: confirme `app.use(EliVue)`
|
||||||
- Se estiver importando direto: registre localmente no componente
|
- Se estiver importando direto: registre localmente no componente
|
||||||
|
|
||||||
### 2) Estilos não aplicam
|
### 2) Estilos não aplicam
|
||||||
|
|
||||||
Confirme que o projeto importou:
|
Confirme que o projeto importou:
|
||||||
|
|
||||||
- `vuetify/styles`
|
- `vuetify/styles`
|
||||||
- `eli-vue/dist/eli-vue.css`
|
- `eli-vue/dist/eli-vue.css`
|
||||||
|
|
||||||
### 3) Ícones não aparecem
|
### 3) Erro de tipo em `celulaTabela`
|
||||||
|
|
||||||
Alguns exemplos usam `<v-icon>` (MDI). O `eli-vue` **não instala** ícones automaticamente no projeto consumidor.
|
Verifique se você importou `celulaTabela` de `eli-vue`.
|
||||||
|
Certifique-se de que o segundo argumento corresponde ao tipo da célula (ex: `textoSimples` pede `{ texto: string }`).
|
||||||
|
|
||||||
|
### 4) Ícones não aparecem
|
||||||
|
|
||||||
|
O `eli-vue` espera ícones do pacote `lucide-vue-next` (ou compatíveis com Component type do Vue).
|
||||||
|
Certifique-se de passar o componente do ícone (ex: `Pencil`), e não string.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
@ -353,19 +456,17 @@ Alguns exemplos usam `<v-icon>` (MDI). O `eli-vue` **não instala** ícones auto
|
||||||
|
|
||||||
Quando for integrar `eli-vue` num projeto existente:
|
Quando for integrar `eli-vue` num projeto existente:
|
||||||
|
|
||||||
1) Verifique se **Vue 3** e **Vuetify 3** já estão configurados.
|
1) Verifique se **Vue 3**, **Vuetify 3** e **lucide-vue-next** estão instalados.
|
||||||
2) Prefira usar o **plugin** do `eli-vue` (simplifica registro).
|
2) Prefira usar o **plugin** do `eli-vue` (simplifica registro global).
|
||||||
3) Garanta o import do CSS do pacote (`eli-vue/dist/eli-vue.css`).
|
3) Garanta o import do CSS do pacote (`eli-vue/dist/eli-vue.css`).
|
||||||
4) Ao ver erros de tipos, valide se o projeto está usando TypeScript e se o build está resolvendo `types` corretamente.
|
4) Use `celulaTabela` para construir colunas de tabelas de forma tipada.
|
||||||
|
5) Ao definir tabelas, use `EliTabelaConsulta<T>` para garantir que colunas e filtros batam com o tipo de dados.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Quando este arquivo deve ser atualizado
|
## Quando este arquivo deve ser atualizado
|
||||||
|
|
||||||
Atualize este `IA.md` quando houver mudanças em qualquer um destes pontos:
|
Atualize este `IA.md` quando houver mudanças em:
|
||||||
|
- Estrutura de exports (novos componentes ou helpers).
|
||||||
- caminho/nome do CSS em `dist/`
|
- Tipagem das células ou entradas.
|
||||||
- forma de instalação e/ou peerDependencies
|
- Dependências obrigatórias.
|
||||||
- forma de uso do plugin/export principal
|
|
||||||
- lista de exports públicos (novos componentes, renomes, remoções)
|
|
||||||
- mudanças de comportamento relevantes para consumo
|
|
||||||
|
|
|
||||||
2
dist/eli-vue.css
vendored
2
dist/eli-vue.css
vendored
File diff suppressed because one or more lines are too long
2014
dist/eli-vue.es.js
vendored
2014
dist/eli-vue.es.js
vendored
File diff suppressed because it is too large
Load diff
26
dist/eli-vue.umd.js
vendored
26
dist/eli-vue.umd.js
vendored
File diff suppressed because one or more lines are too long
|
|
@ -27,8 +27,8 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
|
||||||
mensagensErro?: string | string[];
|
mensagensErro?: string | string[];
|
||||||
dica?: string;
|
dica?: string;
|
||||||
dicaPersistente?: boolean;
|
dicaPersistente?: boolean;
|
||||||
densidade?: import("../../tipos").CampoDensidade;
|
densidade?: import("../..").CampoDensidade;
|
||||||
variante?: import("../../tipos").CampoVariante;
|
variante?: import("../..").CampoVariante;
|
||||||
};
|
};
|
||||||
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
||||||
"update:value": (_v: EntradaParagrafo["value"]) => true;
|
"update:value": (_v: EntradaParagrafo["value"]) => true;
|
||||||
|
|
|
||||||
|
|
@ -36,8 +36,8 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
|
||||||
mensagensErro?: string | string[];
|
mensagensErro?: string | string[];
|
||||||
dica?: string;
|
dica?: string;
|
||||||
dicaPersistente?: boolean;
|
dicaPersistente?: boolean;
|
||||||
densidade?: import("../../tipos").CampoDensidade;
|
densidade?: import("../..").CampoDensidade;
|
||||||
variante?: import("../../tipos").CampoVariante;
|
variante?: import("../..").CampoVariante;
|
||||||
};
|
};
|
||||||
itens: import("vue").Ref<{
|
itens: import("vue").Ref<{
|
||||||
chave: string;
|
chave: string;
|
||||||
|
|
|
||||||
|
|
@ -127,8 +127,8 @@ export declare const registryTabelaCelulas: {
|
||||||
dicaPersistente?: boolean;
|
dicaPersistente?: boolean;
|
||||||
min?: string;
|
min?: string;
|
||||||
max?: string;
|
max?: string;
|
||||||
densidade?: import("../../tipos/entrada.js").CampoDensidade;
|
densidade?: import("../../index.js").CampoDensidade;
|
||||||
variante?: import("../../tipos/entrada.js").CampoVariante;
|
variante?: import("../../index.js").CampoVariante;
|
||||||
}>;
|
}>;
|
||||||
required: false;
|
required: false;
|
||||||
default: undefined;
|
default: undefined;
|
||||||
|
|
@ -174,11 +174,11 @@ export declare const registryTabelaCelulas: {
|
||||||
default: undefined;
|
default: undefined;
|
||||||
};
|
};
|
||||||
densidade: {
|
densidade: {
|
||||||
type: import("vue").PropType<import("../../tipos/entrada.js").CampoDensidade>;
|
type: import("vue").PropType<import("../../index.js").CampoDensidade>;
|
||||||
default: undefined;
|
default: undefined;
|
||||||
};
|
};
|
||||||
variante: {
|
variante: {
|
||||||
type: import("vue").PropType<import("../../tipos/entrada.js").CampoVariante>;
|
type: import("vue").PropType<import("../../index.js").CampoVariante>;
|
||||||
default: undefined;
|
default: undefined;
|
||||||
};
|
};
|
||||||
min: {
|
min: {
|
||||||
|
|
@ -209,8 +209,8 @@ export declare const registryTabelaCelulas: {
|
||||||
dicaPersistente?: boolean;
|
dicaPersistente?: boolean;
|
||||||
min?: string;
|
min?: string;
|
||||||
max?: string;
|
max?: string;
|
||||||
densidade?: import("../../tipos/entrada.js").CampoDensidade;
|
densidade?: import("../../index.js").CampoDensidade;
|
||||||
variante?: import("../../tipos/entrada.js").CampoVariante;
|
variante?: import("../../index.js").CampoVariante;
|
||||||
}>;
|
}>;
|
||||||
desabilitadoEfetivo: import("vue").ComputedRef<boolean>;
|
desabilitadoEfetivo: import("vue").ComputedRef<boolean>;
|
||||||
emitCompatFocus: () => void;
|
emitCompatFocus: () => void;
|
||||||
|
|
@ -243,8 +243,8 @@ export declare const registryTabelaCelulas: {
|
||||||
dicaPersistente?: boolean;
|
dicaPersistente?: boolean;
|
||||||
min?: string;
|
min?: string;
|
||||||
max?: string;
|
max?: string;
|
||||||
densidade?: import("../../tipos/entrada.js").CampoDensidade;
|
densidade?: import("../../index.js").CampoDensidade;
|
||||||
variante?: import("../../tipos/entrada.js").CampoVariante;
|
variante?: import("../../index.js").CampoVariante;
|
||||||
}>;
|
}>;
|
||||||
required: false;
|
required: false;
|
||||||
default: undefined;
|
default: undefined;
|
||||||
|
|
@ -290,11 +290,11 @@ export declare const registryTabelaCelulas: {
|
||||||
default: undefined;
|
default: undefined;
|
||||||
};
|
};
|
||||||
densidade: {
|
densidade: {
|
||||||
type: import("vue").PropType<import("../../tipos/entrada.js").CampoDensidade>;
|
type: import("vue").PropType<import("../../index.js").CampoDensidade>;
|
||||||
default: undefined;
|
default: undefined;
|
||||||
};
|
};
|
||||||
variante: {
|
variante: {
|
||||||
type: import("vue").PropType<import("../../tipos/entrada.js").CampoVariante>;
|
type: import("vue").PropType<import("../../index.js").CampoVariante>;
|
||||||
default: undefined;
|
default: undefined;
|
||||||
};
|
};
|
||||||
min: {
|
min: {
|
||||||
|
|
@ -324,8 +324,8 @@ export declare const registryTabelaCelulas: {
|
||||||
dicaPersistente: boolean;
|
dicaPersistente: boolean;
|
||||||
min: string | undefined;
|
min: string | undefined;
|
||||||
max: string | undefined;
|
max: string | undefined;
|
||||||
densidade: import("../../tipos/entrada.js").CampoDensidade;
|
densidade: import("../../index.js").CampoDensidade;
|
||||||
variante: import("../../tipos/entrada.js").CampoVariante;
|
variante: import("../../index.js").CampoVariante;
|
||||||
opcoes: {
|
opcoes: {
|
||||||
rotulo: string;
|
rotulo: string;
|
||||||
placeholder?: string;
|
placeholder?: string;
|
||||||
|
|
@ -338,8 +338,8 @@ export declare const registryTabelaCelulas: {
|
||||||
dicaPersistente?: boolean;
|
dicaPersistente?: boolean;
|
||||||
min?: string;
|
min?: string;
|
||||||
max?: string;
|
max?: string;
|
||||||
densidade?: import("../../tipos/entrada.js").CampoDensidade;
|
densidade?: import("../../index.js").CampoDensidade;
|
||||||
variante?: import("../../tipos/entrada.js").CampoVariante;
|
variante?: import("../../index.js").CampoVariante;
|
||||||
};
|
};
|
||||||
value: string | null | undefined;
|
value: string | null | undefined;
|
||||||
placeholder: string;
|
placeholder: string;
|
||||||
|
|
@ -364,8 +364,8 @@ export declare const registryTabelaCelulas: {
|
||||||
mensagensErro?: string | string[];
|
mensagensErro?: string | string[];
|
||||||
dica?: string;
|
dica?: string;
|
||||||
dicaPersistente?: boolean;
|
dicaPersistente?: boolean;
|
||||||
densidade?: import("../../tipos/entrada.js").CampoDensidade;
|
densidade?: import("../../index.js").CampoDensidade;
|
||||||
variante?: import("../../tipos/entrada.js").CampoVariante;
|
variante?: import("../../index.js").CampoVariante;
|
||||||
}>;
|
}>;
|
||||||
required: true;
|
required: true;
|
||||||
};
|
};
|
||||||
|
|
@ -386,8 +386,8 @@ export declare const registryTabelaCelulas: {
|
||||||
mensagensErro?: string | string[];
|
mensagensErro?: string | string[];
|
||||||
dica?: string;
|
dica?: string;
|
||||||
dicaPersistente?: boolean;
|
dicaPersistente?: boolean;
|
||||||
densidade?: import("../../tipos/entrada.js").CampoDensidade;
|
densidade?: import("../../index.js").CampoDensidade;
|
||||||
variante?: import("../../tipos/entrada.js").CampoVariante;
|
variante?: import("../../index.js").CampoVariante;
|
||||||
};
|
};
|
||||||
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
||||||
"update:value": (_v: string | null | undefined) => true;
|
"update:value": (_v: string | null | undefined) => true;
|
||||||
|
|
@ -412,8 +412,8 @@ export declare const registryTabelaCelulas: {
|
||||||
mensagensErro?: string | string[];
|
mensagensErro?: string | string[];
|
||||||
dica?: string;
|
dica?: string;
|
||||||
dicaPersistente?: boolean;
|
dicaPersistente?: boolean;
|
||||||
densidade?: import("../../tipos/entrada.js").CampoDensidade;
|
densidade?: import("../../index.js").CampoDensidade;
|
||||||
variante?: import("../../tipos/entrada.js").CampoVariante;
|
variante?: import("../../index.js").CampoVariante;
|
||||||
}>;
|
}>;
|
||||||
required: true;
|
required: true;
|
||||||
};
|
};
|
||||||
|
|
@ -2032,8 +2032,8 @@ export declare const registryTabelaCelulas: {
|
||||||
mensagensErro?: string | string[];
|
mensagensErro?: string | string[];
|
||||||
dica?: string;
|
dica?: string;
|
||||||
dicaPersistente?: boolean;
|
dicaPersistente?: boolean;
|
||||||
densidade?: import("../../tipos/entrada.js").CampoDensidade;
|
densidade?: import("../../index.js").CampoDensidade;
|
||||||
variante?: import("../../tipos/entrada.js").CampoVariante;
|
variante?: import("../../index.js").CampoVariante;
|
||||||
}>;
|
}>;
|
||||||
required: true;
|
required: true;
|
||||||
};
|
};
|
||||||
|
|
@ -2059,8 +2059,8 @@ export declare const registryTabelaCelulas: {
|
||||||
mensagensErro?: string | string[];
|
mensagensErro?: string | string[];
|
||||||
dica?: string;
|
dica?: string;
|
||||||
dicaPersistente?: boolean;
|
dicaPersistente?: boolean;
|
||||||
densidade?: import("../../tipos/entrada.js").CampoDensidade;
|
densidade?: import("../../index.js").CampoDensidade;
|
||||||
variante?: import("../../tipos/entrada.js").CampoVariante;
|
variante?: import("../../index.js").CampoVariante;
|
||||||
};
|
};
|
||||||
itens: import("vue").Ref<{
|
itens: import("vue").Ref<{
|
||||||
chave: string;
|
chave: string;
|
||||||
|
|
@ -2101,8 +2101,8 @@ export declare const registryTabelaCelulas: {
|
||||||
mensagensErro?: string | string[];
|
mensagensErro?: string | string[];
|
||||||
dica?: string;
|
dica?: string;
|
||||||
dicaPersistente?: boolean;
|
dicaPersistente?: boolean;
|
||||||
densidade?: import("../../tipos/entrada.js").CampoDensidade;
|
densidade?: import("../../index.js").CampoDensidade;
|
||||||
variante?: import("../../tipos/entrada.js").CampoVariante;
|
variante?: import("../../index.js").CampoVariante;
|
||||||
}>;
|
}>;
|
||||||
required: true;
|
required: true;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,12 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
|
||||||
erro: import("vue").Ref<string | null, string | null>;
|
erro: import("vue").Ref<string | null, string | null>;
|
||||||
linhas: import("vue").Ref<unknown[], unknown[]>;
|
linhas: import("vue").Ref<unknown[], unknown[]>;
|
||||||
linhasPaginadas: import("vue").ComputedRef<unknown[]>;
|
linhasPaginadas: import("vue").ComputedRef<unknown[]>;
|
||||||
|
filtrosAvancadosAtivos: import("vue").ComputedRef<{
|
||||||
|
coluna: string;
|
||||||
|
valor: any;
|
||||||
|
operador: "in" | "=" | "!=" | ">" | ">=" | "<" | "<=" | "like" | "isNull";
|
||||||
|
ou?: boolean | undefined;
|
||||||
|
}[]>;
|
||||||
quantidadeFiltrada: import("vue").ComputedRef<number>;
|
quantidadeFiltrada: import("vue").ComputedRef<number>;
|
||||||
quantidade: import("vue").Ref<number, number>;
|
quantidade: import("vue").Ref<number, number>;
|
||||||
menuAberto: import("vue").Ref<number | null, number | null>;
|
menuAberto: import("vue").Ref<number | null, number | null>;
|
||||||
|
|
@ -29,6 +35,7 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
|
||||||
colunaOrdenacao: import("vue").Ref<string | null, string | null>;
|
colunaOrdenacao: import("vue").Ref<string | null, string | null>;
|
||||||
direcaoOrdenacao: import("vue").Ref<"desc" | "asc", "desc" | "asc">;
|
direcaoOrdenacao: import("vue").Ref<"desc" | "asc", "desc" | "asc">;
|
||||||
totalPaginas: import("vue").ComputedRef<number>;
|
totalPaginas: import("vue").ComputedRef<number>;
|
||||||
|
registrosPorConsulta: import("vue").ComputedRef<number>;
|
||||||
exibirBusca: import("vue").ComputedRef<boolean>;
|
exibirBusca: import("vue").ComputedRef<boolean>;
|
||||||
exibirFiltroAvancado: import("vue").ComputedRef<boolean>;
|
exibirFiltroAvancado: import("vue").ComputedRef<boolean>;
|
||||||
acoesCabecalho: import("vue").ComputedRef<{
|
acoesCabecalho: import("vue").ComputedRef<{
|
||||||
|
|
@ -36,6 +43,8 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
|
||||||
cor?: string;
|
cor?: string;
|
||||||
rotulo: string;
|
rotulo: string;
|
||||||
acao: () => void;
|
acao: () => void;
|
||||||
|
atualizarConsulta?: () => Promise<void>;
|
||||||
|
editarLista?: ((lista: any[]) => Promise<any[]>) | undefined;
|
||||||
}[]>;
|
}[]>;
|
||||||
temAcoesCabecalho: import("vue").ComputedRef<boolean>;
|
temAcoesCabecalho: import("vue").ComputedRef<boolean>;
|
||||||
temAcoes: import("vue").ComputedRef<boolean>;
|
temAcoes: import("vue").ComputedRef<boolean>;
|
||||||
|
|
@ -764,8 +773,8 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
|
||||||
dicaPersistente?: boolean | undefined;
|
dicaPersistente?: boolean | undefined;
|
||||||
min?: string | undefined;
|
min?: string | undefined;
|
||||||
max?: string | undefined;
|
max?: string | undefined;
|
||||||
densidade?: import("../../tipos/entrada.js").CampoDensidade | undefined;
|
densidade?: import("../../index.js").CampoDensidade | undefined;
|
||||||
variante?: import("../../tipos/entrada.js").CampoVariante | undefined;
|
variante?: import("../../index.js").CampoVariante | undefined;
|
||||||
}] | readonly ["numero", {
|
}] | readonly ["numero", {
|
||||||
rotulo: string;
|
rotulo: string;
|
||||||
placeholder?: string | undefined;
|
placeholder?: string | undefined;
|
||||||
|
|
@ -782,8 +791,8 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
|
||||||
mensagensErro?: string | string[] | undefined;
|
mensagensErro?: string | string[] | undefined;
|
||||||
dica?: string | undefined;
|
dica?: string | undefined;
|
||||||
dicaPersistente?: boolean | undefined;
|
dicaPersistente?: boolean | undefined;
|
||||||
densidade?: import("../../tipos/entrada.js").CampoDensidade | undefined;
|
densidade?: import("../../index.js").CampoDensidade | undefined;
|
||||||
variante?: import("../../tipos/entrada.js").CampoVariante | undefined;
|
variante?: import("../../index.js").CampoVariante | undefined;
|
||||||
}] | readonly ["selecao", {
|
}] | readonly ["selecao", {
|
||||||
rotulo: string;
|
rotulo: string;
|
||||||
placeholder?: string | undefined;
|
placeholder?: string | undefined;
|
||||||
|
|
@ -799,8 +808,8 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
|
||||||
mensagensErro?: string | string[] | undefined;
|
mensagensErro?: string | string[] | undefined;
|
||||||
dica?: string | undefined;
|
dica?: string | undefined;
|
||||||
dicaPersistente?: boolean | undefined;
|
dicaPersistente?: boolean | undefined;
|
||||||
densidade?: import("../../tipos/entrada.js").CampoDensidade | undefined;
|
densidade?: import("../../index.js").CampoDensidade | undefined;
|
||||||
variante?: import("../../tipos/entrada.js").CampoVariante | undefined;
|
variante?: import("../../index.js").CampoVariante | undefined;
|
||||||
}];
|
}];
|
||||||
operador: string;
|
operador: string;
|
||||||
valor: any;
|
valor: any;
|
||||||
|
|
@ -827,8 +836,8 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
|
||||||
dicaPersistente?: boolean | undefined;
|
dicaPersistente?: boolean | undefined;
|
||||||
min?: string | undefined;
|
min?: string | undefined;
|
||||||
max?: string | undefined;
|
max?: string | undefined;
|
||||||
densidade?: import("../../tipos/entrada.js").CampoDensidade | undefined;
|
densidade?: import("../../index.js").CampoDensidade | undefined;
|
||||||
variante?: import("../../tipos/entrada.js").CampoVariante | undefined;
|
variante?: import("../../index.js").CampoVariante | undefined;
|
||||||
}] | readonly ["numero", {
|
}] | readonly ["numero", {
|
||||||
rotulo: string;
|
rotulo: string;
|
||||||
placeholder?: string | undefined;
|
placeholder?: string | undefined;
|
||||||
|
|
@ -845,8 +854,8 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
|
||||||
mensagensErro?: string | string[] | undefined;
|
mensagensErro?: string | string[] | undefined;
|
||||||
dica?: string | undefined;
|
dica?: string | undefined;
|
||||||
dicaPersistente?: boolean | undefined;
|
dicaPersistente?: boolean | undefined;
|
||||||
densidade?: import("../../tipos/entrada.js").CampoDensidade | undefined;
|
densidade?: import("../../index.js").CampoDensidade | undefined;
|
||||||
variante?: import("../../tipos/entrada.js").CampoVariante | undefined;
|
variante?: import("../../index.js").CampoVariante | undefined;
|
||||||
}] | readonly ["selecao", {
|
}] | readonly ["selecao", {
|
||||||
rotulo: string;
|
rotulo: string;
|
||||||
placeholder?: string | undefined;
|
placeholder?: string | undefined;
|
||||||
|
|
@ -862,8 +871,8 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
|
||||||
mensagensErro?: string | string[] | undefined;
|
mensagensErro?: string | string[] | undefined;
|
||||||
dica?: string | undefined;
|
dica?: string | undefined;
|
||||||
dicaPersistente?: boolean | undefined;
|
dicaPersistente?: boolean | undefined;
|
||||||
densidade?: import("../../tipos/entrada.js").CampoDensidade | undefined;
|
densidade?: import("../../index.js").CampoDensidade | undefined;
|
||||||
variante?: import("../../tipos/entrada.js").CampoVariante | undefined;
|
variante?: import("../../index.js").CampoVariante | undefined;
|
||||||
}];
|
}];
|
||||||
operador: string;
|
operador: string;
|
||||||
valor: any;
|
valor: any;
|
||||||
|
|
@ -1000,8 +1009,8 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
|
||||||
dicaPersistente?: boolean;
|
dicaPersistente?: boolean;
|
||||||
min?: string;
|
min?: string;
|
||||||
max?: string;
|
max?: string;
|
||||||
densidade?: import("../../tipos/entrada.js").CampoDensidade;
|
densidade?: import("../../index.js").CampoDensidade;
|
||||||
variante?: import("../../tipos/entrada.js").CampoVariante;
|
variante?: import("../../index.js").CampoVariante;
|
||||||
}>;
|
}>;
|
||||||
required: false;
|
required: false;
|
||||||
default: undefined;
|
default: undefined;
|
||||||
|
|
@ -1047,11 +1056,11 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
|
||||||
default: undefined;
|
default: undefined;
|
||||||
};
|
};
|
||||||
densidade: {
|
densidade: {
|
||||||
type: PropType<import("../../tipos/entrada.js").CampoDensidade>;
|
type: PropType<import("../../index.js").CampoDensidade>;
|
||||||
default: undefined;
|
default: undefined;
|
||||||
};
|
};
|
||||||
variante: {
|
variante: {
|
||||||
type: PropType<import("../../tipos/entrada.js").CampoVariante>;
|
type: PropType<import("../../index.js").CampoVariante>;
|
||||||
default: undefined;
|
default: undefined;
|
||||||
};
|
};
|
||||||
min: {
|
min: {
|
||||||
|
|
@ -1082,8 +1091,8 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
|
||||||
dicaPersistente?: boolean;
|
dicaPersistente?: boolean;
|
||||||
min?: string;
|
min?: string;
|
||||||
max?: string;
|
max?: string;
|
||||||
densidade?: import("../../tipos/entrada.js").CampoDensidade;
|
densidade?: import("../../index.js").CampoDensidade;
|
||||||
variante?: import("../../tipos/entrada.js").CampoVariante;
|
variante?: import("../../index.js").CampoVariante;
|
||||||
}>;
|
}>;
|
||||||
desabilitadoEfetivo: import("vue").ComputedRef<boolean>;
|
desabilitadoEfetivo: import("vue").ComputedRef<boolean>;
|
||||||
emitCompatFocus: () => void;
|
emitCompatFocus: () => void;
|
||||||
|
|
@ -1116,8 +1125,8 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
|
||||||
dicaPersistente?: boolean;
|
dicaPersistente?: boolean;
|
||||||
min?: string;
|
min?: string;
|
||||||
max?: string;
|
max?: string;
|
||||||
densidade?: import("../../tipos/entrada.js").CampoDensidade;
|
densidade?: import("../../index.js").CampoDensidade;
|
||||||
variante?: import("../../tipos/entrada.js").CampoVariante;
|
variante?: import("../../index.js").CampoVariante;
|
||||||
}>;
|
}>;
|
||||||
required: false;
|
required: false;
|
||||||
default: undefined;
|
default: undefined;
|
||||||
|
|
@ -1163,11 +1172,11 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
|
||||||
default: undefined;
|
default: undefined;
|
||||||
};
|
};
|
||||||
densidade: {
|
densidade: {
|
||||||
type: PropType<import("../../tipos/entrada.js").CampoDensidade>;
|
type: PropType<import("../../index.js").CampoDensidade>;
|
||||||
default: undefined;
|
default: undefined;
|
||||||
};
|
};
|
||||||
variante: {
|
variante: {
|
||||||
type: PropType<import("../../tipos/entrada.js").CampoVariante>;
|
type: PropType<import("../../index.js").CampoVariante>;
|
||||||
default: undefined;
|
default: undefined;
|
||||||
};
|
};
|
||||||
min: {
|
min: {
|
||||||
|
|
@ -1197,8 +1206,8 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
|
||||||
dicaPersistente: boolean;
|
dicaPersistente: boolean;
|
||||||
min: string | undefined;
|
min: string | undefined;
|
||||||
max: string | undefined;
|
max: string | undefined;
|
||||||
densidade: import("../../tipos/entrada.js").CampoDensidade;
|
densidade: import("../../index.js").CampoDensidade;
|
||||||
variante: import("../../tipos/entrada.js").CampoVariante;
|
variante: import("../../index.js").CampoVariante;
|
||||||
opcoes: {
|
opcoes: {
|
||||||
rotulo: string;
|
rotulo: string;
|
||||||
placeholder?: string;
|
placeholder?: string;
|
||||||
|
|
@ -1211,8 +1220,8 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
|
||||||
dicaPersistente?: boolean;
|
dicaPersistente?: boolean;
|
||||||
min?: string;
|
min?: string;
|
||||||
max?: string;
|
max?: string;
|
||||||
densidade?: import("../../tipos/entrada.js").CampoDensidade;
|
densidade?: import("../../index.js").CampoDensidade;
|
||||||
variante?: import("../../tipos/entrada.js").CampoVariante;
|
variante?: import("../../index.js").CampoVariante;
|
||||||
};
|
};
|
||||||
value: string | null | undefined;
|
value: string | null | undefined;
|
||||||
placeholder: string;
|
placeholder: string;
|
||||||
|
|
|
||||||
|
|
@ -41,8 +41,8 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
|
||||||
dicaPersistente?: boolean | undefined;
|
dicaPersistente?: boolean | undefined;
|
||||||
min?: string | undefined;
|
min?: string | undefined;
|
||||||
max?: string | undefined;
|
max?: string | undefined;
|
||||||
densidade?: import("../../tipos").CampoDensidade | undefined;
|
densidade?: import("../..").CampoDensidade | undefined;
|
||||||
variante?: import("../../tipos").CampoVariante | undefined;
|
variante?: import("../..").CampoVariante | undefined;
|
||||||
}] | readonly ["numero", {
|
}] | readonly ["numero", {
|
||||||
rotulo: string;
|
rotulo: string;
|
||||||
placeholder?: string | undefined;
|
placeholder?: string | undefined;
|
||||||
|
|
@ -59,8 +59,8 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
|
||||||
mensagensErro?: string | string[] | undefined;
|
mensagensErro?: string | string[] | undefined;
|
||||||
dica?: string | undefined;
|
dica?: string | undefined;
|
||||||
dicaPersistente?: boolean | undefined;
|
dicaPersistente?: boolean | undefined;
|
||||||
densidade?: import("../../tipos").CampoDensidade | undefined;
|
densidade?: import("../..").CampoDensidade | undefined;
|
||||||
variante?: import("../../tipos").CampoVariante | undefined;
|
variante?: import("../..").CampoVariante | undefined;
|
||||||
}] | readonly ["selecao", {
|
}] | readonly ["selecao", {
|
||||||
rotulo: string;
|
rotulo: string;
|
||||||
placeholder?: string | undefined;
|
placeholder?: string | undefined;
|
||||||
|
|
@ -76,8 +76,8 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
|
||||||
mensagensErro?: string | string[] | undefined;
|
mensagensErro?: string | string[] | undefined;
|
||||||
dica?: string | undefined;
|
dica?: string | undefined;
|
||||||
dicaPersistente?: boolean | undefined;
|
dicaPersistente?: boolean | undefined;
|
||||||
densidade?: import("../../tipos").CampoDensidade | undefined;
|
densidade?: import("../..").CampoDensidade | undefined;
|
||||||
variante?: import("../../tipos").CampoVariante | undefined;
|
variante?: import("../..").CampoVariante | undefined;
|
||||||
}];
|
}];
|
||||||
operador: string;
|
operador: string;
|
||||||
valor: any;
|
valor: any;
|
||||||
|
|
@ -99,8 +99,8 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
|
||||||
dicaPersistente?: boolean | undefined;
|
dicaPersistente?: boolean | undefined;
|
||||||
min?: string | undefined;
|
min?: string | undefined;
|
||||||
max?: string | undefined;
|
max?: string | undefined;
|
||||||
densidade?: import("../../tipos").CampoDensidade | undefined;
|
densidade?: import("../..").CampoDensidade | undefined;
|
||||||
variante?: import("../../tipos").CampoVariante | undefined;
|
variante?: import("../..").CampoVariante | undefined;
|
||||||
}] | readonly ["numero", {
|
}] | readonly ["numero", {
|
||||||
rotulo: string;
|
rotulo: string;
|
||||||
placeholder?: string | undefined;
|
placeholder?: string | undefined;
|
||||||
|
|
@ -117,8 +117,8 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
|
||||||
mensagensErro?: string | string[] | undefined;
|
mensagensErro?: string | string[] | undefined;
|
||||||
dica?: string | undefined;
|
dica?: string | undefined;
|
||||||
dicaPersistente?: boolean | undefined;
|
dicaPersistente?: boolean | undefined;
|
||||||
densidade?: import("../../tipos").CampoDensidade | undefined;
|
densidade?: import("../..").CampoDensidade | undefined;
|
||||||
variante?: import("../../tipos").CampoVariante | undefined;
|
variante?: import("../..").CampoVariante | undefined;
|
||||||
}] | readonly ["selecao", {
|
}] | readonly ["selecao", {
|
||||||
rotulo: string;
|
rotulo: string;
|
||||||
placeholder?: string | undefined;
|
placeholder?: string | undefined;
|
||||||
|
|
@ -134,8 +134,8 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
|
||||||
mensagensErro?: string | string[] | undefined;
|
mensagensErro?: string | string[] | undefined;
|
||||||
dica?: string | undefined;
|
dica?: string | undefined;
|
||||||
dicaPersistente?: boolean | undefined;
|
dicaPersistente?: boolean | undefined;
|
||||||
densidade?: import("../../tipos").CampoDensidade | undefined;
|
densidade?: import("../..").CampoDensidade | undefined;
|
||||||
variante?: import("../../tipos").CampoVariante | undefined;
|
variante?: import("../..").CampoVariante | undefined;
|
||||||
}];
|
}];
|
||||||
operador: string;
|
operador: string;
|
||||||
valor: any;
|
valor: any;
|
||||||
|
|
@ -272,8 +272,8 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
|
||||||
dicaPersistente?: boolean;
|
dicaPersistente?: boolean;
|
||||||
min?: string;
|
min?: string;
|
||||||
max?: string;
|
max?: string;
|
||||||
densidade?: import("../../tipos").CampoDensidade;
|
densidade?: import("../..").CampoDensidade;
|
||||||
variante?: import("../../tipos").CampoVariante;
|
variante?: import("../..").CampoVariante;
|
||||||
}>;
|
}>;
|
||||||
required: false;
|
required: false;
|
||||||
default: undefined;
|
default: undefined;
|
||||||
|
|
@ -319,11 +319,11 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
|
||||||
default: undefined;
|
default: undefined;
|
||||||
};
|
};
|
||||||
densidade: {
|
densidade: {
|
||||||
type: PropType<import("../../tipos").CampoDensidade>;
|
type: PropType<import("../..").CampoDensidade>;
|
||||||
default: undefined;
|
default: undefined;
|
||||||
};
|
};
|
||||||
variante: {
|
variante: {
|
||||||
type: PropType<import("../../tipos").CampoVariante>;
|
type: PropType<import("../..").CampoVariante>;
|
||||||
default: undefined;
|
default: undefined;
|
||||||
};
|
};
|
||||||
min: {
|
min: {
|
||||||
|
|
@ -354,8 +354,8 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
|
||||||
dicaPersistente?: boolean;
|
dicaPersistente?: boolean;
|
||||||
min?: string;
|
min?: string;
|
||||||
max?: string;
|
max?: string;
|
||||||
densidade?: import("../../tipos").CampoDensidade;
|
densidade?: import("../..").CampoDensidade;
|
||||||
variante?: import("../../tipos").CampoVariante;
|
variante?: import("../..").CampoVariante;
|
||||||
}>;
|
}>;
|
||||||
desabilitadoEfetivo: import("vue").ComputedRef<boolean>;
|
desabilitadoEfetivo: import("vue").ComputedRef<boolean>;
|
||||||
emitCompatFocus: () => void;
|
emitCompatFocus: () => void;
|
||||||
|
|
@ -388,8 +388,8 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
|
||||||
dicaPersistente?: boolean;
|
dicaPersistente?: boolean;
|
||||||
min?: string;
|
min?: string;
|
||||||
max?: string;
|
max?: string;
|
||||||
densidade?: import("../../tipos").CampoDensidade;
|
densidade?: import("../..").CampoDensidade;
|
||||||
variante?: import("../../tipos").CampoVariante;
|
variante?: import("../..").CampoVariante;
|
||||||
}>;
|
}>;
|
||||||
required: false;
|
required: false;
|
||||||
default: undefined;
|
default: undefined;
|
||||||
|
|
@ -435,11 +435,11 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
|
||||||
default: undefined;
|
default: undefined;
|
||||||
};
|
};
|
||||||
densidade: {
|
densidade: {
|
||||||
type: PropType<import("../../tipos").CampoDensidade>;
|
type: PropType<import("../..").CampoDensidade>;
|
||||||
default: undefined;
|
default: undefined;
|
||||||
};
|
};
|
||||||
variante: {
|
variante: {
|
||||||
type: PropType<import("../../tipos").CampoVariante>;
|
type: PropType<import("../..").CampoVariante>;
|
||||||
default: undefined;
|
default: undefined;
|
||||||
};
|
};
|
||||||
min: {
|
min: {
|
||||||
|
|
@ -469,8 +469,8 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
|
||||||
dicaPersistente: boolean;
|
dicaPersistente: boolean;
|
||||||
min: string | undefined;
|
min: string | undefined;
|
||||||
max: string | undefined;
|
max: string | undefined;
|
||||||
densidade: import("../../tipos").CampoDensidade;
|
densidade: import("../..").CampoDensidade;
|
||||||
variante: import("../../tipos").CampoVariante;
|
variante: import("../..").CampoVariante;
|
||||||
opcoes: {
|
opcoes: {
|
||||||
rotulo: string;
|
rotulo: string;
|
||||||
placeholder?: string;
|
placeholder?: string;
|
||||||
|
|
@ -483,8 +483,8 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
|
||||||
dicaPersistente?: boolean;
|
dicaPersistente?: boolean;
|
||||||
min?: string;
|
min?: string;
|
||||||
max?: string;
|
max?: string;
|
||||||
densidade?: import("../../tipos").CampoDensidade;
|
densidade?: import("../..").CampoDensidade;
|
||||||
variante?: import("../../tipos").CampoVariante;
|
variante?: import("../..").CampoVariante;
|
||||||
};
|
};
|
||||||
value: string | null | undefined;
|
value: string | null | undefined;
|
||||||
placeholder: string;
|
placeholder: string;
|
||||||
|
|
|
||||||
|
|
@ -96,8 +96,17 @@ export type EliTabelaConsulta<T> = {
|
||||||
rotulo: string;
|
rotulo: string;
|
||||||
/** Função executada ao clicar no botão. */
|
/** Função executada ao clicar no botão. */
|
||||||
acao: () => void;
|
acao: () => void;
|
||||||
|
/**
|
||||||
|
* Callback opcional para forçar atualização da consulta.
|
||||||
|
* Observação: o componente `EliTabela` pode ignorar isso dependendo do modo de uso.
|
||||||
|
*/
|
||||||
|
atualizarConsulta?: () => Promise<void>;
|
||||||
|
/**
|
||||||
|
* Callback opcional para permitir editar a lista localmente (sem refazer consulta).
|
||||||
|
* Observação: o componente `EliTabela` pode ignorar isso dependendo do modo de uso.
|
||||||
|
*/
|
||||||
|
editarLista?: (lista: T[]) => Promise<T[]>;
|
||||||
}[];
|
}[];
|
||||||
/** configuração para aplicação dos filtros padrões */
|
|
||||||
filtroAvancado?: {
|
filtroAvancado?: {
|
||||||
rotulo: string;
|
rotulo: string;
|
||||||
coluna: keyof T;
|
coluna: keyof T;
|
||||||
|
|
|
||||||
24
dist/types/componentes/cartao/EliCartao.vue.d.ts
vendored
24
dist/types/componentes/cartao/EliCartao.vue.d.ts
vendored
|
|
@ -59,15 +59,15 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
|
||||||
default: string;
|
default: string;
|
||||||
};
|
};
|
||||||
location: {
|
location: {
|
||||||
type: PropType<import("../../tipos").IndicadorLocalizacao>;
|
type: PropType<import("../..").IndicadorLocalizacao>;
|
||||||
default: string;
|
default: string;
|
||||||
};
|
};
|
||||||
offsetX: {
|
offsetX: {
|
||||||
type: PropType<import("../../tipos").IndicadorOffset>;
|
type: PropType<import("../..").IndicadorOffset>;
|
||||||
default: string;
|
default: string;
|
||||||
};
|
};
|
||||||
offsetY: {
|
offsetY: {
|
||||||
type: PropType<import("../../tipos").IndicadorOffset>;
|
type: PropType<import("../..").IndicadorOffset>;
|
||||||
default: string;
|
default: string;
|
||||||
};
|
};
|
||||||
dot: {
|
dot: {
|
||||||
|
|
@ -83,7 +83,7 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
|
||||||
default: undefined;
|
default: undefined;
|
||||||
};
|
};
|
||||||
radius: {
|
radius: {
|
||||||
type: PropType<import("../../tipos").IndicadorPresetRaio | import("../../tipos").CssLength>;
|
type: PropType<import("../..").IndicadorPresetRaio | import("../..").CssLength>;
|
||||||
default: string;
|
default: string;
|
||||||
};
|
};
|
||||||
}>, {
|
}>, {
|
||||||
|
|
@ -97,15 +97,15 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
|
||||||
default: string;
|
default: string;
|
||||||
};
|
};
|
||||||
location: {
|
location: {
|
||||||
type: PropType<import("../../tipos").IndicadorLocalizacao>;
|
type: PropType<import("../..").IndicadorLocalizacao>;
|
||||||
default: string;
|
default: string;
|
||||||
};
|
};
|
||||||
offsetX: {
|
offsetX: {
|
||||||
type: PropType<import("../../tipos").IndicadorOffset>;
|
type: PropType<import("../..").IndicadorOffset>;
|
||||||
default: string;
|
default: string;
|
||||||
};
|
};
|
||||||
offsetY: {
|
offsetY: {
|
||||||
type: PropType<import("../../tipos").IndicadorOffset>;
|
type: PropType<import("../..").IndicadorOffset>;
|
||||||
default: string;
|
default: string;
|
||||||
};
|
};
|
||||||
dot: {
|
dot: {
|
||||||
|
|
@ -121,18 +121,18 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
|
||||||
default: undefined;
|
default: undefined;
|
||||||
};
|
};
|
||||||
radius: {
|
radius: {
|
||||||
type: PropType<import("../../tipos").IndicadorPresetRaio | import("../../tipos").CssLength>;
|
type: PropType<import("../..").IndicadorPresetRaio | import("../..").CssLength>;
|
||||||
default: string;
|
default: string;
|
||||||
};
|
};
|
||||||
}>> & Readonly<{}>, {
|
}>> & Readonly<{}>, {
|
||||||
color: string;
|
color: string;
|
||||||
location: import("../../tipos").IndicadorLocalizacao;
|
location: import("../..").IndicadorLocalizacao;
|
||||||
offsetX: import("../../tipos").IndicadorOffset;
|
offsetX: import("../..").IndicadorOffset;
|
||||||
offsetY: import("../../tipos").IndicadorOffset;
|
offsetY: import("../..").IndicadorOffset;
|
||||||
dot: boolean;
|
dot: boolean;
|
||||||
visible: boolean;
|
visible: boolean;
|
||||||
badge: string | number | undefined;
|
badge: string | number | undefined;
|
||||||
radius: import("../../tipos").IndicadorPresetRaio | import("../../tipos").CssLength;
|
radius: import("../..").IndicadorPresetRaio | import("../..").CssLength;
|
||||||
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
||||||
}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -11,11 +11,11 @@ declare const __VLS_export: import("vue").DefineComponent<{}, {
|
||||||
default: string;
|
default: string;
|
||||||
};
|
};
|
||||||
variant: {
|
variant: {
|
||||||
type: import("vue").PropType<import("../../tipos/botao.js").BotaoVariante>;
|
type: import("vue").PropType<import("../../index.js").BotaoVariante>;
|
||||||
default: string;
|
default: string;
|
||||||
};
|
};
|
||||||
size: {
|
size: {
|
||||||
type: import("vue").PropType<import("../../tipos/botao.js").BotaoTamanho>;
|
type: import("vue").PropType<import("../../index.js").BotaoTamanho>;
|
||||||
default: string;
|
default: string;
|
||||||
};
|
};
|
||||||
disabled: {
|
disabled: {
|
||||||
|
|
@ -32,11 +32,11 @@ declare const __VLS_export: import("vue").DefineComponent<{}, {
|
||||||
default: string;
|
default: string;
|
||||||
};
|
};
|
||||||
variant: {
|
variant: {
|
||||||
type: import("vue").PropType<import("../../tipos/botao.js").BotaoVariante>;
|
type: import("vue").PropType<import("../../index.js").BotaoVariante>;
|
||||||
default: string;
|
default: string;
|
||||||
};
|
};
|
||||||
size: {
|
size: {
|
||||||
type: import("vue").PropType<import("../../tipos/botao.js").BotaoTamanho>;
|
type: import("vue").PropType<import("../../index.js").BotaoTamanho>;
|
||||||
default: string;
|
default: string;
|
||||||
};
|
};
|
||||||
disabled: {
|
disabled: {
|
||||||
|
|
@ -49,8 +49,8 @@ declare const __VLS_export: import("vue").DefineComponent<{}, {
|
||||||
};
|
};
|
||||||
}>> & Readonly<{}>, {
|
}>> & Readonly<{}>, {
|
||||||
color: string;
|
color: string;
|
||||||
variant: import("../../tipos/botao.js").BotaoVariante;
|
variant: import("../../index.js").BotaoVariante;
|
||||||
size: import("../../tipos/botao.js").BotaoTamanho;
|
size: import("../../index.js").BotaoTamanho;
|
||||||
disabled: boolean;
|
disabled: boolean;
|
||||||
loading: boolean;
|
loading: boolean;
|
||||||
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
||||||
|
|
@ -60,15 +60,15 @@ declare const __VLS_export: import("vue").DefineComponent<{}, {
|
||||||
default: string;
|
default: string;
|
||||||
};
|
};
|
||||||
location: {
|
location: {
|
||||||
type: import("vue").PropType<import("../../tipos/indicador.js").IndicadorLocalizacao>;
|
type: import("vue").PropType<import("../../index.js").IndicadorLocalizacao>;
|
||||||
default: string;
|
default: string;
|
||||||
};
|
};
|
||||||
offsetX: {
|
offsetX: {
|
||||||
type: import("vue").PropType<import("../../tipos/indicador.js").IndicadorOffset>;
|
type: import("vue").PropType<import("../../index.js").IndicadorOffset>;
|
||||||
default: string;
|
default: string;
|
||||||
};
|
};
|
||||||
offsetY: {
|
offsetY: {
|
||||||
type: import("vue").PropType<import("../../tipos/indicador.js").IndicadorOffset>;
|
type: import("vue").PropType<import("../../index.js").IndicadorOffset>;
|
||||||
default: string;
|
default: string;
|
||||||
};
|
};
|
||||||
dot: {
|
dot: {
|
||||||
|
|
@ -84,7 +84,7 @@ declare const __VLS_export: import("vue").DefineComponent<{}, {
|
||||||
default: undefined;
|
default: undefined;
|
||||||
};
|
};
|
||||||
radius: {
|
radius: {
|
||||||
type: import("vue").PropType<import("../../tipos/indicador.js").IndicadorPresetRaio | import("../../tipos/indicador.js").CssLength>;
|
type: import("vue").PropType<import("../../index.js").IndicadorPresetRaio | import("../../index.js").CssLength>;
|
||||||
default: string;
|
default: string;
|
||||||
};
|
};
|
||||||
}>, {
|
}>, {
|
||||||
|
|
@ -98,15 +98,15 @@ declare const __VLS_export: import("vue").DefineComponent<{}, {
|
||||||
default: string;
|
default: string;
|
||||||
};
|
};
|
||||||
location: {
|
location: {
|
||||||
type: import("vue").PropType<import("../../tipos/indicador.js").IndicadorLocalizacao>;
|
type: import("vue").PropType<import("../../index.js").IndicadorLocalizacao>;
|
||||||
default: string;
|
default: string;
|
||||||
};
|
};
|
||||||
offsetX: {
|
offsetX: {
|
||||||
type: import("vue").PropType<import("../../tipos/indicador.js").IndicadorOffset>;
|
type: import("vue").PropType<import("../../index.js").IndicadorOffset>;
|
||||||
default: string;
|
default: string;
|
||||||
};
|
};
|
||||||
offsetY: {
|
offsetY: {
|
||||||
type: import("vue").PropType<import("../../tipos/indicador.js").IndicadorOffset>;
|
type: import("vue").PropType<import("../../index.js").IndicadorOffset>;
|
||||||
default: string;
|
default: string;
|
||||||
};
|
};
|
||||||
dot: {
|
dot: {
|
||||||
|
|
@ -122,18 +122,18 @@ declare const __VLS_export: import("vue").DefineComponent<{}, {
|
||||||
default: undefined;
|
default: undefined;
|
||||||
};
|
};
|
||||||
radius: {
|
radius: {
|
||||||
type: import("vue").PropType<import("../../tipos/indicador.js").IndicadorPresetRaio | import("../../tipos/indicador.js").CssLength>;
|
type: import("vue").PropType<import("../../index.js").IndicadorPresetRaio | import("../../index.js").CssLength>;
|
||||||
default: string;
|
default: string;
|
||||||
};
|
};
|
||||||
}>> & Readonly<{}>, {
|
}>> & Readonly<{}>, {
|
||||||
color: string;
|
color: string;
|
||||||
location: import("../../tipos/indicador.js").IndicadorLocalizacao;
|
location: import("../../index.js").IndicadorLocalizacao;
|
||||||
offsetX: import("../../tipos/indicador.js").IndicadorOffset;
|
offsetX: import("../../index.js").IndicadorOffset;
|
||||||
offsetY: import("../../tipos/indicador.js").IndicadorOffset;
|
offsetY: import("../../index.js").IndicadorOffset;
|
||||||
dot: boolean;
|
dot: boolean;
|
||||||
visible: boolean;
|
visible: boolean;
|
||||||
badge: string | number | undefined;
|
badge: string | number | undefined;
|
||||||
radius: import("../../tipos/indicador.js").IndicadorPresetRaio | import("../../tipos/indicador.js").CssLength;
|
radius: import("../../index.js").IndicadorPresetRaio | import("../../index.js").CssLength;
|
||||||
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
||||||
EliEntradaTexto: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
EliEntradaTexto: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
||||||
value: {
|
value: {
|
||||||
|
|
|
||||||
7
dist/types/index.d.ts
vendored
7
dist/types/index.d.ts
vendored
|
|
@ -4,13 +4,12 @@ import { EliOlaMundo } from "./componentes/ola_mundo";
|
||||||
import { EliBotao } from "./componentes/botao";
|
import { EliBotao } from "./componentes/botao";
|
||||||
import { EliBadge } from "./componentes/indicador";
|
import { EliBadge } from "./componentes/indicador";
|
||||||
import { EliCartao } from "./componentes/cartao";
|
import { EliCartao } from "./componentes/cartao";
|
||||||
import { EliTabela } from "./componentes/EliTabela";
|
|
||||||
import { EliEntradaTexto, EliEntradaNumero, EliEntradaDataHora, EliEntradaParagrafo, EliEntradaSelecao } from "./componentes/EliEntrada";
|
|
||||||
export { EliOlaMundo };
|
export { EliOlaMundo };
|
||||||
export { EliBotao };
|
export { EliBotao };
|
||||||
export { EliBadge };
|
export { EliBadge };
|
||||||
export { EliCartao };
|
export { EliCartao };
|
||||||
export { EliTabela };
|
export * from "./componentes/EliTabela";
|
||||||
export { EliEntradaTexto, EliEntradaNumero, EliEntradaDataHora, EliEntradaParagrafo, EliEntradaSelecao };
|
export * from "./componentes/EliEntrada";
|
||||||
|
export * from "./tipos";
|
||||||
declare const EliVue: Plugin;
|
declare const EliVue: Plugin;
|
||||||
export default EliVue;
|
export default EliVue;
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "eli-vue",
|
"name": "eli-vue",
|
||||||
"version": "0.1.82",
|
"version": "0.1.85",
|
||||||
"private": false,
|
"private": false,
|
||||||
"main": "./dist/eli-vue.umd.js",
|
"main": "./dist/eli-vue.umd.js",
|
||||||
"module": "./dist/eli-vue.es.js",
|
"module": "./dist/eli-vue.es.js",
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,12 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="eli-tabela">
|
<div class="eli-tabela">
|
||||||
<EliTabelaDebug :isDev="isDev" :menuAberto="menuAberto" :menuPopupPos="menuPopupPos" />
|
<EliTabelaDebug :isDev="isDev" :menuAberto="menuAberto" :menuPopupPos="menuPopupPos">
|
||||||
|
<div>paginaAtual: {{ paginaAtual }}</div>
|
||||||
|
<div>limit: {{ registrosPorConsulta }}</div>
|
||||||
|
<div>texto_busca: {{ (valorBusca || '').trim() }}</div>
|
||||||
|
<div>filtrosAvancadosAtivos: {{ JSON.stringify(filtrosAvancadosAtivos) }}</div>
|
||||||
|
<div>quantidadeTotal: {{ quantidade }}</div>
|
||||||
|
</EliTabelaDebug>
|
||||||
|
|
||||||
<EliTabelaEstados
|
<EliTabelaEstados
|
||||||
v-if="carregando || Boolean(erro) || !linhas.length"
|
v-if="carregando || Boolean(erro) || !linhas.length"
|
||||||
|
|
@ -193,14 +199,22 @@ export default defineComponent({
|
||||||
filtrosUi.value = [];
|
filtrosUi.value = [];
|
||||||
limparFiltroAvancado(props.tabela.nome);
|
limparFiltroAvancado(props.tabela.nome);
|
||||||
modalFiltroAberto.value = false;
|
modalFiltroAberto.value = false;
|
||||||
|
// Se o usuário estiver usando filtro avançado, a busca deixa de ter efeito.
|
||||||
|
// Mantemos a regra combinatória (busca tem prioridade), então limpamos a busca.
|
||||||
|
valorBusca.value = "";
|
||||||
if (paginaAtual.value !== 1) paginaAtual.value = 1;
|
if (paginaAtual.value !== 1) paginaAtual.value = 1;
|
||||||
|
else void carregar();
|
||||||
}
|
}
|
||||||
|
|
||||||
function salvarFiltrosAvancados(novo: any[]) {
|
function salvarFiltrosAvancados(novo: any[]) {
|
||||||
filtrosUi.value = (novo ?? []) as any;
|
filtrosUi.value = (novo ?? []) as any;
|
||||||
salvarFiltroAvancado(props.tabela.nome, (novo ?? []) as any);
|
salvarFiltroAvancado(props.tabela.nome, (novo ?? []) as any);
|
||||||
modalFiltroAberto.value = false;
|
modalFiltroAberto.value = false;
|
||||||
|
// Ao aplicar filtros, limpamos a busca para garantir que os filtros sejam efetivos.
|
||||||
|
// (busca tem prioridade sobre filtros)
|
||||||
|
valorBusca.value = "";
|
||||||
if (paginaAtual.value !== 1) paginaAtual.value = 1;
|
if (paginaAtual.value !== 1) paginaAtual.value = 1;
|
||||||
|
else void carregar();
|
||||||
}
|
}
|
||||||
|
|
||||||
const filtrosAvancadosAtivos = computed<tipoFiltro[]>(() => {
|
const filtrosAvancadosAtivos = computed<tipoFiltro[]>(() => {
|
||||||
|
|
@ -351,85 +365,20 @@ export default defineComponent({
|
||||||
return 10;
|
return 10;
|
||||||
});
|
});
|
||||||
|
|
||||||
function aplicarFiltroTexto(linhasIn: unknown[]) {
|
/** Total de páginas calculado com base no total retornado pela API */
|
||||||
const q = (valorBusca.value ?? "").trim().toLowerCase();
|
|
||||||
if (!q) return linhasIn;
|
|
||||||
// filtro simples: stringifica o objeto
|
|
||||||
return linhasIn.filter((l) => JSON.stringify(l).toLowerCase().includes(q));
|
|
||||||
}
|
|
||||||
|
|
||||||
function compararOperador(operador: string, valorLinha: any, valorFiltro: any): boolean {
|
|
||||||
switch (operador) {
|
|
||||||
case "=":
|
|
||||||
return valorLinha == valorFiltro;
|
|
||||||
case "!=":
|
|
||||||
return valorLinha != valorFiltro;
|
|
||||||
case ">":
|
|
||||||
return Number(valorLinha) > Number(valorFiltro);
|
|
||||||
case ">=":
|
|
||||||
return Number(valorLinha) >= Number(valorFiltro);
|
|
||||||
case "<":
|
|
||||||
return Number(valorLinha) < Number(valorFiltro);
|
|
||||||
case "<=":
|
|
||||||
return Number(valorLinha) <= Number(valorFiltro);
|
|
||||||
case "like": {
|
|
||||||
const a = String(valorLinha ?? "").toLowerCase();
|
|
||||||
const b = String(valorFiltro ?? "").toLowerCase();
|
|
||||||
return a.includes(b);
|
|
||||||
}
|
|
||||||
case "in": {
|
|
||||||
// aceita "a,b,c" ou array
|
|
||||||
const arr = Array.isArray(valorFiltro)
|
|
||||||
? valorFiltro
|
|
||||||
: String(valorFiltro ?? "")
|
|
||||||
.split(",")
|
|
||||||
.map((s) => s.trim())
|
|
||||||
.filter(Boolean);
|
|
||||||
return arr.includes(String(valorLinha));
|
|
||||||
}
|
|
||||||
case "isNull":
|
|
||||||
return valorLinha === null || valorLinha === undefined || valorLinha === "";
|
|
||||||
default:
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function aplicarFiltroAvancado(linhasIn: unknown[]) {
|
|
||||||
const filtros = filtrosAvancadosAtivos.value;
|
|
||||||
if (!filtros.length) return linhasIn;
|
|
||||||
|
|
||||||
return linhasIn.filter((l: any) => {
|
|
||||||
return filtros.every((f) => {
|
|
||||||
const vLinha = l?.[f.coluna as any];
|
|
||||||
return compararOperador(String(f.operador), vLinha, (f as any).valor);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
const linhasFiltradas = computed(() => {
|
|
||||||
const base = linhas.value ?? [];
|
|
||||||
return aplicarFiltroAvancado(aplicarFiltroTexto(base));
|
|
||||||
});
|
|
||||||
|
|
||||||
/** Quantidade agora segue a filtragem local */
|
|
||||||
const quantidadeFiltrada = computed(() => linhasFiltradas.value.length);
|
|
||||||
|
|
||||||
/** Total de páginas calculado com base no filtrado */
|
|
||||||
const totalPaginas = computed(() => {
|
const totalPaginas = computed(() => {
|
||||||
const limite = registrosPorConsulta.value;
|
const limite = registrosPorConsulta.value;
|
||||||
if (!limite || limite <= 0) return 1;
|
if (!limite || limite <= 0) return 1;
|
||||||
|
const total = quantidade.value ?? 0;
|
||||||
const total = quantidadeFiltrada.value;
|
|
||||||
if (!total) return 1;
|
if (!total) return 1;
|
||||||
|
|
||||||
return Math.max(1, Math.ceil(total / limite));
|
return Math.max(1, Math.ceil(total / limite));
|
||||||
});
|
});
|
||||||
|
|
||||||
const linhasPaginadas = computed(() => {
|
/** As linhas já vêm paginadas do backend */
|
||||||
const limite = Math.max(1, registrosPorConsulta.value);
|
const linhasPaginadas = computed(() => linhas.value ?? []);
|
||||||
const offset = (paginaAtual.value - 1) * limite;
|
|
||||||
return linhasFiltradas.value.slice(offset, offset + limite);
|
/** Quantidade exibida é a quantidade total retornada pela consulta */
|
||||||
});
|
const quantidadeFiltrada = computed(() => quantidade.value ?? 0);
|
||||||
|
|
||||||
/** Indica se existem ações por linha */
|
/** Indica se existem ações por linha */
|
||||||
const temAcoes = computed(() => (props.tabela.acoesLinha ?? []).length > 0);
|
const temAcoes = computed(() => (props.tabela.acoesLinha ?? []).length > 0);
|
||||||
|
|
@ -594,12 +543,11 @@ export default defineComponent({
|
||||||
menuAberto.value = null;
|
menuAberto.value = null;
|
||||||
linhasExpandidas.value = {};
|
linhasExpandidas.value = {};
|
||||||
|
|
||||||
// Em modo simulação (filtro local), sempre buscamos a lista completa.
|
|
||||||
// A paginação é aplicada APÓS a filtragem.
|
|
||||||
const limite = Math.max(1, registrosPorConsulta.value);
|
const limite = Math.max(1, registrosPorConsulta.value);
|
||||||
const offset = 0;
|
const offset = (paginaAtual.value - 1) * limite;
|
||||||
|
|
||||||
const parametrosConsulta: {
|
const parametrosConsulta: {
|
||||||
|
filtros?: tipoFiltro[];
|
||||||
coluna_ordem?: never;
|
coluna_ordem?: never;
|
||||||
direcao_ordem?: "asc" | "desc";
|
direcao_ordem?: "asc" | "desc";
|
||||||
offSet: number;
|
offSet: number;
|
||||||
|
|
@ -607,16 +555,28 @@ export default defineComponent({
|
||||||
texto_busca?: string;
|
texto_busca?: string;
|
||||||
} = {
|
} = {
|
||||||
offSet: offset,
|
offSet: offset,
|
||||||
limit: 999999,
|
limit: limite,
|
||||||
};
|
};
|
||||||
|
|
||||||
// texto_busca ficará somente para filtragem local.
|
// Regra combinatória definida: busca tem prioridade.
|
||||||
|
const busca = (valorBusca.value ?? "").trim();
|
||||||
|
if (busca) {
|
||||||
|
parametrosConsulta.texto_busca = busca;
|
||||||
|
} else {
|
||||||
|
const filtros = filtrosAvancadosAtivos.value;
|
||||||
|
if (filtros.length) parametrosConsulta.filtros = filtros;
|
||||||
|
}
|
||||||
|
|
||||||
if (colunaOrdenacao.value) {
|
if (colunaOrdenacao.value) {
|
||||||
parametrosConsulta.coluna_ordem = colunaOrdenacao.value as never;
|
parametrosConsulta.coluna_ordem = colunaOrdenacao.value as never;
|
||||||
parametrosConsulta.direcao_ordem = direcaoOrdenacao.value;
|
parametrosConsulta.direcao_ordem = direcaoOrdenacao.value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (import.meta.env.DEV) {
|
||||||
|
// eslint-disable-next-line no-console
|
||||||
|
console.log("[EliTabela] consulta(parametros)", parametrosConsulta);
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const tabelaConfig = props.tabela;
|
const tabelaConfig = props.tabela;
|
||||||
const res = await tabelaConfig.consulta(parametrosConsulta);
|
const res = await tabelaConfig.consulta(parametrosConsulta);
|
||||||
|
|
@ -631,16 +591,13 @@ export default defineComponent({
|
||||||
}
|
}
|
||||||
|
|
||||||
const valores = res.valor?.valores ?? [];
|
const valores = res.valor?.valores ?? [];
|
||||||
const total = valores.length;
|
const total = (res.valor as any)?.quantidade ?? valores.length;
|
||||||
|
|
||||||
linhas.value = valores;
|
linhas.value = valores;
|
||||||
quantidade.value = total;
|
quantidade.value = Number(total) || 0;
|
||||||
|
|
||||||
const totalPaginasRecalculado = Math.max(1, Math.ceil((quantidadeFiltrada.value || 0) / limite));
|
const totalPaginasRecalculado = Math.max(1, Math.ceil((quantidade.value || 0) / limite));
|
||||||
if (paginaAtual.value > totalPaginasRecalculado) {
|
if (paginaAtual.value > totalPaginasRecalculado) paginaAtual.value = totalPaginasRecalculado;
|
||||||
paginaAtual.value = totalPaginasRecalculado;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const acoesLinhaConfiguradas = tabelaConfig.acoesLinha ?? [];
|
const acoesLinhaConfiguradas = tabelaConfig.acoesLinha ?? [];
|
||||||
if (!acoesLinhaConfiguradas.length) {
|
if (!acoesLinhaConfiguradas.length) {
|
||||||
|
|
@ -720,10 +677,7 @@ export default defineComponent({
|
||||||
|
|
||||||
/** Watch: mudança de página dispara nova consulta */
|
/** Watch: mudança de página dispara nova consulta */
|
||||||
watch(paginaAtual, (nova, antiga) => {
|
watch(paginaAtual, (nova, antiga) => {
|
||||||
// paginação local não precisa recarregar
|
if (nova !== antiga) void carregar();
|
||||||
if (nova !== antiga) {
|
|
||||||
// noop
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
/** Watch: troca de configuração reseta estados e recarrega */
|
/** Watch: troca de configuração reseta estados e recarrega */
|
||||||
|
|
@ -774,6 +728,7 @@ export default defineComponent({
|
||||||
erro,
|
erro,
|
||||||
linhas,
|
linhas,
|
||||||
linhasPaginadas,
|
linhasPaginadas,
|
||||||
|
filtrosAvancadosAtivos,
|
||||||
quantidadeFiltrada,
|
quantidadeFiltrada,
|
||||||
quantidade,
|
quantidade,
|
||||||
menuAberto,
|
menuAberto,
|
||||||
|
|
@ -782,6 +737,7 @@ export default defineComponent({
|
||||||
colunaOrdenacao,
|
colunaOrdenacao,
|
||||||
direcaoOrdenacao,
|
direcaoOrdenacao,
|
||||||
totalPaginas,
|
totalPaginas,
|
||||||
|
registrosPorConsulta,
|
||||||
|
|
||||||
// computed
|
// computed
|
||||||
exibirBusca,
|
exibirBusca,
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@
|
||||||
<div><b>EliTabela debug</b></div>
|
<div><b>EliTabela debug</b></div>
|
||||||
<div>menuAberto: {{ menuAberto }}</div>
|
<div>menuAberto: {{ menuAberto }}</div>
|
||||||
<div>menuPos: top={{ menuPopupPos.top }}, left={{ menuPopupPos.left }}</div>
|
<div>menuPos: top={{ menuPopupPos.top }}, left={{ menuPopupPos.left }}</div>
|
||||||
|
<slot />
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,11 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="eli-tabela-modal-filtro__acoes">
|
<div class="eli-tabela-modal-filtro__acoes">
|
||||||
<select v-model="colunaParaAdicionar" class="eli-tabela-modal-filtro__select" :disabled="!opcoesParaAdicionar.length">
|
<select
|
||||||
|
v-model="colunaParaAdicionar"
|
||||||
|
class="eli-tabela-modal-filtro__select"
|
||||||
|
:disabled="!opcoesParaAdicionar.length"
|
||||||
|
>
|
||||||
<option disabled value="">Selecione um filtro…</option>
|
<option disabled value="">Selecione um filtro…</option>
|
||||||
<option v-for="o in opcoesParaAdicionar" :key="String(o.coluna)" :value="String(o.coluna)">
|
<option v-for="o in opcoesParaAdicionar" :key="String(o.coluna)" :value="String(o.coluna)">
|
||||||
{{ rotuloDoFiltro(o) }}
|
{{ rotuloDoFiltro(o) }}
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,11 @@
|
||||||
<template>
|
<template>
|
||||||
|
|
||||||
<!-- TODO: Validar de ação está cehgando aqui-->
|
|
||||||
<button
|
<button
|
||||||
v-if="dados?.acao"
|
v-if="dados?.acao"
|
||||||
type="button"
|
type="button"
|
||||||
class="eli-tabela__texto-truncado eli-tabela__celula-link"
|
class="eli-tabela__texto-truncado eli-tabela__celula-link"
|
||||||
:title="dados?.texto"
|
:title="dados?.texto"
|
||||||
@click.stop.prevent="dados.acao()"
|
@click.stop.prevent="dados?.acao?.()"
|
||||||
>
|
>
|
||||||
{{ dados?.texto }}
|
{{ dados?.texto }}
|
||||||
</button>
|
</button>
|
||||||
|
|
|
||||||
|
|
@ -96,7 +96,6 @@ export type EliTabelaConsulta<T> = {
|
||||||
*/
|
*/
|
||||||
consulta: (parametrosConsulta?: {
|
consulta: (parametrosConsulta?: {
|
||||||
|
|
||||||
//Todo: Esse filtros são recebido do processamento de filtro avandado
|
|
||||||
|
|
||||||
filtros?: tipoFiltro[]
|
filtros?: tipoFiltro[]
|
||||||
coluna_ordem?: keyof T;
|
coluna_ordem?: keyof T;
|
||||||
|
|
@ -125,12 +124,19 @@ export type EliTabelaConsulta<T> = {
|
||||||
rotulo: string;
|
rotulo: string;
|
||||||
/** Função executada ao clicar no botão. */
|
/** Função executada ao clicar no botão. */
|
||||||
acao: () => void;
|
acao: () => void;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Callback opcional para forçar atualização da consulta.
|
||||||
|
* Observação: o componente `EliTabela` pode ignorar isso dependendo do modo de uso.
|
||||||
|
*/
|
||||||
|
atualizarConsulta?: () => Promise<void>
|
||||||
|
/**
|
||||||
|
* Callback opcional para permitir editar a lista localmente (sem refazer consulta).
|
||||||
|
* Observação: o componente `EliTabela` pode ignorar isso dependendo do modo de uso.
|
||||||
|
*/
|
||||||
|
editarLista?: (lista: T[]) => Promise<T[]>
|
||||||
}[];
|
}[];
|
||||||
|
|
||||||
/** configuração para aplicação dos filtros padrões */
|
|
||||||
|
|
||||||
// Todo: quando exite aparace ap lado do obtão coluna o potão filtro avançado, onde abre um modal com dua colunas de compoentes que são contruidas conforme esse padrão
|
|
||||||
// todo: Os filtros criados deverão ser salvo em local storagem como um objeto tipofiltro[]
|
|
||||||
filtroAvancado?: {
|
filtroAvancado?: {
|
||||||
rotulo: string,
|
rotulo: string,
|
||||||
coluna: keyof T,
|
coluna: keyof T,
|
||||||
|
|
|
||||||
|
|
@ -17,8 +17,13 @@ export { EliOlaMundo };
|
||||||
export { EliBotao };
|
export { EliBotao };
|
||||||
export { EliBadge };
|
export { EliBadge };
|
||||||
export { EliCartao };
|
export { EliCartao };
|
||||||
export { EliTabela };
|
|
||||||
export { EliEntradaTexto, EliEntradaNumero, EliEntradaDataHora, EliEntradaParagrafo, EliEntradaSelecao };
|
// Exportar tudo (componentes + types + helpers) de Tabela e Entrada
|
||||||
|
export * from "./componentes/EliTabela";
|
||||||
|
export * from "./componentes/EliEntrada";
|
||||||
|
|
||||||
|
// Exportar tipos compartilhados (ex: CartaoStatus)
|
||||||
|
export * from "./tipos";
|
||||||
|
|
||||||
const EliVue: Plugin = {
|
const EliVue: Plugin = {
|
||||||
install(app: App) {
|
install(app: App) {
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,7 @@ import { BadgeCheck, Eye, Pencil, Plus, Trash2 } from "lucide-vue-next";
|
||||||
import { celulaTabela, EliTabela } from "@/componentes/EliTabela";
|
import { celulaTabela, EliTabela } from "@/componentes/EliTabela";
|
||||||
import type { ComponenteEntrada } from "@/componentes/EliEntrada/tiposEntradas";
|
import type { ComponenteEntrada } from "@/componentes/EliEntrada/tiposEntradas";
|
||||||
import type { EliTabelaConsulta } from "@/componentes/EliTabela";
|
import type { EliTabelaConsulta } from "@/componentes/EliTabela";
|
||||||
|
import type { tipoFiltro } from "@/componentes/EliTabela/types-eli-tabela";
|
||||||
|
|
||||||
type Linha = {
|
type Linha = {
|
||||||
empreendedor: string;
|
empreendedor: string;
|
||||||
|
|
@ -324,21 +325,61 @@ export default defineComponent({
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
const ordenarLinhas = (
|
const compararOperador = (operador: string, valorLinha: any, valorFiltro: any): boolean => {
|
||||||
linhas: Linha[],
|
switch (operador) {
|
||||||
parametros?: { coluna_ordem?: keyof Linha; direcao_ordem?: "asc" | "desc"; texto_busca?: string }
|
case "=":
|
||||||
) => {
|
return valorLinha == valorFiltro;
|
||||||
const listaFiltrada = filtrarPorBusca(linhas, parametros?.texto_busca);
|
case "!=":
|
||||||
|
return valorLinha != valorFiltro;
|
||||||
if (!parametros?.coluna_ordem) {
|
case ">":
|
||||||
return listaFiltrada;
|
return Number(valorLinha) > Number(valorFiltro);
|
||||||
|
case ">=":
|
||||||
|
return Number(valorLinha) >= Number(valorFiltro);
|
||||||
|
case "<":
|
||||||
|
return Number(valorLinha) < Number(valorFiltro);
|
||||||
|
case "<=":
|
||||||
|
return Number(valorLinha) <= Number(valorFiltro);
|
||||||
|
case "like": {
|
||||||
|
const a = String(valorLinha ?? "").toLowerCase();
|
||||||
|
const b = String(valorFiltro ?? "").toLowerCase();
|
||||||
|
return a.includes(b);
|
||||||
}
|
}
|
||||||
|
case "in": {
|
||||||
|
const arr = Array.isArray(valorFiltro)
|
||||||
|
? valorFiltro
|
||||||
|
: String(valorFiltro ?? "")
|
||||||
|
.split(",")
|
||||||
|
.map((s) => s.trim())
|
||||||
|
.filter(Boolean);
|
||||||
|
return arr.includes(String(valorLinha));
|
||||||
|
}
|
||||||
|
case "isNull":
|
||||||
|
return valorLinha === null || valorLinha === undefined || valorLinha === "";
|
||||||
|
default:
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const filtrarPorFiltrosAvancados = (linhas: Linha[], filtros?: tipoFiltro[]) => {
|
||||||
|
const lista = [...linhas];
|
||||||
|
if (!filtros?.length) return lista;
|
||||||
|
|
||||||
|
return lista.filter((linha: any) => {
|
||||||
|
return filtros.every((f) => {
|
||||||
|
const vLinha = linha?.[String((f as any).coluna)];
|
||||||
|
return compararOperador(String((f as any).operador), vLinha, (f as any).valor);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
const ordenarLinhas = (linhas: Linha[], parametros?: { coluna_ordem?: keyof Linha; direcao_ordem?: "asc" | "desc" }) => {
|
||||||
|
if (!parametros?.coluna_ordem) return [...linhas];
|
||||||
|
|
||||||
const direcao = parametros.direcao_ordem ?? "asc";
|
const direcao = parametros.direcao_ordem ?? "asc";
|
||||||
const chave = parametros.coluna_ordem;
|
const chave = parametros.coluna_ordem;
|
||||||
const multiplicador = direcao === "asc" ? 1 : -1;
|
const multiplicador = direcao === "asc" ? 1 : -1;
|
||||||
|
|
||||||
return [...listaFiltrada].sort((a, b) => {
|
return [...linhas].sort((a, b) => {
|
||||||
const valorA = a[chave];
|
const valorA = a[chave];
|
||||||
const valorB = b[chave];
|
const valorB = b[chave];
|
||||||
|
|
||||||
|
|
@ -483,10 +524,23 @@ export default defineComponent({
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
consulta: async (parametrosConsulta) => {
|
consulta: async (parametrosConsulta) => {
|
||||||
// No filtro avançado (modo simulação), a EliTabela busca a lista completa
|
// Agora a EliTabela envia paginação/ordenação/busca OU filtros avançados para a consulta.
|
||||||
// e pagina/filtra localmente.
|
// (busca tem prioridade; quando existe texto_busca, filtros não vêm no payload)
|
||||||
const ordenadas = ordenarLinhas(linhasPadrao.value, parametrosConsulta);
|
|
||||||
const valores = ordenadas;
|
const limite = Math.max(1, Number(parametrosConsulta?.limit ?? 10));
|
||||||
|
const offset = Math.max(0, Number(parametrosConsulta?.offSet ?? 0));
|
||||||
|
|
||||||
|
// 1) filtra (busca OU filtro avançado)
|
||||||
|
const base = [...linhasPadrao.value];
|
||||||
|
const filtradas = parametrosConsulta?.texto_busca
|
||||||
|
? filtrarPorBusca(base, parametrosConsulta.texto_busca)
|
||||||
|
: filtrarPorFiltrosAvancados(base, (parametrosConsulta as any)?.filtros);
|
||||||
|
|
||||||
|
// 2) ordena
|
||||||
|
const ordenadas = ordenarLinhas(filtradas, parametrosConsulta);
|
||||||
|
|
||||||
|
// 3) pagina
|
||||||
|
const valores = ordenadas.slice(offset, offset + limite);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
cod: codigosResposta.sucesso,
|
cod: codigosResposta.sucesso,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue