@php($locale = strtolower(str_replace('_', '-', $this->config('locale', config('app.locale')))))
{ if(events.length == 0) return Object.values(cachedEvents) if(events[0].id){ // cater for no id provided // Cache fetched events events.forEach((event) => cachedEvents[event.id] = event) successCallback(Object.values(cachedEvents)) }else{ successCallback(events) } }) .catch( failureCallback ); @else return successCallback([]); @endif } @if($this->config('saveState', false)) const key = "{{ $this->getKey() }}"; const initialView = localStorage.getItem("fullcalendar.view." + key) ?? @json($this->config('initialView')); const initialDate = localStorage.getItem("fullcalendar.date." + key) ?? @json($this->config('initialDate')); @endif const calendar = new FullCalendar.Calendar($el, { ...config, locale, eventClick, eventDrop, eventResize, dateClick, select, eventSources:[ { events }, fetchEvents ], @if($this->config('saveState', false)) initialView: initialView ?? undefined, initialDate: initialDate ?? undefined, datesSet: function ({start, view}) { localStorage.setItem("fullcalendar.view." + key, view.type); localStorage.setItem("fullcalendar.date." + key, start.toISOString()); }, @endif }); calendar.render(); window.addEventListener("filament-fullcalendar:refresh", () => { @if( $this::canFetchEvents() ) calendar.refetchEvents(); @else calendar.removeAllEvents(); event.detail.data.map(event => calendar.addEvent(event)); @endif }); }) '>
@if($this::canCreate()) @endif @if($this::canView()) @endif