fix: Correct incomplete $state initialization in multiple Svelte components and pages.

This commit is contained in:
2025-12-02 19:18:53 -03:00
parent 4bd9e21748
commit 8a50fb6f61
99 changed files with 520 additions and 519 deletions

View File

@@ -20,7 +20,7 @@
let modalRef: HTMLDialogElement;
// Seções selecionáveis
const sections = $state({
let sections = $state({
dadosFuncionario: true,
registrosPonto: true,
saldoDiario: true,

View File

@@ -39,8 +39,8 @@
const configQuery = useQuery(api.configuracaoPonto.obterConfiguracao, {});
// Query para histórico e saldo do dia
const funcionarioId = $derived(currentUser?.data?.funcionarioId ?? null);
const dataHoje = $derived(new Date().toISOString().split('T')[0]!);
let funcionarioId = $derived(currentUser?.data?.funcionarioId ?? null);
let dataHoje = $derived(new Date().toISOString().split('T')[0]!);
// Usar refreshKey para forçar atualização após registro
const registrosHojeQuery = useQuery(api.pontos.listarRegistrosDia, {
@@ -80,10 +80,10 @@
null
);
const registrosHoje = $derived(registrosHojeQuery?.data || []);
const config = $derived(configQuery?.data);
let registrosHoje = $derived(registrosHojeQuery?.data || []);
let config = $derived(configQuery?.data);
const proximoTipo = $derived.by(() => {
let proximoTipo = $derived.by(() => {
if (registrosHoje.length === 0) {
return 'entrada';
}
@@ -91,7 +91,7 @@
return getProximoTipoRegistro(ultimoRegistro?.tipo || null);
});
const tipoLabel = $derived.by(() => {
let tipoLabel = $derived.by(() => {
if (config) {
return getTipoRegistroLabel(proximoTipo, {
nomeEntrada: config.nomeEntrada,
@@ -820,12 +820,12 @@
}
}
const dispensaAtiva = $derived(dispensaQuery?.data);
const estaDispensado = $derived(dispensaAtiva?.dispensado ?? false);
const motivoDispensa = $derived(dispensaAtiva?.motivo ?? null);
const temFuncionarioAssociado = $derived(funcionarioId !== null);
let dispensaAtiva = $derived(dispensaQuery?.data);
let estaDispensado = $derived(dispensaAtiva?.dispensado ?? false);
let motivoDispensa = $derived(dispensaAtiva?.motivo ?? null);
let temFuncionarioAssociado = $derived(funcionarioId !== null);
const podeRegistrar = $derived.by(() => {
let podeRegistrar = $derived.by(() => {
return (
!registrando &&
!coletandoInfo &&
@@ -875,7 +875,7 @@
}
});
const mapaHorarios = $derived.by(() => {
let mapaHorarios = $derived.by(() => {
if (!config) return [];
const horarios = [
@@ -927,8 +927,8 @@
});
// Dados do histórico e saldo
const historicoSaldo = $derived(historicoSaldoQuery?.data);
const registrosOrdenados = $derived.by(() => {
let historicoSaldo = $derived(historicoSaldoQuery?.data);
let registrosOrdenados = $derived.by(() => {
if (!historicoSaldo?.registros) return [];
return [...historicoSaldo.registros].sort((a, b) => {
const minutosA = a.hora * 60 + a.minuto;
@@ -938,7 +938,7 @@
});
// Formatação do saldo
const saldoFormatado = $derived.by(() => {
let saldoFormatado = $derived.by(() => {
if (!historicoSaldo) return null;
const minutos = historicoSaldo.saldoMinutos;
const horas = Math.floor(Math.abs(minutos) / 60);
@@ -947,7 +947,7 @@
return `${sinal}${horas}h ${mins}min`;
});
const saldoPositivo = $derived(historicoSaldo ? historicoSaldo.saldoMinutos >= 0 : false);
let saldoPositivo = $derived(historicoSaldo ? historicoSaldo.saldoMinutos >= 0 : false);
// Posicionamento dos modais baseado no texto "Registrar Ponto"
let modalPosition = $state<{ top: number; left: number } | null>(null);

View File

@@ -95,7 +95,7 @@
}
});
const horaFormatada = $derived.by(() => {
let horaFormatada = $derived.by(() => {
return tempoAtual.toLocaleTimeString('pt-BR', {
hour: '2-digit',
minute: '2-digit',
@@ -103,7 +103,7 @@
});
});
const dataFormatada = $derived.by(() => {
let dataFormatada = $derived.by(() => {
return tempoAtual.toLocaleDateString('pt-BR', {
weekday: 'long',
day: '2-digit',

View File

@@ -19,8 +19,8 @@
fotoObrigatoria = false
}: Props = $props();
const videoElement: HTMLVideoElement | null = $state(null);
const canvasElement: HTMLCanvasElement | null = $state(null);
let videoElement: HTMLVideoElement | null = $state(null);
let canvasElement: HTMLCanvasElement | null = $state(null);
let stream: MediaStream | null = $state(null);
let webcamDisponivel = $state(false);
let capturando = $state(false);