✨ feat(workflow.twig): Ajoute animations AOS pour un effet visuel amélioré. ✨ feat(app.js): Initialise la librairie AOS pour les animations. ➕ chore(package.json): Ajoute AOS comme dépendance. ✨ feat(reserve.js): Initialise AOS pour les animations. ✨ feat(formules.twig): Ajoute animations AOS pour améliorer l'UX. ✨ feat(catalogue.twig): Ajoute animations AOS pour une meilleure UX. ✨ feat(dashboard/base.twig): Améliore la mise en page du dashboard. ✨ feat(base.twig): Ajoute macros pour les liens de navigation. ✨ feat(home.twig): Ajoute animations AOS et macros pour la page d'accueil. ```
69 lines
2.0 KiB
JavaScript
69 lines
2.0 KiB
JavaScript
import './app.scss';
|
|
import * as Turbo from "@hotwired/turbo";
|
|
import * as Sentry from "@sentry/browser";
|
|
import AOS from 'aos';
|
|
import 'aos/dist/aos.css';
|
|
|
|
// --- INITIALISATION SENTRY ---
|
|
// On initialise Sentry immédiatement sans attendre le DOM pour capturer les erreurs précoces
|
|
Sentry.init({
|
|
dsn: "https://803814be6540031b1c37bf92ba9c0f79@sentry.esy-web.dev/24",
|
|
tunnel: "/sentry-tunnel",
|
|
integrations: [
|
|
Sentry.browserTracingIntegration(),
|
|
Sentry.replayIntegration()
|
|
],
|
|
tracesSampleRate: 1.0,
|
|
replaysSessionSampleRate: 0.1,
|
|
replaysOnErrorSampleRate: 1.0
|
|
});
|
|
|
|
/**
|
|
* Initialisation globale des composants UI
|
|
* Appelée à chaque navigation Turbo
|
|
*/
|
|
const initApp = () => {
|
|
// Flash Messages Auto-hide
|
|
document.querySelectorAll('.flash-message').forEach(flash => {
|
|
setTimeout(() => {
|
|
flash.classList.add('opacity-0', 'translate-y-2');
|
|
setTimeout(() => flash.remove(), 500);
|
|
}, 5000);
|
|
});
|
|
|
|
// Initialize AOS
|
|
AOS.init({
|
|
duration: 800,
|
|
once: true,
|
|
// offset: 120, // Optional: offset (in px) from the original trigger point
|
|
// easing: 'ease', // Optional: default easing for AOS animations
|
|
});
|
|
|
|
// Exemple : Init d'un bouton de retour en haut de page
|
|
// initBackToTop();
|
|
};
|
|
|
|
// --- TURBO HOOKS ---
|
|
|
|
// 'turbo:load' s'exécute au chargement initial ET à chaque navigation
|
|
document.addEventListener('turbo:load', () => {
|
|
initApp();
|
|
});
|
|
|
|
// Gestion des confirmations de suppression ou d'actions sensibles via Turbo
|
|
document.addEventListener("turbo:click", (event) => {
|
|
const confirmationMsg = event.target.closest("[data-turbo-confirm]")?.getAttribute("data-turbo-confirm");
|
|
if (confirmationMsg && !confirm(confirmationMsg)) {
|
|
event.preventDefault();
|
|
}
|
|
});
|
|
|
|
// Capture des erreurs de rendu Turbo dans Sentry
|
|
document.addEventListener("turbo:render", () => {
|
|
Sentry.addBreadcrumb({
|
|
category: "turbo",
|
|
message: "Page rendered: " + window.location.pathname,
|
|
level: "info",
|
|
});
|
|
});
|