@ipohjs/qwik-calendar
Version:
Stream-able and resumable calendar component, built with Qwik
44 lines (39 loc) • 1.36 kB
text/typescript
import type { JSX } from '@builder.io/qwik/jsx-runtime';
import type { GetWeekdaysInit } from '@ipohjs/calendar/dist/helpers/typings.js';
import type {
CalendarInit,
DatesGridColumn,
SerializableCalendarGrid,
} from '@ipohjs/calendar/dist/typings.js';
import type { BaseComponentProps } from '@ipohjs/types';
import type { DataCellPropsRenderInit } from './data-cell/types';
import type { WeekLabelProps } from './week-label/types';
import type { WeekdayPropsRenderInit } from './weekday/types';
type CalendarGridInit = CalendarInit<'grid'>;
export interface QwikCalendarProps
extends Omit<OmitAllFormatFunctions<CalendarGridInit>, 'calendarMode'>,
OmitAllFormatFunctions<GetWeekdaysInit>,
BaseComponentProps<'table'> {
onDateChangeByKey$?(
ev: KeyboardEvent,
calendarGrid: SerializableCalendarGrid
): void;
renderDataCell$?(
init: DataCellPropsRenderInit<'td', DatesGridColumn>,
rowIndex: number,
colIndex: number
): JSX.Element;
renderHeader$?(init: WeekdayPropsRenderInit, index: number): JSX.Element;
renderWeekLabel$?: WeekLabelProps['render$'];
renderWeekNumber$?(
init: WeekdayPropsRenderInit,
rowIndex: number,
colIndex: number
): JSX.Element;
}
type OmitAllFormatFunctions<T extends object> = Omit<
T,
{
[K in keyof T]: K extends `${string}Format` ? K : never;
}[keyof T]
>;