diff --git a/src/panels/lovelace/cards/hui-calendar-card.ts b/src/panels/lovelace/cards/hui-calendar-card.ts index eb55d3d435..625e915fac 100644 --- a/src/panels/lovelace/cards/hui-calendar-card.ts +++ b/src/panels/lovelace/cards/hui-calendar-card.ts @@ -71,6 +71,10 @@ export class HuiCalendarCard extends LitElement implements LovelaceCard { @internalProperty() private _veryNarrow = false; + private _startDate?: Date; + + private _endDate?: Date; + private _resizeObserver?: ResizeObserver; public setConfig(config: CalendarCardConfig): void { @@ -89,6 +93,10 @@ export class HuiCalendarCard extends LitElement implements LovelaceCard { }; }); + if (this._config?.entities !== config.entities) { + this._fetchCalendarEvents(); + } + this._config = { initial_view: "dayGridMonth", ...config }; } @@ -152,13 +160,21 @@ export class HuiCalendarCard extends LitElement implements LovelaceCard { } } - private async _handleViewChanged( - ev: HASSDomEvent - ): Promise { + private _handleViewChanged(ev: HASSDomEvent): void { + this._startDate = ev.detail.start; + this._endDate = ev.detail.end; + this._fetchCalendarEvents(); + } + + private async _fetchCalendarEvents(): Promise { + if (!this._startDate || !this._endDate) { + return; + } + this._events = await fetchCalendarEvents( this.hass!, - ev.detail.start, - ev.detail.end, + this._startDate, + this._endDate, this._calendars ); }