Milestone v1.0: FamilySync MVP #1
@@ -236,9 +236,15 @@ export function CalendarShell() {
|
|||||||
|
|
||||||
// ── Calendar content ───────────────────────────────────────────────────────
|
// ── Calendar content ───────────────────────────────────────────────────────
|
||||||
|
|
||||||
// The content panel (right of sidebar on desktop, full-width on phone)
|
// The content panel (right of sidebar on desktop, full-width on phone).
|
||||||
function CalendarContent() {
|
//
|
||||||
return (
|
// This is a plain JSX value, NOT a nested `function CalendarContent()` rendered
|
||||||
|
// as `<CalendarContent />`. A component defined inside render has a new identity
|
||||||
|
// every render, so React unmounts+remounts its entire subtree — including
|
||||||
|
// <ScheduleXCalendar> — on ANY CalendarShell re-render (popup/form close, post-
|
||||||
|
// write events refetch). That full remount is the "calendar flash" (Bug B). As
|
||||||
|
// an element value it reconciles in place across re-renders: no remount, no flash.
|
||||||
|
const calendarContent = (
|
||||||
<div
|
<div
|
||||||
style={{
|
style={{
|
||||||
flex: 1,
|
flex: 1,
|
||||||
@@ -331,7 +337,6 @@ export function CalendarShell() {
|
|||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
}
|
|
||||||
|
|
||||||
// ── Full layout ────────────────────────────────────────────────────────────
|
// ── Full layout ────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
@@ -355,7 +360,7 @@ export function CalendarShell() {
|
|||||||
currentUserName={meQuery.data?.user.displayName ?? undefined}
|
currentUserName={meQuery.data?.user.displayName ?? undefined}
|
||||||
/>
|
/>
|
||||||
<InstallPrompt />
|
<InstallPrompt />
|
||||||
<CalendarContent />
|
{calendarContent}
|
||||||
<EventDetailPopover />
|
<EventDetailPopover />
|
||||||
|
|
||||||
{/* New Event FAB — phone: bottom-right floating action button (UI-SPEC §Interaction Contract) */}
|
{/* New Event FAB — phone: bottom-right floating action button (UI-SPEC §Interaction Contract) */}
|
||||||
@@ -457,7 +462,7 @@ export function CalendarShell() {
|
|||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<CalendarContent />
|
{calendarContent}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* EventDetailPopover — standalone mode driven by Zustand openEventId */}
|
{/* EventDetailPopover — standalone mode driven by Zustand openEventId */}
|
||||||
|
|||||||
Reference in New Issue
Block a user