.implementado itens desativados nos selects

This commit is contained in:
Luiz Silva 2026-06-16 18:14:15 -03:00
parent 900a5f3c5c
commit 84383c3bbf
18 changed files with 1645 additions and 1567 deletions

2648
dist/eli-vue.es.js vendored

File diff suppressed because one or more lines are too long

16
dist/eli-vue.umd.js vendored

File diff suppressed because one or more lines are too long

View file

@ -28,6 +28,9 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
rotulo: string;
}[]>;
carregando: import("vue").Ref<boolean, boolean>;
itemProps: import("vue").ComputedRef<((item: ItemSelecao) => {
disabled: boolean;
}) | undefined>;
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
"update:value": (_v: EntradaSelecao["value"]) => true;
input: (_v: EntradaSelecao["value"]) => true;

View file

@ -28,6 +28,9 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
rotulo: string;
}[]>;
carregando: import("vue").Ref<boolean, boolean>;
itemProps: import("vue").ComputedRef<((item: ItemSelecao) => {
disabled: boolean;
}) | undefined>;
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
"update:value": (_v: EntradaSelecaoMultipla["value"]) => true;
input: (_v: EntradaSelecaoMultipla["value"]) => true;

View file

@ -5,6 +5,7 @@
*/
import type { zCoordenadas } from "p-comuns";
import type z from "zod";
import type { OpcoesSelecaoBase } from "./tiposSelecao";
/**
* Contrato padrão de uma entrada.
*
@ -100,60 +101,10 @@ export type PadroesEntradas = {
/** Variante do v-text-field (Vuetify). */
variante?: import("../../tipos").CampoVariante;
}>;
selecao: tipoPadraoEntrada<string | null | undefined, {
/**
* Carrega os itens da seleção (sincrono ou async).
* - Cada item precisa ter uma chave estável (value) e um rótulo (title).
*/
itens: () => {
chave: string;
rotulo: string;
}[] | Promise<{
chave: string;
rotulo: string;
}[]>;
/** Se true, mostra ícone para limpar o valor (Vuetify clearable). */
limpavel?: boolean;
/** Estado de erro (visual). */
erro?: boolean;
/** Mensagens de erro. */
mensagensErro?: string | string[];
/** Texto de apoio. */
dica?: string;
/** Mantém a dica sempre visível. */
dicaPersistente?: boolean;
/** Densidade do campo (Vuetify). */
densidade?: import("../../tipos").CampoDensidade;
/** Variante do v-text-field (Vuetify). */
variante?: import("../../tipos").CampoVariante;
}>;
selecaoMultipla: tipoPadraoEntrada<string[] | null | undefined, {
/**
* Carrega os itens da seleção (sincrono ou async).
* - Cada item precisa ter uma chave estável (value) e um rótulo (title).
*/
itens: () => {
chave: string;
rotulo: string;
}[] | Promise<{
chave: string;
rotulo: string;
}[]>;
/** Se true, mostra ícone para limpar o valor (Vuetify clearable). */
limpavel?: boolean;
/** Estado de erro (visual). */
erro?: boolean;
/** Mensagens de erro. */
mensagensErro?: string | string[];
/** Texto de apoio. */
dica?: string;
/** Mantém a dica sempre visível. */
dicaPersistente?: boolean;
/** Densidade do campo (Vuetify). */
densidade?: import("../../tipos").CampoDensidade;
/** Variante do v-text-field (Vuetify). */
variante?: import("../../tipos").CampoVariante;
}>;
/** Seleção simples — ver {@link OpcoesSelecaoBase} para opções disponíveis. */
selecao: tipoPadraoEntrada<string | null | undefined, OpcoesSelecaoBase>;
/** Seleção múltipla — ver {@link OpcoesSelecaoBase} para opções disponíveis. */
selecaoMultipla: tipoPadraoEntrada<string[] | null | undefined, OpcoesSelecaoBase>;
confirmacao: tipoPadraoEntrada<boolean, {
/** Cor do switch quando ativo (Vuetify color). */
cor?: string;

View file

@ -0,0 +1,39 @@
/**
* Tipos específicos dos componentes de seleção (simples e múltipla).
* Extraído de tiposEntradas.ts para respeitar o limite de 250 linhas.
*/
import type { CampoDensidade, CampoVariante } from "../../tipos";
/** Item padrão dos componentes de seleção. */
export type ItemSelecaoOpcoes = {
chave: string;
rotulo: string;
};
/** Carregador de itens (síncrono ou async). */
export type CarregadorItens = () => ItemSelecaoOpcoes[] | Promise<ItemSelecaoOpcoes[]>;
/** Opções compartilhadas entre seleção simples e múltipla. */
export type OpcoesSelecaoBase = {
/**
* Carrega os itens da seleção (sincrono ou async).
* - Cada item precisa ter uma chave estável (value) e um rótulo (title).
*/
itens: CarregadorItens;
/**
* Lista de chaves (valores de `chave`) que devem aparecer desativadas.
* Os itens aparecerão visíveis no menu, mas não poderão ser selecionados.
*/
desativado?: string[];
/** Se true, mostra ícone para limpar o valor (Vuetify clearable). */
limpavel?: boolean;
/** Estado de erro (visual). */
erro?: boolean;
/** Mensagens de erro. */
mensagensErro?: string | string[];
/** Texto de apoio. */
dica?: string;
/** Mantém a dica sempre visível. */
dicaPersistente?: boolean;
/** Densidade do campo (Vuetify). */
densidade?: CampoDensidade;
/** Variante do v-text-field (Vuetify). */
variante?: CampoVariante;
};

View file

@ -1023,13 +1023,8 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
rotulo: string;
placeholder?: string | undefined;
apenasLeitura?: boolean | undefined;
itens: () => {
chave: string;
rotulo: string;
}[] | Promise<{
chave: string;
rotulo: string;
}[]>;
itens: import("../EliEntrada/tiposSelecao").CarregadorItens;
desativado?: string[] | undefined;
limpavel?: boolean | undefined;
erro?: boolean | undefined;
mensagensErro?: string | string[] | undefined;
@ -1041,13 +1036,8 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
rotulo: string;
placeholder?: string | undefined;
apenasLeitura?: boolean | undefined;
itens: () => {
chave: string;
rotulo: string;
}[] | Promise<{
chave: string;
rotulo: string;
}[]>;
itens: import("../EliEntrada/tiposSelecao").CarregadorItens;
desativado?: string[] | undefined;
limpavel?: boolean | undefined;
erro?: boolean | undefined;
mensagensErro?: string | string[] | undefined;
@ -1122,13 +1112,8 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
rotulo: string;
placeholder?: string | undefined;
apenasLeitura?: boolean | undefined;
itens: () => {
chave: string;
rotulo: string;
}[] | Promise<{
chave: string;
rotulo: string;
}[]>;
itens: import("../EliEntrada/tiposSelecao").CarregadorItens;
desativado?: string[] | undefined;
limpavel?: boolean | undefined;
erro?: boolean | undefined;
mensagensErro?: string | string[] | undefined;
@ -1140,13 +1125,8 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
rotulo: string;
placeholder?: string | undefined;
apenasLeitura?: boolean | undefined;
itens: () => {
chave: string;
rotulo: string;
}[] | Promise<{
chave: string;
rotulo: string;
}[]>;
itens: import("../EliEntrada/tiposSelecao").CarregadorItens;
desativado?: string[] | undefined;
limpavel?: boolean | undefined;
erro?: boolean | undefined;
mensagensErro?: string | string[] | undefined;

View file

@ -72,13 +72,8 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
rotulo: string;
placeholder?: string | undefined;
apenasLeitura?: boolean | undefined;
itens: () => {
chave: string;
rotulo: string;
}[] | Promise<{
chave: string;
rotulo: string;
}[]>;
itens: import("../EliEntrada/tiposSelecao").CarregadorItens;
desativado?: string[] | undefined;
limpavel?: boolean | undefined;
erro?: boolean | undefined;
mensagensErro?: string | string[] | undefined;
@ -90,13 +85,8 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
rotulo: string;
placeholder?: string | undefined;
apenasLeitura?: boolean | undefined;
itens: () => {
chave: string;
rotulo: string;
}[] | Promise<{
chave: string;
rotulo: string;
}[]>;
itens: import("../EliEntrada/tiposSelecao").CarregadorItens;
desativado?: string[] | undefined;
limpavel?: boolean | undefined;
erro?: boolean | undefined;
mensagensErro?: string | string[] | undefined;
@ -171,13 +161,8 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
rotulo: string;
placeholder?: string | undefined;
apenasLeitura?: boolean | undefined;
itens: () => {
chave: string;
rotulo: string;
}[] | Promise<{
chave: string;
rotulo: string;
}[]>;
itens: import("../EliEntrada/tiposSelecao").CarregadorItens;
desativado?: string[] | undefined;
limpavel?: boolean | undefined;
erro?: boolean | undefined;
mensagensErro?: string | string[] | undefined;
@ -189,13 +174,8 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
rotulo: string;
placeholder?: string | undefined;
apenasLeitura?: boolean | undefined;
itens: () => {
chave: string;
rotulo: string;
}[] | Promise<{
chave: string;
rotulo: string;
}[]>;
itens: import("../EliEntrada/tiposSelecao").CarregadorItens;
desativado?: string[] | undefined;
limpavel?: boolean | undefined;
erro?: boolean | undefined;
mensagensErro?: string | string[] | undefined;

View file

@ -103,13 +103,8 @@ export declare function useFiltroAvancado({ aberto, filtrosBase, modelo, modeloF
rotulo: string;
placeholder?: string | undefined;
apenasLeitura?: boolean | undefined;
itens: () => {
chave: string;
rotulo: string;
}[] | Promise<{
chave: string;
rotulo: string;
}[]>;
itens: import("../EliEntrada/tiposSelecao").CarregadorItens;
desativado?: string[] | undefined;
limpavel?: boolean | undefined;
erro?: boolean | undefined;
mensagensErro?: string | string[] | undefined;
@ -121,13 +116,8 @@ export declare function useFiltroAvancado({ aberto, filtrosBase, modelo, modeloF
rotulo: string;
placeholder?: string | undefined;
apenasLeitura?: boolean | undefined;
itens: () => {
chave: string;
rotulo: string;
}[] | Promise<{
chave: string;
rotulo: string;
}[]>;
itens: import("../EliEntrada/tiposSelecao").CarregadorItens;
desativado?: string[] | undefined;
limpavel?: boolean | undefined;
erro?: boolean | undefined;
mensagensErro?: string | string[] | undefined;
@ -202,13 +192,8 @@ export declare function useFiltroAvancado({ aberto, filtrosBase, modelo, modeloF
rotulo: string;
placeholder?: string | undefined;
apenasLeitura?: boolean | undefined;
itens: () => {
chave: string;
rotulo: string;
}[] | Promise<{
chave: string;
rotulo: string;
}[]>;
itens: import("../EliEntrada/tiposSelecao").CarregadorItens;
desativado?: string[] | undefined;
limpavel?: boolean | undefined;
erro?: boolean | undefined;
mensagensErro?: string | string[] | undefined;
@ -220,13 +205,8 @@ export declare function useFiltroAvancado({ aberto, filtrosBase, modelo, modeloF
rotulo: string;
placeholder?: string | undefined;
apenasLeitura?: boolean | undefined;
itens: () => {
chave: string;
rotulo: string;
}[] | Promise<{
chave: string;
rotulo: string;
}[]>;
itens: import("../EliEntrada/tiposSelecao").CarregadorItens;
desativado?: string[] | undefined;
limpavel?: boolean | undefined;
erro?: boolean | undefined;
mensagensErro?: string | string[] | undefined;