Refactors event handling and grid rendering
Improves calendar performance and data flow by streamlining event emissions and grid rendering logic. - Replaces generic CONFIG_UPDATE events with REFRESH_REQUESTED for more specific refresh triggers. - Removes redundant grid re-renders on DATE_CHANGED and WEEK_CHANGED events, delegating navigation to NavigationManager. - Introduces VIEW_CHANGED and DATE_CHANGED events for calendar mode and date selection, respectively. - NavigationManager now handles date validation. - Moves rendering logic from NavigationManager to NavigationRenderer. - Syncs scroll position based on PERIOD_CHANGED instead of NAVIGATION_ANIMATION_COMPLETE. This change optimizes the calendar's responsiveness and reduces unnecessary re-renders, leading to a smoother user experience.
This commit is contained in:
parent
4b4dbdc0d6
commit
83c0ce801c
9 changed files with 59 additions and 47 deletions
|
|
@ -25,7 +25,7 @@ export interface HeaderRenderContext {
|
|||
* Date-based header renderer (original functionality)
|
||||
*/
|
||||
export class DateHeaderRenderer implements HeaderRenderer {
|
||||
private dateCalculator: DateCalculator;
|
||||
private dateCalculator!: DateCalculator;
|
||||
|
||||
render(calendarHeader: HTMLElement, context: HeaderRenderContext): void {
|
||||
const { currentWeek, config, allDayEvents = [] } = context;
|
||||
|
|
@ -34,7 +34,7 @@ export class DateHeaderRenderer implements HeaderRenderer {
|
|||
this.dateCalculator = new DateCalculator(config);
|
||||
|
||||
const dates = this.dateCalculator.getWorkWeekDates(currentWeek);
|
||||
const weekDays = config.get('weekDays');
|
||||
const weekDays = config.getDateViewSettings().weekDays;
|
||||
const daysToShow = dates.slice(0, weekDays);
|
||||
|
||||
daysToShow.forEach((date, index) => {
|
||||
|
|
@ -62,7 +62,7 @@ export class DateHeaderRenderer implements HeaderRenderer {
|
|||
const { currentWeek, config, allDayEvents = [] } = context;
|
||||
|
||||
const dates = this.dateCalculator.getWorkWeekDates(currentWeek);
|
||||
const weekDays = config.get('weekDays');
|
||||
const weekDays = config.getDateViewSettings().weekDays;
|
||||
const daysToShow = dates.slice(0, weekDays);
|
||||
|
||||
// Process each all-day event to calculate its span
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue