Calendar/src/v2/features/date/DateRenderer.ts

37 lines
1.2 KiB
TypeScript
Raw Normal View History

import { IEnumerable } from 'ts-linq-light';
import { IGroupingRenderer, RenderContext } from '../../core/IGroupingRenderer';
import { NextFunction, RenderData } from '../../core/RenderBuilder';
import { DateService } from '../../core/DateService';
2025-12-06 01:22:04 +01:00
export class DateRenderer implements IGroupingRenderer<string> {
2025-12-06 01:22:04 +01:00
readonly type = 'date';
constructor(private dateService: DateService) {}
2025-12-06 01:22:04 +01:00
render(
dates: IEnumerable<string>,
_data: RenderData,
_next: NextFunction,
context: RenderContext
): void {
for (const dateStr of dates) {
2025-12-06 01:22:04 +01:00
const date = this.dateService.parseISO(dateStr);
const headerCell = document.createElement('swp-day-header');
headerCell.dataset.date = dateStr;
headerCell.innerHTML = `
<swp-day-name>${this.dateService.getDayName(date, 'short')}</swp-day-name>
<swp-day-date>${date.getDate()}</swp-day-date>
`;
context.headerContainer.appendChild(headerCell);
const column = document.createElement('swp-day-column');
column.dataset.date = dateStr;
column.innerHTML = '<swp-events-layer></swp-events-layer>';
context.columnContainer.appendChild(column);
// Leaf renderer - ingen next.render() kald
2025-12-06 01:22:04 +01:00
}
}
}