import React, { useState, useEffect, useCallback } from "react"; import { Clock } from "lucide-react"; const initialBlockTemplate = { id: null, inicio: "09:00", termino: "17:00", isNew: true, }; const emptyAvailabilityTemplate = [ { dia: "Segunda-feira", isChecked: false, blocos: [] }, { dia: "Terça-feira", isChecked: false, blocos: [] }, { dia: "Quarta-feira", isChecked: false, blocos: [] }, { dia: "Quinta-feira", isChecked: false, blocos: [] }, { dia: "Sexta-feira", isChecked: false, blocos: [] }, { dia: "Sábado", isChecked: false, blocos: [] }, { dia: "Domingo", isChecked: false, blocos: [] }, ]; const HorariosDisponibilidade = ({ initialAvailability = emptyAvailabilityTemplate, onUpdate, }) => { const [availability, setAvailability] = useState(initialAvailability); useEffect(() => { if (initialAvailability !== emptyAvailabilityTemplate) { setAvailability(initialAvailability); } }, [initialAvailability]); useEffect(() => { if (onUpdate) { onUpdate(availability); } }, [availability, onUpdate]); const handleDayCheck = useCallback((dayIndex, currentIsChecked) => { const isChecked = !currentIsChecked; setAvailability((prev) => prev.map((day, i) => i === dayIndex ? { ...day, isChecked, blocos: isChecked ? day.blocos.length === 0 ? [ { ...initialBlockTemplate, id: Date.now() + Math.random(), isNew: true, }, ] : day.blocos : [], } : day ) ); }, []); const handleAddBlock = useCallback((dayIndex) => { const tempId = Date.now() + Math.random(); const newBlock = { ...initialBlockTemplate, id: tempId, isNew: true }; setAvailability((prev) => prev.map((day, i) => i === dayIndex ? { ...day, blocos: [...day.blocos, newBlock], isChecked: true, } : day ) ); }, []); const handleRemoveBlock = useCallback((dayIndex, blockId) => { setAvailability((prev) => prev.map((day, i) => { if (i === dayIndex) { const newBlocos = day.blocos.filter((bloco) => bloco.id !== blockId); return { ...day, blocos: newBlocos, isChecked: newBlocos.length > 0, }; } return day; }) ); }, []); const handleTimeChange = useCallback((dayIndex, blockId, field, value) => { setAvailability((prev) => prev.map((day, i) => i === dayIndex ? { ...day, blocos: day.blocos.map((bloco) => bloco.id === blockId ? { ...bloco, [field]: value } : bloco ), } : day ) ); }, []); const renderTimeBlock = (dayIndex, bloco) => (
Nenhum bloco de horário definido.
)}