Files
GoMFT/static/js/vendor.js

79 lines
2.6 KiB
JavaScript

// Import HTMX
import 'htmx.org';
// Import Alpine.js
import Alpine from 'alpinejs';
window.Alpine = Alpine;
// Import Flowbite
import 'flowbite';
import 'flowbite/dist/flowbite.css';
// Import FullCalendar
import { Calendar } from '@fullcalendar/core';
import dayGridPlugin from '@fullcalendar/daygrid';
import timeGridPlugin from '@fullcalendar/timegrid';
import listPlugin from '@fullcalendar/list';
import interactionPlugin from '@fullcalendar/interaction';
// Make FullCalendar available globally in the format expected by the calendar template
window.FullCalendar = {
Calendar: Calendar, // This makes FullCalendar.Calendar a constructor
dayGridPlugin: dayGridPlugin,
timeGridPlugin: timeGridPlugin,
listPlugin: listPlugin,
interactionPlugin: interactionPlugin
};
// Import Popper.js
import * as Popper from '@popperjs/core';
window.Popper = Popper;
// Import Tippy.js
import tippy from 'tippy.js';
import 'tippy.js/dist/tippy.css';
import 'tippy.js/themes/light.css';
window.tippy = tippy;
// Initialize Flowbite components
document.addEventListener('DOMContentLoaded', () => {
// Initialize Alpine.js
Alpine.start();
// Initialize Flowbite modals
const modalTriggers = document.querySelectorAll('[data-modal-target]');
modalTriggers.forEach(trigger => {
const targetId = trigger.getAttribute('data-modal-target');
const targetModal = document.getElementById(targetId);
if (targetModal) {
// Show modal
trigger.addEventListener('click', () => {
targetModal.classList.remove('hidden');
targetModal.classList.add('flex');
// Add backdrop
document.body.style.overflow = 'hidden';
});
// Handle modal hide buttons
const hideButtons = targetModal.querySelectorAll('[data-modal-hide]');
hideButtons.forEach(button => {
button.addEventListener('click', () => {
targetModal.classList.add('hidden');
targetModal.classList.remove('flex');
// Remove backdrop
document.body.style.overflow = '';
});
});
// Handle clicking outside the modal
targetModal.addEventListener('click', (event) => {
if (event.target === targetModal || event.target.classList.contains('fixed')) {
targetModal.classList.add('hidden');
targetModal.classList.remove('flex');
// Remove backdrop
document.body.style.overflow = '';
}
});
}
});
});