Enhances navigation buttons management with advanced date calculation and view-specific navigation
Separates navigation logic from GridManager into dedicated NavigationButtons component
Adds support for multiple calendar views (week, month, day)
Implements robust event-driven navigation mechanism
Improves date navigation with dynamic period label generation
Replaces date-fns library with day.js to reduce bundle size and improve tree-shaking
- Centralizes all date logic in DateService
- Reduces library footprint from 576 KB to 29 KB
- Maintains 99.4% test coverage during migration
- Adds timezone and formatting plugins for day.js
Improves overall library performance and reduces dependency complexity
Improves event description display using modern CSS container queries
- Adds responsive layout techniques for event descriptions
- Implements dynamic hiding/showing of description based on event height
- Adds fade-out effect for long descriptions
Enables more flexible and adaptive calendar event rendering
Extends event model to include optional description field
Enhances event rendering with:
- New description getter/setter in base event element
- Updated CSS grid layout for description display
- Dynamic description handling in event rendering
- Updated mock event data with descriptions
Improves visual information density and event context in calendar view
Improves event conversion logic between timed and all-day events during drag operations
Simplifies event movement and conversion algorithms
Adds specific handling for timed → all-day and all-day → all-day drops
Enhances event repositioning and layout recalculation
Modifies element selectors for all-day events to use more specific tag names
Replaces generic 'swp-event' with 'swp-allday-event' in event removal
Adds exclusion for max event indicator elements when clearing events
Improves event removal process with enhanced fade-out and logging
Adds data-removing attribute to exclude events during height calculations
Prevents unnecessary removal of all-day events during drag operations
Enhances event rendering and management for better performance and user experience
Removes redundant state tracking for all-day event layouts
Shifts from maintaining internal layout state to reading directly from DOM elements
Simplifies event handling and updates by using DOM as the source of truth
Improves performance by reducing unnecessary state management
Documents two consecutive failed attempts at AllDayManager architectural refactoring, including:
- Detailed analysis of architectural and implementation failures
- Lessons learned about upfront design and systematic debugging
- Root cause identification for repeated refactoring mistakes
- Recommendations for future implementation approaches
Highlights critical issues in code design, DI principles, and functional testing strategies
Introduces dedicated WorkweekPresetsManager to improve code organization and reduce coupling
Separates concerns by moving workweek preset logic from ViewManager
Implements event-driven CSS synchronization
Removes code duplication in configuration and CSS property updates
Enhances maintainability and testability of UI component interactions
Reorganizes navigation, view selector, and workweek preset managers into separate component files
Improves code organization by moving specialized manager classes to a more descriptive components directory
Adds enhanced logging for all-day event management and drag-and-drop interactions
Introduces NavigationButtonsManager to handle navigation button interactions
Renames NavigationRenderer to WeekInfoRenderer for clarity
Adds new NAV_BUTTON_CLICKED event for better separation of concerns
Improves event-driven navigation workflow
Introduces ViewSelectorManager to handle view state and UI interactions
Separates view logic from configuration management
Adds explicit tracking of current calendar view
Enhances view selection and state management
Improves modularity and separation of concerns
Extracts workweek preset logic from ViewManager into WorkweekPresetsManager
Improves separation of concerns by:
- Creating a dedicated manager for workweek preset UI
- Simplifying ViewManager to focus only on view selector
- Implementing event-driven CSS updates
- Reducing code duplication in ConfigManager
Follows "each UI element has its own manager" architectural principle
Registers new managers in the dependency injection container
Exposes WorkweekPresetsManager and ConfigManager in calendar debugging context
Enhances calendar initialization with additional management capabilities
Simplifies workweek change event propagation across managers
Removes redundant grid rerendering logic and focuses on clean event communication
Prepares infrastructure for more flexible workweek configuration updates
Relates to debug-gridstyle branch
Enhances event resizing functionality with smoother animation and more robust handling
Removes complex resize zone tracking in favor of simplified resize mechanism
Improves performance and simplifies event resize interactions
Cleans up unnecessary complexity in pointer and animation management
Simplifies event drag handling by removing redundant clone management
Optimizes single column event rendering and cleanup process
Removes unnecessary logging and console output
Improves event update and re-rendering strategies
Enhances performance and reduces complexity in event manipulation
Introduces originalSourceColumn to accurately track the starting column during drag events
Improves event rendering by ensuring correct column updates and maintaining drag context
Modifies drag end handling to use original source column for re-rendering
Adds async support for column rendering methods
Extracts position calculation logic into a separate utility class
Introduces PositionUtils to centralize pixel and minute conversion methods
Removes redundant calculation methods from ResizeHandleManager
Updates Configuration to include default API endpoint
Simplifies resize and height management across components
Adds IndexedDB and operation queue for robust offline synchronization
Introduces SyncManager to handle background data synchronization
Supports local event operations with automatic remote sync queuing
Enhances application reliability and user experience in low/no connectivity scenarios
Updates ConfigManager to dynamically set CSS grid columns based on work week settings
Ensures the grid layout accurately reflects the number of visible days in the calendar view
Automatically updates grid columns when work week configuration changes
Improves responsive design and layout flexibility
Renames renderer interfaces to use 'I' prefix for clarity
Updates type references across related files
Improves type consistency in rendering strategies
Converts CalendarConfig to a pure static configuration management class with improved initialization and dependency handling
Removes event bus dependencies and simplifies configuration loading
Adds static methods for config management and initialization
Improves flexibility and reduces class complexity
Replaces global singleton configuration with dependency injection
Introduces more modular and testable approach to configuration
Removes direct references to calendarConfig in multiple components
Adds explicit configuration passing to constructors
Improves code maintainability and reduces global state dependencies
Removes singleton export for CalendarConfig
Updates dependency injection to use type registration
Adds more flexible renderer and service configuration
Integrates CalendarConfig with DateService initialization
Migrates from Brandi DI to @novadi/core dependency injection
Simplifies project structure by removing deprecated modules
Adds Novadi unplugin to esbuild configuration for enhanced build process
Replaces manual manager creation with Brandi DI container
for improved dependency management and testability.
Removes the ManagerFactory and its usages.
Uses dependency injection to dynamically resolve renderers based on the calendar mode.
This change decouples the HeaderManager from specific renderer implementations,
allowing for more flexible configuration and easier addition of new calendar types.
The appropriate renderer is bound to a token in the DI container at startup.
Introduces Brandi DI container for managing application dependencies.
This change replaces the existing factory pattern with a proper
dependency injection mechanism, improving code modularity,
testability, and maintainability. It configures all managers and core
services within the container, ensuring proper dependency resolution.