feat(02-05): EventDetailPopover read-only popover, XSS-safe, wired into CalendarShell
- EventDetailPopover: reads openEventId from Zustand, resolves occurrence from TanStack Query cache - Dual-mode: standalone (Zustand-driven) + customComponents.eventModal (Schedule-X) - Plain-text JSX children for all event fields (T-02e-01 XSS guard) - Focus trap, Escape to close, backdrop-click to close, aria-label=Close (44px target) - Phone: bottom sheet layout; tablet/desktop: centered popover (max-width 360px) - Phase-3 footer action area reserved with comment - CalendarShell: passes customComponents.eventModal=EventDetailPopover to ScheduleXCalendar - test-setup.ts: import @testing-library/jest-dom for toHaveTextContent matcher - All 36 tests pass, tsc clean
This commit is contained in:
@@ -10,6 +10,9 @@
|
||||
* from viewport width at store initialisation time.
|
||||
*/
|
||||
|
||||
// Extend Vitest's expect with jest-dom matchers (toHaveTextContent, etc.)
|
||||
import '@testing-library/jest-dom'
|
||||
|
||||
// Polyfill window.matchMedia for jsdom.
|
||||
// jsdom does not implement the CSSOM MediaQueryList API.
|
||||
// calendarStore.ts calls window.matchMedia during Zustand create(), so this
|
||||
|
||||
Reference in New Issue
Block a user