- List rendering (basic) — Uses
Virtualizefor efficient rendering and includeskeyon items to preserve identity and reduce re-renders. - Interactive components & view state — Child components (month list, event items) raise callbacks and the page maintains the selected/month state so the UI stays in sync.
- Search — Filters events as you type and updates results immediately; clearing the search restores the list filtered by the currently selected month. UX win
- Month selection — Clicking a month clears any active search and shows only events for that month group, making navigation predictable and fast.
- Component communication — Parent components pass data into children using
[Parameter]properties; children notify parents usingEventCallbackevents.
- Form handling & validation — Add/Edit pages use
EditForm, data annotations and validation messages to validate inputs before submitting. - Server interactivity (advanced) — The app architecture supports server-side interactions (repository/service calls) and can be extended to async/remote APIs or SignalR for realtime updates.