Repository navigation
Known Issues
The problem appears when you remove the events and add them back. When you remove all the events from the calendar it resizes itself. When the calendar has no events, it is much shorter which explains why the scroll position is changing.
Take a look here for a workaround https://github.com/stefanuebe/vaadin-fullcalendar/issues/76
Another good way to fix it is to provide the resources/events as JSON feed and refetch the events instead of removing and adding them back.
It might be that the transitive dependencies are not resolved correctly. This mostly happens in Spring Boot due to its built-in class path scanning, which is adapted by Vaadin.
Please ensure that, if you are using the vaadin.allowed-packages property, it lists the addon's package org.vaadin.stefan (or simply org.vaadin).
If you are not using any allowed or blocking list in the properties and still have the issue, please check if you have added the @EnableVaadin annotation to your Spring application class. If that is the case, check if there are packages listed. If yes, add the package org.vaadin.stefan to it.
If the annotation is not added or added without any parameter and the issue occurs, please add the package org.vaadin.stefan plus other necessary packages that have to be scanned, as parameters.
This should enable Spring to analyze all relevant npm dependencies at runtime. Other CDI versions should work the same.
The addon uses new Function() to evaluate server-defined JavaScript callbacks (e.g., for entry render hooks). This is intentional and allows the server to define client-side behavior dynamically. See FullCalendar Event Render Hooks for the underlying feature.
When running Vaadin 25.3 or newer in development mode, the frontend type check may report these errors:
ERROR(TypeScript) TS2694: Namespace 'React' has no exported member 'ElementType'.
ERROR(TypeScript) TS2694: Namespace 'React' has no exported member 'Key'.
ERROR(TypeScript) TS2724: 'React' has no exported member named 'ReactElement'. Did you mean 'createElement'?
They point at Vaadin's generated file src/main/frontend/generated/jsx-dev-transform/jsx-dev-runtime.ts. The application still works — this is a type-check issue only.
Who is affected: only projects that have their own TypeScript in src/main/frontend importing the addon's client-side code, for example a custom subclass of the calendar web component (see Notes for Custom Subclasses). A plain new FullCalendar() on the Java side is not affected.
Cause: FullCalendar's type definitions pull in Preact (preact/compat), which declares a global React namespace of its own. Vaadin 25.3 ships TypeScript 7, which resolves the unimported React in Vaadin's generated file to Preact's namespace instead of @types/react. Earlier Vaadin versions used TypeScript 5.9 and are not affected.
Workaround: exclude the generated folder from the type check in your project's tsconfig.json:
"exclude": [
"src/main/frontend/generated/jsx-dev-transform/**",
"src/main/frontend/generated/jar-resources/**"
]Vaadin keeps a modified tsconfig.json and does not overwrite it. Commit the file, as Vaadin recommends.
When creating custom TypeScript/JavaScript subclasses of FullCalendar:
-
Prevent duplicate event handler registration: Use a flag (e.g.,
_tooltipInitialized) to ensure event handlers are only registered once, even ifinitCalendar()is called multiple times. -
Clean up resources: If you add ResizeObservers or other resources, clean them up in
disconnectedCallback()to prevent memory leaks.