Enhances event drag interactions by dynamically updating timestamp display
Implements grid-snapped time calculation during event dragging
Updates event time display with accurate start and end times
Converts minutes to formatted time range using existing date services
Prevents text selection for calendar-related custom elements to improve user interaction and prevent accidental text highlighting
Enhances UI consistency across calendar components
Simplifies EdgeScrollManager implementation with more focused and efficient auto-scrolling logic
Removes unnecessary complexity and scroll tracking
Optimizes scroll velocity calculation and boundary detection
Improves performance by using requestAnimationFrame for smooth scrolling
Implements EdgeScrollManager to enable automatic scrolling during drag operations
Introduces new scroll management system that:
- Detects mouse proximity to container edges
- Provides variable scroll speed based on mouse position
- Compensates dragged elements during scrolling
Enhances drag-and-drop user experience with smooth scrolling
Introduces support for moving events between columns during drag
Tracks column changes and updates event positioning dynamically
Enables smooth cross-column event dragging experience
Introduces comprehensive schedule management for resources:
- Adds DateService with advanced time and date utilities
- Implements ResourceScheduleService for managing work hours
- Creates ScheduleRenderer to visualize unavailable time zones
- Extends resource model to support default weekly schedules
Enables granular tracking of resource availability and working hours
Converts renderer interfaces to use 'I' prefix for better type clarity
Adds async support for rendering pipeline
Updates resource rendering to use ResourceService
Removes hardcoded resource data
Improves type safety and flexibility of rendering system
Adds support for filtering events and rendering across multiple views with resource-specific context
Improves event and date rendering to handle resource-based filtering
Introduces day view and extends existing calendar infrastructure to support more flexible view configurations
Removes hardcoded data from render context, allowing more dynamic renderer implementation
Changes include:
- Decoupling data retrieval from render context
- Simplifying renderer interface
- Supporting more flexible data traversal strategies
Prepares for more modular and adaptable rendering approach
Simplifies calendar rendering process by introducing a new RenderBuilder pattern
Improves flexibility and modularity of grouping renderer chain
Decouples rendering logic from specific grouping types
Enables dynamic column span calculation and recursive rendering
Reduces complexity in CalendarOrchestrator
Enhances type safety and simplifies renderer interfaces
Replaces native array methods with ts-linq-light for improved functional programming
Simplifies data transformation and grouping logic
Enhances code readability and introduces more declarative data manipulation
Introduces comprehensive data management system for calendar V2
- Adds IndexedDB storage with pluggable entity services
- Implements EventBus for decoupled event communication
- Creates data seeding mechanism for initial application setup
- Establishes sync and repository abstractions for flexible data handling
Updates ScrollManager to dynamically sync header spacer height using ResizeObserver
Removes explicit spacer animation from HeaderDrawerManager
Simplifies header and scroll interaction by moving height synchronization logic to ScrollManager
Updates time axis and calendar to focus on 6-18 hour range
Modifies CSS to support nested selectors and time range configuration
Enhances DateService to support flexible week date generation
Introduces ScrollManager to synchronize time axis and header scrolling
Improves user experience by keeping time axis and header aligned during scrolling
Enables dynamic vertical and horizontal scroll tracking for calendar components
Introduces dependency injection container and composition root
Adds core services like DateService and NavigationAnimator
Simplifies CalendarOrchestrator with improved store handling
Implements mock stores and demo application for V2 calendar
Introduces type-safe EventId with centralized normalization logic for clone and standard event IDs
Refactors event ID management across multiple components to use consistent ID transformation methods
Improves type safety and reduces potential ID-related bugs in drag-and-drop and event rendering
Eliminates unnecessary event visibility check in layout engine
Assumes events are pre-filtered before reaching the layout calculation, simplifying the processing logic and reducing computational overhead
Removes local `isEventVisible` method and directly processes all input events
Introduces a new color customization approach for calendar events using CSS custom properties and metadata
- Adds support for dynamic color assignment via event metadata
- Implements a flexible color utility class system
- Replaces hardcoded event type colors with a more generic color-mix() approach
- Provides broader color palette for event styling
Enhances calendar flexibility by introducing group-based column spanning and improving cross-mode event handling
Adds support for:
- Dynamic column grouping in date and resource modes
- Consistent event drag-and-drop across different calendar views
- More robust all-day event layout calculations
Improves event management logic to handle resource and date mode transitions more elegantly
Improves event rendering by integrating event filtering directly into column data sources
Key changes:
- Moves event filtering responsibility to IColumnDataSource
- Simplifies event rendering pipeline by pre-filtering events per column
- Supports both date and resource-based calendar modes
- Enhances drag and drop event update mechanism
Optimizes calendar rendering performance and flexibility
Introduces new ResourceColumnDataSource and ResourceHeaderRenderer to support column rendering by resources instead of dates
Enables dynamic calendar mode switching between date and resource views
Updates core managers and services to support async column retrieval
Refactors data source interfaces to use Promise-based methods
Improves calendar flexibility and resource management capabilities
Extracts common event payload interfaces for entity saved, deleted, and audit logged events
Improves type safety and reduces code duplication by centralizing event payload definitions
Introduces comprehensive audit trail system with:
- AuditService to track entity changes
- SyncManager for background sync of audit entries
- New CoreEvents for entity and audit tracking
- Simplified sync architecture with event-driven approach
Prepares system for enhanced compliance and change tracking
Implements polymorphic data seeding mechanism for initial application setup
- Adds Mock repositories for Event, Booking, Customer, and Resource entities
- Creates DataSeeder to automatically populate IndexedDB from JSON sources
- Enhances index.ts initialization process with data seeding step
- Adds mock JSON data files for comprehensive test data
Improves offline-first and development testing capabilities
Updates package dependencies to latest version of @novadi/core
Simplifies dependency and service registration by removing automatic array resolution of stores, API repositories, and entity services
Adds DateColumnDataSource as a new column data source implementation
Abstracts column data source with interface
Updates managers to use configuration-driven view and date
Decouples datasource creation from individual managers
Improves flexibility and dependency injection for calendar components
Updates event and column date parsing to use identifier instead of data attribute
Improves date handling consistency across multiple calendar managers and renderers
Replaces direct Date casting with dateService.parseISO() for more robust date parsing
Introduces BaseEntityService and SyncPlugin to eliminate code duplication across entity services
Improves:
- Code reusability through inheritance and composition
- Sync infrastructure for all entity types
- Polymorphic sync status management
- Reduced boilerplate code by ~75%
Supports generic sync for Event, Booking, Customer, and Resource entities
Implements a more flexible, modular approach to IndexedDB storage:
- Introduces IStore interface for dynamic store creation
- Adds specialized services for each entity (BookingService, CustomerService, etc.)
- Moves serialization logic to entity-specific classes
- Improves dependency injection and extensibility
Enables easier addition of new entity types with minimal configuration
Updates IndexedDB database schema to version 2
Adds support for bookings, customers, and resources stores
Includes new serialization methods for booking data
Extends events store with additional indexes for improved querying
Documents fundamental redesign of booking and calendar event architecture, focusing on:
- Service-level resource assignment
- Split-resource and equal-split booking scenarios
- Denormalized event data structure
- Clear separation between booking and calendar events
Provides detailed migration strategy and type references for future implementation
Fundamentally refactors booking system to support:
- Split-resource bookings
- Service-level resource assignment
- Clear separation between booking and calendar events
Introduces new interfaces and type definitions to model complex booking scenarios, enabling more flexible and accurate resource management
Improves type safety by removing ambiguous type annotations