import FhcCalendar from "./Base.js"; import { useEventLoader } from '../../composables/EventLoader.js'; import ModeList from '../Calendar/Mode/List.js'; export default { name: "CalendarWidget", components: { FhcCalendar }, inject: [ "renderers" ], props: { timezone: { type: String, required: true }, getPromiseFunc: { type: Function, required: true } }, data() { return { now: luxon.DateTime.now().setZone(this.timezone), modes: { list: Vue.markRaw(ModeList) }, modeOptions: { list: { length: 7 } } }; }, methods: { eventStyle(event) { const styles = {}; if (event.farbe) styles['--event-bg'] = '#' + event.farbe; else if (event.type == 'reservierung') styles['--event-bg'] = '#ffffff'; else styles['--event-bg'] = '#cccccc'; const eventEnd = luxon.DateTime.fromISO(event.isoend, { zone: this.timezone }); if (eventEnd < this.now) styles['opacity'] = .5; return styles; }, updateRange(rangeInterval) { this.rangeInterval = rangeInterval; } }, setup(props) { const rangeInterval = Vue.ref(null); const { events } = useEventLoader(rangeInterval, props.getPromiseFunc); return { rangeInterval, events }; }, template: /* html */` ` }