4.2 KiB
Task EP.1.6.2-R1 - Upstream Big Calendar Source Adoption
Date: 2026-07-13
Status: Implemented
Upstream: https://github.com/lramos33/big-calendar
Pinned commit: fbb8485e3d54b267261056c784632229ba6f7bc3
Outcome
R1 replaces the locally reimplemented EP.1.6.2 calendar renderer with copied upstream Big Calendar source under:
src/features/crm/calendar/upstream-big-calendar/**
The active /dashboard/crm/calendar workspace now renders:
CalendarProvider -> ClientContainer -> CalendarHeader -> Day / Week / Month / Year / Agenda
ALLA OS still owns Calendar Projection, Activity lifecycle, Business Events, Projection Runtime, CRM authorization, and React Query invalidation.
Removal / Replacement Matrix
| Previous EP.1.6.2 file | R1 action | Replacement |
|---|---|---|
big-calendar/provider.tsx |
removed | upstream contexts/calendar-context.tsx |
big-calendar/header.tsx |
removed | upstream components/header/** |
big-calendar/views.tsx |
removed | upstream month-view, week-and-day-view, agenda-view, year-view |
big-calendar/calendar-slot.tsx |
removed | upstream day/week/month cells and DnD droppables |
big-calendar/event-card.tsx |
removed | upstream event block, month badge, agenda card |
big-calendar/helpers.ts |
removed | upstream helpers.ts |
big-calendar/types.ts |
removed | upstream interfaces.ts and types.ts |
The previous custom folder was removed from the active source tree.
Local Adapter Boundary
mapCalendarProjectionToUpstreamEvent()mapsCalendarProjectionIteminto upstreamIEvent.mapUpstreamEventToActivityCommand()maps upstream moved events into Activity reschedule commands.- Upstream
IEventcarries anallametadata object for source references, editability, milestone/read-only flags, and visibility metadata. - Read-only milestones are marked non-editable and prevented from dragging through upstream DnD wrappers.
Upstream Patches
- Import paths were rewritten from
@/calendar/*to the isolated local upstream directory. lucide-reactimports were mapped to the project icon registry viaupstream-big-calendar/icons.tsx.- Upstream demo add/edit dialogs were replaced with ALLA-safe integration shells; React Hook Form was not introduced.
- Upstream mock data, request helpers, and demo schemas were removed.
CalendarProviderwas extended withinitialDate,initialView, andonEventChange.ClientContainernow reads selected view from upstream context so the toolbar can switch views inside the ALLA route.- Header view buttons preserve upstream toolbar composition but no longer navigate to upstream demo routes.
- Upstream
react-dnd/react-dnd-html5-backendbehavior is used for drag/drop.
Dependency Review
Added:
react-dnd@16.0.1react-dnd-html5-backend@16.0.1
Not added:
react-hook-form@hookform/resolversreact-aria-componentslucide-react
Reason: those were only required by upstream demo forms/config controls or were replaced by existing ALLA UI/icon primitives.
npm install reported existing audit findings after dependency update: 9 moderate and 3 high. No automatic audit fix --force was run because it may introduce unrelated breaking changes.
Parity Notes
- Adopted upstream Day, Week, Month, Agenda, Year, Header, DnD provider, drag layer, droppable cells, event positioning helpers, multi-day rows, and month event badges.
- Agenda empty state comes from upstream agenda view.
- Day/Week/Month still render actual upstream grids when empty.
- Year view is adopted.
- Drag/drop uses upstream
react-dndmechanics and forwards changed editable Activity events to the ALLA Activity reschedule API. - Resize edge-handle parity remains limited by the reviewed upstream commit; no separate local resize approximation was retained.
- Full browser visual parity, dark-mode parity, and interaction parity still require manual browser verification.
Verification
- Passed:
npm run typecheck - Passed:
npx oxlint src/features/crm/calendar - Not run:
npm run db:generate; no schema changes. - Not automated: browser drag/drop regression, responsive screenshots, screen-reader pass, dark-mode visual parity.