Criado todo para filtro avançado

This commit is contained in:
Luiz Silva 2026-01-29 11:41:45 -03:00
parent 27c9e4d5e2
commit 0144788548
5 changed files with 36 additions and 2 deletions

View file

@ -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"
}
}

3
pnpm-lock.yaml generated
View file

@ -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)

View file

@ -120,3 +120,13 @@ export type PadroesEntradas = {
* Ex.: "texto" | "numero"
*/
export type TipoEntrada = keyof PadroesEntradas
export type PadraoComponenteEntrada<T extends TipoEntrada> =
readonly [T, PadroesEntradas[T]['opcoes']]
export type ComponenteEntrada = {
[K in TipoEntrada]: PadraoComponenteEntrada<K>
}[TipoEntrada]

View file

@ -17,4 +17,5 @@ export type TiposTabelaCelulas = {
};
};
export type TipoTabelaCelula = keyof TiposTabelaCelulas;
export type TipoTabelaCelula = keyof TiposTabelaCelulas;

View file

@ -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<T> = {
* 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 tenha salvo a propriedade de visibilidade será adotado a propriedade salva
@ -90,6 +93,10 @@ export type EliTabelaConsulta<T> = {
* 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<T> = {
/** 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
}[]
};