Corp/frontend/src/components/layout/CalendarModals.tsx
lizerk 3ca4d108b6 refactor: split monolithic api.ts into domain modules, extract AppShell calendar/mobile concerns
- Split frontend/src/lib/api.ts (2042 lines) into 12 focused domain modules:
  client.ts (base HTTP/auth), calendar.ts, documents.ts, employees.ts,
  equipment.ts, feed.ts, messages.ts, notifications.ts, procurement.ts,
  requests.ts, utils.ts, and index.ts barrel that preserves all existing imports
- Extract calendar modal state from AppShell into useCalendarModals hook
- Extract CalendarModals and MobileDrawers into components/layout/
- AppShell: 745 → 460 lines, focused on layout concerns only
- Fix setState-in-effect lint error with startTransition pattern
- Stabilize notifications memo to prevent unnecessary re-renders
- Fix flaky WS test: handle CancelledError in channels-testing cleanup
- All 609 backend tests pass, TypeScript typecheck clean, ESLint clean
2026-04-01 15:56:10 +03:00

59 lines
1.9 KiB
TypeScript

"use client";
import { CalendarModal } from "@/components/CalendarModal";
import CalendarParticipantsModal from "@/components/CalendarParticipantsModal";
import { EventModal } from "@/components/EventModal";
import { ViewDayEventsModal } from "@/components/ViewDayEventsModal";
import { ViewEventDetailsModal } from "@/components/ViewEventDetailsModal";
import type { useCalendarModals } from "@/hooks/useCalendarModals";
type CalendarModalsProps = ReturnType<typeof useCalendarModals>;
export function CalendarModals(props: CalendarModalsProps) {
return (
<>
<CalendarModal
isOpen={props.showCalendarModal}
onClose={props.closeCalendarModal}
calendar={props.editingCalendar}
/>
{props.participantsCalendar && (
<CalendarParticipantsModal
isOpen={props.showParticipantsModal}
onClose={props.closeParticipantsModal}
calendarId={props.participantsCalendar.id}
calendarName={props.participantsCalendar.name}
userRole={props.participantsCalendar.user_role}
/>
)}
<EventModal
isOpen={props.showEventModal}
onClose={props.closeEventModal}
event={props.editingEvent}
onSave={props.handleEventSaved}
showParticipants={true}
/>
<ViewDayEventsModal
isOpen={props.showDayEventsModal}
onClose={props.closeDayEventsModal}
date={props.selectedDateForModal}
events={props.sidebarEvents}
onEventClick={props.handleEventClickFromDay}
onCreateEvent={props.handleCreateEventFromDay}
/>
<ViewEventDetailsModal
isOpen={props.showEventDetailsModal}
onClose={props.closeEventDetailsModal}
event={props.viewingEvent}
onEdit={props.handleEditFromDetails}
onDelete={props.handleDeleteEvent}
showParticipants={true}
/>
</>
);
}