Files
alla-allaos-fullstack/docs/implementation/task-ep1.6.2-r1-upstream-big-calendar-source-adoption-2026-07-13.md
2026-07-13 22:29:11 +07:00

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() maps CalendarProjectionItem into upstream IEvent.
  • mapUpstreamEventToActivityCommand() maps upstream moved events into Activity reschedule commands.
  • Upstream IEvent carries an alla metadata 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-react imports were mapped to the project icon registry via upstream-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.
  • CalendarProvider was extended with initialDate, initialView, and onEventChange.
  • ClientContainer now 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-backend behavior is used for drag/drop.

Dependency Review

Added:

  • react-dnd@16.0.1
  • react-dnd-html5-backend@16.0.1

Not added:

  • react-hook-form
  • @hookform/resolvers
  • react-aria-components
  • lucide-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-dnd mechanics 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.