diff --git a/package.json b/package.json index 7a67ee1..3ff7d89 100644 --- a/package.json +++ b/package.json @@ -37,6 +37,7 @@ "dependencies": { "dayjs": "^1.11.19", "lucide-vue-next": "^0.563.0", + "p-comuns": "git+https://git2.idz.one/publico/_comuns.git", "p-respostas": "git+https://git2.idz.one/publico/_respostas.git" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d45f9c5..fd90a45 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -14,6 +14,9 @@ importers: lucide-vue-next: specifier: ^0.563.0 version: 0.563.0(vue@3.5.25(typescript@5.9.3)) + p-comuns: + specifier: git+https://git2.idz.one/publico/_comuns.git + version: git+https://git2.idz.one/publico/_comuns.git#d783fa12940a5b1bcafa5038bd1c49c3f5f9b7fc(cross-fetch@4.1.0)(dayjs@1.11.19)(uuid@11.1.0)(zod@4.1.4) p-respostas: specifier: git+https://git2.idz.one/publico/_respostas.git version: git+https://git2.idz.one/publico/_respostas.git#8c24d790ace7255404745dcbdf12c5396e8b9843(cross-fetch@4.1.0)(dayjs@1.11.19)(uuid@11.1.0) diff --git a/src/componentes/EliEntrada/tiposEntradas.ts b/src/componentes/EliEntrada/tiposEntradas.ts index 647f724..5dd16c6 100644 --- a/src/componentes/EliEntrada/tiposEntradas.ts +++ b/src/componentes/EliEntrada/tiposEntradas.ts @@ -120,3 +120,13 @@ export type PadroesEntradas = { * Ex.: "texto" | "numero" */ export type TipoEntrada = keyof PadroesEntradas + + + + +export type PadraoComponenteEntrada = + readonly [T, PadroesEntradas[T]['opcoes']] + +export type ComponenteEntrada = { + [K in TipoEntrada]: PadraoComponenteEntrada +}[TipoEntrada] \ No newline at end of file diff --git a/src/componentes/EliTabela/celulas/tiposTabelaCelulas.ts b/src/componentes/EliTabela/celulas/tiposTabelaCelulas.ts index fcce778..d22ef1b 100644 --- a/src/componentes/EliTabela/celulas/tiposTabelaCelulas.ts +++ b/src/componentes/EliTabela/celulas/tiposTabelaCelulas.ts @@ -17,4 +17,5 @@ export type TiposTabelaCelulas = { }; }; -export type TipoTabelaCelula = keyof TiposTabelaCelulas; \ No newline at end of file +export type TipoTabelaCelula = keyof TiposTabelaCelulas; + diff --git a/src/componentes/EliTabela/types-eli-tabela.ts b/src/componentes/EliTabela/types-eli-tabela.ts index 7e87896..c8f5a10 100644 --- a/src/componentes/EliTabela/types-eli-tabela.ts +++ b/src/componentes/EliTabela/types-eli-tabela.ts @@ -1,6 +1,9 @@ import type { tipoResposta } from "p-respostas"; import type { LucideIcon } from "lucide-vue-next"; import type { TipoTabelaCelula, TiposTabelaCelulas } from "./celulas/tiposTabelaCelulas"; +import { operadores, tipoFiltro } from "p-comuns"; +import { TipoEntrada } from "../EliEntrada"; +import { ComponenteEntrada } from "../EliEntrada/tiposEntradas"; @@ -37,7 +40,7 @@ export type EliColuna = { * exibir controles de ordenação e utiliza o valor como chave para o backend. */ coluna_ordem?: keyof T; - + /** * indica que a coluna será visivel, se false incia em detalhe * Caso já tenha salvo a propriedade de visibilidade será adotado a propriedade salva @@ -90,6 +93,10 @@ export type EliTabelaConsulta = { * ordenação (`coluna_ordem`/`direcao_ordem`) e paginação (`offSet`/`limit`). */ consulta: (parametrosConsulta?: { + + //Todo: Esse filtros são recebido do processamento de filtro avandado + + filtros?: tipoFiltro[] coluna_ordem?: keyof T; direcao_ordem?: "asc" | "desc"; offSet?: number; @@ -117,5 +124,17 @@ export type EliTabelaConsulta = { /** Função executada ao clicar no botão. */ acao: () => void; }[]; + +/** 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?: { + coluna: keyof T, + operador: operadores | keyof typeof operadores, + entrada: ComponenteEntrada + }[] + + };