Adds navigation buttons management and refactors navigation

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
This commit is contained in:
Janus C. H. Knudsen 2025-11-07 23:23:19 +01:00
parent 29ba0bfa37
commit bd8f5ae6c6
5 changed files with 102 additions and 30 deletions

View file

@ -12,6 +12,7 @@ import { EventRenderingService } from './renderers/EventRendererManager';
import { GridManager } from './managers/GridManager';
import { ScrollManager } from './managers/ScrollManager';
import { NavigationManager } from './managers/NavigationManager';
import { NavigationButtonsManager } from './managers/NavigationButtonsManager';
import { ViewSelectorManager } from './managers/ViewSelectorManager';
import { CalendarManager } from './managers/CalendarManager';
import { DragDropManager } from './managers/DragDropManager';
@ -38,7 +39,7 @@ import { DateColumnRenderer, type IColumnRenderer } from './renderers/ColumnRend
import { DateEventRenderer, type IEventRenderer } from './renderers/EventRenderer';
import { AllDayEventRenderer } from './renderers/AllDayEventRenderer';
import { GridRenderer } from './renderers/GridRenderer';
import { NavigationRenderer } from './renderers/NavigationRenderer';
import { WeekInfoRenderer } from './renderers/WeekInfoRenderer';
// Import utilities and services
import { DateService } from './utils/DateService';
@ -116,7 +117,7 @@ async function initializeCalendar(): Promise<void> {
builder.registerType(TimeFormatter).as<TimeFormatter>();
builder.registerType(PositionUtils).as<PositionUtils>();
// Note: AllDayLayoutEngine is instantiated per-operation with specific dates, not a singleton
builder.registerType(NavigationRenderer).as<NavigationRenderer>();
builder.registerType(WeekInfoRenderer).as<WeekInfoRenderer>();
builder.registerType(AllDayEventRenderer).as<AllDayEventRenderer>();
builder.registerType(EventRenderingService).as<EventRenderingService>();
@ -124,6 +125,7 @@ async function initializeCalendar(): Promise<void> {
builder.registerType(GridManager).as<GridManager>();
builder.registerType(ScrollManager).as<ScrollManager>();
builder.registerType(NavigationManager).as<NavigationManager>();
builder.registerType(NavigationButtonsManager).as<NavigationButtonsManager>();
builder.registerType(ViewSelectorManager).as<ViewSelectorManager>();
builder.registerType(DragDropManager).as<DragDropManager>();
builder.registerType(AllDayManager).as<AllDayManager>();
@ -148,6 +150,7 @@ async function initializeCalendar(): Promise<void> {
const dragDropManager = app.resolveType<DragDropManager>();
const viewSelectorManager = app.resolveType<ViewSelectorManager>();
const navigationManager = app.resolveType<NavigationManager>();
const navigationButtonsManager = app.resolveType<NavigationButtonsManager>();
const edgeScrollManager = app.resolveType<EdgeScrollManager>();
const allDayManager = app.resolveType<AllDayManager>();
const urlManager = app.resolveType<URLManager>();