vkurko / calendar

Full-sized drag & drop JavaScript event calendar with resource & timeline views
https://vkurko.github.io/calendar/
MIT License
1.23k stars 108 forks source link

SSR render incomplete #205

Open happyleavesaoc opened 10 months ago

happyleavesaoc commented 10 months ago

I'm attempting to use event-calendar with sveltekit's SSR-only mode, but the server-rendered calendar is not fully initialized. I suspect that onMount may be the culprit here.

Example component:

<script>
import Calendar from '@event-calendar/core';
import DayGrid from '@event-calendar/day-grid';
import '@event-calendar/core/index.css';

let options = {
    view: 'dayGridMonth',
    events: [
        {start: '2023-11-01', end: '2023-11-02', title: 'event', allDay: true}
    ]
};

</script>

<Calendar options={options} plugins={[DayGrid]} />

Actual output: image

Expected output: image

(this was generated by turning on CSR in addition to SSR)

vkurko commented 10 months ago

Yes, unfortunately, that's the way it works now. The event placement algorithm at some points requires information about the size of DOM elements, which becomes available only when rendering these elements in the browser. Also, various optimizations use deferred computation, which is not performed in SSR.

I'll leave this ticket open so that I can improve SSR support over time (if possible).

vkurko commented 10 months ago

Just for reference https://github.com/vkurko/calendar/discussions/162#discussioncomment-6572376