vue-componentes/src/componentes/EliEntrada/utils/filtroSelecao.ts
2026-07-13 14:53:47 -03:00

27 lines
1 KiB
TypeScript

/**
* Utilitário de filtragem para os componentes de seleção (EliEntradaSelecao e EliEntradaSelecaoMultipla).
*
* Normaliza a string removendo acentos e convertendo para minúsculas antes de comparar,
* garantindo que "São Paulo" seja encontrado digitando "sao paulo" ou "SÃO PAULO".
*/
/** Remove acentos e converte para minúsculas para comparação insensível. */
function normalizar(texto: string): string {
return texto
.normalize("NFD") // decompõe caracteres acentuados (ex: "ã" → "a" + diacrítico)
.replace(/\p{Diacritic}/gu, "") // remove os diacríticos
.toLowerCase()
}
/**
* Função de filtro customizada para v-autocomplete do Vuetify.
*
* Vuetify passa (value, query, item):
* - `value` → texto do item renderizado (item-title resolvido)
* - `query` → texto digitado pelo usuário
* - `item` → objeto completo do item (não usado aqui)
*/
export function filtroSelecao(value: string, query: string): boolean {
if (!query) return true
return normalizar(value).includes(normalizar(query))
}