feat: melhoria componentes de data

This commit is contained in:
MarcioJRGodoi 2026-06-24 13:51:05 -03:00
parent 84383c3bbf
commit 642ccf4c1a
21 changed files with 6888 additions and 4607 deletions

View file

@ -1,231 +0,0 @@
import { type PropType } from "vue";
import type { CampoDensidade, CampoVariante } from "../../tipos";
import type { PadroesEntradas } from "./tiposEntradas";
type EntradaDataHora = PadroesEntradas["dataHora"];
type PropsAntigas = {
modo?: "data" | "dataHora";
rotulo?: string;
placeholder?: string;
desabilitado?: boolean;
limpavel?: boolean;
erro?: boolean;
mensagensErro?: string | string[];
dica?: string;
dicaPersistente?: boolean;
densidade?: CampoDensidade;
variante?: CampoVariante;
min?: string;
max?: string;
};
declare const _default: typeof __VLS_export;
export default _default;
declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
value: {
type: PropType<EntradaDataHora["value"]>;
default: undefined;
};
opcoes: {
type: PropType<EntradaDataHora["opcoes"]>;
required: false;
default: undefined;
};
modelValue: {
type: PropType<string | null>;
default: null;
};
modo: {
type: PropType<PropsAntigas["modo"]>;
default: undefined;
};
rotulo: {
type: StringConstructor;
default: undefined;
};
placeholder: {
type: StringConstructor;
default: undefined;
};
desabilitado: {
type: BooleanConstructor;
default: undefined;
};
limpavel: {
type: BooleanConstructor;
default: undefined;
};
erro: {
type: BooleanConstructor;
default: undefined;
};
mensagensErro: {
type: PropType<string | string[]>;
default: undefined;
};
dica: {
type: StringConstructor;
default: undefined;
};
dicaPersistente: {
type: BooleanConstructor;
default: undefined;
};
densidade: {
type: PropType<CampoDensidade>;
default: undefined;
};
variante: {
type: PropType<CampoVariante>;
default: undefined;
};
min: {
type: PropType<string | undefined>;
default: undefined;
};
max: {
type: PropType<string | undefined>;
default: undefined;
};
}>, {
attrs: import("vue").Attrs;
valor: import("vue").WritableComputedRef<string, string>;
tipoInput: import("vue").ComputedRef<"date" | "datetime-local">;
minLocal: import("vue").ComputedRef<string | undefined>;
maxLocal: import("vue").ComputedRef<string | undefined>;
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("../../tipos").CampoDensidade;
variante?: import("../../tipos").CampoVariante;
}>;
desabilitadoEfetivo: import("vue").ComputedRef<boolean>;
emitCompatFocus: () => void;
emitCompatBlur: () => void;
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
"update:value": (_v: string | null) => true;
input: (_v: string | null) => true;
change: (_v: string | null) => true;
"update:modelValue": (_v: string | null) => true;
alterar: (_v: string | null) => true;
foco: () => true;
desfoco: () => true;
focus: () => true;
blur: () => true;
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
value: {
type: PropType<EntradaDataHora["value"]>;
default: undefined;
};
opcoes: {
type: PropType<EntradaDataHora["opcoes"]>;
required: false;
default: undefined;
};
modelValue: {
type: PropType<string | null>;
default: null;
};
modo: {
type: PropType<PropsAntigas["modo"]>;
default: undefined;
};
rotulo: {
type: StringConstructor;
default: undefined;
};
placeholder: {
type: StringConstructor;
default: undefined;
};
desabilitado: {
type: BooleanConstructor;
default: undefined;
};
limpavel: {
type: BooleanConstructor;
default: undefined;
};
erro: {
type: BooleanConstructor;
default: undefined;
};
mensagensErro: {
type: PropType<string | string[]>;
default: undefined;
};
dica: {
type: StringConstructor;
default: undefined;
};
dicaPersistente: {
type: BooleanConstructor;
default: undefined;
};
densidade: {
type: PropType<CampoDensidade>;
default: undefined;
};
variante: {
type: PropType<CampoVariante>;
default: undefined;
};
min: {
type: PropType<string | undefined>;
default: undefined;
};
max: {
type: PropType<string | undefined>;
default: undefined;
};
}>> & Readonly<{
onInput?: ((_v: string | null) => any) | undefined;
"onUpdate:modelValue"?: ((_v: string | null) => any) | undefined;
onBlur?: (() => any) | undefined;
"onUpdate:value"?: ((_v: string | null) => any) | undefined;
onChange?: ((_v: string | null) => any) | undefined;
onFocus?: (() => any) | undefined;
onAlterar?: ((_v: string | null) => any) | undefined;
onFoco?: (() => any) | undefined;
onDesfoco?: (() => any) | undefined;
}>, {
modo: "data" | "dataHora" | undefined;
limpavel: boolean;
erro: boolean;
mensagensErro: string | string[];
dica: string;
dicaPersistente: boolean;
min: string | undefined;
max: string | undefined;
densidade: CampoDensidade;
variante: CampoVariante;
desabilitado: boolean;
opcoes: {
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("../../tipos").CampoDensidade;
variante?: import("../../tipos").CampoVariante;
};
value: string | null | undefined;
modelValue: string | null;
rotulo: string;
placeholder: string;
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;

View file

@ -0,0 +1,144 @@
import type dayjs from "dayjs";
import { type PropType } from "vue";
import type { CelulaCalendario } from "./useDataHora";
import "./Calendario.css";
declare const _default: typeof __VLS_export;
export default _default;
declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
uid: {
type: NumberConstructor;
required: true;
};
aberto: {
type: BooleanConstructor;
required: true;
};
estiloPopover: {
type: PropType<Record<string, string>>;
required: true;
};
rotulo: {
type: StringConstructor;
required: true;
};
modo: {
type: PropType<"data" | "dataHora">;
required: true;
};
nomeMesAtual: {
type: StringConstructor;
required: true;
};
anoAtual: {
type: NumberConstructor;
required: true;
};
mesAtual: {
type: NumberConstructor;
required: true;
};
listaAnos: {
type: PropType<number[]>;
required: true;
};
celulas: {
type: PropType<CelulaCalendario[]>;
required: true;
};
diaSelecionado: {
type: PropType<dayjs.Dayjs | null>;
default: null;
};
horaTemp: {
type: StringConstructor;
required: true;
};
minutoTemp: {
type: StringConstructor;
required: true;
};
}>, {
diasSemana: string[];
MESES: string[];
onMesSelectChange: (e: Event) => void;
onAnoSelectChange: (e: Event) => void;
onHoraInput: (e: Event) => void;
onHoraBlur: () => void;
onHoraKeydown: (e: KeyboardEvent) => void;
onMinutoInput: (e: Event) => void;
onMinutoBlur: () => void;
onMinutoKeydown: (e: KeyboardEvent) => void;
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
fechar: () => true;
confirmar: () => true;
navegarMes: (_delta: number) => true;
selecionarDia: (_cell: CelulaCalendario) => true;
mudarMes: (_mes: number) => true;
mudarAno: (_ano: number) => true;
"update:horaTemp": (_v: string) => true;
"update:minutoTemp": (_v: string) => true;
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
uid: {
type: NumberConstructor;
required: true;
};
aberto: {
type: BooleanConstructor;
required: true;
};
estiloPopover: {
type: PropType<Record<string, string>>;
required: true;
};
rotulo: {
type: StringConstructor;
required: true;
};
modo: {
type: PropType<"data" | "dataHora">;
required: true;
};
nomeMesAtual: {
type: StringConstructor;
required: true;
};
anoAtual: {
type: NumberConstructor;
required: true;
};
mesAtual: {
type: NumberConstructor;
required: true;
};
listaAnos: {
type: PropType<number[]>;
required: true;
};
celulas: {
type: PropType<CelulaCalendario[]>;
required: true;
};
diaSelecionado: {
type: PropType<dayjs.Dayjs | null>;
default: null;
};
horaTemp: {
type: StringConstructor;
required: true;
};
minutoTemp: {
type: StringConstructor;
required: true;
};
}>> & Readonly<{
onFechar?: (() => any) | undefined;
onConfirmar?: (() => any) | undefined;
onNavegarMes?: ((_delta: number) => any) | undefined;
onSelecionarDia?: ((_cell: CelulaCalendario) => any) | undefined;
onMudarMes?: ((_mes: number) => any) | undefined;
onMudarAno?: ((_ano: number) => any) | undefined;
"onUpdate:horaTemp"?: ((_v: string) => any) | undefined;
"onUpdate:minutoTemp"?: ((_v: string) => any) | undefined;
}>, {
diaSelecionado: dayjs.Dayjs | null;
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;

View file

@ -0,0 +1,13 @@
import dayjs from "dayjs";
import type { CelulaCalendario, EntradaDataHora } from "./useDataHora";
/**
* Gera as 42 células (6 semanas) do calendário para o mês de referência.
* Preenche dias do mês anterior, atual e posterior para alinhar a grade.
*/
export declare function gerarCelulas(referencia: dayjs.Dayjs, diaSelecionado: dayjs.Dayjs | null, min?: string, max?: string): CelulaCalendario[];
/**
* Formata um valor ISO para exibição no campo.
* @param valor - string ISO 8601 ou null
* @param modo - "data" exibe apenas a data, "dataHora" inclui hora
*/
export declare function formatarValor(valor: string | null, modo: EntradaDataHora["opcoes"]["modo"]): string;

View file

@ -0,0 +1,700 @@
import { type PropType } from "vue";
import type { CampoDensidade, CampoVariante } from "../../../tipos";
import "./EliEntradaDataHora.css";
import type { EntradaDataHora } from "./useDataHora";
declare const _default: typeof __VLS_export;
export default _default;
declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
value: {
type: PropType<EntradaDataHora["value"]>;
default: undefined;
};
opcoes: {
type: PropType<EntradaDataHora["opcoes"]>;
required: false;
default: undefined;
};
modelValue: {
type: PropType<string | null>;
default: null;
};
modo: {
type: PropType<"data" | "dataHora">;
default: undefined;
};
rotulo: {
type: StringConstructor;
default: undefined;
};
placeholder: {
type: StringConstructor;
default: undefined;
};
desabilitado: {
type: BooleanConstructor;
default: undefined;
};
limpavel: {
type: BooleanConstructor;
default: undefined;
};
erro: {
type: BooleanConstructor;
default: undefined;
};
mensagensErro: {
type: PropType<string | string[]>;
default: undefined;
};
dica: {
type: StringConstructor;
default: undefined;
};
dicaPersistente: {
type: BooleanConstructor;
default: undefined;
};
densidade: {
type: PropType<CampoDensidade>;
default: undefined;
};
variante: {
type: PropType<CampoVariante>;
default: undefined;
};
min: {
type: PropType<string | undefined>;
default: undefined;
};
max: {
type: PropType<string | undefined>;
default: undefined;
};
}>, {
uid: number;
aberto: import("vue").Ref<boolean, boolean>;
estiloPopover: import("vue").Ref<Record<string, string>, Record<string, string>>;
referencia: import("vue").Ref<{
clone: () => import("dayjs").Dayjs;
isValid: () => boolean;
year: {
(): number;
(value: number): import("dayjs").Dayjs;
};
month: {
(): number;
(value: number): import("dayjs").Dayjs;
};
date: {
(): number;
(value: number): import("dayjs").Dayjs;
};
day: {
(): 0 | 1 | 2 | 3 | 4 | 5 | 6;
(value: number): import("dayjs").Dayjs;
};
hour: {
(): number;
(value: number): import("dayjs").Dayjs;
};
minute: {
(): number;
(value: number): import("dayjs").Dayjs;
};
second: {
(): number;
(value: number): import("dayjs").Dayjs;
};
millisecond: {
(): number;
(value: number): import("dayjs").Dayjs;
};
set: (unit: import("dayjs").UnitType, value: number) => import("dayjs").Dayjs;
get: (unit: import("dayjs").UnitType) => number;
add: {
(value: number, unit?: import("dayjs").ManipulateType): import("dayjs").Dayjs;
(duration: plugin.Duration): import("dayjs").Dayjs;
};
subtract: {
(value: number, unit?: import("dayjs").ManipulateType): import("dayjs").Dayjs;
(duration: plugin.Duration): import("dayjs").Dayjs;
};
startOf: (unit: import("dayjs").OpUnitType) => import("dayjs").Dayjs;
endOf: (unit: import("dayjs").OpUnitType) => import("dayjs").Dayjs;
format: (template?: string) => string;
diff: (date?: import("dayjs").ConfigType, unit?: import("dayjs").QUnitType | import("dayjs").OpUnitType, float?: boolean) => number;
valueOf: () => number;
unix: () => number;
daysInMonth: () => number;
toDate: () => Date;
toJSON: () => string;
toISOString: () => string;
toString: () => string;
utcOffset: {
(): number;
(offset: number | string, keepLocalTime?: boolean): import("dayjs").Dayjs;
};
isBefore: (date?: import("dayjs").ConfigType, unit?: import("dayjs").OpUnitType) => boolean;
isSame: (date?: import("dayjs").ConfigType, unit?: import("dayjs").OpUnitType) => boolean;
isAfter: (date?: import("dayjs").ConfigType, unit?: import("dayjs").OpUnitType) => boolean;
locale: {
(): string;
(preset: string | ILocale, object?: Partial<ILocale>): import("dayjs").Dayjs;
};
isSameOrAfter: (date?: import("dayjs").ConfigType, unit?: import("dayjs").OpUnitType) => boolean;
isSameOrBefore: (date?: import("dayjs").ConfigType, unit?: import("dayjs").OpUnitType) => boolean;
fromNow: (withoutSuffix?: boolean) => string;
from: (compared: import("dayjs").ConfigType, withoutSuffix?: boolean) => string;
toNow: (withoutSuffix?: boolean) => string;
to: (compared: import("dayjs").ConfigType, withoutSuffix?: boolean) => string;
tz: (timezone?: string, keepLocalTime?: boolean) => import("dayjs").Dayjs;
offsetName: (type?: "short" | "long") => string | undefined;
utc: (keepLocalTime?: boolean) => import("dayjs").Dayjs;
local: () => import("dayjs").Dayjs;
isUTC: () => boolean;
week: {
(): number;
(value: number): import("dayjs").Dayjs;
};
}, import("dayjs").Dayjs | {
clone: () => import("dayjs").Dayjs;
isValid: () => boolean;
year: {
(): number;
(value: number): import("dayjs").Dayjs;
};
month: {
(): number;
(value: number): import("dayjs").Dayjs;
};
date: {
(): number;
(value: number): import("dayjs").Dayjs;
};
day: {
(): 0 | 1 | 2 | 3 | 4 | 5 | 6;
(value: number): import("dayjs").Dayjs;
};
hour: {
(): number;
(value: number): import("dayjs").Dayjs;
};
minute: {
(): number;
(value: number): import("dayjs").Dayjs;
};
second: {
(): number;
(value: number): import("dayjs").Dayjs;
};
millisecond: {
(): number;
(value: number): import("dayjs").Dayjs;
};
set: (unit: import("dayjs").UnitType, value: number) => import("dayjs").Dayjs;
get: (unit: import("dayjs").UnitType) => number;
add: {
(value: number, unit?: import("dayjs").ManipulateType): import("dayjs").Dayjs;
(duration: plugin.Duration): import("dayjs").Dayjs;
};
subtract: {
(value: number, unit?: import("dayjs").ManipulateType): import("dayjs").Dayjs;
(duration: plugin.Duration): import("dayjs").Dayjs;
};
startOf: (unit: import("dayjs").OpUnitType) => import("dayjs").Dayjs;
endOf: (unit: import("dayjs").OpUnitType) => import("dayjs").Dayjs;
format: (template?: string) => string;
diff: (date?: import("dayjs").ConfigType, unit?: import("dayjs").QUnitType | import("dayjs").OpUnitType, float?: boolean) => number;
valueOf: () => number;
unix: () => number;
daysInMonth: () => number;
toDate: () => Date;
toJSON: () => string;
toISOString: () => string;
toString: () => string;
utcOffset: {
(): number;
(offset: number | string, keepLocalTime?: boolean): import("dayjs").Dayjs;
};
isBefore: (date?: import("dayjs").ConfigType, unit?: import("dayjs").OpUnitType) => boolean;
isSame: (date?: import("dayjs").ConfigType, unit?: import("dayjs").OpUnitType) => boolean;
isAfter: (date?: import("dayjs").ConfigType, unit?: import("dayjs").OpUnitType) => boolean;
locale: {
(): string;
(preset: string | ILocale, object?: Partial<ILocale>): import("dayjs").Dayjs;
};
isSameOrAfter: (date?: import("dayjs").ConfigType, unit?: import("dayjs").OpUnitType) => boolean;
isSameOrBefore: (date?: import("dayjs").ConfigType, unit?: import("dayjs").OpUnitType) => boolean;
fromNow: (withoutSuffix?: boolean) => string;
from: (compared: import("dayjs").ConfigType, withoutSuffix?: boolean) => string;
toNow: (withoutSuffix?: boolean) => string;
to: (compared: import("dayjs").ConfigType, withoutSuffix?: boolean) => string;
tz: (timezone?: string, keepLocalTime?: boolean) => import("dayjs").Dayjs;
offsetName: (type?: "short" | "long") => string | undefined;
utc: (keepLocalTime?: boolean) => import("dayjs").Dayjs;
local: () => import("dayjs").Dayjs;
isUTC: () => boolean;
week: {
(): number;
(value: number): import("dayjs").Dayjs;
};
}>;
diaSelecionado: import("vue").Ref<{
clone: () => import("dayjs").Dayjs;
isValid: () => boolean;
year: {
(): number;
(value: number): import("dayjs").Dayjs;
};
month: {
(): number;
(value: number): import("dayjs").Dayjs;
};
date: {
(): number;
(value: number): import("dayjs").Dayjs;
};
day: {
(): 0 | 1 | 2 | 3 | 4 | 5 | 6;
(value: number): import("dayjs").Dayjs;
};
hour: {
(): number;
(value: number): import("dayjs").Dayjs;
};
minute: {
(): number;
(value: number): import("dayjs").Dayjs;
};
second: {
(): number;
(value: number): import("dayjs").Dayjs;
};
millisecond: {
(): number;
(value: number): import("dayjs").Dayjs;
};
set: (unit: import("dayjs").UnitType, value: number) => import("dayjs").Dayjs;
get: (unit: import("dayjs").UnitType) => number;
add: {
(value: number, unit?: import("dayjs").ManipulateType): import("dayjs").Dayjs;
(duration: plugin.Duration): import("dayjs").Dayjs;
};
subtract: {
(value: number, unit?: import("dayjs").ManipulateType): import("dayjs").Dayjs;
(duration: plugin.Duration): import("dayjs").Dayjs;
};
startOf: (unit: import("dayjs").OpUnitType) => import("dayjs").Dayjs;
endOf: (unit: import("dayjs").OpUnitType) => import("dayjs").Dayjs;
format: (template?: string) => string;
diff: (date?: import("dayjs").ConfigType, unit?: import("dayjs").QUnitType | import("dayjs").OpUnitType, float?: boolean) => number;
valueOf: () => number;
unix: () => number;
daysInMonth: () => number;
toDate: () => Date;
toJSON: () => string;
toISOString: () => string;
toString: () => string;
utcOffset: {
(): number;
(offset: number | string, keepLocalTime?: boolean): import("dayjs").Dayjs;
};
isBefore: (date?: import("dayjs").ConfigType, unit?: import("dayjs").OpUnitType) => boolean;
isSame: (date?: import("dayjs").ConfigType, unit?: import("dayjs").OpUnitType) => boolean;
isAfter: (date?: import("dayjs").ConfigType, unit?: import("dayjs").OpUnitType) => boolean;
locale: {
(): string;
(preset: string | ILocale, object?: Partial<ILocale>): import("dayjs").Dayjs;
};
isSameOrAfter: (date?: import("dayjs").ConfigType, unit?: import("dayjs").OpUnitType) => boolean;
isSameOrBefore: (date?: import("dayjs").ConfigType, unit?: import("dayjs").OpUnitType) => boolean;
fromNow: (withoutSuffix?: boolean) => string;
from: (compared: import("dayjs").ConfigType, withoutSuffix?: boolean) => string;
toNow: (withoutSuffix?: boolean) => string;
to: (compared: import("dayjs").ConfigType, withoutSuffix?: boolean) => string;
tz: (timezone?: string, keepLocalTime?: boolean) => import("dayjs").Dayjs;
offsetName: (type?: "short" | "long") => string | undefined;
utc: (keepLocalTime?: boolean) => import("dayjs").Dayjs;
local: () => import("dayjs").Dayjs;
isUTC: () => boolean;
week: {
(): number;
(value: number): import("dayjs").Dayjs;
};
} | null, import("dayjs").Dayjs | {
clone: () => import("dayjs").Dayjs;
isValid: () => boolean;
year: {
(): number;
(value: number): import("dayjs").Dayjs;
};
month: {
(): number;
(value: number): import("dayjs").Dayjs;
};
date: {
(): number;
(value: number): import("dayjs").Dayjs;
};
day: {
(): 0 | 1 | 2 | 3 | 4 | 5 | 6;
(value: number): import("dayjs").Dayjs;
};
hour: {
(): number;
(value: number): import("dayjs").Dayjs;
};
minute: {
(): number;
(value: number): import("dayjs").Dayjs;
};
second: {
(): number;
(value: number): import("dayjs").Dayjs;
};
millisecond: {
(): number;
(value: number): import("dayjs").Dayjs;
};
set: (unit: import("dayjs").UnitType, value: number) => import("dayjs").Dayjs;
get: (unit: import("dayjs").UnitType) => number;
add: {
(value: number, unit?: import("dayjs").ManipulateType): import("dayjs").Dayjs;
(duration: plugin.Duration): import("dayjs").Dayjs;
};
subtract: {
(value: number, unit?: import("dayjs").ManipulateType): import("dayjs").Dayjs;
(duration: plugin.Duration): import("dayjs").Dayjs;
};
startOf: (unit: import("dayjs").OpUnitType) => import("dayjs").Dayjs;
endOf: (unit: import("dayjs").OpUnitType) => import("dayjs").Dayjs;
format: (template?: string) => string;
diff: (date?: import("dayjs").ConfigType, unit?: import("dayjs").QUnitType | import("dayjs").OpUnitType, float?: boolean) => number;
valueOf: () => number;
unix: () => number;
daysInMonth: () => number;
toDate: () => Date;
toJSON: () => string;
toISOString: () => string;
toString: () => string;
utcOffset: {
(): number;
(offset: number | string, keepLocalTime?: boolean): import("dayjs").Dayjs;
};
isBefore: (date?: import("dayjs").ConfigType, unit?: import("dayjs").OpUnitType) => boolean;
isSame: (date?: import("dayjs").ConfigType, unit?: import("dayjs").OpUnitType) => boolean;
isAfter: (date?: import("dayjs").ConfigType, unit?: import("dayjs").OpUnitType) => boolean;
locale: {
(): string;
(preset: string | ILocale, object?: Partial<ILocale>): import("dayjs").Dayjs;
};
isSameOrAfter: (date?: import("dayjs").ConfigType, unit?: import("dayjs").OpUnitType) => boolean;
isSameOrBefore: (date?: import("dayjs").ConfigType, unit?: import("dayjs").OpUnitType) => boolean;
fromNow: (withoutSuffix?: boolean) => string;
from: (compared: import("dayjs").ConfigType, withoutSuffix?: boolean) => string;
toNow: (withoutSuffix?: boolean) => string;
to: (compared: import("dayjs").ConfigType, withoutSuffix?: boolean) => string;
tz: (timezone?: string, keepLocalTime?: boolean) => import("dayjs").Dayjs;
offsetName: (type?: "short" | "long") => string | undefined;
utc: (keepLocalTime?: boolean) => import("dayjs").Dayjs;
local: () => import("dayjs").Dayjs;
isUTC: () => boolean;
week: {
(): number;
(value: number): import("dayjs").Dayjs;
};
} | null>;
horaTemp: import("vue").Ref<string, string>;
minutoTemp: import("vue").Ref<string, string>;
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("../../../tipos").CampoDensidade;
variante?: import("../../../tipos").CampoVariante;
}>;
modoEfetivo: import("vue").ComputedRef<"data" | "dataHora">;
desabilitadoEfetivo: import("vue").ComputedRef<boolean>;
valor: import("vue").ComputedRef<string | null>;
valorFormatado: import("vue").ComputedRef<string>;
mensagensVisiveis: import("vue").ComputedRef<string[]>;
nomeMesAtual: import("vue").ComputedRef<string>;
anoAtual: import("vue").ComputedRef<number>;
mesAtual: import("vue").ComputedRef<number>;
listaAnos: import("vue").ComputedRef<number[]>;
mudarMes: (mes: number) => void;
mudarAno: (ano: number) => void;
celulas: import("vue").ComputedRef<import("./useDataHora").CelulaCalendario[]>;
abrirSeHabilitado: () => void;
fechar: () => void;
navegarMes: (delta: number) => void;
selecionarDia: (cell: import("./useDataHora").CelulaCalendario) => void;
confirmar: () => void;
limpar: () => void;
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
"update:value": (_v: string | null) => true;
input: (_v: string | null) => true;
change: (_v: string | null) => true;
"update:modelValue": (_v: string | null) => true;
alterar: (_v: string | null) => true;
foco: () => true;
desfoco: () => true;
focus: () => true;
blur: () => true;
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
value: {
type: PropType<EntradaDataHora["value"]>;
default: undefined;
};
opcoes: {
type: PropType<EntradaDataHora["opcoes"]>;
required: false;
default: undefined;
};
modelValue: {
type: PropType<string | null>;
default: null;
};
modo: {
type: PropType<"data" | "dataHora">;
default: undefined;
};
rotulo: {
type: StringConstructor;
default: undefined;
};
placeholder: {
type: StringConstructor;
default: undefined;
};
desabilitado: {
type: BooleanConstructor;
default: undefined;
};
limpavel: {
type: BooleanConstructor;
default: undefined;
};
erro: {
type: BooleanConstructor;
default: undefined;
};
mensagensErro: {
type: PropType<string | string[]>;
default: undefined;
};
dica: {
type: StringConstructor;
default: undefined;
};
dicaPersistente: {
type: BooleanConstructor;
default: undefined;
};
densidade: {
type: PropType<CampoDensidade>;
default: undefined;
};
variante: {
type: PropType<CampoVariante>;
default: undefined;
};
min: {
type: PropType<string | undefined>;
default: undefined;
};
max: {
type: PropType<string | undefined>;
default: undefined;
};
}>> & Readonly<{
onInput?: ((_v: string | null) => any) | undefined;
"onUpdate:modelValue"?: ((_v: string | null) => any) | undefined;
onBlur?: (() => any) | undefined;
"onUpdate:value"?: ((_v: string | null) => any) | undefined;
onChange?: ((_v: string | null) => any) | undefined;
onFocus?: (() => any) | undefined;
onFoco?: (() => any) | undefined;
onDesfoco?: (() => any) | undefined;
onAlterar?: ((_v: string | null) => any) | undefined;
}>, {
modo: "data" | "dataHora";
limpavel: boolean;
erro: boolean;
mensagensErro: string | string[];
dica: string;
dicaPersistente: boolean;
min: string | undefined;
max: string | undefined;
densidade: CampoDensidade;
variante: CampoVariante;
desabilitado: boolean;
opcoes: {
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("../../../tipos").CampoDensidade;
variante?: import("../../../tipos").CampoVariante;
};
value: string | null | undefined;
modelValue: string | null;
rotulo: string;
placeholder: string;
}, {}, {
Calendario: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
uid: {
type: NumberConstructor;
required: true;
};
aberto: {
type: BooleanConstructor;
required: true;
};
estiloPopover: {
type: PropType<Record<string, string>>;
required: true;
};
rotulo: {
type: StringConstructor;
required: true;
};
modo: {
type: PropType<"data" | "dataHora">;
required: true;
};
nomeMesAtual: {
type: StringConstructor;
required: true;
};
anoAtual: {
type: NumberConstructor;
required: true;
};
mesAtual: {
type: NumberConstructor;
required: true;
};
listaAnos: {
type: PropType<number[]>;
required: true;
};
celulas: {
type: PropType<import("./useDataHora").CelulaCalendario[]>;
required: true;
};
diaSelecionado: {
type: PropType<import("dayjs").Dayjs | null>;
default: null;
};
horaTemp: {
type: StringConstructor;
required: true;
};
minutoTemp: {
type: StringConstructor;
required: true;
};
}>, {
diasSemana: string[];
MESES: string[];
onMesSelectChange: (e: Event) => void;
onAnoSelectChange: (e: Event) => void;
onHoraInput: (e: Event) => void;
onHoraBlur: () => void;
onHoraKeydown: (e: KeyboardEvent) => void;
onMinutoInput: (e: Event) => void;
onMinutoBlur: () => void;
onMinutoKeydown: (e: KeyboardEvent) => void;
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
fechar: () => true;
confirmar: () => true;
navegarMes: (_delta: number) => true;
selecionarDia: (_cell: import("./useDataHora").CelulaCalendario) => true;
mudarMes: (_mes: number) => true;
mudarAno: (_ano: number) => true;
"update:horaTemp": (_v: string) => true;
"update:minutoTemp": (_v: string) => true;
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
uid: {
type: NumberConstructor;
required: true;
};
aberto: {
type: BooleanConstructor;
required: true;
};
estiloPopover: {
type: PropType<Record<string, string>>;
required: true;
};
rotulo: {
type: StringConstructor;
required: true;
};
modo: {
type: PropType<"data" | "dataHora">;
required: true;
};
nomeMesAtual: {
type: StringConstructor;
required: true;
};
anoAtual: {
type: NumberConstructor;
required: true;
};
mesAtual: {
type: NumberConstructor;
required: true;
};
listaAnos: {
type: PropType<number[]>;
required: true;
};
celulas: {
type: PropType<import("./useDataHora").CelulaCalendario[]>;
required: true;
};
diaSelecionado: {
type: PropType<import("dayjs").Dayjs | null>;
default: null;
};
horaTemp: {
type: StringConstructor;
required: true;
};
minutoTemp: {
type: StringConstructor;
required: true;
};
}>> & Readonly<{
onFechar?: (() => any) | undefined;
onConfirmar?: (() => any) | undefined;
onNavegarMes?: ((_delta: number) => any) | undefined;
onSelecionarDia?: ((_cell: import("./useDataHora").CelulaCalendario) => any) | undefined;
onMudarMes?: ((_mes: number) => any) | undefined;
onMudarAno?: ((_ano: number) => any) | undefined;
"onUpdate:horaTemp"?: ((_v: string) => any) | undefined;
"onUpdate:minutoTemp"?: ((_v: string) => any) | undefined;
}>, {
diaSelecionado: import("dayjs").Dayjs | null;
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;

View file

@ -0,0 +1,408 @@
import dayjs from "dayjs";
import "dayjs/locale/pt-br";
import type { CampoDensidade, CampoVariante } from "../../../tipos";
import type { PadroesEntradas } from "../tiposEntradas";
export type EntradaDataHora = PadroesEntradas["dataHora"];
export interface CelulaCalendario {
dia: number;
data: dayjs.Dayjs;
atual: boolean;
hoje: boolean;
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 = {
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?: CampoDensidade;
variante?: CampoVariante;
min?: string;
max?: string;
};
/** Composable principal do EliEntradaDataHora. */
export declare function useDataHora(props: Props, emit: EmitFn): {
uid: number;
aberto: import("vue").Ref<boolean, boolean>;
estiloPopover: import("vue").Ref<Record<string, string>, Record<string, string>>;
referencia: import("vue").Ref<{
clone: () => dayjs.Dayjs;
isValid: () => boolean;
year: {
(): number;
(value: number): dayjs.Dayjs;
};
month: {
(): number;
(value: number): dayjs.Dayjs;
};
date: {
(): number;
(value: number): dayjs.Dayjs;
};
day: {
(): 0 | 1 | 2 | 3 | 4 | 5 | 6;
(value: number): dayjs.Dayjs;
};
hour: {
(): number;
(value: number): dayjs.Dayjs;
};
minute: {
(): number;
(value: number): dayjs.Dayjs;
};
second: {
(): number;
(value: number): dayjs.Dayjs;
};
millisecond: {
(): number;
(value: number): dayjs.Dayjs;
};
set: (unit: dayjs.UnitType, value: number) => dayjs.Dayjs;
get: (unit: dayjs.UnitType) => number;
add: {
(value: number, unit?: dayjs.ManipulateType): dayjs.Dayjs;
(duration: plugin.Duration): dayjs.Dayjs;
};
subtract: {
(value: number, unit?: dayjs.ManipulateType): dayjs.Dayjs;
(duration: plugin.Duration): dayjs.Dayjs;
};
startOf: (unit: dayjs.OpUnitType) => dayjs.Dayjs;
endOf: (unit: dayjs.OpUnitType) => dayjs.Dayjs;
format: (template?: string) => string;
diff: (date?: dayjs.ConfigType, unit?: dayjs.QUnitType | dayjs.OpUnitType, float?: boolean) => number;
valueOf: () => number;
unix: () => number;
daysInMonth: () => number;
toDate: () => Date;
toJSON: () => string;
toISOString: () => string;
toString: () => string;
utcOffset: {
(): number;
(offset: number | string, keepLocalTime?: boolean): dayjs.Dayjs;
};
isBefore: (date?: dayjs.ConfigType, unit?: dayjs.OpUnitType) => boolean;
isSame: (date?: dayjs.ConfigType, unit?: dayjs.OpUnitType) => boolean;
isAfter: (date?: dayjs.ConfigType, unit?: dayjs.OpUnitType) => boolean;
locale: {
(): string;
(preset: string | ILocale, object?: Partial<ILocale>): dayjs.Dayjs;
};
isSameOrAfter: (date?: dayjs.ConfigType, unit?: dayjs.OpUnitType) => boolean;
isSameOrBefore: (date?: dayjs.ConfigType, unit?: dayjs.OpUnitType) => boolean;
fromNow: (withoutSuffix?: boolean) => string;
from: (compared: dayjs.ConfigType, withoutSuffix?: boolean) => string;
toNow: (withoutSuffix?: boolean) => string;
to: (compared: dayjs.ConfigType, withoutSuffix?: boolean) => string;
tz: (timezone?: string, keepLocalTime?: boolean) => dayjs.Dayjs;
offsetName: (type?: "short" | "long") => string | undefined;
utc: (keepLocalTime?: boolean) => dayjs.Dayjs;
local: () => dayjs.Dayjs;
isUTC: () => boolean;
week: {
(): number;
(value: number): dayjs.Dayjs;
};
}, dayjs.Dayjs | {
clone: () => dayjs.Dayjs;
isValid: () => boolean;
year: {
(): number;
(value: number): dayjs.Dayjs;
};
month: {
(): number;
(value: number): dayjs.Dayjs;
};
date: {
(): number;
(value: number): dayjs.Dayjs;
};
day: {
(): 0 | 1 | 2 | 3 | 4 | 5 | 6;
(value: number): dayjs.Dayjs;
};
hour: {
(): number;
(value: number): dayjs.Dayjs;
};
minute: {
(): number;
(value: number): dayjs.Dayjs;
};
second: {
(): number;
(value: number): dayjs.Dayjs;
};
millisecond: {
(): number;
(value: number): dayjs.Dayjs;
};
set: (unit: dayjs.UnitType, value: number) => dayjs.Dayjs;
get: (unit: dayjs.UnitType) => number;
add: {
(value: number, unit?: dayjs.ManipulateType): dayjs.Dayjs;
(duration: plugin.Duration): dayjs.Dayjs;
};
subtract: {
(value: number, unit?: dayjs.ManipulateType): dayjs.Dayjs;
(duration: plugin.Duration): dayjs.Dayjs;
};
startOf: (unit: dayjs.OpUnitType) => dayjs.Dayjs;
endOf: (unit: dayjs.OpUnitType) => dayjs.Dayjs;
format: (template?: string) => string;
diff: (date?: dayjs.ConfigType, unit?: dayjs.QUnitType | dayjs.OpUnitType, float?: boolean) => number;
valueOf: () => number;
unix: () => number;
daysInMonth: () => number;
toDate: () => Date;
toJSON: () => string;
toISOString: () => string;
toString: () => string;
utcOffset: {
(): number;
(offset: number | string, keepLocalTime?: boolean): dayjs.Dayjs;
};
isBefore: (date?: dayjs.ConfigType, unit?: dayjs.OpUnitType) => boolean;
isSame: (date?: dayjs.ConfigType, unit?: dayjs.OpUnitType) => boolean;
isAfter: (date?: dayjs.ConfigType, unit?: dayjs.OpUnitType) => boolean;
locale: {
(): string;
(preset: string | ILocale, object?: Partial<ILocale>): dayjs.Dayjs;
};
isSameOrAfter: (date?: dayjs.ConfigType, unit?: dayjs.OpUnitType) => boolean;
isSameOrBefore: (date?: dayjs.ConfigType, unit?: dayjs.OpUnitType) => boolean;
fromNow: (withoutSuffix?: boolean) => string;
from: (compared: dayjs.ConfigType, withoutSuffix?: boolean) => string;
toNow: (withoutSuffix?: boolean) => string;
to: (compared: dayjs.ConfigType, withoutSuffix?: boolean) => string;
tz: (timezone?: string, keepLocalTime?: boolean) => dayjs.Dayjs;
offsetName: (type?: "short" | "long") => string | undefined;
utc: (keepLocalTime?: boolean) => dayjs.Dayjs;
local: () => dayjs.Dayjs;
isUTC: () => boolean;
week: {
(): number;
(value: number): dayjs.Dayjs;
};
}>;
diaSelecionado: import("vue").Ref<{
clone: () => dayjs.Dayjs;
isValid: () => boolean;
year: {
(): number;
(value: number): dayjs.Dayjs;
};
month: {
(): number;
(value: number): dayjs.Dayjs;
};
date: {
(): number;
(value: number): dayjs.Dayjs;
};
day: {
(): 0 | 1 | 2 | 3 | 4 | 5 | 6;
(value: number): dayjs.Dayjs;
};
hour: {
(): number;
(value: number): dayjs.Dayjs;
};
minute: {
(): number;
(value: number): dayjs.Dayjs;
};
second: {
(): number;
(value: number): dayjs.Dayjs;
};
millisecond: {
(): number;
(value: number): dayjs.Dayjs;
};
set: (unit: dayjs.UnitType, value: number) => dayjs.Dayjs;
get: (unit: dayjs.UnitType) => number;
add: {
(value: number, unit?: dayjs.ManipulateType): dayjs.Dayjs;
(duration: plugin.Duration): dayjs.Dayjs;
};
subtract: {
(value: number, unit?: dayjs.ManipulateType): dayjs.Dayjs;
(duration: plugin.Duration): dayjs.Dayjs;
};
startOf: (unit: dayjs.OpUnitType) => dayjs.Dayjs;
endOf: (unit: dayjs.OpUnitType) => dayjs.Dayjs;
format: (template?: string) => string;
diff: (date?: dayjs.ConfigType, unit?: dayjs.QUnitType | dayjs.OpUnitType, float?: boolean) => number;
valueOf: () => number;
unix: () => number;
daysInMonth: () => number;
toDate: () => Date;
toJSON: () => string;
toISOString: () => string;
toString: () => string;
utcOffset: {
(): number;
(offset: number | string, keepLocalTime?: boolean): dayjs.Dayjs;
};
isBefore: (date?: dayjs.ConfigType, unit?: dayjs.OpUnitType) => boolean;
isSame: (date?: dayjs.ConfigType, unit?: dayjs.OpUnitType) => boolean;
isAfter: (date?: dayjs.ConfigType, unit?: dayjs.OpUnitType) => boolean;
locale: {
(): string;
(preset: string | ILocale, object?: Partial<ILocale>): dayjs.Dayjs;
};
isSameOrAfter: (date?: dayjs.ConfigType, unit?: dayjs.OpUnitType) => boolean;
isSameOrBefore: (date?: dayjs.ConfigType, unit?: dayjs.OpUnitType) => boolean;
fromNow: (withoutSuffix?: boolean) => string;
from: (compared: dayjs.ConfigType, withoutSuffix?: boolean) => string;
toNow: (withoutSuffix?: boolean) => string;
to: (compared: dayjs.ConfigType, withoutSuffix?: boolean) => string;
tz: (timezone?: string, keepLocalTime?: boolean) => dayjs.Dayjs;
offsetName: (type?: "short" | "long") => string | undefined;
utc: (keepLocalTime?: boolean) => dayjs.Dayjs;
local: () => dayjs.Dayjs;
isUTC: () => boolean;
week: {
(): number;
(value: number): dayjs.Dayjs;
};
} | null, dayjs.Dayjs | {
clone: () => dayjs.Dayjs;
isValid: () => boolean;
year: {
(): number;
(value: number): dayjs.Dayjs;
};
month: {
(): number;
(value: number): dayjs.Dayjs;
};
date: {
(): number;
(value: number): dayjs.Dayjs;
};
day: {
(): 0 | 1 | 2 | 3 | 4 | 5 | 6;
(value: number): dayjs.Dayjs;
};
hour: {
(): number;
(value: number): dayjs.Dayjs;
};
minute: {
(): number;
(value: number): dayjs.Dayjs;
};
second: {
(): number;
(value: number): dayjs.Dayjs;
};
millisecond: {
(): number;
(value: number): dayjs.Dayjs;
};
set: (unit: dayjs.UnitType, value: number) => dayjs.Dayjs;
get: (unit: dayjs.UnitType) => number;
add: {
(value: number, unit?: dayjs.ManipulateType): dayjs.Dayjs;
(duration: plugin.Duration): dayjs.Dayjs;
};
subtract: {
(value: number, unit?: dayjs.ManipulateType): dayjs.Dayjs;
(duration: plugin.Duration): dayjs.Dayjs;
};
startOf: (unit: dayjs.OpUnitType) => dayjs.Dayjs;
endOf: (unit: dayjs.OpUnitType) => dayjs.Dayjs;
format: (template?: string) => string;
diff: (date?: dayjs.ConfigType, unit?: dayjs.QUnitType | dayjs.OpUnitType, float?: boolean) => number;
valueOf: () => number;
unix: () => number;
daysInMonth: () => number;
toDate: () => Date;
toJSON: () => string;
toISOString: () => string;
toString: () => string;
utcOffset: {
(): number;
(offset: number | string, keepLocalTime?: boolean): dayjs.Dayjs;
};
isBefore: (date?: dayjs.ConfigType, unit?: dayjs.OpUnitType) => boolean;
isSame: (date?: dayjs.ConfigType, unit?: dayjs.OpUnitType) => boolean;
isAfter: (date?: dayjs.ConfigType, unit?: dayjs.OpUnitType) => boolean;
locale: {
(): string;
(preset: string | ILocale, object?: Partial<ILocale>): dayjs.Dayjs;
};
isSameOrAfter: (date?: dayjs.ConfigType, unit?: dayjs.OpUnitType) => boolean;
isSameOrBefore: (date?: dayjs.ConfigType, unit?: dayjs.OpUnitType) => boolean;
fromNow: (withoutSuffix?: boolean) => string;
from: (compared: dayjs.ConfigType, withoutSuffix?: boolean) => string;
toNow: (withoutSuffix?: boolean) => string;
to: (compared: dayjs.ConfigType, withoutSuffix?: boolean) => string;
tz: (timezone?: string, keepLocalTime?: boolean) => dayjs.Dayjs;
offsetName: (type?: "short" | "long") => string | undefined;
utc: (keepLocalTime?: boolean) => dayjs.Dayjs;
local: () => dayjs.Dayjs;
isUTC: () => boolean;
week: {
(): number;
(value: number): dayjs.Dayjs;
};
} | null>;
horaTemp: import("vue").Ref<string, string>;
minutoTemp: import("vue").Ref<string, string>;
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("../../../tipos").CampoDensidade;
variante?: import("../../../tipos").CampoVariante;
}>;
modoEfetivo: import("vue").ComputedRef<"data" | "dataHora">;
desabilitadoEfetivo: import("vue").ComputedRef<boolean>;
valor: import("vue").ComputedRef<string | null>;
valorFormatado: import("vue").ComputedRef<string>;
mensagensVisiveis: import("vue").ComputedRef<string[]>;
nomeMesAtual: import("vue").ComputedRef<string>;
anoAtual: import("vue").ComputedRef<number>;
mesAtual: import("vue").ComputedRef<number>;
listaAnos: import("vue").ComputedRef<number[]>;
mudarMes: (mes: number) => void;
mudarAno: (ano: number) => void;
celulas: import("vue").ComputedRef<CelulaCalendario[]>;
abrirSeHabilitado: () => void;
fechar: () => void;
navegarMes: (delta: number) => void;
selecionarDia: (cell: CelulaCalendario) => void;
confirmar: () => void;
limpar: () => void;
};
export {};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1,6 +1,6 @@
import EliEntradaConfirmacao from "./EliEntradaConfirmacao.vue";
import EliEntradaCoordenadas from "./EliEntradaCoordenadas.vue";
import EliEntradaDataHora from "./EliEntradaDataHora.vue";
import EliEntradaDataHora from "./EliEntradaDataHora/index.vue";
import EliEntradaNumero from "./EliEntradaNumero.vue";
import EliEntradaParagrafo from "./EliEntradaParagrafo.vue";
import EliEntradaSelecao from "./EliEntradaSelecao.vue";