angular-holiday-planner
Version:
A calendar for Angular 2+ focused on displaying long intervals, with an infinite scrollable view.
102 lines (101 loc) • 3.33 kB
TypeScript
import { AfterViewInit, ChangeDetectorRef, ElementRef, EventEmitter, NgZone, OnInit } from '@angular/core';
import dayjs from 'dayjs';
import { ResourceViewRowDirective } from './resource-view-row.directive';
import { ResourceViewTitleDirective } from './resource-view-title.directive';
interface Day {
title: string;
value: number;
date: dayjs.Dayjs;
key: string;
class: string | string[];
headerClass: string | string[];
left: number;
}
export interface Resource {
id: number;
title: string;
subtitle?: string;
img?: string;
days: {
date: dayjs.Dayjs;
class: string | string[];
}[];
}
export interface RowClickEvent {
event: MouseEvent;
row: Resource;
}
export interface DayClickEvent {
event: MouseEvent;
row: Resource;
date: dayjs.Dayjs;
}
export interface HeaderClickEvent {
event: MouseEvent;
date: dayjs.Dayjs;
}
export declare class ResourceViewComponent implements OnInit, AfterViewInit {
private cdr;
private zone;
constructor(cdr: ChangeDetectorRef, zone: NgZone);
set rows(value: Resource[]);
get rows(): Resource[];
startDate: dayjs.Dayjs;
sideContainerWidth: string;
maxDate: dayjs.Dayjs;
minDate: dayjs.Dayjs;
infiniteScroll: boolean;
customDays: {};
getClassFn: (date: dayjs.Dayjs) => string | string[];
getHeaderClassFn: (date: dayjs.Dayjs) => any;
getDayValueFn: (date: dayjs.Dayjs) => any;
getDayHeaderFn: (date: dayjs.Dayjs) => any;
scrollHeader: ElementRef<HTMLElement>;
scrollBody: ElementRef<HTMLElement>;
_classes: {
[rowId: number]: {
[key: string]: any;
};
};
days: Day[];
to: dayjs.Dayjs;
from: dayjs.Dayjs;
private _rows;
private _today;
private _referenceDate;
private _referenceScrollLeft;
private _scrollableFrom;
private _scrollableTo;
private _scrollableLeft;
private _scrollableRight;
private _scrollableLeftThreshold;
private _scrollableRightThreshold;
private checkScrollableThresholdHit;
private updateRange;
rowTemplate: ResourceViewRowDirective;
titleTemplate: ResourceViewTitleDirective;
rowClick: EventEmitter<RowClickEvent>;
dayClick: EventEmitter<DayClickEvent>;
headerClick: EventEmitter<HeaderClickEvent>;
createDays(): void;
ngAfterViewChecked(): void;
getKey(value: dayjs.Dayjs): string;
ngAfterViewInit(): void;
ngOnInit(): void;
centerOn(date: dayjs.Dayjs, behavior?: ScrollBehavior): void;
onBodyScroll(event: Event): void;
_checkScrollableThresholdHit(scrollLeft: any, clientWidth: any): void;
_expandScrollableRange(scrollableLeft: number, scrollableRight: number): void;
_updateRange(left: number, right: number): void;
_getDateClasses(row: Resource, day: Day): any;
_getHeaderClasses(day: Day): any;
_dateClass(date: dayjs.Dayjs): string;
onWindowResize(): void;
positionToDate(x: number): dayjs.Dayjs;
dateToPosition(date: dayjs.Dayjs): number;
onBodyClick(event: MouseEvent): void;
onHeaderClick(event: MouseEvent): void;
trackById(index: any, item: any): any;
trackByKey(index: any, item: any): any;
}
export {};