Centralizes all date calculations into a new `DateCalculator` class for better maintainability and consistency.
Ensures correct ISO week handling (Monday as the first day) throughout the calendar.
Updates `CalendarConfig` to use ISO day numbering (1-7 for Mon-Sun) for work week definitions.
Fixes issue where date calculations were inconsistent.
Enhances event rendering and navigation.
Updates navigation logic to use pre-rendered events.
Removes the need for `CONTAINER_READY_FOR_EVENTS` event.
Implements configurable work week presets, allowing users to customize the days displayed in the calendar.
This includes:
- Defining work week settings (work days, day names, total days).
- Providing predefined work week presets (standard, compressed, weekend, full week).
- Adding UI elements to switch between presets.
- Updating grid and header rendering logic to reflect the selected work week.
- Emitting events when the work week changes, triggering necessary UI updates and data re-renders.
This provides a more flexible and personalized calendar experience.
Implements a factory pattern for manager creation and
initialization, improving dependency management and
extensibility.
This change replaces direct manager instantiation with a
`ManagerFactory` that handles dependency injection. This
enhances code organization and testability. It also includes
an initialization sequence diagram for better understanding
of the calendar's architecture and data flow.
Refactors calendar rendering for improved user experience and performance.
- Removes unused function for rendering week content directly, streamlining the rendering process.
- Updates mock events to better reflect realistic all-day events.
- Adds file system search permission to claude settings.
- Removes console logs in scroll and navigation managers.
Moves event rendering logic into a dedicated EventRenderer class that uses a strategy pattern for different calendar types.
The rendering is now triggered by `GRID_RENDERED` and `CONTAINER_READY_FOR_EVENTS` events, emitted by the GridManager and NavigationManager respectively.
This change decouples the CalendarManager from direct event rendering and allows for more flexible and efficient event updates. The EventManager now has a method to fetch events for a given time period.
Removes direct calls to event rendering from CalendarManager. Improves animation transitions by using pre-rendered containers in the NavigationManager.
Replaces the setTimeout-based animation with the Web Animations API for smoother transitions.
This change also introduces an event to notify other managers when the navigation animation is complete, allowing them to synchronize their states.
Refactors grid navigation to improve the animation flow.
Removes the immediate clearing of events to prevent visual glitches during the slide animation. Instead, events are now rendered directly into the new container without clearing. This change ensures a smoother transition between grids.
Also, cleans up old grid elements after the animation completes, reducing DOM clutter.
Refactors the calendar grid to support smoother navigation transitions by using separate week containers.
This change introduces a GridManager to handle grid rendering and interactions within these containers, enabling scroll synchronization and click event handling for each week view.
Also, configures the calendar to start at midnight and span a full 24-hour day, providing a more comprehensive view.