Checkpoint: Correction du problème d'aperçu de l'application
Corrections apportées : - Correction des références à heureDebut/heureFin dans AdminRappels.tsx (utilisation de dateDebut/dateFin) - Correction de l'accès à la propriété dates dans EmargementScan.tsx (cast de type) - Ajout de l'import manquant de QrCode dans DashboardLayout.tsx - Correction des erreurs TypeScript dans DashboardLayout.tsx (gestion de subItems) - Ajout de downlevelIteration dans tsconfig.json - Correction de l'utilisation de Set dans DateFormationMultiSelect.tsx (Array.from) - Correction de l'appel à createAttestation (utilisation de enregistrerAttestation) L'application fonctionne maintenant correctement sans erreurs TypeScript.
This commit is contained in:
@@ -21,7 +21,7 @@ import {
|
||||
} from "@/components/ui/sidebar";
|
||||
import { APP_LOGO, APP_TITLE, getLoginUrl } from "@/const";
|
||||
import { useIsMobile } from "@/hooks/useMobile";
|
||||
import { LayoutDashboard, LogOut, PanelLeft, Users, GraduationCap, Calendar, CalendarDays, Bell, BarChart3, UserCog, Mail, Settings, TrendingUp, Building2, FileSpreadsheet, ClipboardList, ChevronDown, User, FileText } from "lucide-react";
|
||||
import { LayoutDashboard, LogOut, PanelLeft, Users, GraduationCap, Calendar, CalendarDays, Bell, BarChart3, UserCog, Mail, Settings, TrendingUp, Building2, FileSpreadsheet, ClipboardList, ChevronDown, User, FileText, QrCode } from "lucide-react";
|
||||
import { CSSProperties, useEffect, useRef, useState } from "react";
|
||||
import { useLocation } from "wouter";
|
||||
import { DashboardLayoutSkeleton } from './DashboardLayoutSkeleton';
|
||||
@@ -362,13 +362,13 @@ function DashboardLayoutContent({
|
||||
<SidebarMenu className="px-2 py-1">
|
||||
{section.items.map(item => {
|
||||
const isActive = location === item.path;
|
||||
const hasSubItems = 'subItems' in item && item.subItems && item.subItems.length > 0;
|
||||
const isSubItemActive = hasSubItems && item.subItems.some((sub: any) => location === sub.path);
|
||||
const hasSubItems = 'subItems' in item && item.subItems && Array.isArray(item.subItems) && item.subItems.length > 0;
|
||||
const isSubItemActive = hasSubItems && Array.isArray(item.subItems) && item.subItems.some((sub: any) => location === sub.path);
|
||||
return (
|
||||
<div key={item.path}>
|
||||
<SidebarMenuItem>
|
||||
<SidebarMenuButton
|
||||
isActive={isActive || isSubItemActive}
|
||||
isActive={isActive || Boolean(isSubItemActive)}
|
||||
onClick={() => setLocation(item.path)}
|
||||
tooltip={item.label}
|
||||
className={`h-10 transition-all font-normal`}
|
||||
@@ -379,9 +379,9 @@ function DashboardLayoutContent({
|
||||
<span>{item.label}</span>
|
||||
</SidebarMenuButton>
|
||||
</SidebarMenuItem>
|
||||
{hasSubItems && (
|
||||
{(hasSubItems && Array.isArray(item.subItems) ? (
|
||||
<div className="ml-6 mt-1 space-y-1">
|
||||
{item.subItems.map((subItem: any) => {
|
||||
{(item.subItems as any[]).map((subItem: any) => {
|
||||
const isSubActive = location === subItem.path;
|
||||
return (
|
||||
<SidebarMenuItem key={subItem.path}>
|
||||
@@ -397,7 +397,7 @@ function DashboardLayoutContent({
|
||||
);
|
||||
})}
|
||||
</div>
|
||||
)}
|
||||
) : null)}
|
||||
</div>
|
||||
);
|
||||
})}
|
||||
|
||||
@@ -62,7 +62,7 @@ export function DateFormationMultiSelect({
|
||||
onSelectionChange(selectedDateIds.filter((id) => !sequenceDateIds.includes(id)));
|
||||
} else {
|
||||
// Sélectionner toutes les dates de cette séquence
|
||||
const newSelection = [...new Set([...selectedDateIds, ...sequenceDateIds])];
|
||||
const newSelection = Array.from(new Set([...selectedDateIds, ...sequenceDateIds]));
|
||||
onSelectionChange(newSelection);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -596,11 +596,11 @@ export default function AdminRappels() {
|
||||
id: seq.id,
|
||||
nom: seq.nom,
|
||||
formationNom: seq.formation?.nom || '',
|
||||
dates: seq.dates?.map(d => ({
|
||||
dates: seq.dates?.map((d: any) => ({
|
||||
id: d.id,
|
||||
date: d.dateDebut,
|
||||
heureDebut: d.heureDebut || '',
|
||||
heureFin: d.heureFin || '',
|
||||
date: d.dateDebut ? new Date(d.dateDebut).toISOString() : '',
|
||||
heureDebut: d.dateDebut ? new Date(d.dateDebut).toLocaleTimeString('fr-FR', { hour: '2-digit', minute: '2-digit' }) : '',
|
||||
heureFin: d.dateFin ? new Date(d.dateFin).toLocaleTimeString('fr-FR', { hour: '2-digit', minute: '2-digit' }) : '',
|
||||
})) || [],
|
||||
})) || []}
|
||||
selectedDateIds={formData.dateFormationIds}
|
||||
@@ -744,9 +744,9 @@ export default function AdminRappels() {
|
||||
formationNom: seq.formation?.nom || '',
|
||||
dates: seq.dates?.map(d => ({
|
||||
id: d.id,
|
||||
date: d.dateDebut,
|
||||
heureDebut: d.heureDebut || '',
|
||||
heureFin: d.heureFin || '',
|
||||
date: d.dateDebut ? new Date(d.dateDebut).toISOString() : '',
|
||||
heureDebut: d.dateDebut ? new Date(d.dateDebut).toLocaleTimeString('fr-FR', { hour: '2-digit', minute: '2-digit' }) : '',
|
||||
heureFin: d.dateFin ? new Date(d.dateFin).toLocaleTimeString('fr-FR', { hour: '2-digit', minute: '2-digit' }) : '',
|
||||
})) || [],
|
||||
})) || []}
|
||||
selectedDateIds={formData.dateFormationIds}
|
||||
|
||||
@@ -75,7 +75,7 @@ export default function EmargementScan() {
|
||||
};
|
||||
|
||||
// Déterminer les dates disponibles
|
||||
const datesDisponibles = selectedInscription?.sequence?.dates || [];
|
||||
const datesDisponibles = (selectedInscription?.sequence as any)?.dates || [];
|
||||
|
||||
if (success) {
|
||||
return (
|
||||
|
||||
Reference in New Issue
Block a user