This commit is contained in:
Luiz Silva 2026-08-08 14:57:31 -03:00
parent 8c1d26f968
commit dbf08a312d
9 changed files with 4377 additions and 4183 deletions

8318
dist/eli-vue.es.js vendored

File diff suppressed because one or more lines are too long

118
dist/eli-vue.umd.js vendored

File diff suppressed because one or more lines are too long

View file

@ -11,3 +11,14 @@ export declare function gerarCelulas(referencia: dayjs.Dayjs, diaSelecionado: da
* @param modo - "data" exibe apenas a data, "dataHora" inclui hora
*/
export declare function formatarValor(valor: string | null, modo: EntradaDataHora["opcoes"]["modo"]): string;
/**
* Aplica máscara visual de data/hora (DD/MM/YYYY ou DD/MM/YYYY HH:mm) em texto digitado.
*/
export declare function aplicarMascaraDataHora(valor: string, modo: "data" | "dataHora"): string;
/**
* Converte um texto mascarado (ex: "15/08/2026 14:30") em string ISO 8601 com fuso local.
*/
export declare function converterTextoParaIso(texto: string, modo: "data" | "dataHora", horaMinutoPadrao?: {
hora: string;
minuto: string;
}): string | null;

View file

@ -2,6 +2,8 @@ import dayjs from "dayjs";
import "dayjs/locale/pt-br";
import type { CampoDensidade, CampoVariante } from "../../../tipos";
import type { PadroesEntradas } from "../tiposEntradas";
import { diasSemana, MESES } from "./useDataHoraProps";
export { diasSemana, MESES };
export type EntradaDataHora = PadroesEntradas["dataHora"];
export interface CelulaCalendario {
dia: number;
@ -11,8 +13,6 @@ export interface CelulaCalendario {
selecionado: boolean;
desabilitado: boolean;
}
export declare const MESES: string[];
export declare const diasSemana: string[];
/** Função de emit genérica do Vue (compatível com defineComponent) */
type EmitFn = (event: string, payload?: unknown) => void;
type Props = {
@ -37,6 +37,8 @@ type Props = {
export declare function useDataHora(props: Props, emit: EmitFn): {
uid: number;
aberto: import("vue").Ref<boolean, boolean>;
focado: import("vue").Ref<boolean, boolean>;
textoDigitado: import("vue").Ref<string, string>;
estiloPopover: import("vue").Ref<Record<string, string>, Record<string, string>>;
referencia: import("vue").Ref<{
clone: () => dayjs.Dayjs;
@ -399,10 +401,15 @@ export declare function useDataHora(props: Props, emit: EmitFn): {
mudarAno: (ano: number) => void;
celulas: import("vue").ComputedRef<CelulaCalendario[]>;
abrirSeHabilitado: () => void;
alternarPopover: () => void;
fechar: () => void;
navegarMes: (delta: number) => void;
selecionarDia: (cell: CelulaCalendario) => void;
confirmar: () => void;
limpar: () => void;
onTextInput: (e: Event) => void;
onInputFocus: () => void;
onInputBlur: () => void;
atualizarHoraTemp: (v: string) => void;
atualizarMinutoTemp: (v: string) => void;
};
export {};

View file

@ -0,0 +1,20 @@
import { type Ref } from "vue";
interface UseDataHoraInputOptions {
modoEfetivo: Ref<"data" | "dataHora">;
valor: Ref<string | null>;
horaTemp: Ref<string>;
minutoTemp: Ref<string>;
emitirValor: (iso: string | null) => void;
emit: (event: string, payload?: unknown) => void;
}
/**
* Composable responsável pelo controle do campo de texto editável com máscara e eventos de foco/blur.
*/
export declare function useDataHoraInput({ modoEfetivo, valor, horaTemp, minutoTemp, emitirValor, emit, }: UseDataHoraInputOptions): {
textoDigitado: Ref<string, string>;
focado: Ref<boolean, boolean>;
onTextInput: (e: Event) => void;
onInputFocus: () => void;
onInputBlur: () => void;
};
export {};

View file

@ -0,0 +1,15 @@
import { type Ref } from "vue";
interface UseDataHoraPosicaoOptions {
uid: number;
modoEfetivo: Ref<"data" | "dataHora">;
}
/**
* Composable responsável por calcular a posição fixed do popover do calendário.
*/
export declare function useDataHoraPosicao({ uid, modoEfetivo }: UseDataHoraPosicaoOptions): {
estiloPopover: Ref<Record<string, string>, Record<string, string>>;
calcularPosicao: () => void;
adicionarListenersPosicao: () => void;
removerListenersPosicao: () => void;
};
export {};

View file

@ -0,0 +1,59 @@
import dayjs from "dayjs";
import { type Ref } from "vue";
import type { EntradaDataHora } from "./useDataHora";
export declare const MESES: string[];
export declare const diasSemana: string[];
export interface UseDataHoraPropsOptions {
props: {
value?: string | null;
opcoes?: EntradaDataHora["opcoes"];
modelValue?: string | null;
modo?: "data" | "dataHora";
rotulo?: string;
placeholder?: string;
desabilitado?: boolean;
limpavel?: boolean;
erro?: boolean;
mensagensErro?: string | string[];
dica?: string;
dicaPersistente?: boolean;
densidade?: EntradaDataHora["opcoes"]["densidade"];
variante?: EntradaDataHora["opcoes"]["variante"];
min?: string;
max?: string;
};
referencia: Ref<dayjs.Dayjs>;
diaSelecionado: Ref<dayjs.Dayjs | null>;
}
/**
* Composable responsável pelo cálculo de propriedades derivadas e opções do EliEntradaDataHora.
*/
export declare function useDataHoraProps({ props, referencia, diaSelecionado }: UseDataHoraPropsOptions): {
opcoesEfetivas: import("vue").ComputedRef<{
rotulo: string;
placeholder?: string;
apenasLeitura?: boolean;
} & {
modo?: "data" | "dataHora";
limpavel?: boolean;
erro?: boolean;
mensagensErro?: string | string[];
dica?: string;
dicaPersistente?: boolean;
min?: string;
max?: string;
densidade?: import("../../..").CampoDensidade;
variante?: import("../../..").CampoVariante;
}>;
modoEfetivo: import("vue").ComputedRef<"data" | "dataHora">;
desabilitadoEfetivo: import("vue").ComputedRef<boolean>;
effectiveModelValue: import("vue").ComputedRef<string | null>;
valor: import("vue").ComputedRef<string | null>;
mensagensVisiveis: import("vue").ComputedRef<string[]>;
valorFormatado: import("vue").ComputedRef<string>;
nomeMesAtual: import("vue").ComputedRef<string>;
anoAtual: import("vue").ComputedRef<number>;
mesAtual: import("vue").ComputedRef<number>;
listaAnos: import("vue").ComputedRef<number[]>;
celulas: import("vue").ComputedRef<import("./useDataHora").CelulaCalendario[]>;
};

View file

@ -1,6 +1,6 @@
{
"name": "eli-vue",
"version": "0.1.227",
"version": "0.1.230",
"private": false,
"main": "./dist/eli-vue.umd.js",
"module": "./dist/eli-vue.es.js",
@ -34,7 +34,7 @@
"@vitejs/plugin-vue": "^5.0.0",
"leaflet": "^1.9.4",
"sass": "^1.94.2",
"typescript": "^7.0.2",
"typescript": "^7",
"vite": "^6.0.0",
"vite-plugin-css-injected-by-js": "^3.5.2",
"vite-plugin-vuetify": "^2.1.2",

2
pnpm-lock.yaml generated
View file

@ -52,7 +52,7 @@ importers:
specifier: ^1.94.2
version: 1.102.0
typescript:
specifier: ^7.0.2
specifier: ^7
version: 7.0.2
vite:
specifier: ^6.0.0