Calendar/wwwroot/js/elements/SwpEventElement.d.ts
2026-02-03 00:02:25 +01:00

98 lines
2.8 KiB
TypeScript

import { ICalendarEvent } from '../types/CalendarTypes';
import { Configuration } from '../configurations/CalendarConfig';
import { DateService } from '../utils/DateService';
/**
* Base class for event elements
*/
export declare abstract class BaseSwpEventElement extends HTMLElement {
protected dateService: DateService;
protected config: Configuration;
constructor();
/**
* Create a clone for drag operations
* Must be implemented by subclasses
*/
abstract createClone(): HTMLElement;
get eventId(): string;
set eventId(value: string);
get start(): Date;
set start(value: Date);
get end(): Date;
set end(value: Date);
get title(): string;
set title(value: string);
get description(): string;
set description(value: string);
get type(): string;
set type(value: string);
}
/**
* Web Component for timed calendar events (Light DOM)
*/
export declare class SwpEventElement extends BaseSwpEventElement {
/**
* Observed attributes - changes trigger attributeChangedCallback
*/
static get observedAttributes(): string[];
/**
* Called when element is added to DOM
*/
connectedCallback(): void;
/**
* Called when observed attribute changes
*/
attributeChangedCallback(name: string, oldValue: string, newValue: string): void;
/**
* Update event position during drag
* @param columnDate - The date of the column
* @param snappedY - The Y position in pixels
*/
updatePosition(columnDate: Date, snappedY: number): void;
/**
* Update event height during resize
* @param newHeight - The new height in pixels
*/
updateHeight(newHeight: number): void;
/**
* Create a clone for drag operations
*/
createClone(): SwpEventElement;
/**
* Render inner HTML structure
*/
private render;
/**
* Update time display when attributes change
*/
private updateDisplay;
/**
* Calculate start/end minutes from Y position
*/
private calculateTimesFromPosition;
/**
* Create SwpEventElement from ICalendarEvent
*/
static fromCalendarEvent(event: ICalendarEvent): SwpEventElement;
/**
* Extract ICalendarEvent from DOM element
*/
static extractCalendarEventFromElement(element: HTMLElement): ICalendarEvent;
}
/**
* Web Component for all-day calendar events
*/
export declare class SwpAllDayEventElement extends BaseSwpEventElement {
connectedCallback(): void;
/**
* Create a clone for drag operations
*/
createClone(): SwpAllDayEventElement;
/**
* Apply CSS grid positioning
*/
applyGridPositioning(row: number, startColumn: number, endColumn: number): void;
/**
* Create from ICalendarEvent
*/
static fromCalendarEvent(event: ICalendarEvent): SwpAllDayEventElement;
}